段玉瑩,王鳳英
(山東理工大學 計算機科學與技術學院,山東 淄博 255000)
惡意代碼(malicious code)被定義為一系列故意創建,對計算機系統或者網絡信息機密性、完整性、可用性產生威脅的軟件程序?,F階段,惡意代碼常針對新型漏洞進行設計,是敵手發動高級持續威脅(advanced persistent threat,APT)的主要技術手段[1-4]。
目前典型的惡意代碼檢測技術包括:基于靜態分析[5,6]、動態分析[7,8]以及機器學習的方法[9,10]。靜態分析的檢測適于非混淆樣本,但對未知及變種代碼往往無計可施;動態分析的檢測對混淆樣本表現更為出色,但此方法需要觸發惡意代碼的執行,且路徑單一。目前基于機器學習的檢測大多為淺層的機器學習模型,通過大量惡意樣本提取特征,訓練樣本以構建模型判斷軟件的惡意特性。這些淺層機器學習模型,在復雜函數及其分類等問題上表述能力受限,泛化能力也受到了制約,分類的精度和準確度并不理想[11]。深度學習是對機器學習更深層次的解釋,可以對多層深度結構實現非線性映射[12]。因此,本文提出了采用級聯與深度信念網絡進行惡意代碼的檢測,通過級聯由簡到繁的檢測方法,以及深度信念網絡的無監督特性,提高檢測效率的監測方案。與其它機器學習的檢測結果相比較,本文中檢驗惡意代碼的準確率得到顯著提高。
RBM為一種僅含有兩層節點的隨機神經網絡模型,各層之間處于一種全連接狀態,每層內部各部分相互獨立,其結構如圖1所示。

圖1 受限玻爾茲曼機結構
圖1中,h->Hidden Layers;v->Visible Layer;W->Weight。 RBM為一個基于能量的模型,其能量函數可以由式(1)所示
(1)
其中,θ={w,a,b} 為未知參數vi、hj分別表示第i個可見單元的值和第j個隱藏單元的值,ai、bj分別表示第i個可見單元和第j個隱藏單元的偏置,wij為神經元i和j之間的連接權值。為了方便討論,假設所有可見單元和隱藏單元的取值均為0或1。根據式(1)的能量函數,可以得到 (v,h) 的聯合概率分布為
(2)
(3)
其中, Z(θ) 為歸一化因子,由于RBM同一層節點間無連接,故同一層中的節點互相獨立,在已知v或h時,hj或vi的值為1的條件概率分別為
(4)
(5)
其中,sigm為激活函數,其函數表達式為
(6)
根據式(4)和式(5),在已知v的條件下,可以求出h的概率分布;反之,也能通過h的概率分布對v進行重構。
RBM訓練過程即樣本概率分布擬合過程。在1.1節已得到RBM聯合概率分布,通過極大似然估計法獲取樣本概率分布最大化情況下的未知參數θ。
RBM訓練方式包含對比散度法(contrastive divergence,CD)與并行回火法(parallel tempering,PT)。CD算法在進行目標分析的過程中通過Gibbs不斷迭代得到優異的采樣梯度作為近似似然函數的真實梯度值,雖然訓練效果明顯,但是存在嚴重的偏估計[11],同時當訓練數據過度復雜時會導致Gibbs采樣鏈陷入局部極小域。PT算法通過對高溫以及低溫鏈條進行并行分析,經過不斷迭代,得到真實梯度近似值,對于復雜數據分析的效果明顯高于CD算法。但是PT算法在進行數據分析過程中需要大量的數據交換操作,工作效率較CD算法較低。本文數據分析采用并行分布式系統,與PT算法特征互補,是目前訓練RBM網絡最理想的算法。
DBN是由多個RBM按照一定規律構成的深度學習模型,通過無監督貪婪算法對網絡模型反復循環訓練,采用訓練數據對網絡參數進行微調,有效避免隨機初始化參數帶來的局部最小問題,可完成原始數據的完美建模,其結構如圖2所示。

