999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Windows平臺(tái)惡意軟件智能檢測(cè)綜述

2021-06-04 00:23:24汪嘉來(lái)戚旭衍
關(guān)鍵詞:程序特征智能

汪嘉來(lái) 張 超 戚旭衍 榮 易

1(清華大學(xué)網(wǎng)絡(luò)科學(xué)與網(wǎng)絡(luò)空間研究院 北京 100084) 2(北京信息科學(xué)與技術(shù)國(guó)家研究中心 北京 100084) 3(數(shù)學(xué)工程與先進(jìn)計(jì)算國(guó)家重點(diǎn)實(shí)驗(yàn)室 鄭州 450002) 4(清華大學(xué)軟件學(xué)院 北京 100084)

隨著社會(huì)的發(fā)展,計(jì)算機(jī)系統(tǒng)已經(jīng)成為人們?nèi)粘I钪胁豢苫蛉钡囊徊糠?而惡意軟件的存在,則一直威脅著計(jì)算機(jī)系統(tǒng)的安全,給社會(huì)的發(fā)展帶來(lái)了巨大的損失.例如2014年全球遭受的與惡意軟件相關(guān)的經(jīng)濟(jì)損失大約為5 000億美元[1].對(duì)此,如何有效檢測(cè)惡意軟件一直是研究的熱點(diǎn).

傳統(tǒng)的惡意軟件檢測(cè)技術(shù)往往需要大量的人工參與.如基于簽名的檢測(cè)技術(shù)、啟發(fā)式的檢測(cè)技術(shù)等,它們需要人工制定許多檢測(cè)規(guī)則[2].然而,這類(lèi)傳統(tǒng)的檢測(cè)技術(shù)無(wú)法很好地檢測(cè)先前未見(jiàn)過(guò)的新式惡意軟件[3].尤其是在惡意軟件日均新增數(shù)量眾多的情況下,該類(lèi)技術(shù)更加無(wú)法勝任.近些年來(lái),隨著人工智能的蓬勃發(fā)展,惡意軟件的檢測(cè)技術(shù)也開(kāi)始與機(jī)器學(xué)習(xí)、深度學(xué)習(xí)技術(shù)相結(jié)合,我們稱(chēng)之為惡意軟件智能檢測(cè)技術(shù).這種新的檢測(cè)技術(shù)能夠更好地檢測(cè)先前未見(jiàn)過(guò)的新式樣本,更能夠滿(mǎn)足當(dāng)前社會(huì)的安全需求.作為新型惡意軟件檢測(cè)技術(shù)的代表,惡意軟件智能檢測(cè)技術(shù)具有泛化能力強(qiáng)的特點(diǎn),還能夠在一定程度上降低人工的參與.因此,研究有效的惡意軟件智能檢測(cè)技術(shù)具有較高的價(jià)值.

對(duì)于惡意軟件智能檢測(cè)相關(guān)研究而言,如何有效應(yīng)用人工智能技術(shù)是其中的關(guān)鍵.從宏觀上看,應(yīng)用人工智能技術(shù)需要包含3個(gè)主要步驟:特征提取、特征處理和分類(lèi)器設(shè)計(jì).而這3個(gè)主要步驟,也是當(dāng)前惡意軟件智能檢測(cè)相關(guān)工作的主要研究點(diǎn).在面對(duì)惡意軟件智能檢測(cè)場(chǎng)景時(shí),相關(guān)工作需要結(jié)合惡意軟件的特點(diǎn),有針對(duì)性的設(shè)計(jì)這3個(gè)主要環(huán)節(jié).同時(shí),由于是智能檢測(cè),則意味著機(jī)器學(xué)習(xí)與深度學(xué)習(xí)技術(shù)所面臨的一些問(wèn)題也必須被充分考慮.如收集數(shù)據(jù)集、避免過(guò)擬合、提升訓(xùn)練速度等.

本文旨在對(duì)當(dāng)前惡意軟件智能檢測(cè)相關(guān)工作進(jìn)行總結(jié)與概括.惡意軟件智能檢測(cè)架構(gòu)如圖1所示:

Fig. 1 The framework of malware intelligent detection圖1 惡意軟件智能檢測(cè)架構(gòu)

對(duì)于惡意軟件智能檢測(cè)技術(shù)相關(guān)工作而言,其研究點(diǎn)較為明確,而本文也將根據(jù)這些研究點(diǎn)來(lái)進(jìn)行介紹.具體而言,本文將主要從惡意軟件智能檢測(cè)常用特征、特征處理、智能檢測(cè)常用分類(lèi)器以及現(xiàn)階段智能檢測(cè)主要面臨的問(wèn)題這4個(gè)方面來(lái)進(jìn)行闡述.另外,由于Windows系統(tǒng)是當(dāng)前使用最廣泛的操作系統(tǒng)之一,而針對(duì)Windows系統(tǒng)的惡意軟件也屬于惡意軟件的主流.對(duì)此,本文主要介紹針對(duì)Windows平臺(tái)上的惡意軟件智能檢測(cè)相關(guān)工作.

1 常用特征

常用特征的制定是智能檢測(cè)的重要環(huán)節(jié).其重要性主要體現(xiàn)于:作為分類(lèi)器的輸入,常用特征代表了待測(cè)程序,它決定了分類(lèi)器能否學(xué)習(xí)到程序的本質(zhì).由于計(jì)算機(jī)軟件具有數(shù)量龐大、語(yǔ)義信息豐富、結(jié)構(gòu)復(fù)雜的特點(diǎn),現(xiàn)階段大部分工作還不能完全依靠深度學(xué)習(xí)技術(shù)來(lái)自動(dòng)化提取待測(cè)程序特征.對(duì)此,人工參與常用特征制定依舊是當(dāng)前惡意軟件智能檢測(cè)技術(shù)的主流.

本節(jié)主要介紹惡意軟件智能檢測(cè)相關(guān)工作的常用特征.對(duì)于這些常用特征而言,獲取方式并不完全相同:有些特征需要靜態(tài)獲取,有些需要?jiǎng)討B(tài)獲取,還有些特征則可以同時(shí)通過(guò)動(dòng)、靜態(tài)方法獲取.在本節(jié)中,將按照靜態(tài)、動(dòng)態(tài)、動(dòng)靜態(tài)獲取的順序依次展開(kāi)介紹.

1.1 靜態(tài)特征

本節(jié)主要介紹待測(cè)程序的靜態(tài)特征.靜態(tài)特征的提取不需要運(yùn)行待測(cè)程序,它是直接從待測(cè)的二進(jìn)制程序中提取需要的數(shù)據(jù).在提取的過(guò)程中,只需要確定相應(yīng)數(shù)據(jù)的位置及提取的方式即可,如:1)直接按照一定規(guī)則切分程序字節(jié),獲取字節(jié)序列特征;2)利用現(xiàn)成的工具提取程序中的可閱讀字符串;3)定位待測(cè)程序頭部,獲取文件頭部信息;4)按照需求,計(jì)算程序文件相應(yīng)部分熵值;5)定位靜態(tài)文件中動(dòng)態(tài)鏈接庫(kù)(dynamic link library, DLL)描述信息位置,提取動(dòng)態(tài)鏈接庫(kù)相應(yīng)信息;6)按照一定規(guī)則,直接將待測(cè)程序數(shù)據(jù)轉(zhuǎn)換為圖片的形式.

1.1.1 字節(jié)序列

字節(jié)序列是字節(jié)級(jí)的程序特征.對(duì)于程序而言,每個(gè)字節(jié)本身都包含了信息.因此,可以通過(guò)不同的方式提取字節(jié),構(gòu)建字節(jié)序列,進(jìn)而得到不同的程序特征.

按照一定規(guī)則切分待測(cè)程序字節(jié)是得到程序特征的直接方式.Schultz等人[4]首先將程序中所有的字節(jié)轉(zhuǎn)化為對(duì)應(yīng)的十六進(jìn)制數(shù)據(jù)形式,隨后再按規(guī)定字節(jié)數(shù)劃分字節(jié)序列,劃分的結(jié)果即為多組字節(jié)序列.這些字節(jié)序列將作為特征使用.對(duì)于每組字節(jié)序列而言,本質(zhì)上都能夠?qū)?yīng)一個(gè)指令序列.這種方式獲取的程序特征較為簡(jiǎn)單直觀.

使用n-gram方法是另一種提取字節(jié)序列的方式,提取方式如圖2所示.該方法是對(duì)程序字節(jié)進(jìn)行大小為n的滑動(dòng)窗口操作,形成多個(gè)長(zhǎng)度為n的字節(jié)序列;而每種序列出現(xiàn)的頻率即可作為該程序的特征.Schultz等人[4]是首個(gè)在Windows平臺(tái)上使用n-gram方法來(lái)提取特征的團(tuán)隊(duì).通過(guò)將提取的特征放在不同的分類(lèi)器下進(jìn)行嘗試,并經(jīng)過(guò)橫向?qū)Ρ龋麄儼l(fā)現(xiàn)n-gram方法比單純基于簽名進(jìn)行檢測(cè)的方法更好.Kolter等人[5]則專(zhuān)精于使用n-gram方法進(jìn)行特征提取,并嘗試了多個(gè)不同的n值,旨在其惡意軟件檢測(cè)實(shí)驗(yàn)中獲得最優(yōu)效果.另一方面,n-gram在字節(jié)序列上提取的特征還可與其他特征進(jìn)行結(jié)合使用[6-8].例如,與操作碼上的n-gram特征、動(dòng)態(tài)鏈接庫(kù)函數(shù)導(dǎo)入特征相結(jié)合等.就提取字節(jié)序列特征而言,Raff等人[9]對(duì)眾多使用n-gram方法進(jìn)行特征提取的惡意軟件檢測(cè)工作進(jìn)行了系統(tǒng)的評(píng)價(jià),并揭示了許多問(wèn)題,如高估準(zhǔn)確率、提取特征方法較為冗余、過(guò)擬合等.

Fig. 2 “3-gram”byte sequences圖2 “3-gram”字節(jié)序列

2種方法本質(zhì)上都是對(duì)程序字節(jié)進(jìn)行不同方式的切分,以此來(lái)獲得不同的字節(jié)序列,進(jìn)而作為程序的特征.然而,Raff等人[10]提出了一種不需要切分程序字節(jié),而是將整個(gè)程序字節(jié)作為字節(jié)序列送入分類(lèi)器的方法.他們直接通過(guò)嵌入(embedding),將程序字節(jié)轉(zhuǎn)換為固定長(zhǎng)度的向量,并以此來(lái)構(gòu)建字節(jié)之間的語(yǔ)義關(guān)系.以此方法獲得的向量將被送入神經(jīng)網(wǎng)絡(luò)中進(jìn)一步提取特征并最終用于惡意軟件檢測(cè).

1.1.2 可閱讀字符串

