魏利卓,石春竹,許鳳凱,張慕榕,郝 嬌
(中國(guó)電子信息產(chǎn)業(yè)集團(tuán)有限公司第六研究所,北京100083)
在網(wǎng)絡(luò)迅猛發(fā)展的今天,惡意代碼已經(jīng)成為網(wǎng)絡(luò)安全的重要威脅,在網(wǎng)絡(luò)信息安全中占有一席之地[1]。當(dāng)開(kāi)源代碼概念出現(xiàn)之后,產(chǎn)生了各種類型的代碼,現(xiàn)在即使是新手也可以輕松地使用駭客工具創(chuàng)建惡意代碼并發(fā)布到網(wǎng)絡(luò)上,目前這種代碼呈指數(shù)增長(zhǎng)和擴(kuò)散?,F(xiàn)如今,國(guó)家網(wǎng)絡(luò)安全問(wèn)題受到了前所未有的關(guān)注[2]。
日益嚴(yán)重的安全問(wèn)題,已經(jīng)滲入到人民日常生活乃至國(guó)家層面上,特別是在工業(yè)互聯(lián)網(wǎng)中的網(wǎng)絡(luò)攻擊會(huì)給國(guó)家的工業(yè)造成巨額損失。例如,震網(wǎng)病毒曾于2010年大面積出現(xiàn),是當(dāng)今世界上第一個(gè)完全根據(jù)工業(yè)控制環(huán)境所產(chǎn)生的毀滅性蠕蟲(chóng)病毒,它在短時(shí)期內(nèi)危及著許多公司的正常運(yùn)營(yíng)[3]。伊萬(wàn)諾-弗蘭科夫斯克半數(shù)以上的家庭受到了停電影響,困擾持續(xù)了幾個(gè)小時(shí)[4]。在電站遭到攻擊的同時(shí),烏克蘭的許多其他能源企業(yè),如煤礦和石化等,也成為網(wǎng)絡(luò)攻擊的目標(biāo)。
近年來(lái),深度學(xué)習(xí)技術(shù)在人工智能應(yīng)用領(lǐng)域受到了人們更多的關(guān)注。在語(yǔ)音識(shí)別、圖形視覺(jué)效果及自然語(yǔ)言處理等應(yīng)用領(lǐng)域,深度學(xué)習(xí)比淺層學(xué)習(xí)模型在特征提取、分類以及預(yù)測(cè)準(zhǔn)確性方面有許多優(yōu)勢(shì)。鑒于其在其他領(lǐng)域的廣泛應(yīng)用,研究人員已經(jīng)將深度學(xué)習(xí)用于惡意軟件檢測(cè)系統(tǒng)的開(kāi)發(fā),已有很好的檢測(cè)結(jié)果,但也存在著不足之處。
比如,通過(guò)簽名的惡意代碼檢測(cè)技術(shù)一般根據(jù)模式匹配的思路。2012年,Desnos提出了一種基于相似距離的檢測(cè)軟件之間的相似性和惡意軟件的系統(tǒng),從應(yīng)用程序中提取簽名,可以確定兩個(gè)應(yīng)用程序的相似性[5]?;诤灻膼阂獯a檢測(cè)方法十分準(zhǔn)確,但是對(duì)于未知的惡意代碼來(lái)說(shuō)卻無(wú)能為力,因?yàn)樾枰嘘P(guān)人員不斷地進(jìn)行標(biāo)記、更新病毒庫(kù),無(wú)法自動(dòng)標(biāo)記和更新,否則停歇之后,就會(huì)被逐漸淘汰下來(lái),喪失其使用價(jià)值。
2020年,Kishore等人提出了一種利用沙盒輔助集成模型分析和檢測(cè)JavaScript的新技術(shù)[6]。使用惡意軟件沙箱提取有效載荷,以獲得真實(shí)的腳本。將提取的腳本進(jìn)行分析,以定義創(chuàng)建數(shù)據(jù)集所需的特征。但這種方法開(kāi)銷大,耗費(fèi)大量的時(shí)間,需要保證虛擬環(huán)境下不被惡意代碼攻擊。
所以,針對(duì)以上惡意代碼檢測(cè)方法存在無(wú)法自動(dòng)和高效提取惡意代碼的問(wèn)題,本文從紋理特征和操作碼特征入手,提出了基于特征序列的惡意代碼靜態(tài)檢測(cè)方法來(lái)實(shí)現(xiàn)自動(dòng)、高效準(zhǔn)確的惡意代碼檢測(cè)。
1.1.1惡意代碼灰度圖處理
灰度圖是每個(gè)像素只有灰顏色的圖像,這類圖像通常顯示為白色到黑色,即0到255像素。在惡意代碼檢測(cè)中,同類惡意代碼有可以追溯同源的特性。因此,可以在惡意代碼灰度圖上找到其相似性?,F(xiàn)階段將二進(jìn)制文件轉(zhuǎn)換成8 bit的灰度圖像,這樣其中的每個(gè)字節(jié)都被視為一個(gè)值為0至255的像素。如圖1所示,可以清楚地觀察到同家族灰度圖之間有相似的紋理結(jié)構(gòu),這體現(xiàn)了同一家族的同源性,而不同家族的紋理特征相差就比較明顯。
圖1 惡意代碼家族灰度圖像
首先,利用反編譯工具IDA Pro對(duì)本文使用的惡意代碼家族數(shù)據(jù)集進(jìn)行反編譯,并批量產(chǎn)生asm編譯文檔,在asm文檔中能夠獲得Opcode序列。經(jīng)過(guò)察驗(yàn),在asm文檔中操作碼一般都是出現(xiàn)于以“text”為首的代碼段中,利用正則表達(dá)式的方法來(lái)提取每行的惡意代碼序列。這樣提取出來(lái)的序列是完整的,包括了操作碼和操作數(shù)的指令。本文利用操作碼提取算法[7]進(jìn)行操作碼提取。根據(jù)操作碼提取算法得到含有“text”的操作碼序列,將惡意代碼相似性轉(zhuǎn)換成判斷操作碼序列的相似性。最傳統(tǒng)的方式是將兩惡意代碼的操作碼序列進(jìn)行分詞,以獲得其相應(yīng)的特征向量,通過(guò)計(jì)算特征向量間的漢明距離來(lái)確定惡意代碼之間的相似性。傳統(tǒng)的hash算法可以避免沖突,但是避免沖突幾率非常低。即使對(duì)于兩個(gè)相似的輸入,散列輸出也會(huì)大不相同。操作碼提取算法如下:
惡意代碼序列中相似的hash值其表示內(nèi)容也是相似的,因此使用雙線性插值算法來(lái)計(jì)算操作碼序列的hash值。通過(guò)用MD5算法來(lái)計(jì)算每個(gè)操作碼的hash值,并把每個(gè)序列編碼成n位Simhash值。根據(jù)序列中的每一個(gè)1或0,可以加或減掉操作碼的權(quán)值,得到新的序列。接下來(lái)確定新序列第n位值為1的哈希數(shù)量與第n位值為0的哈希值數(shù)量關(guān)系設(shè)置為1或0。這樣每個(gè)序列就被編碼成n位的Simhash值。將處理過(guò)的每個(gè)Simhash轉(zhuǎn)換為一個(gè)像素值。如果比特位為0,那么像素值為0,如果比特位為1,那么像素值為255,之后將n個(gè)像素點(diǎn)排列成矩陣,將Simhash值轉(zhuǎn)換成灰度圖像。因?yàn)榇嬖谥煌瑦阂獯a家族所產(chǎn)生的灰度圖像尺寸差異的問(wèn)題,于是在本文中引入了雙線性插值算法對(duì)圖像進(jìn)行壓縮。雙線性插值算法所下:
如 圖2所 示,P為 插 值 點(diǎn),Q11、Q12、Q21和Q22是已知的像素點(diǎn),P(x,y)為所要計(jì)算的像素?cái)?shù),假設(shè)已知函數(shù)f在Q11=(x1,y1)、Q12=(x1,y2)、Q21=(x2,y1)和Q22=(x2,y2)四個(gè)點(diǎn)的值。 先在x軸方向進(jìn)行線性插值,得到R1和R2,然后在y軸方向進(jìn)行線性插值得到插值點(diǎn)P。公式如下:
圖2 雙線性插值算法
通過(guò)雙線性插值算法對(duì)灰度圖像縮放后,利用圖像紋理特征提取算法提取圖像的特征,具體流程如圖3所示。
圖3 提取灰度圖特征流程
1.1.2灰度圖紋理特征提取
在上小節(jié)把二進(jìn)制文件轉(zhuǎn)換成灰度圖片,本節(jié)中使用GIST(全局特征)算法對(duì)灰度圖片進(jìn)行全部特征的提取,再使用SIFT(尺度不變特征變換)算法對(duì)圖像進(jìn)行部分特征的提取。通過(guò)比較灰度圖片后,可發(fā)現(xiàn)惡意代碼家族的全局相似性非常高,具體區(qū)別在于部分特征上。在獲取惡意代碼圖像全局特征信息的前提條件下突出局部特點(diǎn),才能最好地表現(xiàn)出惡意代碼的家族特征,更有區(qū)分性。本節(jié)先提取惡意代碼灰度圖像的全局和局部特征,后再把全局和局部特征加以融合。
GIST是2001年由Olive等人提出的描述圖像全局特征的算子,能夠識(shí)別圖像的全局不變性,檢索速度快[8]。該特征對(duì)不同尺度和方向的Gabor進(jìn)行改進(jìn)和拓展。GIST算法把尺寸為m×n的灰度圖像f(x,y)切分成nq×nq規(guī)格的網(wǎng)格結(jié)構(gòu),其中網(wǎng)格結(jié)構(gòu)的塊數(shù)為S。每個(gè)網(wǎng)格行標(biāo)記為Qi(i=1,2,3,…,S)。網(wǎng)格像素的平均大小大小為r×c,其中r=m/np,c=n/np。像素經(jīng)過(guò)kn個(gè)通道的Gabor濾波器卷積運(yùn)算,這樣每個(gè)網(wǎng)格圖像在各自的濾波通道后,級(jí)聯(lián)結(jié)果就是GIST特征,如式(4)所示。
其中α和β分別表示濾波器的尺度和朝向,通過(guò)GIST算法將圖像分成4×4的網(wǎng)格,在灰度通道上采用方向數(shù)8、8、4的三種尺度,即提取320維的GIST特征。
SIFT是用來(lái)描述圖像局部紋理特征的算子[9]。其特征是通過(guò)計(jì)算圖像間不同尺度下高斯對(duì)數(shù)的拉普拉斯算子(LOG),選擇地給出最佳結(jié)果的尺度值,就是在圖像的不同比例值上計(jì)算多個(gè)LOG值。但是由于對(duì)數(shù)計(jì)算在某種程度上代價(jià)太高,因此在SIFT算法中使用高斯差(DOG)。高斯差是通過(guò)使用等式減去圖像中兩個(gè)不同比例(r)的高斯模糊來(lái)計(jì)算,檢測(cè)的關(guān)鍵點(diǎn)使用泰勒級(jí)數(shù)展開(kāi)進(jìn)行準(zhǔn)確定位。SIFT中的每個(gè)關(guān)鍵點(diǎn)都使用128位特征向量來(lái)描述,該向量可用于從圖像構(gòu)建模式,如式(5)所示:
高斯模糊使用高斯函數(shù)計(jì)算模糊模板,將計(jì)算后的模板與最初圖像信息卷積運(yùn)算,從而對(duì)圖像進(jìn)行模糊處理。n維空間正態(tài)分布方程如式(6)所示:
式中,σ是正態(tài)分布的標(biāo)準(zhǔn)差,σ值越大,表示處理后的圖像效果越模糊(平滑)。r是模糊模板上任一元素到中心的距離。如二維模板尺寸為m×n,則模板上的元素(x,y)對(duì)應(yīng)的高斯計(jì)算如式(7)所示:
首先利用SIFT提取惡意軟件灰度圖像的局部特征,描述圖像的邊緣和角點(diǎn)。通過(guò)特征包(BOF)[10]范式降低密集SIFT描述符的維數(shù)。通過(guò)BOF方法降低稠密SIFT算子的維數(shù)分為四個(gè)階段。在第一階段,借助密集SIFT檢測(cè)器從密集網(wǎng)格中提取惡意軟件圖像的關(guān)鍵特征。在第二階段,選擇密集的SIFT描述符來(lái)計(jì)算矩形區(qū)域的128維局部特征向量,其中每個(gè)關(guān)鍵特征由式(8)所示的函數(shù)表示。
其中MI表示維度為Dh×Dw的二值圖像,Rs表示尺寸調(diào)整參數(shù),Ssize表示密集SIFT描述符的大小,Bbounds表示二值圖像每個(gè)關(guān)鍵點(diǎn)周圍的矩形區(qū)域。
第三階段,DSIFTFV用K-means技術(shù)進(jìn)行聚類,這個(gè)過(guò)程稱為字典學(xué)習(xí),如式(9)所示:
其中Dsize是字典的大小。
最后,DSIFTFV分配給字典中最接近的視覺(jué)特征,這個(gè)過(guò)程稱為描述符量化。每個(gè)量化的描述符就會(huì)以直方圖的形式來(lái)表示,直方圖出現(xiàn)的值在0至1尺度之間變化,然后通過(guò)計(jì)算DSIFTFV和DictionaryL之間的最小歐幾里德距離來(lái)生成基于BOF的密集SIFT描述,如式(10)所示:
其次,通過(guò)使用GIST計(jì)算惡意軟件灰度圖像的全局特征,得到圖像的紋理和空間布局。通過(guò)GIST描述惡意軟件圖像分為三個(gè)階段。在GIST的第一和第二階段,惡意軟件圖像通過(guò)不同比例和位置的過(guò)濾器過(guò)濾,將其分成N個(gè)塊。第三階段,用GIST計(jì)算每個(gè)塊的平均值,如式(11)所示:
其中MI表示維度為Dh×Dw的惡意軟件圖像;Rs表示尺寸調(diào)整參數(shù);Nb表示將惡意軟件圖像分成水平和垂直位置的標(biāo)準(zhǔn)塊大??;Bovertap表示重疊參數(shù),用于分離重疊或非重疊塊中的二值圖像;Fn表示用于過(guò)濾二值圖像的多個(gè)過(guò)濾器;Nsq表示統(tǒng)計(jì)量的數(shù)量,即在計(jì)算特征描述時(shí)使用的平均值和偏差。
最后,將基于BOF的稠密SIFT與GIST組合,得到的混合的CSGM特征維數(shù)。CSGM特征如式(12)所示:
其中w表示加權(quán)參數(shù),其值取決于惡意軟件分類中的特征值。
1.1.3 基于流程圖的操作碼
因?yàn)閻阂獯a都是機(jī)器識(shí)別的二進(jìn)制文件,所以將其反編譯得到研究人員能夠識(shí)別的匯編文件。由上文可得到IDA Pro反編譯的編譯文件,并對(duì)編譯文件用正則表達(dá)式的方法得到操作碼。在本節(jié)中,首先使用IDA Pro將惡意代碼程序反編譯轉(zhuǎn)換成編譯程序。由于惡意代碼程序由一些結(jié)構(gòu)體、條件循環(huán)等構(gòu)成,因此在函數(shù)調(diào)用之間存在著一些聯(lián)系,可以通過(guò)IDA Pro來(lái)查看函數(shù)的調(diào)用關(guān)系,如圖4所示。這種函數(shù)調(diào)用關(guān)系可以用控制流程圖表示,抽象表達(dá)一個(gè)過(guò)程或者程序。根據(jù)控制流程圖的順序來(lái)提取其對(duì)應(yīng)的操作碼:{call,mov,jmp,mov,lea,mov,lea,mov,cmp,jle,call,cmp,jz,mov,call,mov,leave,retn,mov,call}。
圖4 函數(shù)調(diào)用關(guān)系
這樣提取的操作碼無(wú)法完成自動(dòng)化分析,下一節(jié)將操作碼序列轉(zhuǎn)換成向量。
1.1.4 基于N-garm的Opcode特征
從上一節(jié)得到了惡意代碼的控制流程圖操作序列,但是這個(gè)序列不能被模型識(shí)別。因此需要對(duì)其進(jìn)行矢量化和數(shù)值化的處理,作為神經(jīng)模型的輸入。在這一節(jié),用N-gram方法對(duì)操作碼序列進(jìn)行特征提取,這種方法的檢測(cè)顆粒度較小,與控制流程圖相結(jié)合會(huì)得到代碼上下文之間的關(guān)聯(lián)。下面主要介紹將操作碼向量化的過(guò)程。
假設(shè)操作碼序列片段為{push,mov,push,call,add,mov,xor,pop},將滑動(dòng)窗口長(zhǎng)度n設(shè)為3,會(huì)得到子序列集合{(push,mov,push),(mov,push,call),(push,call,add),(call,add,mov),(add,mov,xor),(mov,xor,pop)}。每個(gè)二進(jìn)制文件可以組合所有子序列(v1,v2,v3,…,vn)來(lái)生成子序列集合S。如果這個(gè)子序列v在集合S中,那么將其設(shè)置為1,否則設(shè)置為0,最終會(huì)得到一個(gè)只包含0和1的特征向量,這樣形式的特征序列可以被神經(jīng)網(wǎng)絡(luò)模型識(shí)別。操作碼N-gram算法如下:
將惡意代碼圖像紋理特征和操作碼特征融合成一個(gè)特征向量,作為模型的輸入。融合的特征向量可以從不同的維度和層次綜合考慮和分析惡意代碼。首先讀取灰度圖像樣本和操作碼的特征向量,對(duì)兩種特征向量利用pandas.merge()函數(shù)進(jìn)行融合,生成新的融合特征向量f_s,之后利用pandas.merge()函數(shù)把特征向量fusion_s與標(biāo)簽文件labels融合,最終得到融合特征f,特征融合方法下:
操作碼序列是按照惡意代碼執(zhí)行邏輯順序出現(xiàn)的,所以上下文之間存在著一定的關(guān)聯(lián)性,而融合的特征也具備了這一特點(diǎn),在此特點(diǎn)上,LSTM(長(zhǎng)短期記憶網(wǎng)絡(luò))具有遺忘機(jī)制、保存機(jī)制和長(zhǎng)時(shí)間記憶信息的特點(diǎn)[10],所以LSTM能更好地提取到惡意代碼深層次的特征。本小節(jié)構(gòu)建LSTM模型對(duì)惡意代碼進(jìn)行檢測(cè)并分類。
在LSTM訓(xùn)練過(guò)程中,通過(guò)不同的特征來(lái)對(duì)模型訓(xùn)練。在前面通過(guò)對(duì)編譯文件進(jìn)行特征提取,將asm文件通過(guò)Simhash算法處理生成灰度圖像,并提取惡意代碼灰度圖像的紋理特征。在匯編文件中,通過(guò)控制流程圖的方式提取到操作碼,之后通過(guò)N-gram算法提取操作碼。最終把所獲取到的灰度圖像紋理特性與操作碼特性進(jìn)行特征融合,進(jìn)而得到一種全新的融合特征,將融合的特征作為L(zhǎng)STM模型的輸入。
LSTM是一種特殊的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)。在RNN模型訓(xùn)練中,隨著訓(xùn)練時(shí)間的延長(zhǎng)和網(wǎng)絡(luò)層的增加,很容易發(fā)生梯度爆炸或消失,從而在處理長(zhǎng)序列時(shí)RNN的效果差強(qiáng)人意[11]。2005年,Graves和Schmidhuber提出了一種雙向長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(Bi-LSTM),是當(dāng)前應(yīng)用最廣泛的一種LSTM模型[13]。
LSTM與RNN最大的區(qū)別是,RNN有單循環(huán)結(jié)構(gòu)的狀態(tài),而LSTM的單循環(huán)結(jié)構(gòu)(又稱細(xì)胞)有四種狀態(tài)。與RNN相比,LSTM循環(huán)結(jié)構(gòu)具有一個(gè)持續(xù)的單位狀態(tài)進(jìn)行傳播,可以用來(lái)判斷某些信號(hào)要遺忘還是繼續(xù)傳播下去。具有三個(gè)連續(xù)循環(huán)結(jié)構(gòu)的RNN如圖5所示,每個(gè)循環(huán)結(jié)構(gòu)都有一個(gè)輸出。
圖5 連續(xù)循環(huán)結(jié)構(gòu)的RNN圖
具有三個(gè)連續(xù)循環(huán)結(jié)構(gòu)構(gòu)造的LSTM如圖6所示。
圖6 循環(huán)結(jié)構(gòu)的LSTM的模型圖
一層LSTM通常是由單一循環(huán)結(jié)構(gòu)組成的,即由輸入數(shù)據(jù)的維度和循環(huán)次數(shù)確定每一個(gè)循環(huán)結(jié)構(gòu)需要自我更新幾次,而不是由多個(gè)單一的循環(huán)結(jié)構(gòu)連續(xù)組成。當(dāng)前層LSTM的參數(shù)總個(gè)數(shù)只需要計(jì)算每一個(gè)循環(huán)單元數(shù)量就行,不計(jì)算幾個(gè)連續(xù)單元的合計(jì)數(shù)量。
LSTM網(wǎng)絡(luò)利用同一種門(mén)結(jié)構(gòu)對(duì)所有細(xì)胞狀態(tài)進(jìn)行刪減或添加信息。LSTM由輸入門(mén)、遺忘門(mén)、輸出門(mén)和單元狀態(tài)組成。門(mén)由sigmoid層和逐點(diǎn)乘法等運(yùn)算方式構(gòu)成,在sigmoid層中輸出0到1之間的數(shù)值,由門(mén)判斷各個(gè)元素該通過(guò)多少,數(shù)值為0代表門(mén)不讓所有內(nèi)容過(guò),而數(shù)值為1代表門(mén)讓全部?jī)?nèi)容通過(guò)。
輸入門(mén):決定當(dāng)前時(shí)刻網(wǎng)絡(luò)的輸入數(shù)據(jù)有多少需要保存到單元狀態(tài)。
遺忘門(mén):可以決定在上一時(shí)刻的所有單元狀態(tài)有哪些需要保存到當(dāng)前時(shí)間。
輸出門(mén):可以控制對(duì)當(dāng)前單元狀態(tài)的需要程度,輸出到當(dāng)前的輸出值。
首先把上一時(shí)刻的輸出ht-1與當(dāng)前的數(shù)據(jù)輸入xt接連通過(guò)遺忘門(mén)得到ft。
接下來(lái)是應(yīng)用上一個(gè)時(shí)刻的輸出ht-1和當(dāng)前的數(shù)據(jù)輸入xt,通過(guò)輸入門(mén)得到it,以及通過(guò)單元狀態(tài)得到當(dāng)前時(shí)刻暫時(shí)狀態(tài)
之后應(yīng)用上一個(gè)細(xì)胞結(jié)構(gòu)的單元狀態(tài)Ct-1、遺忘門(mén)輸出ft、輸入門(mén)輸出it以及單元狀態(tài)的輸出得到當(dāng)前細(xì)胞的狀態(tài)Ct。
最后通過(guò)輸出門(mén)得到ot,以及結(jié)合當(dāng)前細(xì)胞的單元狀態(tài)Ct和ot得到最終的輸出ht。
本節(jié)采用的是單層的LSTM單元來(lái)構(gòu)建融合特征的惡意代碼檢測(cè)模型。在構(gòu)建模型時(shí)候,選擇具有兩個(gè)相反方向的結(jié)構(gòu)組成模型,在LSTM模型后連接Softmax分類器,這樣可以對(duì)惡意代碼進(jìn)行自動(dòng)提取特征及分類。模型構(gòu)建完成后,將已處理好的融合特征向量作為L(zhǎng)STM的輸入、訓(xùn)練模型。在訓(xùn)練中,通過(guò)不斷對(duì)模型調(diào)參來(lái)確定惡意代碼的輸入數(shù)據(jù),提高模型的分類能力。
靜態(tài)惡意代碼檢測(cè)的用的實(shí)驗(yàn)數(shù)據(jù)是微軟惡意軟件數(shù)據(jù)集和VirusShare惡意樣本數(shù)據(jù)集,包括了12個(gè)惡意家族的11 516惡意代碼可執(zhí)行文件。如表1所示。
表1 靜態(tài)惡意代碼數(shù)據(jù)集
在實(shí)驗(yàn)中,使用統(tǒng)一的統(tǒng)計(jì)指標(biāo)來(lái)評(píng)估模型的性能,包括準(zhǔn)確率、精確率、召回率、F1-Score等。準(zhǔn)確率(Accuracy)用來(lái)評(píng)價(jià)惡意代碼檢測(cè)分類模型對(duì)惡意代碼分類的正確率程度,是一種直接直觀的評(píng)價(jià)指標(biāo)。精度率(Precision)是評(píng)估真正檢測(cè)到的實(shí)例與預(yù)測(cè)的正確應(yīng)用數(shù)量的比率。召回率(Recall)是計(jì)算為正的正樣本實(shí)例與總樣本的比率。F1-score是判斷良性還是惡性軟件的比較值。
首先對(duì)于灰度圖像特征提取與傳統(tǒng)方法進(jìn)行比較,之后將融合的特征在前文使用的LSTM模型中進(jìn)行訓(xùn)練,結(jié)果與傳統(tǒng)的機(jī)器學(xué)習(xí)模型和其他論文方法進(jìn)行比較。
在模型構(gòu)建成功后,為了使得模型能夠適應(yīng)惡意代碼融合特征,需要對(duì)LSTM模型調(diào)整參數(shù),對(duì)LSTM的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行優(yōu)化。先對(duì)模型進(jìn)行調(diào)優(yōu),測(cè)試迭代次數(shù)epoch、學(xué)習(xí)率lr、隱藏神經(jīng)元的個(gè)數(shù)n_hidden等參數(shù)設(shè)置對(duì)特征融合的LSTM惡意代碼檢測(cè)模型的分類結(jié)果產(chǎn)生的影響。在N-gram的Opcode特征中,n的取值也會(huì)對(duì)最終的結(jié)果產(chǎn)生影響。最終經(jīng)過(guò)多次實(shí)驗(yàn)和不同參數(shù)組合下,確定在學(xué)習(xí)率lr為0.002,迭代次數(shù)epoch為15,Dropout設(shè)置為0.5,隱藏神經(jīng)元的個(gè)數(shù)設(shè)置為20的組合下,模型具備較好的分類能力。先對(duì)操作碼特征與灰度圖像特征進(jìn)行提取和實(shí)驗(yàn),之后把融合后的特征與單一特征進(jìn)行比較。
在提取操作碼特征中將N-gram中的n值設(shè)置為1到5,測(cè)試不同的n值對(duì)實(shí)驗(yàn)結(jié)果的影響,實(shí)驗(yàn)結(jié)果如表2所示,可以看出當(dāng)n=4的時(shí)候分類的準(zhǔn)確率最高。
表2 操作碼特征對(duì)比結(jié)果
在灰度圖像特征提取中,先是用GIST算法獲取全局特征,隨后再用SIFT算法提取局部特征,再將全局和局部按照上一小節(jié)方法進(jìn)行融合,將三者特征與LSTM模型訓(xùn)練。實(shí)驗(yàn)如表3所示。將全局與局部特征融合一起的準(zhǔn)確率更高,效果更好。
表3 圖像特征對(duì)比結(jié)果
在對(duì)比實(shí)驗(yàn)中,利用兩種單一特征和特征融合的方法與LSTM模型進(jìn)行訓(xùn)練實(shí)驗(yàn),對(duì)比實(shí)驗(yàn)如圖7所示。
圖7 單一特征與融合特征對(duì)比流程
其中LSTM模型的參數(shù)在上面已經(jīng)描述。如表4所示,基于N-gram操作碼的分類準(zhǔn)確率為93.4%,基于灰度圖像特征的分類準(zhǔn)確率為97.8%,融合特征的分類準(zhǔn)確率為98.3%??梢钥闯鋈诤咸卣鞯姆诸悳?zhǔn)確率高于其余兩者的準(zhǔn)確率,這說(shuō)明了融合特征從不同維度描述惡意代碼的行為特征,提高了對(duì)惡意代碼檢測(cè)的準(zhǔn)確率,而單一層面的特征是從局部或者全局維度來(lái)考慮惡意代碼的行為信息,不能完整地描述惡意代碼的行為。
表4 與單一特征對(duì)比結(jié)果
(2)傳統(tǒng)機(jī)器學(xué)習(xí)模型進(jìn)行對(duì)比分析
將N-gram中n設(shè)置為4的融合特征模型與傳統(tǒng)機(jī)器學(xué)習(xí)模型進(jìn)行對(duì)比,驗(yàn)證不同模型對(duì)于實(shí)驗(yàn)結(jié)果的影響,對(duì)比實(shí)驗(yàn)如圖8所示。
圖8 融合特征模型與機(jī)器學(xué)習(xí)對(duì)比流程
實(shí)驗(yàn)分別使用支持向量機(jī)(SVM)、邏輯回歸(LR)、樸素貝葉斯(NB)和RNN與LSTM模型進(jìn)行對(duì)比,利用Precision、recall、F1-score和Accuracy對(duì) 實(shí) 驗(yàn) 結(jié) 果進(jìn)行評(píng)估,如表5所示。
表5 靜態(tài)特征與模型對(duì)比結(jié)果
表5中模型訓(xùn)練10次的準(zhǔn)確率如圖9所示。
圖9 五種模型10次訓(xùn)練準(zhǔn)確率折線圖
由表5和圖9可知,LSTM模型的精度率、召回率和F1-score這三項(xiàng)指標(biāo)小于和等于其余模型,但是在準(zhǔn)確率上面要高于其余四個(gè)模型,雖然這四個(gè)指標(biāo)是衡量分類效果的標(biāo)準(zhǔn),但是準(zhǔn)確率更主要地確定模型分類的效果,特征融合的LSTM模型準(zhǔn)確率要高于其他模型,說(shuō)明了模型的分類效果較好。
(3)與其他文獻(xiàn)方法進(jìn)行對(duì)比分析
將本文融合特征的模型與其他論文使用相同數(shù)據(jù)集的模型進(jìn)行對(duì)比,如表6所示。
表6 與其他論文對(duì)比結(jié)果
融合特征的分類準(zhǔn)確率要高于文獻(xiàn)[14]所采用的ResNet和GoogleNet模型進(jìn)行的分類;高于文獻(xiàn)[15]將惡意軟件映射成彩色圖像,利用CNN模型對(duì)惡意軟件進(jìn)行的分類;也略高于文獻(xiàn)[16]的經(jīng)典惡意代碼可視化方法。實(shí)驗(yàn)驗(yàn)證了基于融合特征的靜態(tài)惡意代碼檢側(cè)模型的效果。
通過(guò)對(duì)上述實(shí)驗(yàn)分析可知,融合的特征效果要比單一特征效果要好,而且LSTM模型可以通過(guò)上下文的聯(lián)系,能夠提取較深層次的惡意代碼融合特征,這些特征描述能力較好,能夠更好地表現(xiàn)出惡意代碼特征,融合特征,使模型有較好的分類能力。
本文針對(duì)深度學(xué)習(xí)的惡意代碼檢測(cè)問(wèn)題進(jìn)行了相關(guān)的研究并提出了一種檢測(cè)方法,主要如下:
首先,在靜態(tài)惡意代碼分析方面。在提取圖像紋理特征上,本文提出一種Simhash處理編譯文件轉(zhuǎn)換成灰度圖像的方法,該方法利用Simhash算法的特性將惡意代碼中相似的二進(jìn)制值轉(zhuǎn)換成相同大小的相似圖像,通過(guò)GIST算法和SIFT算法提取灰度圖像的全局和局部紋理特征,將全局和局部紋理特征進(jìn)行融合。在獲取操作碼的特征上,用控制流程圖的順序反編譯惡意代碼后得到操作碼,之后用N-gram算法獲得操作碼特征。
其次,因?yàn)榛叶葓D像特征和操作碼特征分別反映了惡意代碼的全局和局部上同類別惡意代碼的相似性,所以提出一種將全局和局部特征進(jìn)行融合的方法,綜合考慮到惡意代碼的特征,將融合特征作為L(zhǎng)STM模型的輸入加以訓(xùn)練、分類,以此增加惡意代碼檢測(cè)的精確度,并經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證,本文提出的方法能夠提高惡意代碼檢測(cè)工作的效率和準(zhǔn)確率。