廖國輝劉嘉勇
(四川大學電子信息學院 成都 610065)(sculiaoguohui@yeah.net)
?
基于數據挖掘和機器學習的惡意代碼檢測方法
廖國輝劉嘉勇
(四川大學電子信息學院 成都 610065)(sculiaoguohui@yeah.net)
近年來,惡意代碼采用花指令以及加殼等方法來繞過殺毒軟件的檢測,而現有的方法對于變種惡意代碼無法準確的識別.鑒于惡意代碼對計算機安全性的威脅以及惡意代碼傳播速度快、種類繁多的特點,采用數據挖掘和機器學習的方法對惡意代碼進行識別與檢測.首先,提出了一種基于數據挖掘和機器學習的惡意代碼檢測框架,并分別從文本結構層、字節層、代碼層3個角度提取了代碼特征;然后采用主成分分析的方法對3種層次的組合特征進行特征降維;最后采用不同的分類方法對惡意代碼進行識別與分類.分類結果表明:基于組合特征的不同分類方法對惡意代碼的識別準確率都在90%以上,能夠實現對變種惡意代碼的有效檢測,為惡意代碼查殺提供了一種十分有效的方法,其中決策樹分類方法的識別準確率最優.
惡意代碼;多維特征;數據挖掘;機器學習;代碼檢測
惡意代碼是一種引起計算機故障、信息外泄、破壞計算機數據、影響計算機系統正常使用的程序代碼,是威脅計算機安全的重要形式之一,具有非授權性和破壞性2種特征形式[1-2].近年來,由于惡意代碼在網絡上的廣泛傳播而引起的網絡安全事件數量正在逐年增加,據相關統計資料顯示,從20世紀90年代至今,由惡意代碼造成的網絡安全事件數量每年增幅達50%以上[3-4].這些網絡安全事件的產生不僅反映了系統和網絡安全的脆弱性,而且給目前以因特網為基礎設施的經濟發展造成巨大損失[5].
由于當前惡意代碼的數量非常巨大,新的惡意代碼出現的速度也越來越快[6-7],傳統的檢測技術由于其檢測速度、效率等問題已經無法應對當前惡意代碼檢測的需求,鑒于上述問題,本文采用數據挖掘和機器學習的方法,從惡意代碼提取的各個特征出發,自動學習隱含在惡意代碼中穩定的模式與規律,并利用該模式與規律進行檢測,相對傳統檢測方法而言,分析速度更快,檢測效率更高并具有很好的對未知惡意代碼的檢測能力[8-9].
1.1 惡意程序
目前惡意程序分為6類[10]:病毒、蠕蟲、木馬、僵尸程序、間諜程序和流氓軟件.這6類惡意程序都會給用戶帶來巨大的損失.而且,為了對抗反病毒程序,這些惡意程序具有反調試技術、反虛擬機技術、加殼技術、對抗安全軟件的技術.但是,總體來說,采用惡意程序的動態特征和靜態特征就能反映惡意程序在計算機中的活動變化.其中,動態特征包括惡意代碼動態調用序列及其調用參數特征、系統調用關系圖、控制依賴關系圖、數據依賴關系圖、惡意代碼對系統資源(文件、注冊表、進程、網絡)的操作情況等.靜態特征包括惡意代碼文件結構特征、字節序列特征、指令序列特征、函數調用關系圖、系統調用關系圖、控制流圖、數據流圖等.
為了綜合考慮效率與成本的開銷,本文在特征提取時只采用靜態特征提取方案,同時為了更加全面地描述惡意代碼,充分發揮靜態特征的優勢,本文從惡意代碼的多個靜態層次上提取所需的多維特征,包括文件結構層的結構特征、字節層的字節序列特征、指令層指令序列特征.
1.2 基于數據挖掘和機器學習的惡意代碼檢測架構
依據上述思想,本文提出的檢測算法的基本框架如圖1所示,從圖1可以看出,檢測過程主要分為2個階段:訓練階段與測試階段.訓練階段主要完成樣本的訓練,包括樣本靜態反匯編、特征提取與選擇、集成分類器的構建過程,其中靜態反匯編主要完成判斷惡意代碼是否加殼并依據殼的類型選擇相應的脫殼程序進行正確脫殼的過程.特征提取主要完成實驗樣本的結構特征、字節序列、指令序列、基于語義的靜態調用序列特征的特征提取過程,為了便于后續分類算法的學習,對于維度很高的特征必須進行特征降維與冗余特征約簡處理.集成分類器的構建主要完成多分類器的訓練、選擇和集成過程.測試階段主要完成樣本的測試.