對(duì)于某些惡意程序而言,它們會(huì)包含一些固定的可閱讀字符串.如字符串“〈html〉〈script language=‘javascript’〉window.open (‘readme.eml’)”,其經(jīng)常出現(xiàn)在“Nimda”蠕蟲(chóng)中[11].盡管惡意軟件可能會(huì)不斷改變自身的靜態(tài)特征來(lái)躲避檢查,但它很難讓原本包含的可閱讀字符串全部發(fā)生改變.因此,對(duì)于待檢測(cè)程序中的可閱讀字符串,也可以作為智能檢測(cè)特征.

對(duì)于提取可閱讀字符串,可以直接使用現(xiàn)成的工具進(jìn)行提取,如“Linux下的strings命令”[4];也可以自行設(shè)計(jì)一些方法進(jìn)行提取.如Ye等人[11],通過(guò)遍歷程序文件,首先查看是否有連續(xù)的字節(jié)屬于同一字符集(如查看是否有連續(xù)的字節(jié)屬于ASCII字符集).如果有,則將相應(yīng)的連續(xù)字節(jié)保存下來(lái);隨后再利用先前準(zhǔn)備好的自然語(yǔ)言集合對(duì)其進(jìn)一步篩選,判斷該連續(xù)字節(jié)是否為可閱讀字符串.

1.1.3 文件頭部信息

文件頭部信息也可以作為程序特征.由于本文討論的被檢測(cè)對(duì)象是Windows平臺(tái)下的可運(yùn)行程序(portable executable, PE)格式,故在此以PE文件的文件頭部為例.PE文件頭部包含了被檢測(cè)程序的眾多信息,包括程序文件的節(jié)數(shù)、節(jié)名、節(jié)大小、時(shí)間戳、動(dòng)態(tài)鏈接庫(kù)信息、導(dǎo)入表信息、導(dǎo)出表信息等.這些信息可以看作是對(duì)待測(cè)程序的宏觀描述.對(duì)此,文件頭部信息常作為惡意軟件智能檢測(cè)的重要特征[3,12-13].

具體而言,Shafiq等人[12]針對(duì)文件頭部信息進(jìn)行特征提取時(shí),他們幾乎遍歷了頭部信息中所有可用于提取的字段,提取出來(lái)的特征種類(lèi)高達(dá)189項(xiàng).但這些提取出來(lái)的特征并不會(huì)全部用于智能檢測(cè),而是會(huì)通過(guò)特征工程進(jìn)行篩選后,再用于檢測(cè).

另一方面,文件頭部信息不僅可以直接作為特征,還可以被用于衍生出其他特征.Kumar等人[13]在提取出頭部信息后,會(huì)選取一部分信息作為程序特征,還會(huì)在某些頭部信息的基礎(chǔ)上,衍生出一些其他的特征.如根據(jù)時(shí)間戳的合法性定義的布爾變量特征:通過(guò)檢查頭部時(shí)間戳是否合法,給出相應(yīng)的布爾變量值,并以此作為特征.

1.1.4 熵

在信息論中,熵是對(duì)不確定性的測(cè)量.對(duì)于程序而言,熵越高,則代表其中的數(shù)據(jù)越隨機(jī).由于熵能夠衡量程序中數(shù)據(jù)的隨機(jī)性,惡意軟件檢測(cè)經(jīng)常會(huì)用到熵.例如,對(duì)于一些加殼的惡意程序,由于加殼后的數(shù)據(jù)較為隨機(jī),其相應(yīng)部分的熵也偏高,很多惡意軟件檢測(cè)廠商便可以根據(jù)這一特性來(lái)進(jìn)行檢測(cè)惡意軟件.對(duì)于惡意軟件智能檢測(cè),熵可以作為重要特征[13-16].

在提取熵時(shí),不僅可以計(jì)算整個(gè)文件的熵,還可以針對(duì)程序的某些部分計(jì)算熵.除了整個(gè)程序文件的熵外,Kumar等人[13]還專(zhuān)門(mén)對(duì)數(shù)據(jù)段和代碼段計(jì)算了熵,并用這3種熵值作為特征.除了直接用熵作為特征外,還可以根據(jù)熵來(lái)衍生其他特征.如Markel等人[14]單獨(dú)設(shè)置了一個(gè)“HighEntropy”特征,當(dāng)待測(cè)程序的任意一個(gè)節(jié)的熵值大于7時(shí),則該特征被置為1,反之則為0,這便是一種依據(jù)熵來(lái)衍生其他特征的典型方法.

1.1.5 動(dòng)態(tài)鏈接庫(kù)相關(guān)信息

對(duì)于Windows平臺(tái)下的待測(cè)程序,直接通過(guò)靜態(tài)解析,便可以獲得當(dāng)前程序所使用的動(dòng)態(tài)鏈接庫(kù)、動(dòng)態(tài)鏈接庫(kù)中被導(dǎo)入函數(shù)等相關(guān)信息,這些與動(dòng)態(tài)鏈接庫(kù)相關(guān)的信息都可以作為程序的特征.

根據(jù)程序DLL的相關(guān)信息,可以在一定程度上推測(cè)一個(gè)程序可能擁有什么功能、不能執(zhí)行什么功能[4].Schultz等人[4]利用了已有的DLL相關(guān)信息,并對(duì)程序行為進(jìn)行了推測(cè).例如,假如一個(gè)待測(cè)程序沒(méi)有使用“USER32.DLL”,則可以推測(cè)該待測(cè)程序沒(méi)有使用Windows用戶(hù)接口.不過(guò)這種推測(cè)方式并不精確,因?yàn)榇郎y(cè)程序中可能自身編寫(xiě)或鏈接了其他的用戶(hù)接口庫(kù).雖然這種推測(cè)方式并不精確,但能夠在一定程度上反應(yīng)程序功能,所以將動(dòng)態(tài)鏈接庫(kù)相關(guān)信息來(lái)作為特征是可行的.

在提取特征的方法上,Schultz等人[4]直接從程序頭部中提取所有動(dòng)態(tài)鏈接庫(kù)函數(shù)相關(guān)信息,并分別以待測(cè)程序使用的動(dòng)態(tài)鏈接庫(kù)集合、動(dòng)態(tài)鏈接庫(kù)中調(diào)用的函數(shù)集合、不同動(dòng)態(tài)鏈接庫(kù)調(diào)用的函數(shù)個(gè)數(shù)來(lái)作為特征.在進(jìn)行特征表示時(shí),他們會(huì)把功能相似的動(dòng)態(tài)鏈接庫(kù)放在一起.而Shafiq等人[12]并沒(méi)有把相似的動(dòng)態(tài)鏈接庫(kù)放在一起,他們通過(guò)實(shí)驗(yàn)證明單獨(dú)考慮每一個(gè)DLL效果更好.他們先總結(jié)了73個(gè)核心動(dòng)態(tài)鏈接庫(kù),隨后再針對(duì)每一個(gè)待測(cè)程序,通過(guò)布爾變量表示這些動(dòng)態(tài)鏈接庫(kù)是否存,進(jìn)而作為特征.Masud等人[17]是在反匯編后的文件中提取所有的動(dòng)態(tài)鏈接庫(kù)函數(shù),隨后再對(duì)提取的所有函數(shù)使用n-gram方法提取函數(shù)序列特征.Bai等人[18]在獲取到待測(cè)程序所用的DLL和DLL中的被導(dǎo)入函數(shù)后,會(huì)進(jìn)行統(tǒng)計(jì)篩選.他們會(huì)把出現(xiàn)頻率較低的DLL篩去,并通過(guò)信息增益的方法留下最優(yōu)的30個(gè)DLL和30個(gè)DLL中記錄的被導(dǎo)入函數(shù).除此以外,他們還考慮將DLL,DLL中被導(dǎo)入函數(shù)的數(shù)量以及符號(hào)導(dǎo)出表的信息作為智能檢測(cè)的特征.

1.1.6 神經(jīng)網(wǎng)絡(luò)自動(dòng)提取特征

除了人工制定特征外,還可以運(yùn)用神經(jīng)網(wǎng)絡(luò)來(lái)自動(dòng)提取待測(cè)程序特征.在自動(dòng)提取特征的相關(guān)工作中,需要考慮數(shù)據(jù)的表示形式,便于神經(jīng)網(wǎng)絡(luò)能夠較好地提取到關(guān)鍵特征,從而保證檢測(cè)結(jié)果準(zhǔn)確可靠.

對(duì)于待測(cè)程序而言,可以將其轉(zhuǎn)換為圖片的形式,再交由神經(jīng)網(wǎng)絡(luò)提取特征[19-20].此類(lèi)工作認(rèn)為程序的結(jié)構(gòu)相似性可以體現(xiàn)在對(duì)應(yīng)圖片的相似性上[21].Yan等人[20]就是將程序數(shù)據(jù)轉(zhuǎn)換為圖的形式,再交由神經(jīng)網(wǎng)絡(luò)提取特征.由于程序字節(jié)的取值范圍與像素值相同,他們直接將程序字節(jié)與像素值一一對(duì)應(yīng),進(jìn)而構(gòu)建相應(yīng)的灰度圖,具體例子如圖3所示(此圖為某可執(zhí)行程序?qū)?yīng)的灰度圖).由于神經(jīng)網(wǎng)絡(luò)的輸入格式一般是固定的,所以輸入圖片的大小也需要統(tǒng)一.因此,對(duì)于不同程序的灰度圖,需要統(tǒng)一修改至相同的大小.對(duì)此,他們使用了雙線(xiàn)性插值的方法來(lái)調(diào)整圖片大小.

Fig. 3 Grayscale image corresponding to the program圖3 程序?qū)?yīng)的灰度圖

此外,還可以將待測(cè)程序轉(zhuǎn)化為向量的形式.如Raff等人[10]使用embedding的方法將程序字節(jié)轉(zhuǎn)化為向量,隨后再交由神經(jīng)網(wǎng)絡(luò)進(jìn)行檢測(cè).他們不贊成直接將程序轉(zhuǎn)換為圖的形式.他們認(rèn)為圖片和程序有本質(zhì)區(qū)別,將程序轉(zhuǎn)換為圖片的形式從根本上來(lái)講是行不通的.另外,由于圖片大小固定,則必然涉及到填充或丟棄某些字節(jié),這會(huì)帶來(lái)2點(diǎn)新的問(wèn)題:1)在填充字節(jié)時(shí),意味著程序?qū)?yīng)的圖片大小不足,需要填充字節(jié)來(lái)滿(mǎn)足格式.然而填充的字節(jié)往往不具有實(shí)際意義.如運(yùn)用雙線(xiàn)性插值進(jìn)行填充時(shí),填充的字節(jié)由數(shù)學(xué)運(yùn)算得到,具備數(shù)學(xué)意義,但與程序語(yǔ)義沒(méi)有任何關(guān)系.他們認(rèn)為這樣無(wú)法幫助智能檢測(cè).2)在丟棄字節(jié)時(shí),意味著程序?qū)?yīng)的圖片大小超出了標(biāo)準(zhǔn)格式范圍,因此通常會(huì)對(duì)程序字節(jié)采用截?cái)嗵幚?然而,如果程序的惡意行為藏在了程序尾部,則會(huì)由于截?cái)嗟陌l(fā)生而無(wú)法被檢測(cè).

