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