圖1 惡意代碼檢測架構
2.1 實驗樣本獲取
本文所研究的源數據采用VX Heavens中的樣本數據,從該網站下載PE格式的惡意程序樣本25 585個,其中正常程序數量為4 730個,每個PE格式的惡意程序樣本都由DOS文件頭、DOS塊、PE文件頭、節表、代碼、數據和資源節等幾部分組成.
2.2 實驗樣本劃分
獲取的實驗樣本中包含木馬、病毒、蠕蟲、Rootkit、下載者、正常6類惡意代碼.在實驗樣本中各種類別的惡意代碼如表1所示.由表1可知,下載的數據集中每種類別的代碼數量并不均衡,容易在后續的惡意代碼分類與識別過程中出現因類別樣本不均衡而導致分類率下降的情況.鑒于此,本文以Rootkit的數量為基準,在其他類別的代碼中隨機選取2 768個代碼樣本,采用交叉驗證的方法,對惡意代碼進行分類與識別.

表1 實驗樣本類別及其數量
3.1 文本結構層特征
代碼文件結構層特征指的是代碼PE文件的靜態結構信息,包括入口點是否正常、PE頭部的字節熵、標準節數目、非標準節的數目、節名是否異常和可執行節的數目等.本文通過對惡意代碼的PE文件結構進行分析,得到一個19維的代碼特征向量,每維特征的值域采用數值或布爾值表示.由于篇幅所限,本文只給出部分代碼的特征含義與值域的對應關系,關系如表2所示:

表2 部分代碼特征及值域含義
3.2 字節層特征
惡意代碼字節層特征表示代碼在計算機中的二進制存儲序列中出現的規律特征,在一定程度上表示惡意代碼的指紋信息.本文首先采用Hexview工具將每個代碼樣本轉化為16進制的字節序列,然后采用n-gram滑動窗口的方法獲取代碼字節序列的字節特征.以2作為n-gram窗口的滑動長度,為了避免抽取的字節層特征維數過多而造成系統內容溢出的問題,本文將字節層的特征維數上限設置為10萬,即當算法在代碼樣本中識別出100 000 B序列組合特征后,算法便不再搜索其他新的字節序列,按照已有的字節序列進行特征統計.
3.3 指令層特征
代碼指令層特征系指代碼在計算機中執行機器指令過程中操作碼和操作數的序列特征.為了形象反映出代碼、操作碼和操作數之間的關系,本文對代碼程序和操作碼序列定義如下:
定義1. 程序.令代碼程序P是一個指令序列的集合,P={I1,I2,…,Ii,…,In},其中Ii表示機器指令,由操作碼和操作數組成,n表示程序中包含的機器指令的個數.
定義2. 操作碼序列.令操作碼序列O={o1,o2,…,oi,…om},其中oi表示一個操作碼,m為操作碼個數.操作碼序列O可以被認為是代碼程序P的一個子集,由P中包含的操作碼組成.
本文通過反匯編工具IDA Pro6.1對每個代碼樣本進行反向編譯,采用n-gram算法對編譯結果進行操作,獲得編譯結果中包含的MOV,PUSH,SUB,CMP等13個常用指令的序列特征.本文以2作為n-gram窗口的滑動長度,從代碼樣本中抽取出5 112維特征,并得到了不同特征在樣本指令中出現順序的頻次.
由上文可知,本文分別從文本結構層、字節層和代碼層抽取了19維、10萬維和5 112維代碼特征.由此可知,除了文本結構層代碼特征較少之外,由字節層和代碼層組成的代碼特征矩陣或者由單一代碼特征組成的特征矩陣都是一個高維并且稀疏的特征空間,并且特征與特征之間會由于相互關聯而導致多重共線性問題.鑒于此,為了提高分類效率,找到最有效表征惡意代碼特點的數據特征,本文采用主成分分析方法分別對文本結構層、字節層以及代碼層3種層次組合而成的特征矩陣進行降維,將降維后得到的特征矩陣作為分類器的輸入,進而評價特征組合對惡意代碼的分類與識別結果.