1.2 動(dòng)態(tài)特征

本節(jié)主要介紹待測(cè)程序的動(dòng)態(tài)特征.動(dòng)態(tài)特征的提取需要運(yùn)行待測(cè)程序.常用的做法是將待測(cè)程序運(yùn)行在可控的虛擬環(huán)境中.為了捕獲待測(cè)程序的動(dòng)態(tài)行為,首先需要保證程序能夠正常運(yùn)行.即在動(dòng)態(tài)運(yùn)行程序時(shí),需要盡可能地滿(mǎn)足程序所需的運(yùn)行時(shí)環(huán)境,如提供合適的操作系統(tǒng)版本,安裝待測(cè)所需的軟件,開(kāi)放相應(yīng)的端口等.此外,還需要考慮如何充分展現(xiàn)程序的行為,避免待測(cè)程序隱藏功能或行為展現(xiàn)不完全等.如在獲取程序動(dòng)態(tài)行為時(shí),需要模擬反饋所需的網(wǎng)絡(luò)交互信息,或通過(guò)強(qiáng)制執(zhí)行等手段探索某些未被觸發(fā)的惡意功能等.

對(duì)于運(yùn)行時(shí)狀態(tài)信息而言,需要靠動(dòng)態(tài)方法收集.常用的做法是將待測(cè)程序運(yùn)行在虛擬環(huán)境中,進(jìn)而提取相應(yīng)的運(yùn)行時(shí)狀態(tài)信息.運(yùn)行時(shí)狀態(tài)信息主要包含:CPU、寄存器、IO、線(xiàn)程、文件、內(nèi)存、網(wǎng)絡(luò)活動(dòng)等相關(guān)信息[22-24].

通過(guò)在沙箱中動(dòng)態(tài)運(yùn)行待測(cè)程序,Burnap等人[22]自己編寫(xiě)了腳本來(lái)獲取運(yùn)行時(shí)狀態(tài)信息,并主要將CPU用戶(hù)使用百分比、CPU系統(tǒng)使用百分比、RAM的使用數(shù)量、虛擬內(nèi)存分區(qū)的使用數(shù)量、進(jìn)程運(yùn)行數(shù)、發(fā)送/收到的網(wǎng)絡(luò)包數(shù)量以及發(fā)送/收到的字節(jié)數(shù)等作為特征.而Abdelsalam等人[19]考慮的狀態(tài)信息更多,比如額外考慮了使用的線(xiàn)程數(shù)、打開(kāi)的文件數(shù)、虛擬內(nèi)存大小、共享庫(kù)內(nèi)存占用等.Mohaisen等人[25]主要以注冊(cè)表修改操作(如創(chuàng)建、修改鍵值)、文件系統(tǒng)修改操作(如文件創(chuàng)建、修改、刪除)以及網(wǎng)絡(luò)活動(dòng)作為特征.

1.3 靜、動(dòng)態(tài)特征

除了靜態(tài)特征與動(dòng)態(tài)特征以外,還有些程序特征既可以通過(guò)靜態(tài)獲取,也可以通過(guò)動(dòng)態(tài)獲取:1)對(duì)于操作碼序列,在靜態(tài)條件下,可以通過(guò)反匯編二進(jìn)制程序,并根據(jù)反匯編后的指令獲取操作碼序列;在動(dòng)態(tài)條件下,可以通過(guò)動(dòng)態(tài)運(yùn)行程序,并將內(nèi)存中的指令讀取出來(lái),隨后提取操作碼序列;2)對(duì)于API及系統(tǒng)調(diào)用,在靜態(tài)條件下,可以分析二進(jìn)制程序的控制流圖(controw flow graph, CFG),然后根據(jù)CFG獲取相應(yīng)的API信息;在動(dòng)態(tài)條件下,可以在虛擬環(huán)境中記錄待測(cè)程序的API及系統(tǒng)調(diào)用信息.

1.3.1 操作碼序列

對(duì)于操作碼(opcode)而言,現(xiàn)有的工作多半是統(tǒng)計(jì)操作碼的頻率,或者使用各種方法來(lái)提取操作碼序列如n-gram,使用3-gram提取的操作碼序列如圖4所示.如果在提取操作碼的同時(shí),還提取了操作碼的操作數(shù),則可獲得反匯編序列.

Fig. 4 “3-gram”opcode sequences圖4 “3-gram”操作碼序列

運(yùn)用操作碼相關(guān)特征需要先反匯編待測(cè)程序,然后根據(jù)反匯編得到的指令,獲得所有的操作碼.在此基礎(chǔ)上,即可統(tǒng)計(jì)操作碼頻率或提取操作碼序列(如果同時(shí)提取了操作數(shù)則為反匯編序列).就操作碼序列而言,不同于字節(jié)序列,后者通常考慮待檢測(cè)程序的全部字節(jié),而操作碼序列只來(lái)源于程序中指令所對(duì)應(yīng)的字節(jié).

對(duì)于操作碼頻率而言,Ye等人[26]是直接以操作碼出現(xiàn)的頻率來(lái)作為特征.而一些其他工作則在操作碼頻率的基礎(chǔ)上做進(jìn)一步處理.Khodamoradi等人[27]對(duì)操作碼的頻率統(tǒng)計(jì)結(jié)果進(jìn)一步分層,他們劃分出了:全部操作碼集合、頻率非零的操作碼集合、高頻操作碼集合,并以這些集合為基礎(chǔ)來(lái)構(gòu)建程序特征.Anderson 等人[28]認(rèn)為直接使用操作碼頻率會(huì)導(dǎo)致特征空間太大,他們先對(duì)提取的操作碼進(jìn)行分類(lèi),如按照分支跳轉(zhuǎn)操作、內(nèi)存操作、堆棧操作等來(lái)對(duì)操作碼進(jìn)行劃分,隨后再將分類(lèi)后的結(jié)果作為特征.這樣便充分壓縮了特征空間.

對(duì)于獲取的操作碼,同樣也可以使用n-gram方法進(jìn)行特征提取[17-29].如Masud等人[17]針對(duì)獲取的反匯編語(yǔ)句集合使用n-gram方法,并得到相應(yīng)的反匯編序列,進(jìn)而作為程序特征.還有一些工作在構(gòu)造操作碼序列時(shí),沒(méi)有使用n-gram方法.Ye等人[26]使用的是以函數(shù)為單位的操作碼序列.他們以函數(shù)基本塊為單位,先從程序中識(shí)別出不同的函數(shù),再提取對(duì)應(yīng)的操作碼,這樣便得到了以函數(shù)為單位的操作碼序列,隨后再以此作為特征.

1.3.2 API及系統(tǒng)調(diào)用

對(duì)于API及系統(tǒng)調(diào)用的獲取,可以通過(guò)動(dòng)態(tài)或靜態(tài)的方法收集.就動(dòng)態(tài)方法而言,通常會(huì)將惡意軟件放入虛擬環(huán)境(如沙箱)中執(zhí)行,并觀測(cè)記錄相應(yīng)的API及系統(tǒng)調(diào)用信息.就靜態(tài)方法而言,通常需要先反匯編待測(cè)程序,并提取相應(yīng)的CFG(控制流圖),然后根據(jù)CFG獲得相應(yīng)的API信息.

Rieck等人[30]在通過(guò)動(dòng)態(tài)分析方法獲取程序的API后,主要通過(guò)統(tǒng)計(jì)待測(cè)程序各API出現(xiàn)的頻率來(lái)構(gòu)建特征.而Qiao等人[31]則是依據(jù)API序列的頻率來(lái)構(gòu)建特征.Eskandari等人[32]認(rèn)為除了獲得程序的API種類(lèi),保留API序列的調(diào)用順序信息也是必要的.他們通過(guò)對(duì)提取的API使用n-gram的方法獲得API序列,并以此作為特征.由于每一個(gè)API序列便包含了調(diào)用順序信息,這便在一定程度上彌補(bǔ)了部分工作沒(méi)有調(diào)用順序信息的缺憾.Ahmed等人[33]也是通過(guò)動(dòng)態(tài)分析的方式,在運(yùn)行時(shí)提取特征.他們分別使用空間特征和時(shí)序特征,空間特征由API的參數(shù)、返回值構(gòu)成;時(shí)序特征由API調(diào)用序列構(gòu)成.Park等人[34]沒(méi)有直接使用API序列來(lái)作為特征,而是通過(guò)在沙箱中動(dòng)態(tài)運(yùn)行被分析程序,將獲得的系統(tǒng)調(diào)用序列作為特征.Eskandari等人[35]是通過(guò)靜態(tài)分析的方式提取API和CFG(控制流圖).他們并沒(méi)有單獨(dú)將待測(cè)程序的API作為特征,而是把API的信息附著到CFG相應(yīng)的調(diào)用邊上,組成一個(gè)特殊的“API-CFG”結(jié)構(gòu),進(jìn)而作為特征.

1.4 小 結(jié)

本節(jié)主要介紹了惡意軟件智能檢測(cè)的常用特征.總的來(lái)看,大部分特征需要人工提前制定,但近些年來(lái),也有相關(guān)工作開(kāi)始嘗試?yán)蒙窠?jīng)網(wǎng)絡(luò)自動(dòng)提取特征.在獲取特征時(shí),主要分為靜態(tài)獲取與動(dòng)態(tài)獲取2種.靜態(tài)獲取的特征側(cè)重于從文件數(shù)據(jù)本身去發(fā)掘待測(cè)程序的特性;而動(dòng)態(tài)獲取的特征則側(cè)重于發(fā)掘程序運(yùn)行時(shí)的行為特性.

靜、動(dòng)態(tài)獲取程序特征都有自身的優(yōu)勢(shì)或局限性.在眾多的特征中,程序的API及系統(tǒng)調(diào)用信息、運(yùn)行時(shí)狀態(tài)信息最能反應(yīng)程序的行為,相對(duì)而言最為重要;對(duì)于字節(jié)序列、操作碼序列、神經(jīng)網(wǎng)絡(luò)自提取特征都難以直接反應(yīng)程序的行為,重要性次之;而可閱讀字符串、DLL相關(guān)信息等都常用于估計(jì)待測(cè)程序行為,重要性相對(duì)較低;對(duì)于文件頭部信息和熵等特征,則更加難以反應(yīng)程序的行為信息,重要性最低.

由于各種特征各有利弊,在實(shí)際操作過(guò)程中,智能檢測(cè)相關(guān)工作通常會(huì)同時(shí)用到多種特征.如Schultz等人[4]同時(shí)使用了字節(jié)序列與動(dòng)態(tài)鏈接庫(kù)相關(guān)信息來(lái)作為特征;Li等人[3]則運(yùn)用了待測(cè)程序的文件頭、DLL等特征;Masud等人[8]則結(jié)合了字節(jié)序列、操作碼序列及動(dòng)態(tài)鏈接庫(kù)3種特征;Kumar等人[13]同時(shí)將文件頭部信息與熵作為特征等.

