張 華, 陳淑珍
(1.福建警察學(xué)院 計(jì)算機(jī)與信息安全管理系, 福建 福州 350007;2.福建警察學(xué)院 網(wǎng)絡(luò)安全與電子物證研究所, 福建 福州 350007)
隨著互聯(lián)網(wǎng)不斷進(jìn)步, 網(wǎng)絡(luò)傳輸數(shù)量越來(lái)越大, 大數(shù)據(jù)、 云平臺(tái)等網(wǎng)絡(luò)形式發(fā)展較為完善,但仍容易受到惡意代碼攻擊, 惡意代碼直接影響網(wǎng)絡(luò)正常運(yùn)行[1-2]。 僵尸程序、 特洛伊木馬、 蠕蟲(chóng)等對(duì)互聯(lián)網(wǎng)造成威脅的代碼均屬于惡意代碼。惡意代碼具有偽裝性強(qiáng)以及傳播速度極快的特點(diǎn), 及時(shí)發(fā)現(xiàn)惡意代碼并實(shí)時(shí)處理對(duì)網(wǎng)絡(luò)安全運(yùn)行具有重要意義[3-4]。
神經(jīng)網(wǎng)絡(luò)算法是目前廣泛應(yīng)用于各領(lǐng)域的高效算法[5-6], 眾多研究學(xué)者已將神經(jīng)網(wǎng)絡(luò)算法應(yīng)用于各種檢測(cè)方法中。 BP 神經(jīng)網(wǎng)絡(luò)算法是一種基于誤差逆?zhèn)鞑サ膽?yīng)用很廣泛的神經(jīng)網(wǎng)絡(luò)算法,將BP 神經(jīng)網(wǎng)絡(luò)算法應(yīng)用于惡意代碼檢測(cè)系統(tǒng)中, 利用神經(jīng)元激發(fā)獲取激發(fā)路徑, 令神經(jīng)網(wǎng)絡(luò)僅學(xué)習(xí)被激發(fā)路徑的權(quán)重, 改善傳統(tǒng)神經(jīng)網(wǎng)絡(luò)算法訓(xùn)練時(shí)間過(guò)長(zhǎng)、 收斂較難的缺陷, 降低惡意代碼檢測(cè)系統(tǒng)檢測(cè)誤差, 提升檢測(cè)效率[7-9]。
惡意代碼攻擊會(huì)對(duì)網(wǎng)絡(luò)造成破壞性影響, 其中包括流量異常、 協(xié)議異常以及內(nèi)容異常等, 這些異常可能單獨(dú)出現(xiàn), 也可能同時(shí)出現(xiàn), 以往惡意代碼檢測(cè)系統(tǒng)檢測(cè)實(shí)時(shí)性較差, 且誤報(bào)率與漏報(bào)率較高, 檢測(cè)效率低[10-12]。 為有效檢測(cè)網(wǎng)絡(luò)中出現(xiàn)的惡意代碼, 研究基于BP 神經(jīng)網(wǎng)絡(luò)算法的惡意代碼檢測(cè)系統(tǒng), 提取惡意代碼特征, 利用BP 神經(jīng)網(wǎng)絡(luò)學(xué)習(xí), 實(shí)現(xiàn)對(duì)系統(tǒng)檢測(cè)范圍內(nèi)所有惡意代碼的快速檢測(cè)。
本文研究的惡意代碼檢測(cè)系統(tǒng), 主要包括數(shù)據(jù)包捕獲模塊、 協(xié)議分析模塊、 預(yù)處理模塊、BP 神經(jīng)網(wǎng)絡(luò)檢測(cè)模塊以及響應(yīng)模塊, 還包括事件產(chǎn)生器、 事件分析器、 事件數(shù)據(jù)庫(kù)以及響應(yīng)單元等部分。 采用該形式設(shè)計(jì)的惡意代碼檢測(cè)系統(tǒng)可適應(yīng)不同網(wǎng)絡(luò), 能夠提升惡意代碼檢測(cè)系統(tǒng)的互操作性和互用性。 基于BP 神經(jīng)網(wǎng)絡(luò)算法的惡意代碼檢測(cè)系統(tǒng)(簡(jiǎn)稱 “本文系統(tǒng)”) 總體結(jié)構(gòu)如圖1 所示。
由圖1 可以看出, 采用本文系統(tǒng)進(jìn)行惡意代碼檢測(cè)大體流程如下: 通過(guò)過(guò)濾數(shù)據(jù)包獲取惡意代碼檢測(cè)系統(tǒng)所需數(shù)據(jù)包, 數(shù)據(jù)包捕獲模塊獲取系統(tǒng)所需數(shù)據(jù)包后發(fā)送至協(xié)議分析模塊; 協(xié)議分析模塊接收數(shù)據(jù)包后依據(jù)TCP / IP 協(xié)議按照從下至上順序解析數(shù)據(jù)包, 并轉(zhuǎn)換至傳輸層連接記錄形式, 將符合要求的數(shù)據(jù)發(fā)送至預(yù)處理模塊; 預(yù)處理模塊依據(jù)數(shù)據(jù)包類型利用數(shù)學(xué)向量代替數(shù)據(jù)信息作為輸入信號(hào)傳輸至BP 神經(jīng)網(wǎng)絡(luò); BP 神經(jīng)網(wǎng)絡(luò)檢測(cè)模塊提取惡意代碼特征并利用BP 神經(jīng)網(wǎng)路算法檢測(cè)網(wǎng)絡(luò)中惡意代碼, 該算法僅針對(duì)激發(fā)路徑權(quán)值調(diào)整訓(xùn)練樣本, 同時(shí)實(shí)時(shí)更新惡意代碼特征庫(kù), 將檢測(cè)結(jié)果發(fā)送至響應(yīng)模塊處理;響應(yīng)模塊具有擴(kuò)展功能, 通過(guò)擴(kuò)展功能對(duì)檢測(cè)的惡意代碼做出相應(yīng)處理, 最后實(shí)現(xiàn)對(duì)惡意代碼的有效檢測(cè)。
BP 神經(jīng)網(wǎng)絡(luò)檢測(cè)模塊在提取惡意代碼特征前, 需對(duì)惡意代碼進(jìn)行分析。 因此, 利用動(dòng)態(tài)二進(jìn)制與靜態(tài)反匯編技術(shù)結(jié)合分析惡意代碼[13-15]。惡意代碼特征提取結(jié)構(gòu)圖如圖2 所示。
由圖2 可知, 通過(guò)不同方法分析代碼可獲取惡意代碼不同特征。
(1) 動(dòng)態(tài)二進(jìn)制分析
依據(jù)代碼特征, 基于動(dòng)態(tài)二進(jìn)制插樁平臺(tái)Pin 編寫指令提取插件, 通過(guò)以上過(guò)程記錄動(dòng)態(tài)指令流并獲取所分析數(shù)據(jù), 進(jìn)行動(dòng)態(tài)污點(diǎn)分析(動(dòng)態(tài)跟蹤惡意代碼運(yùn)行過(guò)程); 在動(dòng)態(tài)污點(diǎn)分析基礎(chǔ)上通過(guò)API 函數(shù)提取API 調(diào)用關(guān)系并生成污點(diǎn)文件, 然后將文件輸出到行為特征提取模塊。 根據(jù)動(dòng)態(tài)文件從惡意代碼家族的所有行為特征中挖掘出最大公共部分, 最后儲(chǔ)存到惡意代碼特征提取庫(kù)。
圖2 惡意代碼特征提取結(jié)構(gòu)圖
(2) 靜態(tài)反匯編分析
將上述動(dòng)態(tài)二進(jìn)制分析獲取Dump 樣本作為輸入, 但大多惡意代碼進(jìn)行了加殼處理, 通過(guò)對(duì)代碼文件進(jìn)行脫殼處理, 實(shí)現(xiàn)從惡意代碼的PE文件中獲取靜態(tài)特征; 選取反匯編工具IDA Pro實(shí)施靜態(tài)分析, 將可執(zhí)行代碼轉(zhuǎn)換成容易分析的匯編代碼, 并通過(guò)所記錄動(dòng)態(tài)信息以及靜態(tài)分析結(jié)果提取惡意代碼特征集分析網(wǎng)絡(luò)代碼。 靜態(tài)特征提取的具體過(guò)程如下。
1) 查殼與脫殼。 通常惡意代碼采用加殼工具(UPX、ASPACK) 處理隱藏真實(shí)意圖, 這里采用查殼軟件掃描代碼判斷是否加殼, 如果檢測(cè)到代碼已加殼, 則使用脫殼軟件對(duì)代碼進(jìn)行脫殼,然后輸出到反匯編模塊。
2) 反匯編模塊。 該模塊將可執(zhí)行的二進(jìn)制代碼轉(zhuǎn)換成匯編代碼。 由于惡意代碼一般以可執(zhí)行文件形式存在, 若要分析代碼結(jié)構(gòu), 需要進(jìn)行反匯編。 本文采用靜態(tài)反匯編工具IDA Pro 將惡意代碼樣本或目標(biāo)代碼反編譯成匯編文件, 并將匯編文件輸出到特征提取模塊, 提取出惡意代碼靜態(tài)特征。
提取惡意代碼特征后, 利用BP 神經(jīng)網(wǎng)絡(luò)算法實(shí)現(xiàn)惡意代碼檢測(cè)。 BP 神經(jīng)網(wǎng)絡(luò)是一種前饋性神經(jīng)網(wǎng)絡(luò), 由輸入層、 隱含層和輸出層通過(guò)全互聯(lián)方式組成。 BP 神經(jīng)網(wǎng)絡(luò)可通過(guò)學(xué)習(xí)調(diào)整網(wǎng)絡(luò)中的連接權(quán)值, 即通過(guò)學(xué)習(xí)不斷調(diào)整網(wǎng)絡(luò)實(shí)際輸出與期望輸出之間的誤差, 誤差信號(hào)由輸出層反向逐層修正神經(jīng)元間的連接權(quán)值。 網(wǎng)絡(luò)實(shí)際輸出受輸入影響, 且BP 神經(jīng)網(wǎng)絡(luò)除輸入單元外基本處理單元呈現(xiàn)非線性關(guān)系。 而差異輸入可激發(fā)不同神經(jīng)元, 所激發(fā)神經(jīng)元又能組成激發(fā)路徑,最后通過(guò)激發(fā)路徑權(quán)值調(diào)整訓(xùn)練樣本, 實(shí)現(xiàn)網(wǎng)絡(luò)逐漸趨向收斂, 提高檢測(cè)準(zhǔn)確率。
設(shè)BP 神經(jīng)網(wǎng)絡(luò)中輸入層包含神經(jīng)元數(shù)量為n , 兩個(gè)隱含層包含神經(jīng)元數(shù)量分別為p1以及p2, 輸出層包含神經(jīng)元數(shù)量為m 。 BP 神經(jīng)網(wǎng)絡(luò)選取sigmoid 函數(shù)作為神經(jīng)元的激活函數(shù)。
BP 神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法如下。
1) 獲取網(wǎng)絡(luò)實(shí)際輸出。 設(shè)神經(jīng)網(wǎng)絡(luò)中各輸入模式用X = x1, x2, …, xn表示, 所獲取網(wǎng)絡(luò)實(shí)際輸出為Y = y1, y2, …, yn。
2) 獲取BP 神經(jīng)網(wǎng)絡(luò)計(jì)算誤差。 設(shè)BP 神經(jīng)網(wǎng)絡(luò)中訓(xùn)練集存在樣本數(shù)量為k , 期望輸出用R獲取神經(jīng)網(wǎng)絡(luò)的誤差函數(shù), 可得神經(jīng)網(wǎng)絡(luò)訓(xùn)練集內(nèi)全部樣本的總誤差為
3) 修正神經(jīng)網(wǎng)絡(luò)權(quán)值。 誤差函數(shù)的極小值選取梯度下降法獲取。 以Δqij表示權(quán)值qij的更新量, 如式(1):
式(1)中, λ 表示學(xué)習(xí)速率。
BP 神經(jīng)網(wǎng)絡(luò)針對(duì)差異輸入可激發(fā)不同神經(jīng)元, 最終利用所激發(fā)神經(jīng)元組成激發(fā)路徑[14]。將BP 神經(jīng)網(wǎng)絡(luò)應(yīng)用于惡意代碼檢測(cè)系統(tǒng)中的具體步驟如下。
1) 激發(fā)全部輸入神經(jīng)元。
2) 比較隱含層中全部神經(jīng)元, 激發(fā)存在最大絕對(duì)值輸出的神經(jīng)元, 設(shè)一次前向過(guò)程競(jìng)爭(zhēng)所激發(fā)神經(jīng)元數(shù)量為nb, 需保證所輸出nb個(gè)神經(jīng)元絕對(duì)值為最大, 其中b 表示經(jīng)過(guò)b 次競(jìng)爭(zhēng)獲取最大絕對(duì)值輸出的神經(jīng)元, nb需要在神經(jīng)元競(jìng)爭(zhēng)前設(shè)置為正整數(shù); 隱含層在競(jìng)爭(zhēng)最大數(shù)量為B時(shí), 表示其具有隱含層數(shù)量為B 。
3) 激發(fā)全部輸出神經(jīng)元。 利用上述過(guò)程獲取神經(jīng)元激發(fā)總數(shù)量, 如式(2):
式(2)中, Nin與Nout分別表示輸入層神經(jīng)元數(shù)量以及輸出層神經(jīng)元數(shù)量。 利用最終N(r) 個(gè)激發(fā)神經(jīng)元所組成的激發(fā)路徑實(shí)現(xiàn)基于神經(jīng)網(wǎng)絡(luò)的惡意代碼檢測(cè)[15]。
基于神經(jīng)網(wǎng)絡(luò)的惡意代碼檢測(cè)因僅針對(duì)激發(fā)路徑權(quán)值調(diào)整訓(xùn)練樣本, 因此降低該算法計(jì)算復(fù)雜度以及收斂速度。
為有效檢測(cè)本文系統(tǒng)檢測(cè)惡意代碼的有效性, 在CPU 為英特爾i7, 內(nèi)存與硬盤分別為4 G和160 G 的計(jì)算機(jī)中驗(yàn)證本文方法檢測(cè)性能。 選取Matlab 神經(jīng)網(wǎng)絡(luò)工具箱作為仿真平臺(tái), 搭建實(shí)驗(yàn)環(huán)境。 該工具箱中有包括BP 神經(jīng)網(wǎng)絡(luò)在內(nèi)的大量神經(jīng)網(wǎng)絡(luò), 工作性能良好。
實(shí)驗(yàn)選取500 個(gè)正常代碼和500 個(gè)不同類型的惡意代碼作為訓(xùn)練樣本集, 從EMBER 大型開(kāi)源數(shù)據(jù)集[16]中選取實(shí)驗(yàn)用惡意代碼, 選取該數(shù)據(jù)集中的5 000 條瀏覽記錄作為系統(tǒng)檢測(cè)樣本。本文系統(tǒng)檢測(cè)惡意代碼界面如圖3 所示。
為直觀展示本文系統(tǒng)檢測(cè)性能, 采用本文系統(tǒng)檢測(cè)5 000 條瀏覽記錄中存在惡意代碼情況,并將本文系統(tǒng)與梯度下降系統(tǒng)、 自適應(yīng)系統(tǒng)進(jìn)行對(duì)比, 3 種系統(tǒng)在不同學(xué)習(xí)率情況下的學(xué)習(xí)次數(shù)如表1 所示。
通過(guò)表1 實(shí)驗(yàn)結(jié)果可以看出, 采用本文系統(tǒng)在不同學(xué)習(xí)率情況下的學(xué)習(xí)次數(shù)均為最低, 尤其是學(xué)習(xí)率為0.50 時(shí), 本文系統(tǒng)的學(xué)習(xí)次數(shù)僅為32 次, 而梯度下降系統(tǒng)以及自適應(yīng)系統(tǒng)的學(xué)習(xí)次數(shù)高達(dá)235 和165 次。 實(shí)驗(yàn)結(jié)果表明, 本文系統(tǒng)具有較高的收斂效率, 采用的BP 神經(jīng)網(wǎng)絡(luò)算法復(fù)雜度低, 可有效提升計(jì)算效率以及檢測(cè)精準(zhǔn)度。檢測(cè)正確率、 漏報(bào)率以及誤報(bào)率是直觀評(píng)價(jià)檢測(cè)系統(tǒng)檢測(cè)性能的重要指標(biāo), 其中正確檢測(cè)惡意代碼樣本數(shù)除以樣本總數(shù)為檢測(cè)正確率; 將惡意代碼檢測(cè)為正確代碼數(shù)量除以樣本總數(shù)為檢測(cè)漏報(bào)率; 將正確代碼檢測(cè)為惡意代碼數(shù)量除以樣本總數(shù)為檢測(cè)誤報(bào)率。 3 種系統(tǒng)識(shí)別5000 條瀏覽記錄中存在惡意代碼的檢測(cè)正確率、 漏報(bào)率以及誤報(bào)率結(jié)果如圖4 所示。
表1 3 種系統(tǒng)學(xué)習(xí)次數(shù)對(duì)比
圖3 本文系統(tǒng)檢測(cè)界面圖
通過(guò)圖4 實(shí)驗(yàn)結(jié)果可以看出, 本文系統(tǒng)檢測(cè)5 000 條瀏覽記錄中的惡意代碼檢測(cè)正確率較高,檢測(cè)數(shù)量為5 000 條時(shí), 檢測(cè)正確率為99.0%,而梯度下降系統(tǒng)和自適應(yīng)系統(tǒng)檢測(cè)正確率僅為95.1%和96.1%, 本文系統(tǒng)檢測(cè)正確率明顯高于另兩種系統(tǒng); 檢測(cè)瀏覽記錄數(shù)量為5 000 條時(shí),本文系統(tǒng)的惡意代碼檢測(cè)漏報(bào)率和誤報(bào)率分別為0.30%和0.70%, 采用梯度下降系統(tǒng)的惡意代碼檢測(cè)漏報(bào)率和誤報(bào)率分別為1.40% 和1.37%,自適應(yīng)系統(tǒng)的惡意代碼檢測(cè)漏報(bào)率和誤報(bào)率分別為2.47%和2.46%。 分析實(shí)驗(yàn)結(jié)果可知, 本文系統(tǒng)具有較高的檢測(cè)性能。
圖4 3 種系統(tǒng)檢測(cè)結(jié)果對(duì)比
通過(guò)表2 實(shí)驗(yàn)結(jié)果可以看出, 采用本文系統(tǒng)檢測(cè)網(wǎng)絡(luò)中不同類型的惡意代碼, 訓(xùn)練及檢測(cè)時(shí)間均明顯低于梯度下降系統(tǒng)及自適應(yīng)系統(tǒng), 且采用本文系統(tǒng)檢測(cè)網(wǎng)絡(luò)中不同類型的惡意代碼的檢測(cè)時(shí)間均保持在0.1 ms 以下, 而采用梯度下降系統(tǒng)及自適應(yīng)系統(tǒng)的檢測(cè)時(shí)間基本在0.1 ms 以上, 相差較大。 惡意代碼檢測(cè)系統(tǒng)的實(shí)時(shí)性是評(píng)價(jià)惡意代碼檢測(cè)性能的重要指標(biāo), 只有實(shí)時(shí)檢測(cè)惡意代碼并及時(shí)作出響應(yīng)才能阻止惡意代碼造成的嚴(yán)重后果。 實(shí)驗(yàn)結(jié)果表明本文系統(tǒng)具有較高的檢測(cè)實(shí)時(shí)性。
統(tǒng)計(jì)3 種系統(tǒng)檢測(cè)不同類型惡意代碼的訓(xùn)練時(shí)間以及檢測(cè)時(shí)間, 對(duì)比結(jié)果如表2 所示。
表2 3 種系統(tǒng)檢測(cè)不同類型惡意代碼時(shí)間對(duì)比 ms
續(xù)表2
惡意代碼是指可能影響網(wǎng)絡(luò)正常運(yùn)行的危險(xiǎn)代碼, 因大部分惡意代碼在網(wǎng)絡(luò)中無(wú)作用行為,因此檢測(cè)較為困難。 研究基于BP 神經(jīng)網(wǎng)絡(luò)算法的惡意代碼檢測(cè)系統(tǒng), 利用BP 神經(jīng)網(wǎng)絡(luò)算法依據(jù)所提取惡意代碼特征有效檢測(cè)網(wǎng)絡(luò)中惡意代碼, 提升惡意代碼檢測(cè)正確率。 實(shí)驗(yàn)結(jié)果表明,采用本文系統(tǒng)不僅可有效檢測(cè)網(wǎng)絡(luò)中存在的惡意代碼, 誤報(bào)率和漏報(bào)率較低, 且實(shí)時(shí)性較好, 說(shuō)明本文系統(tǒng)在實(shí)際網(wǎng)絡(luò)惡意代碼檢測(cè)中有著較高的實(shí)用價(jià)值。