張楊,郝江波
基于注意力機(jī)制和殘差網(wǎng)絡(luò)的惡意代碼檢測(cè)方法
張楊*,郝江波
(河北科技大學(xué) 信息科學(xué)與工程學(xué)院,石家莊 050018)(*通信作者電子郵箱zhangyang@hebust.edu.cn)
針對(duì)目前已有的基于深度學(xué)習(xí)的惡意代碼檢測(cè)方法提取特征不足和準(zhǔn)確率低的問(wèn)題,提出一種基于注意力機(jī)制和殘差網(wǎng)絡(luò)(ResNet)的惡意代碼檢測(cè)方法ARMD。為了支持該方法的訓(xùn)練,從Kaggle網(wǎng)站獲取了47 580個(gè)惡意和良性代碼的Hash值,并利用VirusTotal分析工具提取每個(gè)代碼數(shù)據(jù)調(diào)用的API,在此之后將所調(diào)用的API整合為1 000個(gè)不重復(fù)的API作為檢測(cè)的特征來(lái)構(gòu)造訓(xùn)練樣本數(shù)據(jù);然后根據(jù)VirusTotal的分析結(jié)果進(jìn)行良惡性判定進(jìn)而標(biāo)記樣本數(shù)據(jù),并采用SMOTE增強(qiáng)算法使數(shù)據(jù)樣本均衡化;最后構(gòu)建并訓(xùn)練注入注意力機(jī)制的ResNet,從而實(shí)現(xiàn)惡意代碼檢測(cè)。實(shí)驗(yàn)結(jié)果表明ARMD的惡意代碼檢測(cè)準(zhǔn)確率為97.76%,且與目前已有的基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)和ResNet模型的檢測(cè)方法相比,平均精確率至少提高了2個(gè)百分點(diǎn),驗(yàn)證了ARMD的有效性。
深度學(xué)習(xí);惡意代碼;注意力機(jī)制;殘差網(wǎng)絡(luò);SMOTE
目前惡意代碼呈現(xiàn)出快速發(fā)展的趨勢(shì),主要表現(xiàn)在變種數(shù)量多、傳播速度快、影響范圍廣。在計(jì)算機(jī)系統(tǒng)中遇到的病毒、木馬、后門(mén)、垃圾軟件等一切有害程序或應(yīng)用都可以統(tǒng)稱(chēng)為惡意代碼(malicious code)。惡意代碼又稱(chēng)為惡意軟件(Malicious software, Malware),是指能夠在計(jì)算機(jī)系統(tǒng)中進(jìn)行非授權(quán)操作,以實(shí)施破壞或竊取信息的代碼,包括利用各種網(wǎng)絡(luò)、操作系統(tǒng)、軟件和物理安全漏洞來(lái)向計(jì)算機(jī)系統(tǒng)傳播惡意負(fù)載的程序性的計(jì)算機(jī)安全威脅。
傳統(tǒng)的惡意代碼檢測(cè)技術(shù)已經(jīng)無(wú)法滿(mǎn)足人們對(duì)惡意代碼檢測(cè)的需求,比如基于簽名特征碼的惡意代碼檢測(cè),這種方法收集已知的惡意代碼,以一種固定的方式生成特定的簽名,當(dāng)有新的檢測(cè)任務(wù)時(shí),通過(guò)在簽名庫(kù)中檢索匹配的方法進(jìn)行惡意代碼檢測(cè)。但更新、維護(hù)簽名庫(kù)的過(guò)程需要耗費(fèi)大量的人力物力,而且惡意代碼編寫(xiě)者僅僅通過(guò)混淆、壓縮、加殼等簡(jiǎn)單的變種方式便可繞過(guò)這樣的檢測(cè)機(jī)制,很容易逃避傳統(tǒng)的檢測(cè)方法。為彌補(bǔ)傳統(tǒng)惡意代碼檢測(cè)技術(shù)的不足,基于機(jī)器學(xué)習(xí)的惡意代碼分析方法受到廣泛的關(guān)注,但是傳統(tǒng)機(jī)器學(xué)習(xí)模型在特征提取階段往往需要人工設(shè)計(jì)和參與,這需要完備的先驗(yàn)知識(shí),不能自動(dòng)學(xué)習(xí)到惡意代碼的特征,在一定程度上影響了惡意代碼的分類(lèi)準(zhǔn)確率。
為了應(yīng)對(duì)上面的問(wèn)題,研究人員開(kāi)始使用深度學(xué)習(xí)[1]進(jìn)行惡意代碼檢測(cè)。深度學(xué)習(xí)作為機(jī)器學(xué)習(xí)研究的一個(gè)新領(lǐng)域,在解決人工智能領(lǐng)域的任務(wù)中取得了重大突破,擅長(zhǎng)在高維數(shù)據(jù)中挖掘復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。由于深度學(xué)習(xí)算法可以挖掘輸入特征之間更深層次的聯(lián)系,更加充分地利用惡意代碼的信息,因此基于深度學(xué)習(xí)的惡意代碼檢測(cè)往往具有較高的準(zhǔn)確率。
雖然基于機(jī)器學(xué)習(xí)和深度學(xué)習(xí)方法的惡意代碼檢測(cè)方法已經(jīng)取得了一定的成效,但仍存在以下幾個(gè)方面的問(wèn)題亟須進(jìn)一步研究完善:第一,因?yàn)閻阂獯a相對(duì)來(lái)說(shuō)比較危險(xiǎn),所以公開(kāi)的惡意代碼數(shù)量不多,這會(huì)導(dǎo)致選取的惡意代碼代表性不足;第二,目前已有工作使用的學(xué)習(xí)模型主要依賴(lài)于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN),在CNN模型上還可以做進(jìn)一步優(yōu)化;第三,在構(gòu)建深度學(xué)習(xí)訓(xùn)練數(shù)據(jù)集時(shí),特征提取不充分,在分析惡意代碼的API時(shí),沒(méi)有充分兼顧具有惡意行為的API提??;第四,已有的基于深度學(xué)習(xí)的惡意代碼檢測(cè)方法準(zhǔn)確度并不是很高,還有進(jìn)一步提升的空間。
本文提出了一種基于注意力機(jī)制和殘差網(wǎng)絡(luò)的惡意代碼檢測(cè)方法ARMD(Attention mechanism and Residual-based network Malicious code Detection),將注意力機(jī)制引入殘差網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)惡意代碼檢測(cè)。本文的主要工作如下:
1)提出了一種基于殘差網(wǎng)絡(luò)和注意力機(jī)制的惡意代碼檢測(cè)方法ARMD。
2)為了支持ARMD的訓(xùn)練,生成了一個(gè)惡意代碼數(shù)據(jù)集,從Kaggle網(wǎng)站獲取了47 580個(gè)代碼數(shù)據(jù)的哈希值(Hash),并通過(guò)VirusTotal工具提取并整合前1 000個(gè)API形成了大量的樣本。
3)將ARMD在惡意代碼數(shù)據(jù)集上進(jìn)行評(píng)估并與現(xiàn)有方法進(jìn)行比較,通過(guò)實(shí)驗(yàn)驗(yàn)證了ARMD的有效性。
傳統(tǒng)的惡意代碼檢測(cè)技術(shù)已經(jīng)無(wú)法有效抵御在計(jì)算機(jī)系統(tǒng)以及互聯(lián)網(wǎng)上出現(xiàn)新的威脅和攻擊[2],現(xiàn)在惡意代碼使用許多不同的混淆技術(shù)來(lái)逃避基于靜態(tài)特征碼的惡意代碼檢測(cè)[3],惡意代碼檢測(cè)工作量大且對(duì)技術(shù)人員的要求高,很難適應(yīng)變種惡意代碼的復(fù)雜性和多樣性,從而導(dǎo)致效果不佳[4]。近年來(lái),深度學(xué)習(xí)技術(shù)在惡意代碼檢測(cè)領(lǐng)域被廣泛應(yīng)用。
當(dāng)前惡意代碼檢測(cè)方法主要分為特征提取階段和檢測(cè)階段。在特征提取階段,提取的特征主要有靜態(tài)特征和動(dòng)態(tài)特征,相應(yīng)的提取手段分別為靜態(tài)分析方法和動(dòng)態(tài)分析方法。
靜態(tài)分析方法[5]主要通過(guò)反匯編、反編譯等手段提取特征碼來(lái)區(qū)分良性和惡意代碼,常見(jiàn)的特征碼主要以字節(jié)碼、二進(jìn)制匯編指令、PE結(jié)構(gòu)、導(dǎo)入的動(dòng)態(tài)鏈接庫(kù)以及函數(shù)系統(tǒng)調(diào)用為主要形式。Tabish等[6]提出了一種計(jì)算操作碼頻率的方法來(lái)檢測(cè)惡意代碼,通過(guò)計(jì)算每個(gè)操作碼權(quán)重來(lái)表示操作碼與惡意代碼的相關(guān)性,并使用決策樹(shù)、支持向量機(jī)(Support Vector Machine, SVM)、樸素貝葉斯進(jìn)行分類(lèi);羅世奇等[7]將惡意代碼圖像紋理和指令語(yǔ)句出現(xiàn)頻率作為特征,提出了基于靜態(tài)特征與棧式自編碼的惡意代碼檢測(cè)模型;張瑋康[8]提出了改進(jìn)靜態(tài)惡意代碼特征分析方法,通過(guò)構(gòu)建特征庫(kù)保存敏感API特征,檢測(cè)時(shí)將每個(gè)惡意代碼的API與特征庫(kù)進(jìn)行匹配以完成惡意代碼檢測(cè);Cesare等[9]提出了提取可執(zhí)行文件的控制流圖,并通過(guò)編輯字符串距離搜索未知軟件和惡意軟件之間的相似性。
動(dòng)態(tài)分析方法[10-11]主要包括系統(tǒng)特征計(jì)數(shù)、API調(diào)用序列以及軟件代碼。Salehi等[12]利用Cuckoo沙箱獲取動(dòng)態(tài)API調(diào)用序列,在800個(gè)惡意代碼的數(shù)據(jù)集上使用N-gram建模進(jìn)行分類(lèi),結(jié)果取得了94%的F1值;榮俸萍等[13]引入面向目標(biāo)關(guān)聯(lián)挖掘的概念,將惡意行為的API調(diào)用序列作為異常行為特征進(jìn)行惡意代碼檢測(cè);Kim[14]提出自然語(yǔ)言處理(Natural Language Processing, NLP)的方法對(duì)API序列進(jìn)行建模,在特征提取上利用詞頻-逆文檔頻度(Term Frequency?Inverse Document Frequency, TF-IDF)、詞袋模型、N-gram三種方法,最終達(dá)到接近96%的準(zhǔn)確率。
基于深度學(xué)習(xí)的理論和方法已經(jīng)被廣泛應(yīng)用于惡意代碼檢測(cè),它可以從提取的特征中學(xué)習(xí)并識(shí)別惡意代碼。Saxe等[15]通過(guò)提取惡意代碼PE文件和字符串靜態(tài)信息,并使用前饋神經(jīng)網(wǎng)絡(luò)對(duì)靜態(tài)分析結(jié)果進(jìn)行分類(lèi);Huang等[16]使用了多達(dá)四層的前饋神經(jīng)網(wǎng)絡(luò),采用多任務(wù)深度學(xué)習(xí)架構(gòu)對(duì)二進(jìn)制和家族惡意代碼進(jìn)行分類(lèi);Kolosnjaji等[17]使用了一個(gè)結(jié)合了卷積層和循環(huán)層的神經(jīng)網(wǎng)絡(luò),利用從動(dòng)態(tài)分析中獲得的系統(tǒng)調(diào)用N-gram進(jìn)行惡意代碼分類(lèi),他們的評(píng)估結(jié)果在包含來(lái)自10個(gè)不同家族的4 753個(gè)惡意代碼樣本的數(shù)據(jù)集中實(shí)現(xiàn)了平均89.4%的準(zhǔn)確率。
目前對(duì)于惡意代碼的檢測(cè)仍處于探索階段,還面臨著很多問(wèn)題,比如:決策樹(shù)方法存在過(guò)擬合,且微小的數(shù)據(jù)變化會(huì)導(dǎo)致生成的決策樹(shù)不同;樸素貝葉斯方法需要知道先驗(yàn)概率,且對(duì)屬性相關(guān)性大的數(shù)據(jù)測(cè)試效果不好;SVM方法對(duì)于大規(guī)模數(shù)據(jù)的開(kāi)銷(xiāo)也大,缺失數(shù)據(jù)敏感性;機(jī)器學(xué)習(xí)方法提取特征基本基于手工操作,特征庫(kù)也需要實(shí)時(shí)更新,既費(fèi)時(shí)又費(fèi)力,且工作量繁重。
基于深度學(xué)習(xí)的惡意代碼檢測(cè)方法中,人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network, ANN)是由大量互相連接處理單元的復(fù)雜網(wǎng)絡(luò)結(jié)構(gòu)組成的,模型中需要大量的初始參數(shù),且要達(dá)到最優(yōu)結(jié)果,調(diào)參是一個(gè)巨大的問(wèn)題,模型訓(xùn)練時(shí)間長(zhǎng),有可能存在訓(xùn)練失敗的結(jié)果;循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)無(wú)法考慮當(dāng)前狀態(tài)的任何未來(lái)輸入,難以獲取很久以前的信息,且存在梯度消失和長(zhǎng)期依賴(lài)問(wèn)題;長(zhǎng)短期記憶(Long Short-Term Memory, LSTM)模型雖然改善了RNN中的長(zhǎng)期依賴(lài)問(wèn)題,但LSTM的時(shí)間跨度很大,計(jì)算量大且耗時(shí)。
與上述方法相比,被廣泛應(yīng)用于惡意代碼檢測(cè)的CNN模型可以有效地減少傳統(tǒng)神經(jīng)網(wǎng)絡(luò)對(duì)輸入數(shù)據(jù)所進(jìn)行的預(yù)處理環(huán)節(jié),降低過(guò)程的復(fù)雜性;不過(guò)這種方式仍然會(huì)增加網(wǎng)絡(luò)結(jié)構(gòu)的整體復(fù)雜性,因?yàn)椴粩嗟卦黾泳W(wǎng)絡(luò)卷積層雖然會(huì)提取更精準(zhǔn)的特征,取得更好的檢測(cè)結(jié)果,但容易產(chǎn)生過(guò)擬合現(xiàn)象。ResNet是一種改進(jìn)的CNN模型,它不會(huì)隨著層數(shù)的增加,增加了損失率致使梯度消失;而且由于ResNet殘差塊中具有卷積層的特征映射、批范數(shù)(Batch Norm, BN)、線性整流函數(shù)(Rectified Linear Unit, ReLU),對(duì)最優(yōu)結(jié)果進(jìn)行跳躍式輸出,可以有效防止過(guò)擬合現(xiàn)象。因此本文考慮將ResNet與增強(qiáng)特征的注意力機(jī)制相結(jié)合,以提高惡意代碼檢測(cè)率。
本文方法的整體架構(gòu)如圖1所示。為了生成ARMD模型的訓(xùn)練集和測(cè)試集,使用了47 580個(gè)包括惡意和良性代碼的數(shù)據(jù),通過(guò)VirusTotal工具提取樣本特征,并使用SMOTE算法[21]來(lái)確保惡意和良性數(shù)據(jù)分布良好。ARMD的核心包括注意力機(jī)制和ResNet18,即ARMD通過(guò)卷積層提取不同樣本數(shù)據(jù)特征,再使用注意力機(jī)制對(duì)卷積層的輸出特征進(jìn)行縮放以計(jì)算權(quán)重,并對(duì)重要特征進(jìn)行加權(quán),不斷地對(duì)特征卷積以輸出最優(yōu)的訓(xùn)練結(jié)果。該模型重新分配樣本的加權(quán)特征以獲得新的特征映射,ARMD是通過(guò)將API特征映射到目標(biāo)標(biāo)簽來(lái)訓(xùn)練的,通過(guò)多次訓(xùn)練迭代,得到了該檢測(cè)模型。
圖1 本文方法整體架構(gòu)
Hu等[22]提出了一種注意力機(jī)制結(jié)構(gòu)SENet(Squeeze-and-Excitation Network),通過(guò)顯式地建模特征通道之間的相互依關(guān)系,自適應(yīng)地重新校準(zhǔn)通道的特征響應(yīng)。具體來(lái)說(shuō),就是通過(guò)學(xué)習(xí)的方式來(lái)自動(dòng)獲取每個(gè)特征通道的重要程度,然后依照這個(gè)重要程度去增強(qiáng)有用的特征,并抑制對(duì)當(dāng)前任務(wù)影響小的特征。在SENet的啟發(fā)下,本文提出了一種用于檢測(cè)惡意代碼的注意力機(jī)制的方法,如圖2所示,其中FC、Tanh和Sigmoid分別表示完全連接層、激活函數(shù)和門(mén)控函數(shù)。
圖2 本文提出的用于檢測(cè)惡意代碼的注意力機(jī)制
Fig.2 Proposed attention mechanism for detecting malicious code
ResNet是一種新穎的神經(jīng)網(wǎng)絡(luò),它利用跳過(guò)連接或快捷方式跳過(guò)某些卷積層,已廣泛應(yīng)用于自然語(yǔ)言處理和計(jì)算機(jī)視覺(jué)領(lǐng)域[23-24]。以前許多研究者使用CNN來(lái)檢測(cè)惡意代碼,然而CNN的反向傳播通常會(huì)使梯度逐漸消失,并且當(dāng)層數(shù)增加時(shí),它并不調(diào)整每個(gè)網(wǎng)絡(luò)層的權(quán)重。ResNet通過(guò)引入殘差單元解決了隨著網(wǎng)絡(luò)層數(shù)加深帶來(lái)的退化問(wèn)題。
殘差網(wǎng)絡(luò)在模型表征方面并不存在直接的優(yōu)勢(shì),也并不能更好地表征某一方面的特征,但是ResNets允許逐層深入地表征更多的模型,以達(dá)到最優(yōu)效果。ResNet中的每個(gè)殘差單元通過(guò)跳躍式連接實(shí)現(xiàn),并不會(huì)給網(wǎng)絡(luò)增加額外的參數(shù)和計(jì)算量,卻可以大幅提高模型的訓(xùn)練速度、提升訓(xùn)練效果,殘差網(wǎng)絡(luò)往往能使得優(yōu)化較深層模型更為簡(jiǎn)單,因此,引入ResNet來(lái)檢測(cè)惡意代碼。
圖3(b)顯示了具有注意力機(jī)制改進(jìn)的殘差塊。注意力機(jī)制是在第二個(gè)BN層之后添加的,由卷積層處理的API特征映射被視為輸入。注意力機(jī)制對(duì)輸入特征進(jìn)行兩次縮放以獲得加權(quán)系數(shù),該系數(shù)通過(guò)權(quán)重重新分配惡意代碼的API特征。通過(guò)將權(quán)值系數(shù)乘以原始特征,可得到校準(zhǔn)后的新特征。
圖4顯示了本實(shí)驗(yàn)的模型ARMD,它包含17個(gè)卷積層和1個(gè)稠密層。每個(gè)殘差塊(ResBlock)結(jié)構(gòu)相同,只是通道數(shù)增加,輸出尺寸減小。ARMD為每個(gè)殘差塊引入了注意力機(jī)制。輸出層只有1個(gè)神經(jīng)元用來(lái)指示結(jié)果是否為惡意代碼。AvgPool為平均池化層,以減少計(jì)算。FC代表全連接層,是整個(gè)CNN的分類(lèi)器。
圖3 改進(jìn)的殘差塊與原始的殘差塊的比較
Fig.3 Comparison between improved residual block with original one
在ResNet的每個(gè)殘差單元中引入了SENet,通過(guò)學(xué)習(xí)的方式來(lái)自動(dòng)獲取到每個(gè)特征通道的重要程度,然后依照這個(gè)重要程度去提升有用的特征并抑制對(duì)當(dāng)前任務(wù)用處不大的特征,從而有效地提高了惡意代碼的檢測(cè)準(zhǔn)確率。
圖4 基于ResNet18和注意力機(jī)制的ARMD
本章首先介紹了惡意代碼的API,然后介紹了通過(guò)惡意代碼Hash值提取API,最后將說(shuō)明如何生成數(shù)據(jù)集。
通過(guò)分析惡意代碼調(diào)用系統(tǒng)中特定操作的API以及控制命令,判斷是否為惡意代碼。在這種方法中,不需要對(duì)已加殼的文件進(jìn)行逆向分析,只需要對(duì)惡意代碼所執(zhí)行的API調(diào)用來(lái)進(jìn)行動(dòng)態(tài)分析,就可以知道某個(gè)特定文件具體的功能。通過(guò)這樣的方法(分析API調(diào)用),可以確定一個(gè)文件是否具有惡意性,而有些API調(diào)用只有某些特殊類(lèi)型的惡意代碼才會(huì)去使用。表1介紹了部分API功能。
Hash是一種用來(lái)唯一標(biāo)識(shí)惡意代碼的常用方法,MD5算法是惡意代碼分析常見(jiàn)的哈希函數(shù),SHA-1也是常用的算法。Hash可作為樣本的標(biāo)簽使用,通過(guò)在線搜索惡意代碼的Hash值可確定該文件是否已經(jīng)被識(shí)別,以及API的提取。
VirusTotal[25]是一個(gè)在線訪問(wèn)并分析可疑文件的Hash或URL的免費(fèi)工具,它使用許多防病毒引擎來(lái)對(duì)各種惡意代碼進(jìn)行檢測(cè),還使用網(wǎng)站掃描程序來(lái)分析和檢測(cè)URL或文件中可用的任何惡意內(nèi)容。VirusTotal使用58種防病毒產(chǎn)品(如Ad-Aware、Alibaba、卡巴斯基實(shí)驗(yàn)室等),多達(dá)62個(gè)網(wǎng)站或域[26]掃描引擎來(lái)對(duì)惡意代碼進(jìn)行掃描。在本文方法中,使用VirusTotal工具來(lái)對(duì)每條數(shù)據(jù)進(jìn)行分析,標(biāo)記惡意代碼或良性代碼,并從VirusTotal中Details部分提取相應(yīng)數(shù)據(jù)的API作為檢測(cè)的特征。
由于目前沒(méi)有公開(kāi)專(zhuān)門(mén)用于惡意代碼檢測(cè)的數(shù)據(jù)集,為了訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)模型進(jìn)行惡意代碼檢測(cè),首先構(gòu)建惡意代碼的訓(xùn)練數(shù)據(jù)集。
為了生成一個(gè)高質(zhì)量的數(shù)據(jù)集,從Kaggle網(wǎng)站上獲取了47 580個(gè)代碼數(shù)據(jù)[27]。通過(guò)VirusTotal工具檢測(cè),發(fā)現(xiàn)所獲得的數(shù)據(jù)集中存在對(duì)惡意和良性標(biāo)識(shí)錯(cuò)誤,對(duì)此將樣本的Hash值作為索引,通過(guò)VirusTotal工具的分析對(duì)數(shù)據(jù)進(jìn)行惡意和良性的標(biāo)識(shí),并從VirusTotal工具中的Details部分提取每個(gè)樣本所調(diào)用的API。整合所有樣本中的API進(jìn)行去重處理,并提取前1 000個(gè)API作為檢測(cè)的特征。由于數(shù)據(jù)和特征比較大,所以表2僅展示了部分惡意代碼的Hash值和所提取的API:若API調(diào)用則為1,否則為0。Malware是惡意代碼的標(biāo)識(shí)符,“1”表示惡意,“0”表示良性。
1)GetProcAddress函數(shù)為檢索指定的動(dòng)態(tài)鏈接庫(kù)(Dynamic Link Library, DLL)中的輸出庫(kù)函數(shù)地址;
2)ExitProcess函數(shù)為結(jié)束調(diào)用的進(jìn)程及其所有的線程windows函數(shù);
3)CloseHandle函數(shù)為終止一個(gè)進(jìn)程;
4)OpenProcess函數(shù)用來(lái)打開(kāi)一個(gè)已存在的進(jìn)程對(duì)象,并返回進(jìn)程的句柄。
表1 部分API函數(shù)及其功能描述
表2 部分惡意代碼的Hash值和所提取的API
基于這些數(shù)據(jù),我們生成了一個(gè)惡意代碼的數(shù)據(jù)集來(lái)評(píng)估模型的有效性,其中惡意代碼為45 651個(gè),良性代碼為1 929個(gè),使用這些代碼作為樣本數(shù)據(jù)的來(lái)源。對(duì)每個(gè)惡意代碼都使用VirusTotal提取API,通過(guò)將每個(gè)樣本的API與一個(gè)標(biāo)識(shí)符(惡意或良性)組合生成數(shù)據(jù)。80%的數(shù)據(jù)集用作訓(xùn)練集,20%的數(shù)據(jù)集作為測(cè)試集。為了避免良性數(shù)據(jù)的不平衡分布,采用SMTOE算法來(lái)確保惡意和良性數(shù)據(jù)的分布良好。
ARMD輸入由式(6)定義:
所有實(shí)驗(yàn)都在聯(lián)想工作站上進(jìn)行,該工作站有2.5 GHz四核lntel Core i7-6500u處理器和8 GB的主內(nèi)存;操作系統(tǒng)是64位的Windows 10;使用PyCharm作為運(yùn)行平臺(tái);Python版本是3.6;PyTorch版本是1.8.0作為深度學(xué)習(xí)的運(yùn)行支撐環(huán)境;惡意代碼分析工具使用VirusTotal。
通過(guò)回答以下研究問(wèn)題來(lái)評(píng)估本文方法的有效性。
問(wèn)題1:殘差網(wǎng)絡(luò)是否比CNN和LSTM等傳統(tǒng)方法更適用于惡意代碼檢測(cè);
問(wèn)題2:基于注意力機(jī)制的殘差網(wǎng)絡(luò)是否比現(xiàn)有的方法更有效;
問(wèn)題3:基于注意力機(jī)制的殘差網(wǎng)絡(luò)是否比殘差網(wǎng)絡(luò)更好;
問(wèn)題4:殘差網(wǎng)絡(luò)是否層數(shù)越深,評(píng)估效果越好。
表3 二分類(lèi)問(wèn)題的混淆矩陣
準(zhǔn)確率表示預(yù)測(cè)正確的樣本占測(cè)試集中所有樣本的比例。
4.4.1 問(wèn)題1的評(píng)估
表4 問(wèn)題1的測(cè)試結(jié)果 單位: %
4.4.2 問(wèn)題2的評(píng)估
為了回答問(wèn)題2,與現(xiàn)有的基于API檢測(cè)惡意代碼的方法進(jìn)行了比較。
Garg等[28]基于API調(diào)用頻率對(duì)惡意代碼進(jìn)行檢測(cè),該方法映射所有樣本使用的API到數(shù)據(jù)庫(kù),并計(jì)算惡意代碼調(diào)用API頻率,通過(guò)K最近鄰(K-Nearest Neighbor,KNN)和SVM聯(lián)合分類(lèi)器檢測(cè)達(dá)到了93%的正確率。Makandar等[29]使用Gabor小波變換和GIST(Generalized Search Tree)基于全局特征識(shí)別惡意代碼的行為,通過(guò)前饋人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network, ANN)進(jìn)行檢測(cè),取得了96.35%的準(zhǔn)確率。
結(jié)合以上方法,使用本文的數(shù)據(jù)集在KNN+SVM模型以及ANN模型上做了測(cè)試,以驗(yàn)證本文方法的有效性,評(píng)估結(jié)果如表5所示。通過(guò)測(cè)試結(jié)果可以看出,本文方法ARMD在性能上顯著優(yōu)于KNN+SVM和ANN。與KNN+SVM相比,檢測(cè)準(zhǔn)確率提高了2.1個(gè)百分點(diǎn),因?yàn)镵NN+SVM聯(lián)合分類(lèi)器刪減掉了距離分類(lèi)面較遠(yuǎn)的測(cè)試樣本,可能導(dǎo)致特征的提取不夠充分;與ANN相比測(cè)試準(zhǔn)確率提高了2.4個(gè)百分點(diǎn),可能的原因是ANN的各神經(jīng)元分層排列,各層之間沒(méi)有反饋,訓(xùn)練時(shí)舍去了一些重要的特征,影響了測(cè)試效果。由此可以看出,ARMD在檢測(cè)惡意代碼方面明顯優(yōu)于對(duì)比方法。
表5 問(wèn)題2的測(cè)試結(jié)果 單位 %
4.4.3 問(wèn)題3的評(píng)估
為了回答問(wèn)題3,比較了引入注意力機(jī)制的殘差網(wǎng)絡(luò)與殘差網(wǎng)絡(luò),評(píng)估結(jié)果如表6所示,其中:ResNet18為殘差網(wǎng)絡(luò),ARMD為加入注意力機(jī)制的殘差網(wǎng)絡(luò)。從表6可以看出,ARMD明顯優(yōu)于ResNet18,說(shuō)明引入注意力機(jī)制的殘差網(wǎng)絡(luò)在特征提取時(shí),對(duì)上一層輸出的重要特征進(jìn)行加權(quán)處理,能更有效地對(duì)惡意代碼進(jìn)行檢測(cè)。
表6 問(wèn)題3的評(píng)估結(jié)果 單位 %
4.4.4 問(wèn)題4的評(píng)估
表7 問(wèn)題4的評(píng)估結(jié)果 單位 %
4.4.5 未來(lái)研究
1)本文僅選擇來(lái)自Kaggle網(wǎng)站上一部分惡意代碼的Hash值,這些惡意代碼數(shù)據(jù)集并不能代表所有的惡意代碼,因?yàn)椴煌瑦阂獯a代表不同類(lèi)別的數(shù)據(jù)樣本,為此,我們需要盡可能地收集不同種類(lèi)的惡意代碼,盡可能地保證數(shù)據(jù)集來(lái)源的多樣性。
2)在對(duì)訓(xùn)練數(shù)據(jù)集進(jìn)行特征提取時(shí),使用了前1 000個(gè)API作為特征輸入。由于提取的特征中只有一部分API可以代表有惡意行為,所以在提取特征時(shí)應(yīng)盡可能地提取能表示惡意行為的API,最大限度保證數(shù)據(jù)集的準(zhǔn)確性。
4)理論推測(cè),殘差網(wǎng)絡(luò)中隨著層數(shù)的增加,測(cè)試效果會(huì)不斷地更新,得到一個(gè)最優(yōu)的結(jié)果,提取的特征更詳細(xì),能更有效地檢測(cè)惡意代碼。但在本文實(shí)驗(yàn)中,隨著殘差網(wǎng)絡(luò)層數(shù)的增加,本文方法的結(jié)果并不是很理想,如何選擇合適的網(wǎng)絡(luò)層數(shù)需要進(jìn)一步研究。
本文提出了一種基于注意力機(jī)制和殘差網(wǎng)絡(luò)的惡意代碼檢測(cè)方法ARMD,利用注意力機(jī)制來(lái)計(jì)算惡意代碼API特征的權(quán)重,在模型檢測(cè)過(guò)程中對(duì)提取的重要特征進(jìn)行了加權(quán)。為了測(cè)試本文方法,從Kaggle網(wǎng)站獲取了47 580個(gè)代碼數(shù)據(jù)的Hash值,并生成了一個(gè)高質(zhì)量的惡意代碼數(shù)據(jù)集。與現(xiàn)有方法進(jìn)行比較的結(jié)果表明,ARMD的平均精確率比現(xiàn)有方法至少高出2個(gè)百分點(diǎn)以上,在一定程度上提高了惡意代碼檢測(cè)的水平。
我們未來(lái)的工作包括:對(duì)惡意代碼的種類(lèi)進(jìn)行標(biāo)記并分類(lèi),同時(shí)改進(jìn)本文方法,以提高對(duì)惡意代碼的檢測(cè)和分類(lèi)效果;通過(guò)建模不同層數(shù)的殘差網(wǎng)絡(luò),驗(yàn)證隨著層數(shù)的增加,測(cè)試效果是否會(huì)降低;嘗試以操作碼作為檢測(cè)惡意代碼的特征,以更全面有效地檢測(cè)惡意代碼。
)
[1] LECUN Y, BENGIO Y, HINTON G. Deep learning[J]. Nature, 2015, 521(7553):436-444.
[2] 國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心. 態(tài)勢(shì)安全報(bào)告年報(bào)[EB/OL]. [2021-07-31].https://www.cert.org.cn/publish/main/46/index.html. (National Computer Network Emergency Response Technical Team/Coordination Center of China. Annual situation security report [EB/OL]. [2021-07-31].https://www.cert.org.cn/publish/main/46/index.html.)
[3] GHANAEI V, LLIOPOULOS C S, OVERILL R E. Statistical approach towards malware classification and detection[C]// Proceedings of the 2016 SAI Computing Conference. Piscataway: IEEE, 2016: 1093-1099.
[4] ZHAO S, MA X B, ZOU W, et al. DeepCG: classifying metamorphic malware through deep learning of call graphs[C]// Proceedings of the 2019 International Conference on Security and Privacy in Communication Systems, LNICST 304. Cham: Springer, 2019: 171-190.
[5] SUNG A H, XU J Y, CHAVEZ P, et al. Static analyzer of vicious executables (SAVE)[C]// Proceedings of the 20th Annual Computer Security Applications Conference. Piscataway: IEEE, 2004: 326-334.
[6] TABISH S M, SHAFIQ M Z, FAROOQ M. Malware detection using statistical analysis of byte-level file content[C]// Proceedings of the 2009 ACM SIGKDD Workshop on CyberSecurity and Intelligence Informatics. New York: ACM, 2009: 23-31.
[7] 羅世奇,田生偉,孫華,等. 棧式自編碼的惡意代碼分類(lèi)算法研究[J]. 計(jì)算機(jī)應(yīng)用研究, 2018, 35(1): 261-265.(LUO S Q, TIAN S W, SUN H, et al. Research on malicious code classification algorithm of stacked auto encoder[J]. Application Research of Computers, 2018, 35(1): 261-265.)
[8] 張瑋康. 基于惡意代碼API的靜態(tài)檢測(cè)技術(shù)研究[D]. 西安:西安電子科技大學(xué), 2018. (ZHANG W K, Research on static detection technology based on malicious code API[D]. Xi’an: Xidian University, 2018.)
[9] CESARE S, XIANG Y, ZHOU W L. Control flow-based malware VariantDetection[J]. IEEE Transactions on Dependable and Secure Computing, 2014, 11(4): 307-317.
[10] ANDERSON B, QUIST D, NEIL J, et al. Graph-based malware detection using dynamic analysis[J]. Journal in Computer Virology, 2011, 7(4): 247-258.
[11] WILLEMS C, HOLZ T, FREILING F. Toward automated dynamic malware analysis using CWSandbox[J]. IEEE Security and Privacy, 2007, 5(2): 32-39.
[12] SALEHI Z, SAMI A, GHIASI M. Using feature generation from API calls for malware detection[J]. Computer Fraud and Security, 2014, 2014(9): 9-18.
[13] 榮俸萍,方勇,左政,等. MACSPMD:基于惡意API調(diào)用序列模式挖掘的惡意代碼檢測(cè)[J]. 計(jì)算機(jī)科學(xué), 2018, 45(5): 131-138.(RONG F P, FANG Y, ZUO Z, et al. MACSPMD: malicious API call sequential pattern mining based malware detection[J]. Computer Science, 2018, 45(5): 131-138.)
[14] KIM C W. NtMalDetect: a machine learning approach to malware detection using native API system calls[EB/OL]. (2018-05-19)[2021-03-20].https://arxiv.org/pdf/1802.05412.pdf.
[15] SAXE J, BERLIN K. Deep neural network based malware detection using two dimensional binary program features[C]// Proceedings of the 10th International Conference on Malicious and Unwanted Software. Piscataway: IEEE, 2015: 11-20.
[16] HUANG W Y, STOKES J W. MtNet: a multi-task neural network for dynamic malware classification[C]// Proceedings of the 2016 International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment, LNSC 9721. Cham: Springer, 2016: 399-418.
[17] KOLOSNJAJI B, ZARRAS A, WEBSTER G, et al. Deep learning for classification of malware system call sequences[C]// Proceedings of the 2016 Australasian Joint Conference on Artificial Intelligence, LNAI 9992. Cham: Springer, 2016: 137-149.
[18] MCLAUGHLIN N, MARTINEZ DEL RINCON J, KANG B, et al. Deep Android malware detection[C]// Proceedings of the 7th ACM Conference on Data and Application Security and Privacy. New York: ACM, 2017: 301-308.
[19] FAN M, LIU J, LUO X P, et al. Android malware familial classification and representative sample selection via frequent subgraph analysis[J]. IEEE Transactions on Information Forensics and Security, 2018, 13(8): 1890-1905.
[20] ZHANG J X, QIN Z, YIN H, et al. A feature-hybrid malware variants detection using CNN based opcode embedding and BPNN based API embedding[J]. Computers and Security, 2019, 84: 376-392.
[21] CHAWLA N V, BOWYER K W, HALL L O, et al. SMOTE: synthetic minority over-sampling technique[J]. Journal of Artificial Intelligence Research, 2002, 16: 321-357.
[22] HU J, SHEN L, SUN G. Squeeze-and-excitation networks[C]// Proceedings of the 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Piscataway: IEEE, 2018: 7132-7141.
[23] HE K M, ZHANG X Y, REN S Q, et al. Deep residual learning for image recognition[C]// Proceedings of the 2016 IEEE Conference on Computer Vision and Pattern Recognition. Piscataway: IEEE, 2016: 770-778.
[24] FENG T, LIU J G, FANG X, et al. A double-branch surface detection system for armatures in vibration motors with miniature volume based on ResNet-101 and FPN[J]. Sensors, 2020, 20(8): No.2360.
[25] VirusTotal. VirusTotal[EB/OL]. [2021-05-05].https://www.virustotal.com.
[26] MASRI R, ALDWAIRI M. Automated malicious advertisement detection using VirusTotal, URLVoid, and TrendMicro[C]// Proceedings of the 8th International Conference on Information and Communication Systems. Piscataway: IEEE, 2017: 336-341.
[27] OLIVEIRA A. Malware analysis datasets: Top-1000 PE imports[DB/OL]. [2021-03-23].https://www.kaggle.com/ang3loliveira/malware-analysis-datasets-top1000-pe-imports.
[28] GARG V, YADAV R K. Malware detection based on API calls frequency[C]// Proceedings of the 4th International Conference on Information Systems and Computer Networks. Piscataway: IEEE, 2019: 400-404.
[29] MAKANDAR A, PATROT A. Malware analysis and classification using artificial neural network[C]// Proceedings of the 2015 International Conference on Trends in Automation, Communications and Computing Technology. Piscataway: IEEE, 2015: 1-6.
Malicious code detection method based on attention mechanism and residual network
ZHANG Yang*, HAO Jiangbo
(,,050018,)
As the existing malicious code detection methods based on deep learning have problems of insufficiency and low accuracy of feature extraction, a malicious code detection method based on attention mechanism and Residual Network (ResNet) called ARMD was proposed. To support the training of this method, the hash values of 47 580 malicious and benign codes were obtained from Kaggle website, and the APIs called by each code were extracted by analysis tool VirusTotal. After that, the called APIs were integrated into 1 000 non-repeated APIs as the detection features, and the training sample data was constructed through these features. Then, the sample data was labeled by determining the benignity and maliciousness based on the VirusTotal analysis results, and the SMOTE (Synthetic Minority Over-sampling Technique) enhancement algorithm was used to equalize the data samples. Finally, the ResNet injecting with the attention mechanism was built and trained to complete the malicious code detection. Experimental results show that the accuracy of malicious code detection of ARMD is 97.76%, and compared with the existing detection methods based on Convolutional Neural Network (CNN) and ResNet models,ARMD has the average precision improved by at least 2%, verifying the effectiveness of ARMD.
deep learning; malicious code; attention mechanism; Residual Network (ResNet); SMOTE (Synthetic Minority Over-sampling Technique)
This work is partially supported by National Natural Science Foundation of China (61440012), Key Basic Research Project of Hebei Fundamental Research Plan (189601106D), Key Project of Higher Education Research Program of Hebei Province (ZD2019093).
ZHANG Yang, born in 1980, Ph. D., associate professor. His research interests include concurrent software analysis, intelligent software.
HAO Jiangbo, born in 1996, M. S. candidate. His research interests include intelligent software analysis.
TP311.53
A
1001-9081(2022)06-1708-08
10.11772/j.issn.1001-9081.2021061410
2021?08?06;
2021?09?10;
2021?10?20。
國(guó)家自然科學(xué)基金資助項(xiàng)目(61440012);河北省基礎(chǔ)研究計(jì)劃重點(diǎn)基礎(chǔ)研究專(zhuān)項(xiàng)(18960106D);河北省教育廳高等學(xué)校科學(xué)研究計(jì)劃重點(diǎn)項(xiàng)目(ZD2019093)。
張楊( 1980—),男,河北秦皇島人,副教授,博士,CCF高級(jí)會(huì)員,主要研究方向:并發(fā)軟件分析、智能化軟件;郝江波(1996—),男,河北邢臺(tái)人,碩士研究生,主要研究方向:智能軟件分析。