綜上所述,我們將常用特征的獲取方式、用到這些特征的代表性相關(guān)工作及特征優(yōu)缺點(diǎn)進(jìn)行了總結(jié),如表1所示:

Table 1 SummaryTable of Common Features

2 特征處理

在確定常用特征之后,需要對(duì)提取的特征進(jìn)行處理.在惡意軟件智能檢測(cè)中,特征處理主要包含挑選重要特征、去除冗余特征、對(duì)特征降維等.其對(duì)于智能檢測(cè)的主要作用是提升訓(xùn)練效率、幫助分類(lèi)器收斂,即盡可能地幫助分類(lèi)器達(dá)到一個(gè)最佳的效果,進(jìn)而使得智能檢測(cè)足夠準(zhǔn)確、可靠.本節(jié)主要介紹惡意軟件智能檢測(cè)相關(guān)工作中的常用特征處理方法.

2.1 信息增益

信息增益可用于衡量相應(yīng)變量能夠增加信息量的程度.在惡意軟件智能檢測(cè)中,信息增益可以用來(lái)衡量相應(yīng)特征對(duì)于分類(lèi)惡意軟件的重要程度,進(jìn)而作為特征篩選的依據(jù).信息增益的一般使用方式是:在給定某些場(chǎng)景下的熵計(jì)算方式后,如果一個(gè)特征越能夠降低熵值,則說(shuō)明該特征越重要[17],進(jìn)而使用者就可以按照特征的重要程度來(lái)選取特征.

在惡意軟件智能檢測(cè)中,信息增益已經(jīng)廣泛用于特征選擇[5,8-9,17-18,33,46-47].如Masud等人[17]就是運(yùn)用信息增益的方法分別挑選出最重要的500個(gè)待測(cè)程序的字節(jié)特征、動(dòng)態(tài)鏈接庫(kù)特征等.Zhang等人[47]則利用信息增益來(lái)確定有效的系統(tǒng)調(diào)用特征.相關(guān)工作使用信息增益的方式大同小異,在此不再贅述.

2.2 去除冗余特征

在特征提取階段完成后,得到的特征集合中可能存在一些冗余特征.冗余特征是指那些不能提供任何有效信息的特征,它們無(wú)法為訓(xùn)練分類(lèi)器正確識(shí)別惡意軟件提供幫助[2].對(duì)此,需要對(duì)這些冗余特征進(jìn)行去除[2,12,23,46].

Shafiq等人[12]認(rèn)為,對(duì)于不同的待測(cè)程序而言,冗余特征對(duì)應(yīng)的特征值不會(huì)發(fā)生變化或發(fā)生變化的幅度過(guò)大(變化幅度過(guò)大可能意味著該特征值是完全隨機(jī)的).他們會(huì)直接將這些特征值穩(wěn)定不變或變化值超過(guò)預(yù)先設(shè)定閾值的特征進(jìn)行移除.Ye等人[2]則提出可以針對(duì)不同的應(yīng)用場(chǎng)景為提取的特征設(shè)計(jì)一個(gè)打分標(biāo)準(zhǔn),然后在此基礎(chǔ)上對(duì)不同的特征進(jìn)行打分,并擇優(yōu)保留排名靠前的特征.Ghiasi等人[23]則維護(hù)了一個(gè)特征頻率表,對(duì)出現(xiàn)頻率較低的特征進(jìn)行去除.

2.3 主成分分析

主成分分析(principal components analysis, PCA)是一種統(tǒng)計(jì)分析、簡(jiǎn)化數(shù)據(jù)集的方法,它常用于降維.它的本質(zhì)是利用正交變換對(duì)一系列可能相關(guān)的變量進(jìn)行線(xiàn)性變換,進(jìn)而轉(zhuǎn)換為1組不相關(guān)的變量.該方法針對(duì)高維數(shù)據(jù)降維非常有效.對(duì)于待分析的高維數(shù)據(jù),如果其特征之間高度相關(guān),或者其包含很多冗余特征,則PCA方法能夠?qū)ζ淦鸬胶芎玫慕稻S作用.

Siddiqui等人[48]使用PCA技術(shù)將初始特征變量數(shù)從877降到了最終的146,降維效果很明顯.Zhang等人[47]和Shafiq等人[12]同樣使用了PCA來(lái)對(duì)高度相關(guān)的特征進(jìn)行降維.但是特征降維可能會(huì)導(dǎo)致被降維數(shù)據(jù)信息丟失(比如降維后數(shù)據(jù)方差減少).所以在進(jìn)行降維時(shí),需要綜合考慮降維程度與信息丟失之間的平衡[12].

2.4 小波變換

小波變換是一種常用的變換手段,相較于傅里葉變換而言,小波變換能夠更好地從信號(hào)中提取信息.在惡意軟件的智能檢測(cè)中,小波變換也可以用于特征降維,或轉(zhuǎn)換特征表示形式進(jìn)而得到新特征[12,15-16,49].降維的本質(zhì)在于將原始特征表示為1組小波基的線(xiàn)性組合,然后忽略其中的部分非重要項(xiàng),即可達(dá)到降維目的.而轉(zhuǎn)換特征表示形式并提取新特征則依靠小波變換從原始特征中提取多個(gè)定長(zhǎng)項(xiàng),并依據(jù)每一項(xiàng)的能譜來(lái)作為特征.

Shafiq等人[12]在處理特征時(shí),使用的是哈爾小波變換.通過(guò)小波變換,能夠使用先前層級(jí)的系數(shù)推出更高層級(jí)的特征.這些高層級(jí)的特征代表的往往是噪聲或細(xì)節(jié)信息,屬于非重要項(xiàng).所以在表示時(shí),可以適當(dāng)?shù)囊瞥承└邔蛹?jí)項(xiàng),這樣便達(dá)到了降維的效果.除了特征降維,小波變換的另一個(gè)用途是將特征拆分為多個(gè)固定長(zhǎng)度的項(xiàng),而每一個(gè)項(xiàng)的能譜可以單獨(dú)作為特征.Wojnowicz等人[15]便針對(duì)熵特征使用了小波變換,得到了多個(gè)不同層級(jí)的定長(zhǎng)項(xiàng).他們使用這些不同項(xiàng)的能譜來(lái)作為特征,并用于訓(xùn)練分類(lèi)器.

2.5 運(yùn)用分類(lèi)器處理特征

在惡意軟件智能檢測(cè)中,分類(lèi)器不僅可以用于對(duì)待測(cè)軟件進(jìn)行檢測(cè),還可以作為特征處理的工具.在處理特征時(shí),常用的分類(lèi)器有隨機(jī)森林、自組織映射神經(jīng)網(wǎng)絡(luò)等[22,48,50].

分類(lèi)器可以幫助篩選特征.例如,在面對(duì)特征集合時(shí),可以使用控制變量法,通過(guò)逐個(gè)移除某一特征后再重新訓(xùn)練分類(lèi)器,并觀察分類(lèi)器準(zhǔn)確率或基尼系數(shù)的下降程度來(lái)判斷相應(yīng)特征的重要性.Siddiqui等人[48]使用該方法在隨機(jī)森林模型上進(jìn)行實(shí)驗(yàn),并將分類(lèi)器準(zhǔn)確率或平均基尼系數(shù)下降至小于10%的相應(yīng)特征進(jìn)行移除.通過(guò)篩選,能夠?qū)⒃嫉奶卣髯兞繑?shù)量從877降低至84.為了保證實(shí)驗(yàn)結(jié)果的可靠程度,還可以同時(shí)使用多個(gè)分類(lèi)器進(jìn)行實(shí)驗(yàn)觀測(cè).Raman[51]同時(shí)使用了多個(gè)算法生成的分類(lèi)器,如:IBk,J48,Ridor,隨機(jī)森林等.在多個(gè)分類(lèi)器下,他們通過(guò)特定的算法來(lái)觀測(cè)單一特征對(duì)這些分類(lèi)器識(shí)別準(zhǔn)確率的影響,并最終挑選出了7個(gè)能夠?qū)阂廛浖R(shí)別起到關(guān)鍵作用的特征.

分類(lèi)器還可以直接用于降維.例如,使用自組織神經(jīng)網(wǎng)絡(luò)來(lái)降低特征維度.Burnap等人[22]將提取的特征數(shù)據(jù)輸入到自組織神經(jīng)網(wǎng)絡(luò)中,不僅得到了降維后的特征,還能夠通過(guò)該網(wǎng)絡(luò)獲得特征數(shù)據(jù)的可視化表示,便于研究者進(jìn)行分析.

2.6 嵌 入

embedding 是一種將離散變量轉(zhuǎn)換為連續(xù)向量表示的常用方法.embedding能夠減少離散變量的空間維數(shù),embedding后的結(jié)果還能體現(xiàn)不同實(shí)體間的關(guān)系.在自然語(yǔ)言處理、搜索排序、推薦系統(tǒng)等相關(guān)領(lǐng)域,embedding已經(jīng)被廣泛使用.

在神經(jīng)網(wǎng)絡(luò)自動(dòng)提取程序特征的智能檢測(cè)工作中,也會(huì)用到embedding.由于直接利用程序字節(jié)值會(huì)存在許多問(wèn)題[10],如無(wú)法根據(jù)字節(jié)值來(lái)衡量字節(jié)之間的語(yǔ)義相似性.對(duì)此,相關(guān)工作可能需要使用embedding的方法來(lái)對(duì)程序的字節(jié)進(jìn)行轉(zhuǎn)換.這樣不僅降低了輸入數(shù)據(jù)的維度,而且轉(zhuǎn)換后的數(shù)據(jù)還可以體現(xiàn)不同實(shí)體間的語(yǔ)義關(guān)系.

Fig. 5 CNN structure diagram using embedding layer圖5 使用embedding層的CNN結(jié)構(gòu)圖

Raff等人[10]就是使用embedding的方法來(lái)改變程序字節(jié)表示形式.他們?cè)谑褂玫腃NN中加入了embedding層,達(dá)到了無(wú)監(jiān)督學(xué)習(xí)訓(xùn)練該層的目的,其具體結(jié)構(gòu)如圖5所示.且當(dāng)CNN訓(xùn)練好后,相應(yīng)的embedding層也會(huì)訓(xùn)練完成.在檢測(cè)過(guò)程中,當(dāng)程序字節(jié)輸入到CNN中時(shí),由于embedding層的存在可以直接對(duì)其進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換后的結(jié)果會(huì)直接用于檢測(cè).

2.7 小 結(jié)

