◆蘇晗舶 黃迎春
基于N-gram的惡意代碼分類系統(tǒng)設(shè)計研究
◆蘇晗舶 黃迎春
(沈陽理工大學(xué)(沈陽)信息科學(xué)與工程學(xué)院 遼寧 110159)
隨著互聯(lián)網(wǎng)的發(fā)展和普及,互聯(lián)網(wǎng)中惡意代碼的安全威脅越來越嚴重,提高惡意代碼的識別準確率已成為急需解決的問題。因此,本文在虛擬化環(huán)境中的靜態(tài)行為跟蹤和特征分析的基礎(chǔ)上,引入基于信息增益的N-gram語義特征提取方法和文本頻率特征提取方法,對惡意代碼進行多元語義切分,映射為惡意代碼的Op-code操作碼特征,先進行對處理之后的特征數(shù)據(jù)集運用分類算法進行分類檢測和分析,之后再結(jié)合機器學(xué)習(xí)分類方法,實現(xiàn)惡意代碼樣本的有效歸屬判別。
靜態(tài)分析;N-gram;Op-code操作碼
傳統(tǒng)的惡意代碼檢測方法主要是基于特征碼、基于逆向工程的檢測方法,由于現(xiàn)階段的惡意代碼數(shù)量越來越多,出現(xiàn)的頻率越來越高、周期越來越短,傳統(tǒng)的檢測技術(shù)已經(jīng)無法應(yīng)對這些問題。文獻[1]通過對于操作碼的提取,作為特征選擇對象,通過幾種不同的分類模型的比較,得出了較高的檢驗成功率,這種方法在概念上比使用ROC分析更簡單。結(jié)合特征選擇方法,分別對惡意代碼進行分類檢測,比較結(jié)果。文獻[2]只進行了特征選擇及其組合,沒有尋求分類器的幫助。完成了組合功能,從而提高了分類能力。將各種特性結(jié)合在一起的結(jié)果產(chǎn)生了更有效的方法識別各種文檔,并減少了計算時間。文獻[3]針對惡意代碼動態(tài)檢測識別困難,靜態(tài)檢測識別準確率低的缺點,提出一種集成學(xué)習(xí)多屬性特征的檢測方法,在低損耗的情況下,提取多個靜態(tài)特征,以及多個靜態(tài)方式下表現(xiàn)出的行為特征作為分析對象,按權(quán)重篩選屬性向量,加權(quán)互補提升多分類器的檢測結(jié)果。提高檢測的準確性。本文在歸納分析國內(nèi)相關(guān)文獻的基礎(chǔ)上,著重分析互聯(lián)網(wǎng)中的惡意代碼分類,行為及其相關(guān)技術(shù),并對惡意代碼的發(fā)展趨勢進行了歸納和研究,旨在提高分類準確率和提高效率,可以為克服當前惡意代碼的入侵問題提供一定的參考作用。
在過去的幾年中,惡意代碼[4]的數(shù)量和復(fù)雜性大大增加。最近的惡意代碼樣本似乎是高度模塊化的,功能上不太典型。通過引入惡意軟件生成工具和重用不同的惡意軟件模塊,因為互聯(lián)網(wǎng)的開源技術(shù)的提高,形勢變得更加嚴峻。作為回應(yīng),迫切需要促進新的惡意代碼分析系統(tǒng)進行自動識別惡意代碼,更精確地分類出不同種類的惡意代碼,并描述惡意代碼的變體和良性軟件。
現(xiàn)階段,惡意代碼的智能檢測方法[5]主要有兩種,一種是靜態(tài)的檢測方法,一種是動態(tài)檢測方法。動態(tài)檢測方法是將測試代碼作為輸入數(shù)據(jù),運行程序,最后,通過輸出的數(shù)據(jù)找出程序的不足,通過找到不足來改進方法。靜態(tài)檢測方法不需要通過測試代碼來實現(xiàn)功能,可以通過分析程序的源代碼,來找到程序的缺點。本文研究的檢測方法主要是基于靜態(tài)分析的惡意代碼檢測方法。
Opcode是操作代碼的縮寫,操作碼(簡稱操作碼)是機器語言指令的一部分。選定要執(zhí)行的操作。一類完整的機器語言指令包括一個或多個操作數(shù)的規(guī)范或者一個操作碼。操作碼的操作可以包括算術(shù)、數(shù)據(jù)操作、邏輯操作和程序控制。
N-gram模型廣泛應(yīng)用于自然語言處理、信息查詢、生物工程、通信工程等領(lǐng)域。該模型是根據(jù)一種假設(shè),在第n個位置出現(xiàn)的詞只跟第n-1個詞有關(guān),整句出現(xiàn)的概率就是每個詞出現(xiàn)的概率乘積。N-gram語義切分的主要思想就是將文本數(shù)據(jù)從第一個字符開始,在給定的長序列中,從左向右以n個字符的大小來進行滑動,產(chǎn)生長度為n的部分重疊且連續(xù)短子序列作為一個N-gram語義切分之后的短序列片段(gram)。
采用N-gram模型來表達文本信息,能提高文本的相似性度量的準確率。程序代碼本質(zhì)上也是一種文本語言,同樣具有結(jié)構(gòu)和語義特征,所以N-gram可以作為惡意代碼的特征分析和提取方法。
本文提出對惡意代碼進行分類,必須將它們轉(zhuǎn)換為矢量來表示。通常包括兩種方法,其中一種為byte N-gram,它由從二進制代碼中提取的字符字節(jié)序列組成。另一種是以O(shè)p-Code序列表示的OpCode n-gram。預(yù)計OpCode N-gram對于分類為良性或惡意文件更有效。隨后,考慮了幾個OpCode N-gram長度,其中每個N-gram由n個連續(xù)的OpCode組成。并將操作碼的參數(shù)進行忽略,運用G-MEANS方法來作為分類精度的評價指標,運用反匯編軟件將惡意文件進行反匯編并提取出操作碼。本文通過提取不同的OpCode的序列,分別將n取值為、2、3、4、5,選擇文檔頻率、互信息來作為特征選擇的方法,訓(xùn)練分類算法,這對于將代碼分類為良性或惡意來說更有效、更準確。
文檔頻率和詞頻:每一個特征的文檔頻率為DF,DF是指包含該特征樣本的文件數(shù)目。如果特征較小,對訓(xùn)練沒有意義。權(quán)重表示為詞頻TF,,指某個特征在樣本文件中出現(xiàn)的頻率。定義如下:

