基于神經(jīng)網(wǎng)絡(luò)的惡意軟件檢測(cè)分析
對(duì)于目前的所有行業(yè)來(lái)說,“如何有效地檢測(cè)惡意軟件”已經(jīng)成為了大家共同的網(wǎng)絡(luò)安全問題。一次惡意軟件感染事件將有可能給我們帶來(lái)數(shù)百萬(wàn)美金的經(jīng)濟(jì)損失,而當(dāng)前的反病毒產(chǎn)品以及惡意軟件檢測(cè)工具一般使用的是基于簽名的檢測(cè)技術(shù),這種方法需要手動(dòng)設(shè)置一系列規(guī)則來(lái)識(shí)別已知的不同類型的惡意軟件。但是相對(duì)來(lái)說,這種方法的針對(duì)性比較強(qiáng),而且無(wú)法識(shí)別新型的惡意軟件。
這種方法的效率其實(shí)非常低,因?yàn)榇蠖鄶?shù)環(huán)境所采用的代碼不一樣,而且每天都會(huì)出現(xiàn)數(shù)百萬(wàn)種新型的惡意軟件。因此,我們急需一種能夠應(yīng)用于當(dāng)前快速改變的惡意軟件生態(tài)系統(tǒng)的檢測(cè)技術(shù),而機(jī)器學(xué)習(xí)也許正是我們所需要的。
實(shí)際上,很多初創(chuàng)企業(yè)和網(wǎng)絡(luò)安全公司已經(jīng)開始研發(fā)這種基于機(jī)器學(xué)習(xí)的安全檢測(cè)系統(tǒng)了。這些公司通常會(huì)在特征工程以及數(shù)據(jù)分析方面花費(fèi)大量的人力和物力資源來(lái)開發(fā)高質(zhì)量的系統(tǒng),但實(shí)際上,我們可以在不涉及特征工程的情況下開發(fā)出一套能夠跨操作系統(tǒng)和硬件來(lái)檢測(cè)惡意軟件的技術(shù),具體內(nèi)容可以參考我們最新發(fā)布的研究報(bào)告。
報(bào)告中介紹了一種人工神經(jīng)網(wǎng)絡(luò),我們可以通過訓(xùn)練這種神經(jīng)網(wǎng)絡(luò)來(lái)檢測(cè)惡意的Windows可執(zhí)行文件(只需要可執(zhí)行文件的原始字節(jié)序列作為輸入),這種方法有下列幾個(gè)優(yōu)點(diǎn):
- 不需要手工編譯以及與編譯器相關(guān)的知識(shí)。這也就意味著,訓(xùn)練出來(lái)的分析模型適用性很強(qiáng),而且可以適應(yīng)惡意軟件的自我進(jìn)化。
 - 計(jì)算復(fù)雜度與序列長(zhǎng)度成線性關(guān)系,因此它適用于大文件。
 - 可識(shí)別二進(jìn)制代碼中的重要子區(qū)域以進(jìn)行取證分析。
 - 這種方法同樣適用于新的文件格式、編譯器和指令集結(jié)構(gòu),我們需要做的只是訓(xùn)練數(shù)據(jù)和模型而已。
 