圖2 深度信念網絡模型
獲取有效的惡意代碼樣本集是實驗進行基礎,特別是深度學習背景下的惡意代碼檢測,只有確保訓練樣本的數量、類型足夠大,才能確保檢測結果的準確性。通常情況下,惡意代碼的獲取包含用戶端采樣、公開惡意代碼網絡數據庫以及Nepenthes等惡意代碼捕獲工具3種有效的途徑。
基于深度學習的惡意代碼特征信息的提取所采用的分析方法有兩種:一種是靜態分析方法,另一種是動態分析方法。惡意代碼靜態特性提取采用信息逆向處理方式獲取樣本序列特征、字符串特征以及API調用特征等選取數據特征信息;惡意代碼動態特征的提取采用沙箱技術完成樣本信息檢測,根據檢測報告進行惡意代碼行為特征的提取。
為提升惡意代碼檢測分類的準確性,將檢測信息轉化為二進制文件,并采用信號處理與稀疏表示相結合的方法從多個不同的角度進行線性表示,根據惡意代碼紋理信息的相似性特征實現惡意代碼的分類。對于本文中深度學習框架的設計采用Boosting算法與LBP級聯稀疏表示算法相結合的方式,融合惡意代碼多種不同類型的特性,實現惡意代碼的靜態分析以及動態深度學習,抽取出惡意代碼的行為特征并實現特征融合,嵌入自動學習深入檢測框架,提升系統檢測的可擴展性。
惡意代碼傳播具有高復制性特征,通常情況下捕獲到的惡意代碼已留存在病毒倉庫中,為提高檢測效率,在檢測模型設計過程中引入了層次化檢測概念,依據從簡到繁的檢測原則,將Hash值匹配、LBP級聯稀疏表示、反匯編特征匹配以及深度信念網絡進行級聯,層次化結構如圖3所示。

圖3 分層檢測結構
惡意代碼檢測系統主要分為兩部分:模塊一是基于現有惡意代碼庫的數據信息下的惡意代碼檢測模塊,包括Hash值匹配、LBP級聯稀疏表示以及反匯編特征匹配;模塊二是基于大數據背景下深度學習的惡意代碼的深度分析檢測,采用深度信念網絡對模塊一得到的數據結果進行深層次的篩選檢測,確定信息中可能存在惡意代碼的任務段。惡意代碼檢測流程如圖4所示。

圖4 惡意代碼檢測流程
惡意代碼檢測工作流程原理分析:
(1)HASH值匹配
基于HASH算法下的惡意代碼檢測所采用的方法包含MD5、SHA1以及CRC 32等,通過HASH算法任一文件均可以生成一個HASH值。根據惡意代碼的傳播特性,在進行惡意代碼檢測前首先判定HASH值是否已存放在惡意代碼庫,進行初步篩選,提高資源利用率以及惡意代碼檢測效率。
(2)LBP-級聯稀疏表示
LBP(local binary pattern)是對圖像局部區域紋理特征的描述。PRICo-LBP特征檢測為圖像LBP特征的優化操作,能夠與平移、旋轉等操作完美的融合。假定像素點A, 則以像素點A為圓心,r為半徑,提取圓弧上m個鄰點,判定其與A點之間的對應關系獲取圖像的局部特征。設A點的LBP特征為LBPn,r(A), 則有像素點A的旋轉不變LBP特征LBPn,i與旋轉不變的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)的本質是將信號分解到一系列子空間,是降維過程的一般化,同時也是正則項對噪聲類型的約束,為多子空間模型。對于給定矩陣X可以由信號矩陣L與噪聲矩陣E表示,即
X=L+E
(9)
在分解過程中由于并未給定特定的約束條件,為此對于矩陣X的分解可能存在多種不同的解。為便于計算,選取的信息L需要滿足低秩約束,同時噪聲E對于信號L影響最小,即滿足稀疏約束。所以最終凸優化問題為
(10)
對于矩陣X假如存在分塊矩陣W滿足
X=XW
(11)