(1)信息熵:對于一個隨機變量,它的取值范圍是有限可數(shù)的。所以,設(shè)取值概率P=(=x),則的熵定義為:

(2)互信息(信息增益):互信息可以看成一個隨機變量中包含的另一個隨機變量的多少或不確定性的信息量。信息增益本來是信息論中的一個概念,可以表現(xiàn)信息之間的關(guān)系, 是兩個隨機變量用來作為統(tǒng)計相關(guān)性的度量。
定義兩個離散的變量和,則邊緣分布概率為()和(),則互信息的公式:

(3)互信息與信息熵的推導(dǎo)關(guān)系如下:

決策樹中的信息增益就是互信息,決策樹是采用的上面第二種計算方法,即把分類的不同結(jié)果看成不同隨機事件Y,然后把當前選擇的特征看成X,則信息增益就是當前Y的信息熵與已知X情況下的信息熵的差值。
分類[6]是尋找和區(qū)別出數(shù)據(jù)或者信息的類別。以便于分類模型預(yù)測未知的分類對象。通過輸入訓(xùn)練數(shù)據(jù)集,數(shù)據(jù)集的所有記錄都包含一個特定的類別標簽。此類標簽是系統(tǒng)的輸入,通常是一些經(jīng)驗數(shù)據(jù)。一個具體樣本信息的形式可為樣本向量,每一條特征子向量來組成特征向量。
分類目標是通過輸入數(shù)據(jù)表現(xiàn)出來的特征屬性,為每類找出最準確的代表來訓(xùn)練模型。由此生成的分類器用來對未來的測試數(shù)據(jù)進行分類。雖然這些未來的實驗數(shù)據(jù)的類別標簽是我們不知道的,但是我們?nèi)匀豢梢杂纱藴蚀_預(yù)測出這些新數(shù)據(jù)所屬的類別屬性。注意是預(yù)測,不是確定。我們也能夠?qū)?shù)據(jù)中的每一個類別有更深刻的理解。
下面對分類流程作個簡要描述:
訓(xùn)練:訓(xùn)練數(shù)據(jù)集——>特征子集——>訓(xùn)練——>分類模型
分類:測試數(shù)據(jù)集——>特征子集——>判定——>分類結(jié)果
常見的分類算法有:決策樹算法、KNN算法、SVM算法、VSM算法、貝葉斯算法、神經(jīng)網(wǎng)絡(luò)等。
本文設(shè)計在Windows系統(tǒng)中的虛擬機環(huán)境下運行,將惡意代碼先進行反匯編處理為asm匯編文件,之后運用N-gram和DF特征提取方法提取操作碼子序列。運用互信息進行特征選擇給子序列降維。并提高相關(guān)性和降低冗余,生成分類子集,訓(xùn)練分類模型。最后分類器訓(xùn)練完成,可以進行使用測試集來判定是否為惡意代碼。

圖1 惡意代碼系統(tǒng)框架
信息時代下,網(wǎng)絡(luò)安全對于互聯(lián)網(wǎng)的用戶應(yīng)用有重大影響。本文從惡意代碼反編譯文件出的Op-code操作碼出發(fā), 設(shè)計一個基于惡意代碼分類系統(tǒng)的架構(gòu)。分類系統(tǒng)由特征提取和特征選擇、訓(xùn)練分類模型、判定模塊三部分組成,本系統(tǒng)提取的特征能有效地描述惡意代碼局部和全局特征,擺脫局部最優(yōu),能夠準確進行惡意代碼分類及判定。
[1]Yewale A, Singh M.Malware detection based on opco-de frequency[C].International Conference on Advanced Com-munication Control & Computing Technologies. IEEE, 2017.
[2]Manne, Suneetha, et al., “Features Selection Method for Automatic Text Categorization: A Comparative Study with WEKA and RapidMiner Tools”, ICT and Critical Infrastructure: Proceedings of the 48th Annual Convention of Computer Society of India-vol II, Springer International Publishing, 2014.
[3]Fuyong Z ,Tiezhu Z .Malware Detection and Classification Based on N-Grams Attribute Similarity[C].Malware Detection and Classification Based on N-Grams Attribute Similarity. IEEE Computer Society, 2017.
[4]羅養(yǎng)霞.選擇和提升多屬性特征識別惡意代碼[J].小型微型計算機系統(tǒng),2016,37(06):1268-1272.
[5]張小康.基于數(shù)據(jù)挖掘和機器學(xué)習(xí)的惡意代碼檢測技術(shù)研究[D].中國科學(xué)技術(shù)大學(xué),2010.
[6]袁琴琴. 基于決策樹算法的改進與應(yīng)用[D].長安大學(xué), 2006.