本節(jié)主要介紹了惡意軟件智能檢測(cè)的常用特征處理方法.特征處理主要關(guān)注的是如何精簡(jiǎn)已有的特征.從它們的功能來(lái)看,無(wú)論是挑選重要特征、去除冗余特征還是特征降維,本質(zhì)上都是對(duì)特征的精簡(jiǎn),旨在去除特征中無(wú)用或用處不大的部分,進(jìn)而使得分類(lèi)器能夠聚焦于有用的特征.此外,隨著深度學(xué)習(xí)的發(fā)展,對(duì)于一些不需要直接由人工制定特征的場(chǎng)景,特征處理面對(duì)的對(duì)象就成為了最基本的程序數(shù)據(jù).此時(shí)特征處理關(guān)注的應(yīng)該是如何將程序數(shù)據(jù)以合理的形式呈現(xiàn)給分類(lèi)器,如使用嵌入的方法,將程序數(shù)據(jù)轉(zhuǎn)換到新的表征空間等.而這是為了便于分類(lèi)器更好地自動(dòng)提取程序特征,進(jìn)而促進(jìn)智能檢測(cè)效果.綜上,我們將特征處理方法進(jìn)行了總結(jié),如表2所示:

Table 2 Summary of Feature Processing Methods

3 分類(lèi)器

在獲得處理完的特征后,便會(huì)將其輸入到分類(lèi)器中,以獲取檢測(cè)結(jié)果.在惡意軟件智能檢測(cè)相關(guān)工作中,分類(lèi)器主要分為機(jī)器學(xué)習(xí)分類(lèi)器與深度學(xué)習(xí)分類(lèi)器.盡管本節(jié)是將多種分類(lèi)器分開(kāi)介紹,但對(duì)于智能檢測(cè)而言,現(xiàn)有的工作通常會(huì)包含多種分類(lèi)器,從而進(jìn)行分類(lèi)器之間的對(duì)比,進(jìn)而獲取最優(yōu)的實(shí)驗(yàn)效果;或結(jié)合不同分類(lèi)器,達(dá)到更好的效果.

3.1 機(jī)器學(xué)習(xí)分類(lèi)器

3.1.1 支持向量機(jī)

支持向量機(jī)(support vector machine, SVM)是一種適用于分類(lèi)問(wèn)題的監(jiān)督學(xué)習(xí)模型,常用于二分類(lèi).它能夠很好地應(yīng)對(duì)線(xiàn)性與非線(xiàn)性分類(lèi)問(wèn)題.在線(xiàn)性分類(lèi)問(wèn)題中,SVM能夠在數(shù)據(jù)間形成一個(gè)超平面,進(jìn)而將數(shù)據(jù)分類(lèi).在非線(xiàn)性分類(lèi)問(wèn)題中,SVM需要結(jié)合核技巧,將特征空間轉(zhuǎn)換為高維空間,然后再構(gòu)建超平面進(jìn)行分類(lèi)[8].

在智能檢測(cè)領(lǐng)域,SVM常用于二分類(lèi)場(chǎng)景,即判斷待測(cè)軟件是否為惡意.在當(dāng)前的相關(guān)工作中,SVM已經(jīng)被廣泛使用[8,13,17,25,30,33].如Li等人[3]將待測(cè)軟件的文件頭、DLL等特征作為SVM的輸入來(lái)進(jìn)行分類(lèi).Kolter等人[5]則將獲得的字節(jié)序列特征送入SVM.而Masud等人[8]則綜合考慮了字節(jié)序列、操作碼、DLL等多種特征來(lái)作為SVM的分類(lèi)依據(jù).

3.1.2 決策樹(shù)與隨機(jī)森林

決策樹(shù)是一種常用的監(jiān)督學(xué)習(xí)模型,決策樹(shù)分類(lèi)算法是一種基于實(shí)例的歸納學(xué)習(xí)方法,它能從給定的無(wú)序的訓(xùn)練樣本中,提煉出樹(shù)型的分類(lèi)模型.而隨機(jī)森林則是由多顆決策樹(shù)組成,它會(huì)以投票的形式,將所有決策樹(shù)的結(jié)果眾數(shù)作為自身的輸出結(jié)果.決策樹(shù)與隨機(jī)森林也常用于惡意軟件智能檢測(cè).

Kolter等人[5]在其工作中使用了多種分類(lèi)器,其中就包含決策樹(shù)、以及決策樹(shù)的變體“Boosted Tree”.Elovici等人[6]則考慮了決策樹(shù)變體“J48”.Eskandari等人[32]則在使用決策樹(shù)的同時(shí),還使用了隨機(jī)森林.Raman[51]使用的分類(lèi)器種類(lèi)更多,除了隨機(jī)森林外,他們還使用了多種決策樹(shù)變體,如:“IBk,J48,J48 Graft,Part”等.

3.1.3 樸素貝葉斯與貝葉斯網(wǎng)絡(luò)

樸素貝葉斯分類(lèi)器也是一種有監(jiān)督分類(lèi)模型,它的本質(zhì)是一個(gè)條件概率模型.它是在假設(shè)特征之間相互獨(dú)立的條件下,運(yùn)用貝葉斯定理來(lái)建立的概率分類(lèi)器.貝葉斯網(wǎng)絡(luò)則是一種有向無(wú)環(huán)的概率圖模型,主要用于表示變量之間的依賴(lài)關(guān)系.圖中用有向邊連接的節(jié)點(diǎn)是非條件獨(dú)立的,二者之間具有條件概率值;而無(wú)邊相連的節(jié)點(diǎn)是相互條件獨(dú)立的.樸素貝葉斯與貝葉斯網(wǎng)絡(luò)也常作為智能檢測(cè)的分類(lèi)器.

在惡意軟件智能檢測(cè)的相關(guān)工作中,Ahmed等人[33]使用了樸素貝葉斯分類(lèi)器來(lái)進(jìn)行惡意軟件識(shí)別.除了使用樸素貝葉斯分類(lèi)器外,Kolter等人[5]還運(yùn)用了樸素貝葉斯的變體“Boosted Bayes”分類(lèi)器來(lái)進(jìn)行分類(lèi).Schultz等人[4]則同時(shí)使用了多個(gè)樸素貝葉斯分類(lèi)器,并將多個(gè)分類(lèi)器的投票結(jié)果的眾數(shù)來(lái)作為最終結(jié)果.而在使用樸素貝葉斯分類(lèi)器的同時(shí),Masud等人[8]還使用了貝葉斯網(wǎng)絡(luò)分類(lèi)器.

3.1.4K近鄰算法

K近鄰算法(K-nearest neighbor,KNN)算法是根據(jù)不同特征值之間的距離來(lái)進(jìn)行分類(lèi)的機(jī)器學(xué)習(xí)方法.給定一個(gè)輸入數(shù)據(jù),KNN會(huì)統(tǒng)計(jì)與該輸入最近的K個(gè)點(diǎn)所屬的類(lèi)別,并以投票的方式,將數(shù)量最大的那一類(lèi)作為該輸入的預(yù)測(cè)結(jié)果.KNN被提出的時(shí)間較早,屬于較為簡(jiǎn)單的機(jī)器學(xué)習(xí)算法,而使用KNN的智能檢測(cè)相關(guān)工作也偏向于早期.

Firdausi等人[52]將動(dòng)態(tài)獲取的程序行為信息作為特征,并交由KNN進(jìn)行檢測(cè).Abou-Assaleh等人[37]則是將n-gram得到的字節(jié)序列特征作為KNN的輸入,進(jìn)而進(jìn)行分類(lèi).

3.2 深度學(xué)習(xí)分類(lèi)器

3.2.1 人工神經(jīng)網(wǎng)絡(luò)

人工神經(jīng)網(wǎng)絡(luò)(artificial neural network, ANN)[53]是一種模仿生物神經(jīng)系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu).它主要由一批相互連接的“神經(jīng)元”構(gòu)成.相連的神經(jīng)元之間具有相應(yīng)的權(quán)重值.在網(wǎng)絡(luò)的訓(xùn)練過(guò)程中,會(huì)通過(guò)反向傳播算法,不斷地調(diào)整各權(quán)重值來(lái)使得網(wǎng)絡(luò)模型滿(mǎn)足任務(wù)的需求.

一些早期的智能檢測(cè)工作會(huì)考慮采用ANN.如Moskovitch等人[38]是將提取的操作碼序列特征作為ANN的輸入,進(jìn)而進(jìn)行檢測(cè).他們[36]在另一份工作中則是用n-gram提取字節(jié)序列,再結(jié)合ANN進(jìn)行檢測(cè).而Elovici等人[6]同時(shí)將n-gram提取的字節(jié)序列與文件頭部信息特征作為ANN的輸入.由于ANN過(guò)于簡(jiǎn)單,近些年基于深度學(xué)習(xí)技術(shù)的智能檢測(cè)工作已經(jīng)不再使用ANN.相關(guān)工作逐漸開(kāi)始嘗試CNN,RNN等其他功能性更強(qiáng)的神經(jīng)網(wǎng)絡(luò).

3.2.2 卷積神經(jīng)網(wǎng)絡(luò)

卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN)是2012年前后興起于計(jì)算機(jī)視覺(jué)領(lǐng)域[54]的一種典型神經(jīng)網(wǎng)絡(luò)模型,通常包括卷積層、池化層和全連接層等.CNN的卷積與池化層使得它能夠很好地提取數(shù)據(jù)的2維特征,因此它能夠在圖像識(shí)別相關(guān)領(lǐng)域表現(xiàn)優(yōu)異.近年來(lái),相關(guān)工作也開(kāi)始將CNN用于惡意代碼智能檢測(cè).

在CNN與智能檢測(cè)相結(jié)合的相關(guān)工作中,部分工作先將待測(cè)程序轉(zhuǎn)換為圖片的形式[19-20,45]后,再利用CNN進(jìn)行檢測(cè).如Yan等人[20]先以單個(gè)字節(jié)為最小單元,再按照此最小單元將待測(cè)程序轉(zhuǎn)換為灰度圖,隨后再用CNN進(jìn)行檢測(cè).而He等人[45]則是將程序轉(zhuǎn)換為RGB圖.他們以3B為一個(gè)單位,使每3B分別對(duì)應(yīng)R,G,B這3個(gè)信道.在這些轉(zhuǎn)化為圖的工作中,本質(zhì)上是將程序的相似性與圖的相似性關(guān)聯(lián)起來(lái).

對(duì)于將程序轉(zhuǎn)化為圖的相關(guān)工作,會(huì)讓程序字節(jié)值與像素值相對(duì)應(yīng),即直接利用程序的字節(jié)值.而這些直接利用字節(jié)值的方法不被Raff等人[10]認(rèn)可.他們認(rèn)為,對(duì)于神經(jīng)網(wǎng)絡(luò)而言,如果直接利用字節(jié)的值,則字節(jié)值越相近意味著字節(jié)語(yǔ)義越相近.而這明顯是錯(cuò)誤的,因?yàn)橹迪嘟淖止?jié)并不意味著對(duì)應(yīng)的語(yǔ)義也相近.對(duì)此,他們先用embedding的方法將程序字節(jié)轉(zhuǎn)化為向量,隨后再利用CNN進(jìn)行檢測(cè).在Raff等人的工作中,在采用最大池化策略的同時(shí),還設(shè)置了合適大小的滑動(dòng)窗口,旨在捕捉到處于不同位置的重要程序特征.而Tobiyama等人[43]并沒(méi)有直接將待測(cè)程序的靜態(tài)特征作為CNN的輸入.通過(guò)動(dòng)態(tài)運(yùn)行待測(cè)程序,他們獲得了程序行為對(duì)應(yīng)的API序列,然后用循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network, RNN)提取API序列的特征,隨后再將RNN的特征提取結(jié)果作為CNN的輸入,進(jìn)而進(jìn)行檢測(cè).Chai等人[41]則是先通過(guò)CNN提取API序列的局部特征,再將提取的結(jié)果作為圖卷積神經(jīng)網(wǎng)絡(luò)的輸入進(jìn)而得到全局特征.