(1)
(2)
式(3)中的λ表示協方差矩陣的特征值向量,式(4)中的ui表示根據特征值的大小選取的協方差矩陣的不同維向量,U表示投影矩陣.式(5)中的Y表示高維矩陣X經過投影矩陣轉換而得的降維矩陣.
(3)
(4)
(5)
由上所知,基于主成分分析方法計算由文本結構層、字節層以及代碼層3種層次組合而成的特征矩陣的協方差矩陣,根據協方差矩陣的特征值和不同特征值所累加的貢獻率,從協方差矩陣中選取不同的特征維組成投影矩陣,協方差特征值、貢獻率及由不同特征值貢獻率所累加的累計貢獻率如表3所示.由于篇幅所限,本文不列出所有特征值.
5.1 惡意代碼分類性能指標
基于主成分分析而得到的降維矩陣,本節采用多種分類器試圖找出最有效的惡意代碼分類方法.為了衡量不同分類方法的性能,本文采用準確度、靈敏度和特異度3種評價指標評價分類器對惡意代碼的分類與識別效果.
準確率反映的是分類器對整個樣本集的判定能力,即將是惡意代碼的測試樣本判斷為惡意代碼,將不是惡意代碼的測試樣本判斷為非惡意代碼.準確率計算公式如式(6)所示:
Accurcay=(TP+TN)
(TP+FN+FP+TN),
(6)
其中TP,FP,FN,TN分別表示被分類器識別為正的正樣本、被分類器識別為正的負樣本、被分類器識別為負的正樣本、被分類器識別為負的負樣本.
靈敏度反映的是分類器將正樣本預測為正樣本的能力.即分類器將正常代碼識別為正常代碼的能力.靈敏度計算公式如式(7)所示:
Sensitivity=TP(TP+FN).
(7)
特異度反映的是分類器將負樣本預測為負樣本的能力.即分類器將惡意代碼識別為惡意代碼的能力.特異度計算公式如式(8)所示:
Specificity=TN(TN+FP).
(8)
5.2 惡意代碼分類與識別結果
為了對不同分類方法進行評價并找出最優的分類方法,本文基于WEKA數據挖掘平臺,采用NavieBayes,J48(decision trees),JRip(rule learners),SVM(support vector machine),KNN(k-nearest neighbor)5種分類方法對惡意代碼進行識別與分類.此外,本文還分別從文本結構層、字節層、代碼層以及3種代碼特征組合4個角度,評價基于不同代碼特征的分類器分類效果.由2.2節可知,本文共采用16 608個代碼樣本作為分類器的實驗樣本,其中每類代碼的樣本個數為2 768,采用10折交叉驗證方法計算3種分類器評價指標平均值并作為最終的分類器效果的評價依據.基于不同特征的不同分類器的分類結果如表4所示:

