王志文,劉廣起,韓曉暉,左文波,吳曉明,王連海
(齊魯工業(yè)大學(xué)(山東省科學(xué)院) 山東省計(jì)算中心(國(guó)家超級(jí)計(jì)算濟(jì)南中心)山東省計(jì)算機(jī)網(wǎng)絡(luò)重點(diǎn)實(shí)驗(yàn)室,濟(jì)南 250014)
惡意軟件指運(yùn)行在用戶計(jì)算機(jī)或其他終端上、在用戶不知情或未允許的情況下利用操作系統(tǒng)或應(yīng)用程序漏洞侵害用戶合法權(quán)益的軟件.根據(jù)特征和危害不同,目前惡意軟件主要可以分為廣告軟件、勒索軟件、后門、特洛伊木馬等類別,如表1所示.惡意軟件給網(wǎng)絡(luò)用戶、企業(yè)、工業(yè)設(shè)施、網(wǎng)絡(luò)和信息設(shè)備等帶來(lái)嚴(yán)重的安全威脅,并且近年來(lái)新型惡意軟件的數(shù)量不斷增長(zhǎng),僅2019年就有至少500個(gè)新型惡意軟件家族出現(xiàn)[1,2].
表1 惡意軟件類型
為有效應(yīng)對(duì)數(shù)量日益增長(zhǎng)的惡意軟件及其威脅,目前學(xué)術(shù)界和產(chǎn)業(yè)界廣泛開展了惡意軟件識(shí)別研究工作,包括對(duì)惡意軟件的檢測(cè)和族系分類.早期,產(chǎn)業(yè)界一般通過基于簽名匹配的方式來(lái)識(shí)別惡意軟件[3-5].這種方式優(yōu)點(diǎn)是對(duì)于已知惡意軟件檢測(cè)的準(zhǔn)確率高、誤報(bào)率低,缺點(diǎn)是無(wú)法有效檢測(cè)未知惡意軟件.之后許多基于啟發(fā)式的方法被相繼提出,這類方法根據(jù)惡意軟件的特性,預(yù)定義一系列靜態(tài)或動(dòng)態(tài)的啟發(fā)式規(guī)則來(lái)識(shí)別惡意軟件[8-11].其優(yōu)點(diǎn)是能夠檢測(cè)部分未知的惡意代碼,缺點(diǎn)是誤報(bào)率較高.隨著反檢測(cè)技術(shù)的發(fā)展,惡意軟件可通過加殼、變形、多態(tài)、自毀等技術(shù)隱蔽自身或變種,上述兩類識(shí)別方法的有效性逐漸降低.
近年來(lái),基于機(jī)器學(xué)習(xí)的惡意代碼識(shí)別技術(shù)逐漸成為主流,其流程如圖1所示.良好的特征表示是基于機(jī)器學(xué)習(xí)的惡意軟件識(shí)別算法能否取得理想性能的關(guān)鍵因素之一.早期基于機(jī)器學(xué)習(xí)的識(shí)別技術(shù)通過人工特征工程方法提取樣本的特征表示,再訓(xùn)練支持向量機(jī)(SVM)、隨機(jī)森林(RF)等分類模型來(lái)檢測(cè)惡意軟件(如圖1上半部分所示).然而,人工特征工程的成本較高,且隨著惡意代碼功能的不斷復(fù)雜化、隱蔽化,如何設(shè)計(jì)有效的特征成為一個(gè)極具挑戰(zhàn)的問題.近期,隨著深度學(xué)習(xí)技術(shù)的突破性進(jìn)展,基于循環(huán)神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)等深度學(xué)習(xí)模型的惡意代碼識(shí)別成為新的研究趨勢(shì).深度學(xué)習(xí)模型基于深層神經(jīng)網(wǎng)絡(luò)可自動(dòng)學(xué)習(xí)樣本的區(qū)分性特征表示,因而可以實(shí)現(xiàn)端到端的惡意軟件檢測(cè)(如圖1下半部分所示).
圖1 惡意軟件識(shí)別流程
本文對(duì)近年來(lái)基于機(jī)器學(xué)習(xí)的惡意軟件識(shí)別相關(guān)研究工作進(jìn)行了歸類和梳理,以樣本特征表示的獲取方法為主線,從基于特征工程的識(shí)別模型和基于特征學(xué)習(xí)的識(shí)別模型兩個(gè)方面對(duì)已有研究進(jìn)行了闡述,并整理了目前可用于訓(xùn)練識(shí)別模型的公開數(shù)據(jù)集,在此基礎(chǔ)上進(jìn)一步展望了惡意軟件識(shí)別研究當(dāng)前面臨的問題和挑戰(zhàn).本文旨在幫助讀者比較全面地了解基于機(jī)器學(xué)習(xí)的惡意軟件識(shí)別技術(shù)及主要進(jìn)展,為該領(lǐng)域的研究人員提供技術(shù)參考,以推動(dòng)該領(lǐng)域的進(jìn)一步發(fā)展.
基于特征工程的惡意軟件識(shí)別通過人工設(shè)計(jì)的處理流程,在樣本中提取有意義的特征對(duì)其進(jìn)行表示,再利用機(jī)器學(xué)習(xí)模型對(duì)惡意軟件進(jìn)行識(shí)別.本節(jié)從惡意軟件特征表示、特征選擇與降維兩個(gè)方面對(duì)已有研究工作進(jìn)行了歸納,相關(guān)工作在表2中列出.
表2 基于特征工程的惡意軟件識(shí)別研究工作總結(jié)
目前,針對(duì)惡意軟件的特征分析方法主要可分為靜態(tài)和動(dòng)態(tài)兩種方式.
2.1.1 靜態(tài)特征分析
靜態(tài)特征分析是指在不運(yùn)行軟件的情況下,通過分析軟件所包含文件的內(nèi)容來(lái)提取特征.針對(duì)Windows平臺(tái)惡意軟件,許多研究從EXE、DLL等PE(Portable Executable)文件中提取惡意軟件的靜態(tài)特征表示.Ye等人[13]以PE文件中的API及其它能夠反映攻擊者意圖和目標(biāo)的字符串作為特征,基于SVM構(gòu)建惡意軟件識(shí)別模型.Shafiq等人[14]分別從PE文件頭、節(jié)表和節(jié)中提取動(dòng)態(tài)鏈接庫(kù)引用、符號(hào)數(shù)、鏈接器版本和導(dǎo)入/導(dǎo)出表大小等信息作為特征,基于J48、樸素貝葉斯(NB)等構(gòu)建惡意軟件識(shí)別模型.另有一些研究從PE文件中提取序列化的靜態(tài)特征表示,使用n-gram的出現(xiàn)頻率作為特征.例如,Abou-Assaleh等人[18]選擇PE文件中出現(xiàn)最頻繁的二進(jìn)制字節(jié)n-gram(如圖2所示)作為特征;Santos等人[20]和Ding等人[21]使用PE文件匯編操作碼序列的n-gram作為特征;Moskovitch等人[19]對(duì)PE文件的二進(jìn)制字節(jié)n-gram和匯編操作碼n-gram的有效性進(jìn)行了對(duì)比,實(shí)驗(yàn)結(jié)果表明操作碼序列n-gram更有效.上述基于序列特征的方法并未考慮程序執(zhí)行時(shí)的實(shí)際控制流,即軟件運(yùn)行時(shí)的真實(shí)行為.針對(duì)此問題,Ding等人[22]將PE匯編文件解析為執(zhí)行樹,基于樹遍歷算法生成所有可能執(zhí)行路徑的操作碼n-gram作為特征.
圖2 字節(jié)tri-gram提取過程
針對(duì)Android平臺(tái)的惡意軟件,邵等人[23]從Android軟件的清單文件和DEX反匯編文件中提取權(quán)限和API特征,分別使用SVM和k-NN構(gòu)建惡意軟件識(shí)別模型.Alazab等人[24]進(jìn)一步將API調(diào)用劃分為模糊調(diào)用、風(fēng)險(xiǎn)調(diào)用、破壞性調(diào)用等類別,對(duì)特征的有效性進(jìn)行了評(píng)估,實(shí)驗(yàn)表明破壞性調(diào)用與風(fēng)險(xiǎn)調(diào)用的組合效果最好.楊等人[25]從清單文件中提取權(quán)限和意圖(Intent)兩類特征,提出一種改進(jìn)的隨機(jī)森林算法識(shí)別惡意軟件.王等人[26]提取鎖屏、加密、權(quán)限、威脅文本、支付方式和網(wǎng)絡(luò)通信6類特征,使用Prism算法對(duì)勒索軟件進(jìn)行檢測(cè).
2.1.2 動(dòng)態(tài)特征分析
動(dòng)態(tài)特征分析[27]通過在虛擬機(jī)或沙箱中運(yùn)行惡意軟件并進(jìn)行實(shí)時(shí)監(jiān)控,分析和提取其在運(yùn)行時(shí)的行為特征.
針對(duì)Window平臺(tái)的惡意軟件,Huang等人[29]分別使用了軟件運(yùn)行時(shí)的API調(diào)用、
針對(duì)Andriod平臺(tái)的惡意軟件,Burguera等人[32]以運(yùn)行時(shí)調(diào)用的系統(tǒng)API次數(shù)作為特征,提出一種基于k-Means聚類的識(shí)別模型.Shabtai等人[33]設(shè)計(jì)了88個(gè)特征來(lái)捕捉軟件運(yùn)行時(shí)功率、內(nèi)存、網(wǎng)絡(luò)、觸屏和鍵盤等14個(gè)方面的信息,使用不同分類器構(gòu)建識(shí)別模型,實(shí)驗(yàn)表明基于J48和NB的識(shí)別模型表現(xiàn)較好.Alzaylaee等人[34]融合運(yùn)行時(shí)的API調(diào)用、動(dòng)作/事件等動(dòng)態(tài)特征和權(quán)限等靜態(tài)特征,使用多層感知機(jī)(MLP)構(gòu)建識(shí)別模型.Xu等人[36]基于運(yùn)行時(shí)的系統(tǒng)調(diào)用和進(jìn)程號(hào)(PID)構(gòu)建軟件的直方圖系統(tǒng)調(diào)用圖、n-gram系統(tǒng)調(diào)用圖和馬爾可夫鏈系統(tǒng)調(diào)用圖表示,通過最短路徑圖核[37]算法構(gòu)造核矩陣,并使用SVM對(duì)惡意軟件進(jìn)行識(shí)別.
與靜態(tài)特征分析方法相比,動(dòng)態(tài)分析方法能夠更好的識(shí)別惡意軟件的非常態(tài)行為,但提取特征的過程非常耗時(shí),因此不適合時(shí)效性高的檢測(cè)任務(wù).
為防止高維特征造成的過擬合問題,許多研究進(jìn)一步對(duì)初始特征進(jìn)行特征選擇或降維.其中,常用的特征選擇方法包括信息增益[24,34](IG)、互信息[23,29]等,常用的特征降維方法包括主成分分析[14](PCA)、隨機(jī)映射[39,29]等.Huang等[29]先后使用了互信息和隨機(jī)映射,將特征空間從百萬(wàn)維映射到數(shù)千維.Shafiq等人[14]使用冗余特征去除(RFR)、PCA和哈爾小波變換(HWT)3種不同的方法對(duì)提取的特征進(jìn)行降維.Yang等人[25]分別使用IG和ReliefF算法對(duì)提取的特征進(jìn)行選擇,實(shí)驗(yàn)表明隨著特征數(shù)的增加,IG算法相較ReliefF更加穩(wěn)定.Shabtai等人[33]對(duì)比了卡方檢驗(yàn)[40]、Fisher分值[41]和IG 3種特征選擇方法,實(shí)驗(yàn)表明沒有一種方法在所有實(shí)驗(yàn)設(shè)置中具有絕對(duì)優(yōu)勢(shì).
部分研究借助自動(dòng)編碼器(Auto Encoder)實(shí)現(xiàn)特征降維[42-45](如圖3所示),但對(duì)于上萬(wàn)維的特征,訓(xùn)練編碼器非常困難.針對(duì)這一問題,Hinton等人[46]提出的深度信念網(wǎng)絡(luò)(DBN),通過逐層預(yù)訓(xùn)練和參數(shù)微調(diào),可達(dá)到很好的降維效果.Su等人[47]對(duì)從Android軟件中提取的組件、意圖和請(qǐng)求權(quán)限等特征進(jìn)行0/1編碼,使用DBN進(jìn)行降維,降維后識(shí)別準(zhǔn)確率達(dá)97.5%.Ding等人[21]提取PE文件操作碼n-gram并使用DBN進(jìn)行降維,也獲得了顯著的性能提升.
圖3 自動(dòng)編碼器實(shí)現(xiàn)降維
隨著深度學(xué)習(xí)技術(shù)的突破性進(jìn)展,利用深度神經(jīng)網(wǎng)絡(luò)的識(shí)別惡意軟件成為新的研究趨勢(shì).由于深層神經(jīng)網(wǎng)絡(luò)具有自動(dòng)學(xué)習(xí)區(qū)分性特征的能力,本文將這類研究歸類為基于特征學(xué)習(xí)的識(shí)別方法.針對(duì)不同的樣本表示方式,這些方法又可劃分為基于循環(huán)神經(jīng)網(wǎng)絡(luò)、基于卷積神經(jīng)網(wǎng)絡(luò)和基于圖神經(jīng)網(wǎng)絡(luò)3類,本節(jié)分別對(duì)其進(jìn)行闡述,相關(guān)模型在表3中列出.
表3 基于特征學(xué)習(xí)的惡意軟件識(shí)別研究工作總結(jié)
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)具有很好的序列化數(shù)據(jù)處理能力,已被廣泛應(yīng)用在自然語(yǔ)言處理、機(jī)器翻譯等任務(wù)中.有鑒于此,許多研究首先通過靜態(tài)或動(dòng)態(tài)分析方法將惡意軟件解析為操作碼序列、API調(diào)用序列等序列化數(shù)據(jù)的形式,然后基于RNN構(gòu)建惡意軟件識(shí)別模型.例如,Catak等人[48]動(dòng)態(tài)提取軟件的API調(diào)用序列,采用詞嵌入(Embedding)獲得序列的張量表示,并將其輸入長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)進(jìn)行惡意軟件族系分類.Jeon等人[49]反匯編提取軟件的操作碼序列,采用卷積自動(dòng)編碼器獲得序列的壓縮向量表示,將向量輸入LSTM計(jì)算軟件為惡意的概率.考慮到同類惡意軟件的不同變體在程序?qū)崿F(xiàn)和實(shí)際執(zhí)行流程上不盡相同,許多研究者使用雙向RNN來(lái)同時(shí)從正向和反向捕捉序列元素的依賴性,以更好的識(shí)別惡意序列模式.例如,鄭等人[12]使用CNN+BiLSTM(雙向LSTM)對(duì)軟件的API調(diào)用序列進(jìn)行分類,得到的結(jié)果顯著優(yōu)于單向LSTM.Liu等人[50]同樣采用BiLSTM建模API調(diào)用序列,并與門控循環(huán)單元(GRU)、BiGRU(雙向GRU)、LSTM進(jìn)行比較,實(shí)驗(yàn)表明BiLSTM表現(xiàn)最優(yōu).Lu等人[61]通過IG選出API調(diào)用的關(guān)鍵n-gram序列,并提出一種雙向殘差LSTM對(duì)選出的序列進(jìn)行進(jìn)一步特征學(xué)習(xí),最后使用RF進(jìn)行惡意軟件識(shí)別.
盡管基于RNN的惡意軟件識(shí)別方法取得了不錯(cuò)的性能,但攻擊者可以通過添加大量非關(guān)鍵序列元素的方式對(duì)此類模型進(jìn)行迷惑.因此,如何提升RNN識(shí)別模型對(duì)于序列元素混淆的魯棒性仍是需要深入研究的問題.
部分研究將軟件轉(zhuǎn)換為可視化圖像,利用圖像處領(lǐng)域的方法和模型構(gòu)建惡意軟件識(shí)別模型.Choi等人[57]以軟件二進(jìn)制表示中的每8位作為一個(gè)像素,將文件轉(zhuǎn)換為通道數(shù)為1的灰度圖像(過程如圖4所示),再使用CNN進(jìn)行惡意軟件識(shí)別.Jung等人[35]考慮Android軟件的DEX文件可能包含大量噪聲,因此僅將其中的數(shù)據(jù)部分轉(zhuǎn)換為灰度圖,使用CNN進(jìn)行惡意軟件識(shí)別.Yuan等人[58]將字節(jié)表示的整數(shù)值視為狀態(tài),基于軟件的字節(jié)序列計(jì)算狀態(tài)間的轉(zhuǎn)移概率,然后構(gòu)造“馬爾科夫圖像(Markov Image)”(如圖5所示)輸入CNN模型來(lái)識(shí)別惡意軟件.Zhang等人[60]采用了相似的思路,將軟件匯編操作碼轉(zhuǎn)移概率及其IG的乘積作為一個(gè)像素來(lái)構(gòu)造圖像,并進(jìn)一步使用直方圖歸一化、膨脹和腐蝕等方法進(jìn)行圖像增強(qiáng).也有研究將軟件的二進(jìn)制文件轉(zhuǎn)換為三通道的RGB彩色圖像表示[62-64].Vasan等人[62]將MalImg數(shù)據(jù)集中以灰度圖表示的惡意軟件樣本通過色彩映射(colormap)轉(zhuǎn)換為彩色圖像,并通過旋轉(zhuǎn)、翻轉(zhuǎn)和縮放等操作對(duì)數(shù)據(jù)進(jìn)行增強(qiáng),使用CNN進(jìn)行惡意軟件識(shí)別.Xiao等人[63]和Huang等人[64]將軟件字節(jié)碼表示中連續(xù)的3個(gè)字節(jié)分別視為RGB色彩空間3個(gè)通道的像素值來(lái)構(gòu)建彩色圖像,進(jìn)而基于CNN構(gòu)建識(shí)別模型.
圖4 灰度圖轉(zhuǎn)化過程
圖5 字節(jié)轉(zhuǎn)移概率矩陣轉(zhuǎn)化過程
通常,深層卷積網(wǎng)絡(luò)相比淺層網(wǎng)絡(luò)結(jié)構(gòu)能夠更好地學(xué)習(xí)有效的表征,對(duì)數(shù)據(jù)的擬合能力更強(qiáng).對(duì)于惡意軟件識(shí)別,更深層的網(wǎng)絡(luò)結(jié)構(gòu)可以更有效的應(yīng)對(duì)混淆后的樣本.然而,隨著深度的增加和網(wǎng)絡(luò)結(jié)構(gòu)越來(lái)越復(fù)雜,會(huì)造成訓(xùn)練時(shí)的梯度消失或梯度爆炸的問題,使參數(shù)得不到有效更新[65,66].He等人[67]提出ResNet模型,通過殘差結(jié)構(gòu)有效緩解了上述問題,使得卷積網(wǎng)絡(luò)結(jié)構(gòu)可以達(dá)到上百層甚至上千層.但深層卷積網(wǎng)絡(luò)由于參數(shù)規(guī)模更大,需要更多的數(shù)據(jù)才能很好的訓(xùn)練.鑒于能夠獲得的惡意軟件族系標(biāo)注樣本規(guī)模有限,許多研究基于遷移學(xué)習(xí)的思想,首先在大規(guī)模圖像數(shù)據(jù)上訓(xùn)練深層卷積網(wǎng)絡(luò)模型,然后再將模型學(xué)習(xí)到的知識(shí)遷移到惡意軟件識(shí)別任務(wù)中.例如,Vasan等人[68]提出的IMCEC架構(gòu)首先在ImageNet數(shù)據(jù)集[69]上訓(xùn)練VGG16[59]和ResNet50模型,然后通過遷移學(xué)習(xí)將兩個(gè)模型的參數(shù)遷移到惡意軟件識(shí)別模型中.
在小數(shù)據(jù)集上訓(xùn)練深度學(xué)習(xí)模型易導(dǎo)致過擬合問題.針對(duì)小樣本條件下的惡意代碼模型訓(xùn)練,Kim等人[70]提出tGAN模型,在將惡意軟件樣本轉(zhuǎn)換為圖像后,首先訓(xùn)練卷積自動(dòng)編碼器學(xué)習(xí)惡意軟件各類別的特征表示,然后將自動(dòng)編碼器中的解碼器遷移到對(duì)抗生成網(wǎng)絡(luò)(GAN)中,分別利用GAN的生成器和鑒別器進(jìn)行數(shù)據(jù)增強(qiáng)和惡意軟件識(shí)別,實(shí)驗(yàn)表明該模型在小樣本條件下的準(zhǔn)確率達(dá)90%.
基于可視化利用圖像處理技術(shù)構(gòu)建的惡意軟件識(shí)別模型往往能夠取得較高的準(zhǔn)確率.然而,已有研究一般是將1維的序列強(qiáng)制轉(zhuǎn)換為2維的“圖像”,因而第二維度的結(jié)構(gòu)關(guān)系并不是惡意軟件中自然存在的.如何構(gòu)建一種更合理的可視化表示,以更好的發(fā)揮CNN模型的優(yōu)勢(shì),值得進(jìn)一步探討.此外,雖然基于VGG16、ResNet50等結(jié)構(gòu)構(gòu)建的識(shí)別模型可以獲得很好的分類效果,但所需的訓(xùn)練和推理時(shí)間及消耗的計(jì)算資源往往也很高,限制了此類模型的應(yīng)用.
圖神經(jīng)網(wǎng)絡(luò)(Graph Neural Networks,GNN)將圖分析引入深度學(xué)習(xí)模型,具有很好地處理關(guān)系型數(shù)據(jù)的能力.許多研究者嘗試將軟件樣本表示為圖的形式,然后使用GNN模型對(duì)圖進(jìn)行分類實(shí)現(xiàn)惡意軟件識(shí)別.如,Li等人[17]將從軟件樣本中動(dòng)態(tài)提取的API調(diào)用序列和由整個(gè)樣本生成的馬爾可夫鏈分別將軟件樣本表示為一個(gè)有向循環(huán)圖和一個(gè)共享權(quán)重圖,將二者融合后使用圖卷積神經(jīng)網(wǎng)絡(luò)(Graph Convolutional Network,GCN)進(jìn)行惡意軟件檢測(cè).Busch等人[28]通過監(jiān)測(cè)軟件運(yùn)行時(shí)的網(wǎng)絡(luò)流量構(gòu)建有向圖然后使用GNN對(duì)軟件進(jìn)行分類,圖中的節(jié)點(diǎn)對(duì)應(yīng)網(wǎng)絡(luò)中的IP地址,邊表示網(wǎng)絡(luò)流量的方向并具有發(fā)送包數(shù)目、包長(zhǎng)度均值、包傳送間隔最大和最小值等屬性.為了避免引入運(yùn)行時(shí)開銷,F(xiàn)eng等人[31]將Android應(yīng)用程序反編譯為Smali文件,從中提取函數(shù)調(diào)用關(guān)系構(gòu)建函數(shù)調(diào)用圖,并將函數(shù)的語(yǔ)義信息、安全級(jí)別、權(quán)限作為節(jié)點(diǎn)屬性,使用GNN進(jìn)行惡意軟件識(shí)別.整體來(lái)看,目前將GNN應(yīng)用于惡意軟件識(shí)別的研究工作還較少,在樣本的圖表示和表征學(xué)習(xí)等方面仍值得進(jìn)一步探討.
為了方便研究者訓(xùn)練機(jī)器學(xué)習(xí)模型并評(píng)測(cè)模型性能,學(xué)術(shù)界和產(chǎn)業(yè)界發(fā)布了多個(gè)惡意軟件數(shù)據(jù)集.本節(jié)匯總了已公開的Windows、Andriod等系統(tǒng)和平臺(tái)上的惡意軟件數(shù)據(jù)集,獲取鏈接在表4中列出,供研究者參考.
表4 惡意軟件數(shù)據(jù)集/平臺(tái)的獲取鏈接
目前,已公開的Window平臺(tái)惡意軟數(shù)據(jù)集的數(shù)據(jù)格式包括字節(jié)文件、匯編文件、動(dòng)態(tài)API調(diào)用序列、可視化圖像等.
MalImg數(shù)據(jù)集[71]包括25個(gè)不同家族的9339個(gè)惡意軟件樣本,每個(gè)樣本為一幅由惡意軟件轉(zhuǎn)換得到的灰度圖像,具體格式如圖6所示.通過觀察樣本可發(fā)現(xiàn),許多研究的實(shí)驗(yàn)在此數(shù)據(jù)集上進(jìn)行[15,16,62,72].
圖6 不同家族樣本灰度圖
MMCC數(shù)據(jù)集[73]是微軟為在BIG 2015上進(jìn)行的惡意軟件分類挑戰(zhàn)賽公開的惡意軟件數(shù)據(jù)集.該數(shù)據(jù)集包括Ramnit、Lollipop、Kelihosver3等9個(gè)惡意軟件家族的21741個(gè)樣本.每個(gè)惡意軟件樣本包含兩種形式的文件,即二進(jìn)制文件(.bytes)和使用IDA Pro提取的元數(shù)據(jù)文件(.asm),兩種文件的數(shù)據(jù)格式如圖7、圖8所示.迄今為止,該數(shù)據(jù)集已被數(shù)百篇學(xué)術(shù)論文引用,如本文參考文獻(xiàn)[53,55,56,58,74].
圖7 二進(jìn)制文件的十六進(jìn)制表示
圖8 匯編文件
Mal-API-2019數(shù)據(jù)集[75]是使用布谷鳥沙箱(Cuckoo Sandbox)提取生成的Windows惡意軟件數(shù)據(jù)集.該數(shù)據(jù)集包括Trojan、Backdoor、Worm等8個(gè)不同類別共7107個(gè)惡意軟件樣本,每個(gè)樣本由惡意軟件運(yùn)行時(shí)的API調(diào)用序列構(gòu)成.
APIMDS數(shù)據(jù)集[76]包括Worm、Backdoor、Trojan等6個(gè)不同種類的23080個(gè)惡意軟件的API調(diào)用序列,共涉及2727個(gè)不同的API調(diào)用.
Ember數(shù)據(jù)集[77]包含110萬(wàn)個(gè)PE文件樣本,每個(gè)數(shù)據(jù)樣本由5組格式特征(即,通用文件信息、頭部信息、導(dǎo)入函數(shù)、導(dǎo)出函數(shù)、節(jié)信息)和3組格式無(wú)關(guān)特征(即,字節(jié)直方圖、字節(jié)熵直方圖、字符串信息)表示.
CILPKU08和Henchiri數(shù)據(jù)集均由可執(zhí)行文件組成.其中,CILPKU08包括915個(gè)良性程序和3547個(gè)惡意程序;Henchiri包括1414個(gè)良性程序和2994個(gè)惡意程序.
目前,可公開獲取的Android平臺(tái)惡意軟件數(shù)量大、類型繁多.盧森堡大學(xué)公布的AndroZoo數(shù)據(jù)集[78]包含1700萬(wàn)個(gè)APK樣本,并仍在不斷擴(kuò)展.在線平臺(tái)VirusShare上匯集了近4000萬(wàn)個(gè)惡意軟件樣本,Contagio社區(qū)包含許多用戶分享的大量惡意軟件.Drebin數(shù)據(jù)集[79]包含179個(gè)不同惡意軟件家族的5560個(gè)樣本,每個(gè)樣本由從清單文件中和反匯編DEX文件中通過靜態(tài)分析獲取的特征表示.Genome數(shù)據(jù)集[80]包含49個(gè)惡意軟件家族的1260個(gè)樣本,其中1083個(gè)是通過加入惡意負(fù)載重新打包的應(yīng)用程序.CICAndMal數(shù)據(jù)集[81,82]包括42個(gè)惡意軟件家族的426個(gè)惡意和5065個(gè)良性樣本,樣本使用軟件的權(quán)限、API調(diào)用、網(wǎng)絡(luò)流量、內(nèi)存轉(zhuǎn)儲(chǔ)、權(quán)限、意圖等特征表示.RmvDroid數(shù)據(jù)集[83]包括56個(gè)惡意軟件家族的9133個(gè)樣本,每個(gè)樣本附帶了描述、評(píng)級(jí)、下載數(shù)量等元數(shù)據(jù)以輔助惡意軟件的識(shí)別.
盡管基于機(jī)器學(xué)習(xí)的惡意軟件識(shí)別研究已經(jīng)取得了很大的進(jìn)展,但仍然面臨一些問題和挑戰(zhàn),本章對(duì)部分問題和挑戰(zhàn)進(jìn)行了列舉和分析.
在惡意軟件識(shí)別場(chǎng)景中,類別不平衡是一個(gè)常見的問題.對(duì)于惡意軟件檢測(cè)任務(wù),能夠獲取到的良性樣本的數(shù)量往往遠(yuǎn)大于能夠獲取到的惡意樣本的數(shù)量;對(duì)于惡意軟件分類任務(wù),各惡意軟件類別的樣本數(shù)量通常也存在偏斜,如MMCC數(shù)據(jù)集中Lollipop和Kelihos ver3兩類的樣本數(shù)量分別為2478、2942,而Simda類別僅有42個(gè)樣本數(shù)據(jù).類別不平衡會(huì)導(dǎo)致機(jī)器學(xué)習(xí)方法偏向于大類別,已有部分文獻(xiàn)針對(duì)這一問題提出解決方案,例如Liu等人[38]提出了兩種集成學(xué)習(xí)機(jī)制,通過從大類別樣本中抽取與小類別樣本數(shù)目相同的若干子集,與小類別樣本共同訓(xùn)練多個(gè)弱分類器集成進(jìn)行輸出.此方法僅適用于二分類,而對(duì)于惡意軟件識(shí)別,多分類任務(wù)更易受到類別不平衡的影響.Kim等人[70]提出的tGAN模型通過生成的方式對(duì)所有類別的數(shù)據(jù)進(jìn)行增強(qiáng),采用集成的方式進(jìn)行多分類,但GAN模型在樣本生成時(shí)穩(wěn)定性較差.Yue等人[72]采用加權(quán)softmax損失對(duì)CNN進(jìn)行微調(diào),對(duì)不同數(shù)目的類別賦予不同的損失權(quán)值,但加權(quán)損失只能在一定程度上緩和類別不平衡的影響.總體來(lái)看,如何處理惡意軟件識(shí)別中的數(shù)據(jù)不平衡問題仍然是一個(gè)需要深入探討的問題.
隨著基于機(jī)器學(xué)習(xí)的惡意軟件識(shí)別技術(shù)持續(xù)發(fā)展,各類反識(shí)別技術(shù)也不斷出現(xiàn).惡意軟件的編寫者能夠根據(jù)機(jī)器學(xué)習(xí)模型的特性設(shè)計(jì)相應(yīng)的策略,使惡意軟件能夠規(guī)避模型的檢測(cè).例如,陳等人[84]和Hu等人[85]分別根據(jù)基于字節(jié)碼圖像和API特征的惡意軟件識(shí)別模型的原理特性,設(shè)計(jì)了一種生成對(duì)抗網(wǎng)絡(luò)來(lái)生成惡意對(duì)抗樣本,能夠成功避開黑盒識(shí)別;Grosse等人[86]僅對(duì)不影響惡意功能的特征進(jìn)行更改,以生成保留其惡意功能的對(duì)抗樣本.此外,有監(jiān)督的機(jī)器學(xué)習(xí)模型一般基于訓(xùn)練數(shù)據(jù)構(gòu)建,對(duì)于未知惡意軟件的泛化性往往不高.針對(duì)上述兩種情況,通常需要再根據(jù)反檢測(cè)技術(shù)和新型惡意軟件的特性重新構(gòu)建識(shí)別模型,以被動(dòng)的形式應(yīng)對(duì).如何基于演化學(xué)習(xí)、對(duì)抗生成、終身學(xué)習(xí)等理論和方法建立能夠自進(jìn)化的主動(dòng)式惡意軟件識(shí)別模型,也是值得進(jìn)一步深入探討的方向.
隨著5G、無(wú)線傳感、物聯(lián)網(wǎng)等技術(shù)的發(fā)展,人類社會(huì)即將迎來(lái)萬(wàn)物互聯(lián)的時(shí)代,無(wú)處不在的智能終端將融入人們生活的方方面面.然而,許多智能終端在設(shè)計(jì)時(shí)并未考慮安全問題,因而安全防護(hù)能力普遍較差,非常容易受惡意軟件的侵害.而受限于計(jì)算能力和資源,大部分基于惡意軟件識(shí)別模型無(wú)法在智能終端上運(yùn)行.目前的一種解決方案是將智能終端的數(shù)據(jù)進(jìn)行匯聚,在高性能的服務(wù)端或云端分析并完成惡意軟件識(shí)別,但這種方式的實(shí)時(shí)性較差.基于知識(shí)蒸餾、模型剪枝等方法協(xié)同軟件的特殊表示研究惡意軟件識(shí)別模型的輕量化,在保持識(shí)別性能的條件下使其適合在智能終端等算力和資源有限的設(shè)備上運(yùn)行,對(duì)于萬(wàn)物互聯(lián)時(shí)代的網(wǎng)絡(luò)安全有重要意義.
盡管基于機(jī)器學(xué)習(xí)的惡意軟件檢測(cè)模型表現(xiàn)出了較好的性能,但是模型的黑盒特性使預(yù)測(cè)結(jié)果不具有良好的可解釋性,因而不利于分析人員理解復(fù)雜惡意軟件的構(gòu)成和運(yùn)行機(jī)理.Jeon等人[49]嘗試使用網(wǎng)絡(luò)隱藏層的平均激活值定位惡意軟件中惡意的操作碼片段,可以提供一定的解釋信息,但僅是面向整個(gè)組合架構(gòu)的決策過程,并未涵蓋單個(gè)深度模型內(nèi)部機(jī)理解釋.如何有效提升基于機(jī)器學(xué)習(xí)的惡意軟件識(shí)別模型的可解釋性,以幫助分析人員更好的剖析惡意軟件的作用機(jī)制,也是一個(gè)亟需進(jìn)一步研究的方向.
目前,機(jī)器學(xué)習(xí)模型和方法已被廣泛應(yīng)用到惡意代碼識(shí)別任務(wù)中,能夠緩解傳統(tǒng)基于簽名和啟發(fā)式規(guī)則的方法泛化性差、誤報(bào)率高等問題.本文梳理和綜述了近年來(lái)基于機(jī)器學(xué)習(xí)的惡意軟件識(shí)別相關(guān)研究,分別從特征表示、特征選擇和降維等方面闡述了早期基于特征工程的識(shí)別方法,并歸納和分析了近期出現(xiàn)的基于RNN、CNN和GNN等深度神經(jīng)網(wǎng)絡(luò)的特征學(xué)習(xí)類識(shí)別方法.此外,對(duì)于目前已公開的惡意軟件數(shù)據(jù)集,本文也進(jìn)行了匯總.通過分析該領(lǐng)域的國(guó)內(nèi)外研究現(xiàn)狀,本文指出未來(lái)尚需解決類別不平衡、主動(dòng)識(shí)別方法、模型輕量化和模型可解釋性等問題和挑戰(zhàn).隨著機(jī)器學(xué)習(xí)及深度學(xué)習(xí)技術(shù)的飛速發(fā)展,基于機(jī)器學(xué)習(xí)的惡意軟件識(shí)別在性能和效率將得到進(jìn)一步提升.