3.2.3 循環(huán)神經(jīng)網(wǎng)絡(luò)

循環(huán)神經(jīng)網(wǎng)絡(luò)是一類(lèi)以序列數(shù)據(jù)為輸入,在序列的演進(jìn)方向進(jìn)行遞歸,且所有節(jié)點(diǎn)(循環(huán)單元)按鏈?zhǔn)竭B接的遞歸神經(jīng)網(wǎng)絡(luò)[55].循環(huán)神經(jīng)網(wǎng)絡(luò)具有記憶性、參數(shù)共享等特性,在對(duì)序列的非線(xiàn)性特征進(jìn)行學(xué)習(xí)時(shí)具有一定的優(yōu)勢(shì),目前已廣泛應(yīng)用于自然語(yǔ)言處理領(lǐng)域.由于程序代碼是由計(jì)算機(jī)語(yǔ)言編寫(xiě)的,跟自然語(yǔ)言有類(lèi)似之處,因此在有些智能檢測(cè)相關(guān)工作中,也使用了RNN.

Shukla等人[44]使用RNN來(lái)檢測(cè)惡意軟件,并與基于CNN和基于隱馬爾可夫模型(HMM)的方法進(jìn)行了對(duì)比,發(fā)現(xiàn)在其檢測(cè)場(chǎng)景下,使用RNN的效果更好.Tobiyama等人[43]則將RNN與CNN結(jié)合使用,他們用RNN提取的特征來(lái)作為CNN的輸入,進(jìn)而實(shí)現(xiàn)檢測(cè).而Mathew等人[40]則使用RNN的變體LSTM(長(zhǎng)短記憶網(wǎng)絡(luò))來(lái)作為分類(lèi)器,旨在對(duì)提取的API序列特征進(jìn)行檢測(cè).

3.2.4 圖卷積神經(jīng)網(wǎng)絡(luò)

圖卷積神經(jīng)網(wǎng)絡(luò)(graph convolutional network, GCN)是一種能對(duì)圖數(shù)據(jù)進(jìn)行深度學(xué)習(xí)的方法[56].GCN可以直接作用于圖數(shù)據(jù),它能在圖數(shù)據(jù)上進(jìn)行卷積操作.就目前而言,使用 GCN的惡意軟件智能檢測(cè)相關(guān)工作較少,仍處于早期階段.

在智能檢測(cè)領(lǐng)域中,GCN主要與API序列特征結(jié)合使用.Oliveira等人[42]借助了圖卷積神經(jīng)網(wǎng)絡(luò)來(lái)進(jìn)行檢測(cè).他們先獲取了待測(cè)程序的API序列,并分析出API的調(diào)用順序,隨后據(jù)此構(gòu)建API之間的行為圖.最終他們將行為圖作為圖卷積神經(jīng)網(wǎng)絡(luò)的輸入,進(jìn)而實(shí)現(xiàn)檢測(cè).

3.3 小 結(jié)

本節(jié)主要介紹了惡意軟件智能檢測(cè)的常用分類(lèi)器.在早期的相關(guān)工作中,智能檢測(cè)偏向于使用傳統(tǒng)的機(jī)器學(xué)習(xí)分類(lèi)器.而近些年來(lái),越來(lái)越多的深度學(xué)習(xí)分類(lèi)器被引入到智能檢測(cè)中.傳統(tǒng)機(jī)器學(xué)習(xí)分類(lèi)器是以人工提取的特征作為輸入;而深度學(xué)習(xí)分類(lèi)器既能以人工提取的特征為輸入,也可自動(dòng)提取程序特征.此外,一些分類(lèi)器只在較早的工作中出現(xiàn),如KNN和ANN.另一方面,一些新式的深度學(xué)習(xí)分類(lèi)器則在近些年才得以應(yīng)用,且應(yīng)用的較少,如GCN.未來(lái)可能會(huì)有更多的深度學(xué)習(xí)分類(lèi)器被引入到智能檢測(cè)中.最后,我們對(duì)使用過(guò)這些常用分類(lèi)器的代表性工作進(jìn)行了總結(jié),如表3所示:

Table 3 Summary Table of Common Classifiers

4 智能檢測(cè)面臨的問(wèn)題

隨著惡意軟件智能檢測(cè)逐漸被廣泛應(yīng)用,其面臨的問(wèn)題也不容忽視.本節(jié)主要介紹當(dāng)前智能檢測(cè)相關(guān)工作中所存在的主要問(wèn)題,包括數(shù)據(jù)收集中的問(wèn)題,靜、動(dòng)態(tài)檢測(cè)時(shí)的局限性,以及對(duì)抗樣本威脅.

4.1 數(shù)據(jù)收集相關(guān)問(wèn)題

4.1.1 標(biāo)準(zhǔn)數(shù)據(jù)集現(xiàn)狀

在Windows平臺(tái)下,就現(xiàn)有的標(biāo)準(zhǔn)數(shù)據(jù)集而言,目前只有“EMBER”[57]與“BIG 2015”[58].出于對(duì)版權(quán)問(wèn)題的考慮,EMBER數(shù)據(jù)集中只包含了良性軟件與惡意軟件的特征,總數(shù)為110萬(wàn)個(gè).而B(niǎo)IG 2015則包含了惡意軟件,且為了避免造成危害,均被去除了文件頭部.總的來(lái)看,現(xiàn)有的開(kāi)源標(biāo)準(zhǔn)數(shù)據(jù)集較少,無(wú)法滿(mǎn)足學(xué)術(shù)界與工業(yè)界的需求.對(duì)于智能檢測(cè)相關(guān)工作而言,普遍還是需要自行收集數(shù)據(jù).

4.1.2 收集惡意軟件相關(guān)問(wèn)題

在惡意軟件智能檢測(cè)中,相關(guān)工作收集惡意軟件的主要方法是從一些網(wǎng)站上[59-60]直接下載,或部署蜜罐進(jìn)行收集.然而,惡意軟件的收集很容易存在數(shù)據(jù)不平衡的問(wèn)題,進(jìn)而影響分類(lèi)器的訓(xùn)練效果.

以蜜罐收集惡意軟件為例.蜜罐本身只能收集它能夠收集的數(shù)據(jù)[49],進(jìn)而收集的數(shù)據(jù)存在不平衡性.具體而言,某些惡意軟件需要在特定的環(huán)境下才會(huì)展現(xiàn)惡意行為,比如需要與特定的應(yīng)用程序進(jìn)行交互后才能展現(xiàn)惡意行為.在這種情況下,蜜罐必須具備相應(yīng)的環(huán)境才能捕捉這類(lèi)惡意軟件,否則便無(wú)法收集.顯然,這會(huì)導(dǎo)致很多不滿(mǎn)足蜜罐環(huán)境的惡意軟件被遺漏.此外,有些惡意軟件還會(huì)檢測(cè)出蜜罐的存在,進(jìn)而避免被收集.因此,通過(guò)蜜罐獲取的惡意軟件種類(lèi)只是眾多惡意軟件種類(lèi)中的一小部分,這樣收集下來(lái)的數(shù)據(jù)集必然存在數(shù)據(jù)不平衡的問(wèn)題.

4.1.3 收集良性軟件相關(guān)問(wèn)題

在訓(xùn)練分類(lèi)器時(shí),除了惡意軟件外,還需要有充足的良性軟件.相比于收集惡意軟件,收集良性程序的難度可能更高[49].對(duì)于良性軟件的收集,大部分工作是在Windows系統(tǒng)中直接獲取系統(tǒng)程序或下載一些熱門(mén)的應(yīng)用程序.然而這樣的收集方式可能會(huì)導(dǎo)致分類(lèi)器泛化能力不足,影響分類(lèi)器可用性.

首先,Windows系統(tǒng)程序本身可能帶有一些固定的字符串,如“Microsoft Windows”.當(dāng)智能檢測(cè)分類(lèi)器使用這些數(shù)據(jù)進(jìn)行訓(xùn)練時(shí),可能會(huì)將這些固定字符串作為區(qū)分惡意軟件與良性軟件的重要特征,而無(wú)法學(xué)習(xí)到它們之間的本質(zhì)區(qū)別,最終導(dǎo)致分類(lèi)器泛化能力不足.

其次,Windows系統(tǒng)程序多半是不加殼的;而為了躲避檢測(cè),大量的惡意軟件都會(huì)加殼.在這種情況下,訓(xùn)練集會(huì)出現(xiàn)明顯的不平衡:訓(xùn)練集中的加殼程序往往是惡意的.而這種訓(xùn)練集的不平衡性會(huì)極大地影響分類(lèi)器的泛化能力.具體而言,分類(lèi)器在進(jìn)行訓(xùn)練時(shí),會(huì)將殼的存在與否作為判別惡意軟件的重要依據(jù)[61].而在真實(shí)場(chǎng)景下,很多良性軟件也會(huì)加殼(比如通過(guò)加殼來(lái)防止被破解).這樣一來(lái),先前的分類(lèi)器可能會(huì)盲目地將這類(lèi)帶殼的良性軟件誤判為惡意軟件,進(jìn)而極大地影響分類(lèi)器的可用性.

4.2 打標(biāo)簽相關(guān)問(wèn)題

對(duì)于收集的程序數(shù)據(jù)集,還需要對(duì)它們打標(biāo)簽.現(xiàn)有的打標(biāo)簽方式主要依賴(lài)于殺毒軟件或惡意軟件檢測(cè)平臺(tái)等.如將程序上傳到VirusTotal(VirusTotal上集成了多個(gè)殺毒軟件的在線(xiàn)檢測(cè)服務(wù))進(jìn)行打標(biāo)簽.在打標(biāo)簽時(shí),相關(guān)工作會(huì)制定自己的標(biāo)準(zhǔn)來(lái)決定程序的惡意性.如以投票的形式[62-65],根據(jù)預(yù)先設(shè)定的閾值,當(dāng)超過(guò)閾值的殺毒軟件將待測(cè)程序識(shí)別為惡意軟件時(shí),則為其打上惡意的標(biāo)簽;反之則打上良性標(biāo)簽.此外,還可以預(yù)先認(rèn)定一批權(quán)威的殺毒軟件[66],當(dāng)這些權(quán)威的殺毒軟件同時(shí)將目標(biāo)對(duì)象識(shí)別為惡意時(shí),則打上惡意標(biāo)簽,反之亦然.

