段玉瑩,王鳳英
(山東理工大學 計算機科學與技術(shù)學院,山東 淄博 255000)
惡意代碼(malicious code)被定義為一系列故意創(chuàng)建,對計算機系統(tǒng)或者網(wǎng)絡信息機密性、完整性、可用性產(chǎn)生威脅的軟件程序?,F(xiàn)階段,惡意代碼常針對新型漏洞進行設計,是敵手發(fā)動高級持續(xù)威脅(advanced persistent threat,APT)的主要技術(shù)手段[1-4]。
目前典型的惡意代碼檢測技術(shù)包括:基于靜態(tài)分析[5,6]、動態(tài)分析[7,8]以及機器學習的方法[9,10]。靜態(tài)分析的檢測適于非混淆樣本,但對未知及變種代碼往往無計可施;動態(tài)分析的檢測對混淆樣本表現(xiàn)更為出色,但此方法需要觸發(fā)惡意代碼的執(zhí)行,且路徑單一。目前基于機器學習的檢測大多為淺層的機器學習模型,通過大量惡意樣本提取特征,訓練樣本以構(gòu)建模型判斷軟件的惡意特性。這些淺層機器學習模型,在復雜函數(shù)及其分類等問題上表述能力受限,泛化能力也受到了制約,分類的精度和準確度并不理想[11]。深度學習是對機器學習更深層次的解釋,可以對多層深度結(jié)構(gòu)實現(xiàn)非線性映射[12]。因此,本文提出了采用級聯(lián)與深度信念網(wǎng)絡進行惡意代碼的檢測,通過級聯(lián)由簡到繁的檢測方法,以及深度信念網(wǎng)絡的無監(jiān)督特性,提高檢測效率的監(jiān)測方案。與其它機器學習的檢測結(jié)果相比較,本文中檢驗惡意代碼的準確率得到顯著提高。
RBM為一種僅含有兩層節(jié)點的隨機神經(jīng)網(wǎng)絡模型,各層之間處于一種全連接狀態(tài),每層內(nèi)部各部分相互獨立,其結(jié)構(gòu)如圖1所示。
圖1 受限玻爾茲曼機結(jié)構(gòu)
圖1中,h->Hidden Layers;v->Visible Layer;W->Weight。 RBM為一個基于能量的模型,其能量函數(shù)可以由式(1)所示
(1)
其中,θ={w,a,b} 為未知參數(shù)vi、hj分別表示第i個可見單元的值和第j個隱藏單元的值,ai、bj分別表示第i個可見單元和第j個隱藏單元的偏置,wij為神經(jīng)元i和j之間的連接權(quán)值。為了方便討論,假設所有可見單元和隱藏單元的取值均為0或1。根據(jù)式(1)的能量函數(shù),可以得到 (v,h) 的聯(lián)合概率分布為
(2)
(3)
其中, Z(θ) 為歸一化因子,由于RBM同一層節(jié)點間無連接,故同一層中的節(jié)點互相獨立,在已知v或h時,hj或vi的值為1的條件概率分別為
(4)
(5)
其中,sigm為激活函數(shù),其函數(shù)表達式為
(6)
根據(jù)式(4)和式(5),在已知v的條件下,可以求出h的概率分布;反之,也能通過h的概率分布對v進行重構(gòu)。
RBM訓練過程即樣本概率分布擬合過程。在1.1節(jié)已得到RBM聯(lián)合概率分布,通過極大似然估計法獲取樣本概率分布最大化情況下的未知參數(shù)θ。
RBM訓練方式包含對比散度法(contrastive divergence,CD)與并行回火法(parallel tempering,PT)。CD算法在進行目標分析的過程中通過Gibbs不斷迭代得到優(yōu)異的采樣梯度作為近似似然函數(shù)的真實梯度值,雖然訓練效果明顯,但是存在嚴重的偏估計[11],同時當訓練數(shù)據(jù)過度復雜時會導致Gibbs采樣鏈陷入局部極小域。PT算法通過對高溫以及低溫鏈條進行并行分析,經(jīng)過不斷迭代,得到真實梯度近似值,對于復雜數(shù)據(jù)分析的效果明顯高于CD算法。但是PT算法在進行數(shù)據(jù)分析過程中需要大量的數(shù)據(jù)交換操作,工作效率較CD算法較低。本文數(shù)據(jù)分析采用并行分布式系統(tǒng),與PT算法特征互補,是目前訓練RBM網(wǎng)絡最理想的算法。
DBN是由多個RBM按照一定規(guī)律構(gòu)成的深度學習模型,通過無監(jiān)督貪婪算法對網(wǎng)絡模型反復循環(huán)訓練,采用訓練數(shù)據(jù)對網(wǎng)絡參數(shù)進行微調(diào),有效避免隨機初始化參數(shù)帶來的局部最小問題,可完成原始數(shù)據(jù)的完美建模,其結(jié)構(gòu)如圖2所示。
圖2 深度信念網(wǎng)絡模型
獲取有效的惡意代碼樣本集是實驗進行基礎,特別是深度學習背景下的惡意代碼檢測,只有確保訓練樣本的數(shù)量、類型足夠大,才能確保檢測結(jié)果的準確性。通常情況下,惡意代碼的獲取包含用戶端采樣、公開惡意代碼網(wǎng)絡數(shù)據(jù)庫以及Nepenthes等惡意代碼捕獲工具3種有效的途徑。
基于深度學習的惡意代碼特征信息的提取所采用的分析方法有兩種:一種是靜態(tài)分析方法,另一種是動態(tài)分析方法。惡意代碼靜態(tài)特性提取采用信息逆向處理方式獲取樣本序列特征、字符串特征以及API調(diào)用特征等選取數(shù)據(jù)特征信息;惡意代碼動態(tài)特征的提取采用沙箱技術(shù)完成樣本信息檢測,根據(jù)檢測報告進行惡意代碼行為特征的提取。
為提升惡意代碼檢測分類的準確性,將檢測信息轉(zhuǎn)化為二進制文件,并采用信號處理與稀疏表示相結(jié)合的方法從多個不同的角度進行線性表示,根據(jù)惡意代碼紋理信息的相似性特征實現(xiàn)惡意代碼的分類。對于本文中深度學習框架的設計采用Boosting算法與LBP級聯(lián)稀疏表示算法相結(jié)合的方式,融合惡意代碼多種不同類型的特性,實現(xiàn)惡意代碼的靜態(tài)分析以及動態(tài)深度學習,抽取出惡意代碼的行為特征并實現(xiàn)特征融合,嵌入自動學習深入檢測框架,提升系統(tǒng)檢測的可擴展性。
惡意代碼傳播具有高復制性特征,通常情況下捕獲到的惡意代碼已留存在病毒倉庫中,為提高檢測效率,在檢測模型設計過程中引入了層次化檢測概念,依據(jù)從簡到繁的檢測原則,將Hash值匹配、LBP級聯(lián)稀疏表示、反匯編特征匹配以及深度信念網(wǎng)絡進行級聯(lián),層次化結(jié)構(gòu)如圖3所示。
圖3 分層檢測結(jié)構(gòu)
惡意代碼檢測系統(tǒng)主要分為兩部分:模塊一是基于現(xiàn)有惡意代碼庫的數(shù)據(jù)信息下的惡意代碼檢測模塊,包括Hash值匹配、LBP級聯(lián)稀疏表示以及反匯編特征匹配;模塊二是基于大數(shù)據(jù)背景下深度學習的惡意代碼的深度分析檢測,采用深度信念網(wǎng)絡對模塊一得到的數(shù)據(jù)結(jié)果進行深層次的篩選檢測,確定信息中可能存在惡意代碼的任務段。惡意代碼檢測流程如圖4所示。
圖4 惡意代碼檢測流程
惡意代碼檢測工作流程原理分析:
(1)HASH值匹配
基于HASH算法下的惡意代碼檢測所采用的方法包含MD5、SHA1以及CRC 32等,通過HASH算法任一文件均可以生成一個HASH值。根據(jù)惡意代碼的傳播特性,在進行惡意代碼檢測前首先判定HASH值是否已存放在惡意代碼庫,進行初步篩選,提高資源利用率以及惡意代碼檢測效率。
(2)LBP-級聯(lián)稀疏表示
LBP(local binary pattern)是對圖像局部區(qū)域紋理特征的描述。PRICo-LBP特征檢測為圖像LBP特征的優(yōu)化操作,能夠與平移、旋轉(zhuǎn)等操作完美的融合。假定像素點A, 則以像素點A為圓心,r為半徑,提取圓弧上m個鄰點,判定其與A點之間的對應關(guān)系獲取圖像的局部特征。設A點的LBP特征為LBPn,r(A), 則有像素點A的旋轉(zhuǎn)不變LBP特征LBPn,i與旋轉(zhuǎn)不變的Uniform LBP特征LBPr,u[13], 定義如下
(7)
(8)
其中,方程式(7)中的ROR(LBPn,r(A),i) 代表將LBPn,r(A) 向右平移i個單位,如ROR(00001111,3)=11100001。 方程式(8)中的gc代表給定點A的像素值,gi代表定點A第i個鄰點的像素值。
稀疏表示(sparse representation,SR)的本質(zhì)是將信號分解到一系列子空間,是降維過程的一般化,同時也是正則項對噪聲類型的約束,為多子空間模型。對于給定矩陣X可以由信號矩陣L與噪聲矩陣E表示,即
X=L+E
(9)
在分解過程中由于并未給定特定的約束條件,為此對于矩陣X的分解可能存在多種不同的解。為便于計算,選取的信息L需要滿足低秩約束,同時噪聲E對于信號L影響最小,即滿足稀疏約束。所以最終凸優(yōu)化問題為
(10)
對于矩陣X假如存在分塊矩陣W滿足
X=XW
(11)
(12)
其中,參數(shù)C為自表示的系數(shù)矩陣。
對惡意代碼進行層次化處理,選用Rotational Uniform LBP完成惡意代碼的局部特征提取,通過稀疏表示獲取惡意代碼的全局特征。引入滑動窗口獲取代碼間的位置關(guān)系,隨后采用式(8)提取圖像塊中每一像素點的Rotational Uniform LBP特征。隨后,基于同家族惡意代碼具有相似的紋理特征以及代碼復用狀況,按照式(7)實現(xiàn)惡意代碼圖像塊的LBP特征直方圖的稀疏表示。
(3)反匯編特征匹配
綜合考慮惡意代碼的特征以及實際情況,本課題研究所選用的文件頭部特征包括字節(jié)名稱、字節(jié)個數(shù)以及動態(tài)鏈接屬性。由于同種類型的文本具有相似的特征信息,為此選用漢名距離進行數(shù)據(jù)計算。對于惡意代碼分類,首先將文本信息向量化,結(jié)合反匯編技術(shù)獲取文本信息的操作碼(OpCode)以及系統(tǒng)函數(shù)序列(SysFunc)。所以,在n確定的情況下,可以獲取不同的OPCode以及SysFunc的n-gram特征。
(4)深度信念網(wǎng)絡
以模塊一中獲取得到的惡意代碼的特征信息為基礎完成惡意代碼特征信息的融合處理,隨后采用深度信念網(wǎng)絡,訓練每層的受限玻爾茲曼機,對DBN網(wǎng)絡進行無監(jiān)督反饋調(diào)節(jié)進行優(yōu)化,通過最后一層BP神經(jīng)網(wǎng)絡微調(diào)整個網(wǎng)絡模型,建立訓練好的DBN模型,從而達到惡意代碼自動檢測的要求。
本實驗采用的訓練樣本以及測試樣本均取自Microsoft開源數(shù)據(jù)集,其中總計包含九大類惡意代碼,包含一個.bytes文件與一個.asm文件,用于指導惡意代碼特征信息提取以及分類預測。
首先,在獲取的九大類惡意代碼文件中分別隨機抽取N個數(shù)據(jù)文件完成訓練文本集的構(gòu)建。隨后,借助Excel刪除訓練文本中重復數(shù)據(jù)集,確保數(shù)據(jù)的單一性。最后,依據(jù)惡意代碼紋理相似性原則以及DBN分類策略完成惡意代碼特征信息的提取操作,并通過深度信念網(wǎng)絡實現(xiàn)惡意代碼的深度學習、自動判斷。
本實驗總共選取了6組實驗樣本,其中所包含的樣本個數(shù)分別為1200、1500、2000、2500、3000、3500,在每組樣本數(shù)據(jù)中分別選取70%的樣本作為訓練樣本,剩余的30%為檢測樣本。
高學習率與迭代更新速率為正相關(guān),但是不利于局部/全局優(yōu)點的提??;低學習率有助于發(fā)現(xiàn)局部最優(yōu)點,但是不利于全局最優(yōu)點的提取。為此,結(jié)合惡意代碼特征以及系統(tǒng)設計的實際情況,采用高學習率提取惡意代碼全局近似最優(yōu),隨后采用較小的學習率提取惡意代碼的局部最優(yōu),通過期望值計算模型全局最優(yōu)解。根據(jù)實際情況,迭代次數(shù)選取300次,學習率為0.30,權(quán)重衰減參數(shù)為0.85。實驗過程中紋理特征的選取對于實際實驗結(jié)果的影響如圖5所示。
圖5 紋理特征對實驗結(jié)果的影響
根據(jù)實驗結(jié)果顯示,檢測文件在0至1500之間隨著檢測文件的維度不斷上升,分類準確率呈現(xiàn)上升的趨勢;隨后文件檢測概率呈現(xiàn)下降的趨勢,為此本文實現(xiàn)所選取的紋理特征的維度為1500。指令頻率特征的選取對于實際實驗結(jié)果的影響如圖6所示。
圖6 頻率特征對實驗結(jié)果的影響
根據(jù)實驗結(jié)果顯示,頻率特征值在0至600之間逐漸增加時,惡意代碼檢測準確率逐漸增大;隨后惡意代碼檢測準確率逐漸降低,為此本文實驗所選取的特征值為600。
綜合考慮全局特征,本文實驗所采用的DBN層數(shù)為兩層、紋理特征的維度為1500、頻率特征值為600,將檢測文件分別輸入系統(tǒng)進行深度學習,隨后進行實驗得到的最終的檢測結(jié)果見表1。
通過對表1中檢測準確率進行計算,最終惡意代碼得到惡意代碼檢測準確率平均可達98.1%。隨后,不斷增加檢測樣本的數(shù)目,最佳情形下惡意代碼檢測準確率高達99.2%。
表1 檢測準確率分析
為驗證本文所設計的層次化惡意代碼檢測框架的可行性,選取了SVM、KNN、稀疏表示、PRICoLBP以及 PRICoLBP+ 稀疏表示、DBN+BP幾種不同類型的惡意代碼分類檢測模型進行對比,其分類準確率見表2。
通過表2與不同檢測模型的對比,采用不同類型的檢測框架以及算法模型對于惡意代碼檢測結(jié)果將會產(chǎn)生巨大的影響,通過實驗我們可以發(fā)現(xiàn)采用SVM模型檢測惡意代碼得到的檢測準確率較低,本文所采用的基于級聯(lián)與深度信念網(wǎng)絡的分層檢測(級聯(lián)+DBN層次化檢測)模型具有更高的準確率,最佳情況下可高達99.2%。
表2 不同檢測模型對比結(jié)果/%
本文結(jié)合層次化檢測以及深度學習思想,依據(jù)惡意代碼的入侵特性,采取從簡到繁的檢測原則,通過級聯(lián)操作進行惡意代碼的初級判定。隨后通過深度信念網(wǎng)絡,融合檢測文件紋理信息以及頻率特征,構(gòu)建自動學習機器模型,實現(xiàn)惡意代碼的深層次檢測。實驗結(jié)果表明,基于級聯(lián)操作與深度信念網(wǎng)絡的惡意代碼檢測模型對于惡意代碼檢測準確率有積極影響,準確率平均可達到98.1%。最佳情況下惡意代碼檢測準確率高達99.2%,更優(yōu)于目前市面上惡意代碼檢測模型框架。