因此我們認(rèn)為,使用機(jī)器學(xué)習(xí)來(lái)對(duì)惡意軟件的原始字節(jié)序列進(jìn)行分析和識(shí)別并以此來(lái)進(jìn)行惡意軟件監(jiān)測(cè),將會(huì)是機(jī)器學(xué)習(xí)社區(qū)中一個(gè)富有前景的研究領(lǐng)域。
將深度學(xué)習(xí)應(yīng)用到惡意軟件檢測(cè)會(huì)遇到哪些困難?
近期,研究人員已經(jīng)成功將神經(jīng)網(wǎng)絡(luò)應(yīng)用到了計(jì)算機(jī)視覺、語(yǔ)音識(shí)別和自然語(yǔ)言處理領(lǐng)域了,而成功的其中一個(gè)原因就是他們能夠從原始數(shù)據(jù)(例如像素或單個(gè)文本字符)中歸納學(xué)習(xí)出相應(yīng)的特征。因此,在這些成功案例的啟發(fā)之下,我們也許能夠使用可執(zhí)行文件的原始字符來(lái)對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,并以此來(lái)判斷目標(biāo)文件是否為惡意文件。如果我們能夠做到這一點(diǎn),我們將能夠大大簡(jiǎn)化惡意軟件檢測(cè)工具,我們不僅能夠提升檢測(cè)精確度,而且還能夠識(shí)別出一些惡意軟件非明顯但十分重要的特征。
但是,想要將深度學(xué)習(xí)應(yīng)用到惡意軟件檢測(cè)領(lǐng)域中,我們還有很多問題需要解決。比如說,對(duì)于微軟的Windows PE惡意軟件,我們需要解決的問題如下:
- 將單個(gè)字符作為輸入序列中的一個(gè)單元來(lái)處理,意味著我們將按照二百萬(wàn)個(gè)時(shí)間步長(zhǎng)的順序處理一個(gè)序列分類問題。據(jù)我們所知,這遠(yuǎn)遠(yuǎn)超出了以往任何基于神經(jīng)網(wǎng)絡(luò)的序列分類器的輸入長(zhǎng)度。
 - 惡意軟件中的字節(jié)數(shù)據(jù)可以包含多種形式的信息,其中包括人類可讀的文本、二進(jìn)制代碼、或例如圖片之類的任意對(duì)象等等。除此之外,還包括一些經(jīng)過加密的內(nèi)容。
 - 函數(shù)之間的調(diào)用命令和跳轉(zhuǎn)命令都是可以重新排列的,因此函數(shù)之間存在復(fù)雜的空間相關(guān)性。
 
解決方案
針對(duì)這些挑戰(zhàn)與難題,我們測(cè)試了大量不同的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),但上面所提到的這些挑戰(zhàn)促使我們不得不去嘗試一些不常見的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù)。
在設(shè)計(jì)模型的時(shí)候,我們主要考慮了以下三種功能:
- 在計(jì)算和內(nèi)存使用中有效擴(kuò)展序列長(zhǎng)度的能力;
 - 在檢測(cè)整個(gè)文件時(shí)考慮本地環(huán)境和全局環(huán)境的能力;
 - 幫助分析惡意軟件標(biāo)記的能力;
 
最后,我們所能設(shè)計(jì)出的最合適的惡意軟件檢測(cè)網(wǎng)絡(luò)模型框圖如下圖所示:
數(shù)據(jù)與模型訓(xùn)練
我們使用了兩套數(shù)據(jù)集來(lái)訓(xùn)練并驗(yàn)證這個(gè)網(wǎng)絡(luò),我們從開源的數(shù)據(jù)中收集了第一套訓(xùn)練集Group A。A組中包含了43967個(gè)惡意文件樣本以及21854個(gè)良性文件樣本。第二組Group B中的樣本由工業(yè)反病毒廠商提供,其中包含真實(shí)攻擊場(chǎng)景中的惡意文件以及良性文件樣本(總共40萬(wàn)文件樣本,每種各占一半)。不過,在實(shí)驗(yàn)的后期,我們還收到了更多的訓(xùn)練語(yǔ)料(B組),新添加的語(yǔ)料中包含2011786個(gè)唯一的二進(jìn)制文件樣本,其中有1011766個(gè)惡意文件樣本。為了及時(shí)得到神經(jīng)網(wǎng)絡(luò)模型的收斂性,我們必須用大批量的數(shù)據(jù)集來(lái)訓(xùn)練網(wǎng)絡(luò)。
訓(xùn)練和分析的結(jié)果如下圖所示:

從結(jié)果中可以看到,我們的模型比較適用于A組的訓(xùn)練數(shù)據(jù)集,其次是B組。但是,當(dāng)我們繼續(xù)使用更大的語(yǔ)料庫(kù)(200萬(wàn)份測(cè)試文件)來(lái)進(jìn)行訓(xùn)練時(shí),我們發(fā)現(xiàn)我們的網(wǎng)絡(luò)模型還會(huì)不斷地完善。
總結(jié)
我們希望,這項(xiàng)研究可以鼓勵(lì)機(jī)器學(xué)習(xí)社區(qū)更加積極地去探索惡意軟件檢測(cè)領(lǐng)域,因?yàn)檫@確實(shí)是一個(gè)富有前景的研究領(lǐng)域。由于深度學(xué)習(xí)已經(jīng)在圖像、信號(hào)和自然語(yǔ)言處理方面取得了令人矚目的成就和進(jìn)步,因此我們也許可以將這些技術(shù)擴(kuò)展到另一種完全不同的領(lǐng)域,比如說惡意軟件的檢測(cè)方面。


















 
 
 







 
 
 
 