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