然而,這些打標(biāo)簽的正確與否本身依賴(lài)于殺毒軟件自身的可靠性.而在現(xiàn)實(shí)場(chǎng)景下,殺毒軟件自身往往會(huì)存在問(wèn)題.首先,殺毒軟件會(huì)不斷進(jìn)行更新,其決策邊界會(huì)發(fā)生變化,先前制定好的投票閾值不一定能夠滿(mǎn)足更新后的需求.其次,對(duì)于先前未見(jiàn)過(guò)的待測(cè)程序,殺毒軟件的泛化能力可能不足,它們無(wú)法準(zhǔn)確的檢測(cè)待測(cè)程序,進(jìn)而它們所打的標(biāo)簽也是不可靠的.再者,對(duì)于一些投票結(jié)果處在閾值邊緣的待測(cè)程序,對(duì)它們所打的標(biāo)簽可能存在誤報(bào)或者漏報(bào).

4.3 靜態(tài)檢測(cè)局限性

在惡意軟件智能檢測(cè)中,靜態(tài)檢測(cè)需要依賴(lài)于靜態(tài)特征的提取.然而,待測(cè)程序常常會(huì)使用加殼技術(shù)來(lái)對(duì)抗靜態(tài)特征提取.對(duì)于加殼的待測(cè)程序而言,很難獲得其反匯編代碼.而沒(méi)有反匯編代碼則意味著無(wú)法提取與反匯編代碼相關(guān)的特征.例如,由于沒(méi)有反匯編代碼,靜態(tài)獲取操作碼相關(guān)特征將變得不可行.就目前而言,在靜態(tài)檢測(cè)領(lǐng)域,還沒(méi)有較好的辦法能夠針對(duì)加殼待測(cè)程序提取對(duì)應(yīng)的反匯編代碼.因此,在面對(duì)加殼程序時(shí),靜態(tài)智能檢測(cè)往往需要從其他的角度提取特征[61],如使用熵特征等.

此外,即使待測(cè)程序未加殼,現(xiàn)有的反匯編技術(shù)也不能保證反匯編結(jié)果完全準(zhǔn)確.例如,可能會(huì)出現(xiàn)靜態(tài)識(shí)別間接跳轉(zhuǎn)不準(zhǔn)確,導(dǎo)致反匯編結(jié)果出錯(cuò)的情況.這也可能在一定程度上給相關(guān)特征的提取帶來(lái)麻煩.

4.4 動(dòng)態(tài)檢測(cè)局限性

對(duì)于動(dòng)態(tài)檢測(cè)而言,它會(huì)在待測(cè)程序運(yùn)行時(shí)提取動(dòng)態(tài)特征.然而,動(dòng)態(tài)提取特征的過(guò)程同樣會(huì)面臨很多問(wèn)題.

首先,現(xiàn)階段的動(dòng)態(tài)檢測(cè)方法通常是將待測(cè)程序運(yùn)行在虛擬環(huán)境中,并動(dòng)態(tài)監(jiān)測(cè)待測(cè)軟件行為,進(jìn)而提取特征.但是,有些惡意軟件能夠檢測(cè)到虛擬環(huán)境的存在,并且在虛擬環(huán)境中隱藏惡意行為[67-69].這樣一來(lái),其相關(guān)特征便不能被很好地提取.為了應(yīng)對(duì)這一問(wèn)題,可以通過(guò)強(qiáng)制執(zhí)行某些程序路徑的方式來(lái)進(jìn)行彌補(bǔ),迫使程序執(zhí)行某些隱藏的路徑,進(jìn)而表現(xiàn)出惡意功能[70-71].然而,這種探索路徑的方式存在局限性,通常不能將待測(cè)程序的所有路徑遍歷完,且很容易遭遇路徑爆炸等問(wèn)題.

其次,惡意軟件可能需要在特定的環(huán)境下才能執(zhí)行相應(yīng)惡意功能.比如,某些惡意軟件對(duì)當(dāng)前的操作系統(tǒng)版本有要求,或?qū)κ欠癜惭b了特定的軟件有要求[72]等.這對(duì)運(yùn)行待測(cè)程序的虛擬環(huán)境要求很高,且很難考慮周全.

另外,在進(jìn)行動(dòng)態(tài)檢測(cè)時(shí),除了需要消耗大量的計(jì)算資源,還可能面臨一些安全上的問(wèn)題.如一些惡意軟件執(zhí)行時(shí),需要一些內(nèi)核級(jí)的特殊權(quán)限、網(wǎng)絡(luò)連接等,這都可能會(huì)帶來(lái)一些安全上的隱患[49,73].現(xiàn)有的一些工作提出了一些緩解措施,如在隔絕網(wǎng)絡(luò)的條件下,可以使用網(wǎng)絡(luò)模擬器來(lái)給惡意軟件提供一些虛假的網(wǎng)絡(luò)回復(fù)[74-75]等,進(jìn)而在不影響惡意軟件行為的前提下,避免讓惡意軟件直接與真實(shí)的網(wǎng)絡(luò)環(huán)境相接觸.

4.5 對(duì)抗樣本威脅

對(duì)抗樣本最早是由Szegedy等人[76]提出的,對(duì)于一個(gè)目標(biāo)模型能夠正確識(shí)別的原始輸入,通過(guò)添加一些肉眼不可見(jiàn)的細(xì)微改動(dòng),使得模型發(fā)生誤判,則改動(dòng)后得到的輸入就是對(duì)抗樣本.對(duì)抗樣本示意圖如圖6所示.其中,“噪聲”即為人為構(gòu)造的擾動(dòng).當(dāng)擾動(dòng)添加到原始圖片上之后,便可得到對(duì)抗樣本.

Fig. 6 Adversarial example圖6 對(duì)抗樣本

對(duì)抗樣本的興起讓人們開(kāi)始逐漸關(guān)注起人工智能的安全性問(wèn)題.目前而言,對(duì)抗樣本已經(jīng)廣泛存在于圖像識(shí)別、語(yǔ)音識(shí)別、目標(biāo)檢測(cè)等多個(gè)領(lǐng)域.而在惡意軟件的智能檢測(cè)中,其所使用的人工智能模型同樣存在被對(duì)抗樣本攻擊的風(fēng)險(xiǎn).與其他領(lǐng)域不同的是,在惡意軟件對(duì)抗樣本生成過(guò)程中,只要不影響惡意軟件正常功能,攻擊者可以對(duì)惡意軟件做任意的改動(dòng).

針對(duì)惡意軟件智能檢測(cè)的對(duì)抗樣本相關(guān)工作主要分為2類(lèi),即白盒攻擊和黑盒攻擊.白盒攻擊是指攻擊者知道智能檢測(cè)目標(biāo)模型的所有信息,隨后在此基礎(chǔ)上對(duì)目標(biāo)模型進(jìn)行攻擊.而黑盒攻擊則意味著攻擊者不知道模型內(nèi)部的任何信息.相比于白盒攻擊,黑盒攻擊場(chǎng)景更加符合實(shí)際.

對(duì)于白盒攻擊而言,攻擊者可以直接依據(jù)目標(biāo)模型來(lái)計(jì)算目標(biāo)程序可修改位置的梯度信息,并依據(jù),梯度信息來(lái)改動(dòng)相應(yīng)位置字節(jié),進(jìn)而構(gòu)造對(duì)抗樣本.上述攻擊流程基本上是當(dāng)前白盒工作的主要做法.對(duì)于白盒工作而言,它們之間的主要區(qū)別在于如何確定程序可修改位置.大部分工作在制定修改位置時(shí),都會(huì)考慮不破壞惡意軟件的功能.如Kolosnjaji等人[77]先在文件末尾添加字節(jié)后,再進(jìn)行修改.Kreuk等人[78]則是選擇在新增的節(jié)里進(jìn)行修改.而Demetrio等人[79]認(rèn)為,只需修改程序頭部信息即可.然而,Liu等人[80]在進(jìn)行修改時(shí),并沒(méi)有考慮不破壞惡意軟件的功能,他們直接對(duì)一整個(gè)程序的所有字節(jié)進(jìn)行修改.這種方式得到的對(duì)抗樣本往往是無(wú)法正常運(yùn)行的,更無(wú)法保護(hù)惡意軟件的功能.

對(duì)于黑盒攻擊而言,攻擊者不知道模型的內(nèi)部信息.相比于白盒攻擊,黑盒攻擊的要求更為嚴(yán)格,且實(shí)用性更強(qiáng).在黑盒攻擊中,部分場(chǎng)景要求較為寬松,允許知道模型輸出的置信度;而在嚴(yán)格的場(chǎng)景下,攻擊者無(wú)法獲取置信度,而只知道判別結(jié)果.甚至在有些情況下,黑盒攻擊還會(huì)被限制詢(xún)問(wèn)次數(shù).

盡管黑盒攻擊要求更嚴(yán)格,但也意味著其實(shí)用性更強(qiáng),且方法更為多樣.而在黑盒場(chǎng)景下,同樣需要遵循不破壞惡意軟件功能的原則.因此,在生成對(duì)抗樣本的過(guò)程中,針對(duì)目標(biāo)程序的改動(dòng)操作種類(lèi)比較有限[81-82],常用的合法改動(dòng)操作如表4所示.而相關(guān)工作會(huì)在有限的操作集合里進(jìn)行方法上的創(chuàng)新.

Table 4 Common Actions of Black-box Attacks

如Anderson等人[82]將強(qiáng)化學(xué)習(xí)運(yùn)用到了對(duì)抗樣本生成中,而強(qiáng)化學(xué)習(xí)的操作空間包括了一些不會(huì)改變惡意軟件功能的操作,如創(chuàng)建新的節(jié)、在程序末尾添加字節(jié)、程序加殼或脫殼等.Song等人[66]則設(shè)計(jì)了一套啟發(fā)式算法,在這些允許的改動(dòng)操作基礎(chǔ)上,通過(guò)不斷迭代,來(lái)嘗試添加各種改動(dòng),進(jìn)而構(gòu)造對(duì)抗樣本.

還有一些方法則不考慮在原始惡意軟件上構(gòu)造對(duì)抗樣本,而是直接在提取出的特征上構(gòu)造對(duì)抗樣本.此類(lèi)工作通常會(huì)提前假設(shè)已知目標(biāo)模型使用的特征類(lèi)別,隨后再針對(duì)這些特征來(lái)進(jìn)行改動(dòng)[83-85]等.但是這樣生成的對(duì)抗樣本不是實(shí)際的可運(yùn)行程序,也無(wú)法還原到對(duì)應(yīng)的程序.具體而言,Rosenberg等人[83]就是直接針對(duì)API序列構(gòu)造對(duì)抗樣本.他們提前假設(shè)已知目標(biāo)模型是以API序列來(lái)作為特征,進(jìn)而直接針對(duì)API序列進(jìn)行改動(dòng).在他們的工作中,會(huì)先根據(jù)目標(biāo)模型訓(xùn)練出一個(gè)替代模型,隨后在替代模型上運(yùn)用梯度下降的方式修改API序列,進(jìn)而得到對(duì)抗樣本,隨后再結(jié)合遷移攻擊來(lái)威脅目標(biāo)模型.然而,由于改動(dòng)的對(duì)象是API序列,所以相應(yīng)的對(duì)抗樣本也是API序列,且無(wú)法還原到程序上.即這樣的對(duì)抗樣本不是真正的可運(yùn)行程序.Hu等人[84]則利用生成對(duì)抗網(wǎng)絡(luò)(generative adversarial network, GAN)來(lái)構(gòu)造對(duì)抗樣本,他們操作的對(duì)象是特征向量.其中,GAN的判別器用于模擬目標(biāo)網(wǎng)絡(luò),而生成器則用于產(chǎn)生改動(dòng),進(jìn)而構(gòu)造對(duì)抗樣本.然而這種方法獲得的對(duì)抗樣本同樣不是可運(yùn)行程序.