(12)
其中,參數C為自表示的系數矩陣。
對惡意代碼進行層次化處理,選用Rotational Uniform LBP完成惡意代碼的局部特征提取,通過稀疏表示獲取惡意代碼的全局特征。引入滑動窗口獲取代碼間的位置關系,隨后采用式(8)提取圖像塊中每一像素點的Rotational Uniform LBP特征。隨后,基于同家族惡意代碼具有相似的紋理特征以及代碼復用狀況,按照式(7)實現惡意代碼圖像塊的LBP特征直方圖的稀疏表示。
(3)反匯編特征匹配
綜合考慮惡意代碼的特征以及實際情況,本課題研究所選用的文件頭部特征包括字節名稱、字節個數以及動態鏈接屬性。由于同種類型的文本具有相似的特征信息,為此選用漢名距離進行數據計算。對于惡意代碼分類,首先將文本信息向量化,結合反匯編技術獲取文本信息的操作碼(OpCode)以及系統函數序列(SysFunc)。所以,在n確定的情況下,可以獲取不同的OPCode以及SysFunc的n-gram特征。
(4)深度信念網絡
以模塊一中獲取得到的惡意代碼的特征信息為基礎完成惡意代碼特征信息的融合處理,隨后采用深度信念網絡,訓練每層的受限玻爾茲曼機,對DBN網絡進行無監督反饋調節進行優化,通過最后一層BP神經網絡微調整個網絡模型,建立訓練好的DBN模型,從而達到惡意代碼自動檢測的要求。
本實驗采用的訓練樣本以及測試樣本均取自Microsoft開源數據集,其中總計包含九大類惡意代碼,包含一個.bytes文件與一個.asm文件,用于指導惡意代碼特征信息提取以及分類預測。
首先,在獲取的九大類惡意代碼文件中分別隨機抽取N個數據文件完成訓練文本集的構建。隨后,借助Excel刪除訓練文本中重復數據集,確保數據的單一性。最后,依據惡意代碼紋理相似性原則以及DBN分類策略完成惡意代碼特征信息的提取操作,并通過深度信念網絡實現惡意代碼的深度學習、自動判斷。
本實驗總共選取了6組實驗樣本,其中所包含的樣本個數分別為1200、1500、2000、2500、3000、3500,在每組樣本數據中分別選取70%的樣本作為訓練樣本,剩余的30%為檢測樣本。
高學習率與迭代更新速率為正相關,但是不利于局部/全局優點的提??;低學習率有助于發現局部最優點,但是不利于全局最優點的提取。為此,結合惡意代碼特征以及系統設計的實際情況,采用高學習率提取惡意代碼全局近似最優,隨后采用較小的學習率提取惡意代碼的局部最優,通過期望值計算模型全局最優解。根據實際情況,迭代次數選取300次,學習率為0.30,權重衰減參數為0.85。實驗過程中紋理特征的選取對于實際實驗結果的影響如圖5所示。

圖5 紋理特征對實驗結果的影響
根據實驗結果顯示,檢測文件在0至1500之間隨著檢測文件的維度不斷上升,分類準確率呈現上升的趨勢;隨后文件檢測概率呈現下降的趨勢,為此本文實現所選取的紋理特征的維度為1500。指令頻率特征的選取對于實際實驗結果的影響如圖6所示。

圖6 頻率特征對實驗結果的影響
根據實驗結果顯示,頻率特征值在0至600之間逐漸增加時,惡意代碼檢測準確率逐漸增大;隨后惡意代碼檢測準確率逐漸降低,為此本文實驗所選取的特征值為600。
綜合考慮全局特征,本文實驗所采用的DBN層數為兩層、紋理特征的維度為1500、頻率特征值為600,將檢測文件分別輸入系統進行深度學習,隨后進行實驗得到的最終的檢測結果見表1。
通過對表1中檢測準確率進行計算,最終惡意代碼得到惡意代碼檢測準確率平均可達98.1%。隨后,不斷增加檢測樣本的數目,最佳情形下惡意代碼檢測準確率高達99.2%。

表1 檢測準確率分析
為驗證本文所設計的層次化惡意代碼檢測框架的可行性,選取了SVM、KNN、稀疏表示、PRICoLBP以及 PRICoLBP+ 稀疏表示、DBN+BP幾種不同類型的惡意代碼分類檢測模型進行對比,其分類準確率見表2。
通過表2與不同檢測模型的對比,采用不同類型的檢測框架以及算法模型對于惡意代碼檢測結果將會產生巨大的影響,通過實驗我們可以發現采用SVM模型檢測惡意代碼得到的檢測準確率較低,本文所采用的基于級聯與深度信念網絡的分層檢測(級聯+DBN層次化檢測)模型具有更高的準確率,最佳情況下可高達99.2%。

表2 不同檢測模型對比結果/%
本文結合層次化檢測以及深度學習思想,依據惡意代碼的入侵特性,采取從簡到繁的檢測原則,通過級聯操作進行惡意代碼的初級判定。隨后通過深度信念網絡,融合檢測文件紋理信息以及頻率特征,構建自動學習機器模型,實現惡意代碼的深層次檢測。實驗結果表明,基于級聯操作與深度信念網絡的惡意代碼檢測模型對于惡意代碼檢測準確率有積極影響,準確率平均可達到98.1%。最佳情況下惡意代碼檢測準確率高達99.2%,更優于目前市面上惡意代碼檢測模型框架。