表4 不同特征的不同分類器的分類結果
根據表4不同特征的不同分類器的分類結果可知,在基于單一代碼特征的分類實驗中,基于結構特征的惡意代碼識別準確率最低,而基于指令特征的惡意代碼識別準確率最高,說明與其他代碼特征相比,代碼的指令特征更能表達惡意代碼與正常代碼之間的差異.在基于多種特征的分類實驗中,基于組合特征的惡意代碼識別獲得了最優的分類結果,說明3種特征都分別從不同方面反映出惡意代碼與正常代碼之間的差異,基于多種特征的惡意代碼識別方法相對可靠.
本文基于網上下載的代碼實驗樣本,采用數據挖掘和機器學習的方法,從文本結構層、字節層、代碼層3個角度提取了實驗樣本特征,通過主成分分析的方法對3種特征組合進行降維,基于得到的降維矩陣,采用貝葉斯、決策樹、規則學習、支持向量機和最鄰近算法5種分類方法對惡意代碼進行分類,并分別與基于不同代碼層次特征的分類結果進行比較.實驗結果表明,基于數據挖掘和機器學習的惡意代碼識別與分類方法在代碼字節層和組合特征層都具有較好的準確度、靈敏度和特異度,其中又以基于組合特征的分類結果最優.
[1]Wang Z, Nascimento M, MacGregor M H. A multidisciplinary approach for online detection of X86 malicious executables[C] //Proc of Communication Networks and Services Research Conf (CNSR). Piscataway, NJ: IEEE, 2010: 160-167
[2]Patel S, Patel V, Jinwala D. Privacy preserving distributed k-means clustering in malicious model using zero knowledge proof[M] //Distributed Computing and Internet Technology. Berlin: Springer, 2013: 420-431[3]Fu L, Zhang T, Zhang H, et al. A fuzzy classification method based on feature selection algorithm in malicious script code detection[C] //Proc of 2011 IEEE Int Conf on System Science, Engineering Design and Manufacturing Informatization (ICSEM). Piscataway, NJ: IEEE, 2011: 218-221
[4]Hsiao H W, Chen D N, Wu T J. Detecting hiding malicious website using network traffic mining approach[C] //Proc of the 2nd Int Conf on Education Technology and Computer (ICETC). Piscataway, NJ: IEEE, 2010: V5-276-V5-280
[5]Thuraisingham B M. Data mining for security applications[M] //Intelligence and Security Informatics. Berlin: Springer, 2006: 1-3
[6]黃聰會, 陳靖, 龔水清, 等. 一種基于危險理論的惡意代碼檢測方法[J]. 中南大學學報: 自然科學版, 2014, 45(9): 3055-3060
[7]Lee T, Kim D, Jeong H, et al. Risk prediction of malicious code-infected websites by mining vulnerability features[J]. International Journal of Security and Its Applications, 2014, 8(1): 291-294
[8]Ramani R G, Kumar S S, Jacob S G. Rootkit (malicious code) prediction through data mining methods and techniques[C] //Proc of 2013 IEEE Int Conf on Computational Intelligence and Computing Research (ICCIC). Piscataway, NJ: IEEE, 2013: 1-5
[9]Li X, Dong X, Wang Y. Malicious code forensics based on data mining[C] //Proc of the 10th Int Conf on Fuzzy Systems and Knowledge Discovery (FSKD). Piscataway, NJ: IEEE, 2013: 978-983
[10]Li Y, Ma R, Jiao R. A hybrid malicious code detection method based on deep learning[J]. Methods, 2015, 9(5): 205-216

廖國輝
碩士研究生,主要研究方向為惡意代碼檢測、網絡信息處理與信息安全.
sculiaoguohui@yeah.net

劉嘉勇
教授,博士生導師,主要研究方向為信息安全理論與應用、網絡信息處理與信息安全.
ljy@scu.edu.cn
A Malicious Code Detection Method Based on Data Mining and Machine Learning
Liao Guohui and Liu Jiayong
(CollegeofElectronicsandInformationEngineering,SichuanUniversity,Chengdu610065)
In recent years, malicious code uses flower instructions and packers and other methods to bypass the detection of antivirus software, while the identification of existing methods for variants of malicious code can not be accurate.In the view of threat of malicious code on computer security and features of fast spread and wide variety, this paper uses the data mining and machine learning method to recognize and detect malicious code. Firstly, it proposes a malicious code detection framework based on data mining and machine learning, and extracts the code features from text structure layer, byte layer and code layer respectively. Secondly, it adapts the principal component analysis to reduce the dimension of combined feature matrix. Finally, it recognizes and classifies the malicious code using various classification methods. The result shows that the accuracy rate of every classification method based on combined feature matrix is higher than 90%, and among them, the method of decision tree gets the best .It is able to achieve effective detection of variants of malicious code, and provide a very effective method for malware killing to detect the variants of malicious code.
malicious code; multidimensional feature; data mining; machine learning; code detection
2015-12-25
TP309