對(duì)于黑盒工作而言,相關(guān)工作仍處于早期階段.對(duì)于那些無(wú)法正常運(yùn)行的對(duì)抗樣本,難以在真實(shí)場(chǎng)景下對(duì)智能檢測(cè)構(gòu)成威脅.而對(duì)于可運(yùn)行的對(duì)抗樣本,則需要引起我們的重視.在此,我們將一些代表性的黑盒相關(guān)工作總結(jié)在表5中,表5中主要包含各黑盒工作的攻擊場(chǎng)景、攻擊方式、操作對(duì)象及是否影響原始惡意軟件功能.

Table 5 Summary of Black-box Attacks

4.6 小 結(jié)

本節(jié)主要介紹了當(dāng)前惡意軟件智能檢測(cè)所面臨的主要問(wèn)題.針對(duì)這些問(wèn)題,一些緩解措施已經(jīng)被提出,但仍無(wú)法徹底解決.不過(guò)這些問(wèn)題的存在,也意味著相關(guān)方向可能會(huì)成為未來(lái)研究的關(guān)鍵與重點(diǎn).

1) 就數(shù)據(jù)集收集而言,目前標(biāo)準(zhǔn)的數(shù)據(jù)集較少,且均為非完整程序.而缺乏標(biāo)準(zhǔn)數(shù)據(jù)集則會(huì)對(duì)分類(lèi)器的效果評(píng)估帶來(lái)明顯影響.此外,現(xiàn)在也沒(méi)有專(zhuān)門(mén)用于對(duì)抗訓(xùn)練的數(shù)據(jù)集,不利于提升分類(lèi)器的魯棒性.

2) 就數(shù)據(jù)集打標(biāo)簽而言,打標(biāo)簽的準(zhǔn)確性依賴(lài)于打標(biāo)簽軟件的準(zhǔn)確性、評(píng)判閾值選擇等問(wèn)題.在面對(duì)難以判斷的情況時(shí),依舊需要專(zhuān)家經(jīng)驗(yàn)來(lái)輔助分析.

3) 就靜態(tài)檢測(cè)而言,代碼混淆相關(guān)技術(shù)依舊是問(wèn)題的關(guān)鍵.對(duì)此,可以考慮使用動(dòng)態(tài)分析輔助靜態(tài)分析的方式來(lái)進(jìn)行緩解,如先動(dòng)態(tài)分析進(jìn)行脫殼,隨后再進(jìn)行靜態(tài)分析.

4) 就動(dòng)態(tài)檢測(cè)而言,也會(huì)面臨諸多局限性,如惡意軟件對(duì)抗動(dòng)態(tài)分析、軟件運(yùn)行有特定環(huán)境要求等.對(duì)此,可以考慮使用靜態(tài)分析輔助動(dòng)態(tài)分析的方式來(lái)緩解此問(wèn)題,如強(qiáng)制執(zhí)行某條分支路徑等.

5) 就對(duì)抗樣本威脅而言,這已經(jīng)是人工智能模型中普遍存在的問(wèn)題.而在智能檢測(cè)領(lǐng)域,目前基本沒(méi)有防御對(duì)抗樣本的相關(guān)工作被提出.未來(lái)的工作可以考慮借鑒其他領(lǐng)域的防御方案來(lái)進(jìn)行緩解,如對(duì)抗訓(xùn)練等.

5 總結(jié)與展望

本文總結(jié)了當(dāng)前惡意軟件智能檢測(cè)相關(guān)工作的的研究概況.總的來(lái)看,將人工智能與惡意軟件檢測(cè)相結(jié)合已經(jīng)成為了研究者廣泛討論的熱點(diǎn).在眾多的研究工作中,研究的主要內(nèi)容都離不開(kāi)特征提取、特征處理、設(shè)計(jì)分類(lèi)器這3個(gè)主要環(huán)節(jié).因此,我們從這3個(gè)角度對(duì)智能檢測(cè)的相關(guān)工作進(jìn)行了歸納與總結(jié).另外,我們還總結(jié)了當(dāng)前智能檢測(cè)相關(guān)工作所面臨的主要問(wèn)題.根據(jù)我們對(duì)相關(guān)工作以及相關(guān)問(wèn)題的總結(jié)與思考,在此,提出一些潛在的研究方向,具體為:

1) 使用人工智能相關(guān)技術(shù)進(jìn)一步輔助特征提取.就目前而言,大部分智能檢測(cè)工作仍?xún)A向于人工制定特征,只有較少的工作能夠直接應(yīng)用深度學(xué)習(xí)技術(shù)來(lái)自動(dòng)提取特征.受制于程序本身的復(fù)雜性,在未來(lái)相當(dāng)?shù)囊欢螘r(shí)間內(nèi),特征制定的過(guò)程應(yīng)該依舊需要人工參與.但可以在此基礎(chǔ)上,讓人工智能進(jìn)一步完善先前提取的特征.比如先通過(guò)人工制定一些低級(jí)特征,再利用深度學(xué)習(xí)來(lái)提煉出高級(jí)特征,隨后再交由分類(lèi)器進(jìn)行檢測(cè).

2) 制定新的訓(xùn)練數(shù)據(jù)集.就智能檢測(cè)訓(xùn)練所需的數(shù)據(jù)集而言,目前已有的公開(kāi)標(biāo)準(zhǔn)數(shù)據(jù)集較少,且多半為非完整程序,去除了某部分或只包含提取的特征[57-58].對(duì)此,在未來(lái)的工作中,提出更多有價(jià)值的數(shù)據(jù)集也是很有必要的.

3) 考慮更多地應(yīng)用圖神經(jīng)網(wǎng)絡(luò).早期的智能檢測(cè)工作偏向于使用機(jī)器學(xué)習(xí)相關(guān)技術(shù)來(lái)進(jìn)行智能檢測(cè),而后續(xù)的工作則逐漸開(kāi)始引入深度學(xué)習(xí)相關(guān)技術(shù).在現(xiàn)有的智能檢測(cè)工作中,使用的深度學(xué)習(xí)模型主要以CNN和RNN為主,而最近興起的圖神經(jīng)網(wǎng)絡(luò)則被應(yīng)用的相對(duì)較少.未來(lái)的研究工作可以考慮如何將圖神經(jīng)網(wǎng)絡(luò)更好地應(yīng)用于惡意軟件智能檢測(cè)中.

4) 提升模型防御對(duì)抗樣本的能力.隨著對(duì)抗樣本在惡意軟件智能檢測(cè)領(lǐng)域的出現(xiàn),如何有效防御對(duì)抗樣本也應(yīng)當(dāng)被充分考慮.研究者可以根據(jù)現(xiàn)有的對(duì)抗攻擊,有針對(duì)性地提出一些防御方案.此外,在方面可以充分借鑒其他領(lǐng)域的相關(guān)工作,如圖像中的防御工作等.

總之,未來(lái)的惡意軟件智能檢測(cè)技術(shù)還有很大的發(fā)展空間,目前尚有大量的問(wèn)題仍待解決.充分利用好人工智能相關(guān)技術(shù)的優(yōu)勢(shì)是未來(lái)的趨勢(shì).惡意軟件智能檢測(cè)還有很長(zhǎng)的路要走.

猜你喜歡
程序特征智能
如何表達(dá)“特征”
不忠誠(chéng)的四個(gè)特征
試論我國(guó)未決羈押程序的立法完善
智能前沿
文苑(2018年23期)2018-12-14 01:06:06
智能前沿
文苑(2018年19期)2018-11-09 01:30:14
智能前沿
文苑(2018年17期)2018-11-09 01:29:26
智能前沿
文苑(2018年21期)2018-11-09 01:22:32
“程序猿”的生活什么樣
抓住特征巧觀察
英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
主站蜘蛛池模板: 亚洲,国产,日韩,综合一区| 国内熟女少妇一线天| 九九这里只有精品视频| 中文天堂在线视频| 永久在线精品免费视频观看| 91亚洲精选| 国产精品亚洲va在线观看| 欧美在线黄| 无码精品国产VA在线观看DVD| 欧美日韩北条麻妃一区二区| 国产亚洲精品自在线| 国产综合网站| 欧美亚洲国产日韩电影在线| 欧美黄色网站在线看| 99精品国产电影| 在线免费亚洲无码视频| 亚洲无线国产观看| 成人精品午夜福利在线播放 | 欧美区一区| 妇女自拍偷自拍亚洲精品| 亚洲色婷婷一区二区| 亚洲欧美不卡| 欧美成人第一页| 亚洲免费福利视频| 久久99国产乱子伦精品免| 国产区91| 欧美三级不卡在线观看视频| 欧美视频在线观看第一页| 久久网综合| 天天操精品| 欧美午夜理伦三级在线观看| 在线观看的黄网| 亚洲黄色成人| 国内99精品激情视频精品| 亚洲精品高清视频| 精品91自产拍在线| 九九热精品在线视频| 欧美日韩免费观看| 久草视频中文| 国产精品亚洲一区二区在线观看| 日韩在线2020专区| 国产草草影院18成年视频| 亚洲欧洲日产无码AV| 亚洲欧美人成人让影院| 亚洲天堂在线免费| 欧美伦理一区| 视频国产精品丝袜第一页| 最新亚洲人成网站在线观看| 波多野结衣无码AV在线| 人妻21p大胆| 国产理论精品| 国产成人AV综合久久| 国产精品熟女亚洲AV麻豆| 国产网站一区二区三区| 国产超薄肉色丝袜网站| 欧美国产日韩另类| 久久综合色视频| 欧美精品影院| 国产va在线| 无码中文字幕精品推荐| 国产毛片片精品天天看视频| 色偷偷一区| 亚洲国产欧美国产综合久久| 久久综合AV免费观看| 粉嫩国产白浆在线观看| 无遮挡一级毛片呦女视频| 国产精品高清国产三级囯产AV | 国产精品55夜色66夜色| 人妻无码AⅤ中文字| 乱系列中文字幕在线视频 | 精品国产一区二区三区在线观看| 亚洲日本在线免费观看| 成年免费在线观看| 国产成人亚洲欧美激情| 亚洲色图综合在线| 欧美性猛交xxxx乱大交极品| 91精品综合| 国产乱子伦精品视频| 毛片一区二区在线看| 免费在线a视频| 在线观看国产网址你懂的| 欧美三级日韩三级|