王 棟 楊 珂* 玄佳興 韓雨桐 廖會(huì)敏 魏博垚
1(國(guó)網(wǎng)電子商務(wù)有限公司(國(guó)網(wǎng)雄安金融科技集團(tuán)有限公司) 北京 100053)2(國(guó)家電網(wǎng)有限公司電力金融與電子商務(wù)實(shí)驗(yàn)室 北京 100053)3(中國(guó)科學(xué)院信息工程研究所 北京 100093)4(首都師范大學(xué)信息工程學(xué)院 北京 100048)
惡意代碼家族分類(lèi)研究可理解為不同的惡意代碼是否源自同一套惡意代碼或是否由同一個(gè)作者、團(tuán)隊(duì)編寫(xiě),是否具有內(nèi)在關(guān)聯(lián)性、相似性。而以深度學(xué)習(xí)為代表的人工智能技術(shù)則被認(rèn)為能夠在惡意代碼分析方面發(fā)揮重要作用。
Yuan等[1]利用受限玻爾茲曼機(jī)(Restricted Boltzmann Machine,RBM)對(duì)多層感知機(jī)預(yù)訓(xùn)練,對(duì)安卓惡意軟件的檢測(cè)準(zhǔn)確率從79.5%提升至96.5%。李盟等[2]使用n-gram頻次信息以及各API間的依賴(lài)關(guān)系,提出一種提取惡意代碼語(yǔ)義動(dòng)態(tài)特征的方法。Jung等[3]結(jié)合了多層感知機(jī)與循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)對(duì)惡意flash進(jìn)行檢測(cè),以文件頭(Headers)、標(biāo)簽(Tags)、指令操作碼(Opcodes)、API調(diào)用序列為特征,達(dá)到98.33%的檢測(cè)準(zhǔn)確率。Pascanu等[4]將系統(tǒng)事件序列視為文本序列,使用循環(huán)神經(jīng)網(wǎng)絡(luò)和回聲網(wǎng)絡(luò)(Erasmus Student Network,ESN)進(jìn)行降維,使用最大池化配合邏輯回歸分類(lèi)的方法,檢測(cè)準(zhǔn)確率比3-gram方法更好,提高到98.3%。Saxe等[5]在40萬(wàn)惡意樣本數(shù)據(jù)集上訓(xùn)練一個(gè)四層感知機(jī)二分類(lèi)模型,達(dá)到95%分類(lèi)檢出率、0.1%誤報(bào)率。David等[6]以樣本沙箱分析報(bào)告為特征,分解報(bào)告到單詞級(jí)別后,將20 000維的輸入向量降維嵌入至30維,使用k-近鄰(k-Nearest Neighbor,kNN)分類(lèi),準(zhǔn)確率從95.3%提升至98.6%。喬延臣等[7]對(duì)惡意樣本匯編代碼進(jìn)行文本詞向量分析,并將分析特征結(jié)果轉(zhuǎn)化為圖像送入CNN進(jìn)行分類(lèi),實(shí)現(xiàn)了98.56%的分類(lèi)準(zhǔn)確率。Yakura等[8]在卷積神經(jīng)網(wǎng)絡(luò)分類(lèi)惡意樣本的基礎(chǔ)上引入了注意力機(jī)制。
以上工作通過(guò)對(duì)惡意代碼的靜態(tài)特征進(jìn)行提取,或者通過(guò)沙箱運(yùn)行進(jìn)行動(dòng)態(tài)特征提取,建立惡意代碼的特征模型,有一定的主觀選擇性和時(shí)間空間開(kāi)銷(xiāo),相比惡意樣本的圖像信息獲取成本要高,序列信息也會(huì)丟失惡意代碼本身的某些空間特征。惡意代碼圖像特征的概念,最早是由Nataraj等[9]于2011年提出的,將惡意代碼的二進(jìn)制文件轉(zhuǎn)換成灰度圖像,再結(jié)合GIST特征來(lái)進(jìn)行聚類(lèi)。Cui等[10]基于惡意樣本字節(jié)碼的灰度圖像對(duì)惡意樣本變種進(jìn)行分類(lèi),但準(zhǔn)確率不夠高。惡意樣本圖像是一種可以高效處理的惡意樣本特征形式,但是既有方法會(huì)造成信息丟失;卷積神經(jīng)網(wǎng)絡(luò)對(duì)圖像有良好的分類(lèi)效果,但惡意樣本圖像處理不當(dāng)會(huì)引入額外的局部相關(guān)性。這兩點(diǎn)都會(huì)影響惡意代碼分類(lèi)效果。
本文的主要貢獻(xiàn)包括以下幾個(gè)方面:
1) 研究惡意代碼圖像特征映射和優(yōu)化,提出改進(jìn)的惡意樣本圖像縮放算法(Improved Malaware Image Rescaling,IMIR),實(shí)驗(yàn)證明,IMIR會(huì)提高惡意代碼多分類(lèi)能力。
2) 基于一維特征圖像的卷積神經(jīng)網(wǎng)絡(luò)(One-Dimensional Convolutional Neural Network,1D-CNN),構(gòu)建高效的惡意代碼分類(lèi)模型1D-CNN-IMIR。
3) 通過(guò)在公開(kāi)的惡意代碼數(shù)據(jù)集上進(jìn)行大量對(duì)比實(shí)驗(yàn)得出1D-CNN-IMIR準(zhǔn)確率達(dá)到98%。
惡意樣本預(yù)處理的方式多種多樣,其中惡意樣本灰度圖像[9]預(yù)處理容易、耗時(shí)短。如圖1所示,在不依賴(lài)反匯編的情況下,將惡意樣本的8位二進(jìn)制數(shù)據(jù)轉(zhuǎn)化為目標(biāo)圖像的一個(gè)像素,或者說(shuō)一個(gè)一維灰度圖像。
圖1 惡意代碼特征圖像映射
惡意樣本是一維的,而卷積神經(jīng)網(wǎng)絡(luò)解決的問(wèn)題大多是關(guān)于二維圖像的,從一維樣本轉(zhuǎn)換成二維圖像必然會(huì)導(dǎo)致關(guān)于惡意樣本特有的空間局部相關(guān)性的錯(cuò)誤。如果人為地將其轉(zhuǎn)為寬度為w的二維圖像,如圖2所示,箭頭指向了在兩種維度情形下的相同數(shù)據(jù),在原圖像中距離為w的若干點(diǎn)就會(huì)被重排到一列上,距離被拉近,在后續(xù)的模型中被識(shí)別為局部相關(guān)點(diǎn)群,而這些點(diǎn)之間卻可能并不存在所期望的空間局部相關(guān)性。
圖2 局部相關(guān)性變化示意
距離相近的點(diǎn)具有空間局部相關(guān)性是卷積神經(jīng)網(wǎng)絡(luò)的主要特征之一。距離的定義決定了卷積方式,錯(cuò)誤的距離定義將誤導(dǎo)分類(lèi)網(wǎng)絡(luò),使其從惡意樣本圖像上不相關(guān)的點(diǎn)中捕獲額外的錯(cuò)誤空間局部相關(guān)性,最后導(dǎo)致過(guò)擬合,降低分類(lèi)性能。為了緩解過(guò)擬合,去除了寬度設(shè)置,不進(jìn)行圖像維度變換。
深度學(xué)習(xí)模型處理圖像信息前需要對(duì)多尺度的圖像進(jìn)行規(guī)范化。Cui等[10]使用類(lèi)似雙線性插值算法的三線性插值算法。雙線性插值算法被廣泛用作默認(rèn)的圖像縮放算法。文獻(xiàn)[10]也使用雙線性插值對(duì)惡意樣本圖像進(jìn)行了規(guī)范化處理。但是雙線性插值縮放在規(guī)范化圖像時(shí)有大量的信息損失,會(huì)影響后續(xù)分類(lèi)效果。因此,提出改進(jìn)的惡意樣本圖像縮放算法(IMIR)。
IMIR算法將采樣點(diǎn)的范圍從最近的若干個(gè)點(diǎn)提升至整個(gè)滑動(dòng)窗口內(nèi)的點(diǎn),再調(diào)整了滑動(dòng)方式使其更適合惡意樣本圖像,且沒(méi)有增加額外耗時(shí),1萬(wàn)個(gè)樣本耗時(shí)約1 min。在數(shù)據(jù)集中最小的樣本大小是32 KB,惡意圖像大小標(biāo)準(zhǔn)取4 096 KB。
IMIR算法基于局部均值算法,不同于真實(shí)圖像,每一個(gè)惡意軟件映像的像素同樣重要,所以應(yīng)該盡可能完整地捕獲每個(gè)字節(jié)的信息,避免信息丟失。將范圍擴(kuò)展到采樣窗口的邊界,調(diào)整步幅計(jì)算方法和添加填充步驟以適應(yīng)本地均值惡意軟件圖片。IMIR算法偽代碼如算法1所示。
算法1IMIR算法
輸入:任意代碼原始圖像,目標(biāo)圖像大小targetSize。
輸出:具有targetSize大小的惡意代碼圖像rescaledImg。
sourceSize=size(sample)
stepWidth=(sourceSize-1)/targetSize+1
fullNum=(sourceSize-1)/stepWidth
blankNum=targetSize-1-fullNum
halfLen=(sourceSize-1) modstepWidth+1
fullPart=?
foreachi∈[0,1,…,fulNum-1]do
fullPart=fullPart+[mean(sample[stepWidth*i,stepWidth*i+1,…,stepWidth*(i+1)-1])]
endfor
halfPart1=sample[stepWidth*fullNum,stepWidth*fullNum+1,…,stepWidth*fullNum+halfLen-1]
halfPart2=repeat(0,stepWidth-halfLen)
halfPart=[mean(halfPart1+halfPart2)]
blankPart=repeat(0,blankNum)
returnfullPart+halfPart+blankPart
//兩個(gè)數(shù)組之間的“+”表示連接符
1D-CNN使用VGG模型[11]設(shè)計(jì)惡意代碼分類(lèi)器。如圖3所示,該分類(lèi)器包含五組伴隨最大池化層的卷積層、三個(gè)使用dropout的全連接層、一個(gè)不使用dropout的全連接層和作為輸出的Softmax層。
圖3 惡意樣本分類(lèi)1D-CNN結(jié)構(gòu)
使用IMIR算法縮放至4 096像素的惡意樣本一維圖像作為輸入,圖3中stride 1使用ReLU函數(shù)作為激活函數(shù)以緩解梯度消失[12],并提升訓(xùn)練速度。輸出9個(gè)惡意代碼家族標(biāo)簽的概率向量。在此以交叉熵作為損耗函數(shù),如式(1)所示,并使用Adam優(yōu)化器將其最小化到訓(xùn)練數(shù)據(jù)上。
L=-Ex,y~datalnP(y|x)
(1)
式中:P(y|x)表示將惡意樣本x分類(lèi)至家族標(biāo)簽y的概率向量。
模型首先對(duì)惡意樣本進(jìn)行圖形化處理,利用改進(jìn)的圖像縮放方法進(jìn)行預(yù)處理,然后利用一維卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行識(shí)別,輸出惡意代碼家族分類(lèi)如圖4所示。
圖4 1D-CNN-IMIR模型結(jié)構(gòu)
實(shí)驗(yàn)數(shù)據(jù)集采用的是微軟2015年公開(kāi)在數(shù)據(jù)競(jìng)賽平臺(tái)Kaggle上的惡意樣本數(shù)據(jù)集Microsoft Malware Classification Challenge[13],該數(shù)據(jù)集廣泛用于惡意樣本研究中,便于同其他研究對(duì)比算法效果。數(shù)據(jù)集共有10 868個(gè)樣本,分為9個(gè)家族,包含了蠕蟲(chóng)、木馬、后門(mén)程序等多種惡意樣本,表1詳細(xì)展示了各個(gè)樣本集的數(shù)量與種類(lèi)。其中每個(gè)樣本提供了兩種文件,一種是asm文件,另一種是bytes文件,如圖5所示。
表1 Microsoft Malware Classification數(shù)據(jù)集
圖5 數(shù)據(jù)集中兩種文件內(nèi)容示例
實(shí)驗(yàn)評(píng)價(jià)選用了準(zhǔn)確率(Accuracy)、精確率(Precision)、召回率(Recall)和錯(cuò)誤率(Error)這四個(gè)指標(biāo)。具體來(lái)說(shuō),假設(shè)在被檢測(cè)方法判斷為家族a中,實(shí)際不屬于家族a的數(shù)量為FP,實(shí)際屬于家族a的數(shù)量為T(mén)P;在被檢測(cè)方法判斷不屬于家族a的樣本中,實(shí)際為不屬于家族a的數(shù)量為T(mén)N,實(shí)際為家族a的數(shù)量為FN。準(zhǔn)確率、精確率、召回率、錯(cuò)誤率的定義分別如下:
(2)
(3)
(4)
E=1-A
(5)
此外K折交叉驗(yàn)證(K-Fold Cross-Validation)是能較好地衡量泛化性能效果的一種數(shù)據(jù)集劃分方法,在實(shí)驗(yàn)中,統(tǒng)一設(shè)置K=5。
使用Adam優(yōu)化器訓(xùn)練卷積網(wǎng)絡(luò),Adam能更快地到達(dá)全局近似最優(yōu)解,節(jié)約訓(xùn)練時(shí)間,更有利于調(diào)整模型參數(shù),具體參數(shù)如表2所示。
表2 模型訓(xùn)練參數(shù)
使用IMIR算法對(duì)惡意樣本圖像特征進(jìn)行規(guī)范化處理。使用雙線性插值做對(duì)比實(shí)驗(yàn),選擇k近鄰算法(k Nearest Neighbor,kNN)、支撐向量機(jī)(Support Vector Machine,SVM)、基于二維圖像的卷積神經(jīng)網(wǎng)絡(luò)(2D-CNN)、1D-CNN-IMIR,對(duì)比驗(yàn)證IMIR算法對(duì)惡意代碼特征處理的有效性和1D-CNN-IMIR分類(lèi)準(zhǔn)確性。
由表3的數(shù)據(jù)顯示,對(duì)于kNN分類(lèi)器,IMIR相對(duì)雙線性插值極大地降低了分類(lèi)錯(cuò)誤率;對(duì)于SVM分類(lèi)器,IMIR相對(duì)雙線性插值的錯(cuò)誤率提高了1.29百分點(diǎn),這是因?yàn)橄啾萲NN,SVM對(duì)特征要求較低一些,因此特征工程算法改進(jìn)影響會(huì)變?。粚?duì)于兩種CNN分類(lèi)器,因?yàn)榉诸?lèi)器本身有良好性能,所以錯(cuò)誤率都不高,這種情況下進(jìn)一步降低錯(cuò)誤率已經(jīng)較為困難,然而相比雙線性插值算法,不論是使用1D-CNN或2D-CNN,IMIR仍然將錯(cuò)誤率降低近三分之一,說(shuō)明IMIR對(duì)CNN分類(lèi)器有效。
表3 不同分類(lèi)器(5折交叉驗(yàn)證)錯(cuò)誤率(Error)對(duì)比(%)
在同時(shí)使用IMIR算法情況下,1D-CNN相對(duì)2D-CNN的錯(cuò)誤率進(jìn)一步降低一半,說(shuō)明一維卷積神經(jīng)網(wǎng)絡(luò)確實(shí)更加適合惡意樣本圖像特征的分析;而1D-CNN與IMIR的算法組合相對(duì)2D-CNN-雙線性插值的算法組合錯(cuò)誤率降低了62.5%,說(shuō)明1D-CNN-IMIR算法是有效的。
統(tǒng)計(jì)最優(yōu)方法組合1D-CNN-IMIR對(duì)各個(gè)惡意代碼家族分類(lèi)效果如表4所示。平均準(zhǔn)確率和召回率分別高達(dá)97.50%、98.65%,普遍高于97%,最差也達(dá)到了90%,說(shuō)明了分類(lèi)模型基本未對(duì)某些特定家族偏斜,整體較為有效可靠。
表4 基于1D-CNN-IMIR的圖像分類(lèi)實(shí)驗(yàn)(%)
續(xù)表4
為了確保結(jié)果的客觀性,將1D-CNN-IMIR算法與其他深度學(xué)習(xí)分類(lèi)算法對(duì)比研究,均在相同數(shù)據(jù)集上使用5折交叉驗(yàn)證。AE-SVM[14]、tDCGAN[15]、Strand[16]是惡意樣本字節(jié)碼或灰度圖像特征維度上實(shí)驗(yàn)效果最好的方法,而MCSC[17]是基于反匯編的效果最好的研究之一。
從表5可以看出,1D-CNN-IMIR相比其他四個(gè)工作,不需要反匯編或沙箱監(jiān)控過(guò)程,但卻顯著地提高了分類(lèi)準(zhǔn)確率,達(dá)到98.94%;即使與需要反匯編的MCSC相比,1D-CNN-IMIR準(zhǔn)確率仍然略占優(yōu)勢(shì)。這說(shuō)明了1D-CNN-IMIR對(duì)海量惡意樣本的快速分類(lèi)有明顯的實(shí)際意義。
表5 相關(guān)研究準(zhǔn)確率對(duì)比
本文從樣本特征提取、分類(lèi)網(wǎng)絡(luò)結(jié)構(gòu)、數(shù)據(jù)利用三方面對(duì)現(xiàn)有基于深度學(xué)習(xí)的惡意代碼分類(lèi)研究進(jìn)行了改進(jìn),提出了惡意樣本專(zhuān)用的圖像縮放算法IMIR,設(shè)計(jì)了基于一維卷積神經(jīng)網(wǎng)絡(luò)的惡意樣本分類(lèi)器模型。經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證,三者協(xié)同工作,可以減少模型構(gòu)建與使用的時(shí)間代價(jià),提高更新效率,增強(qiáng)時(shí)效性。下一步的工作是引入生成對(duì)抗網(wǎng)絡(luò),實(shí)現(xiàn)小樣本標(biāo)簽情況下的半監(jiān)督對(duì)抗生成網(wǎng)絡(luò),補(bǔ)償樣本標(biāo)簽缺乏導(dǎo)致的分類(lèi)準(zhǔn)確率下降。