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

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

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

(3)互信息與信息熵的推導關系如下:

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

圖1 惡意代碼系統框架
信息時代下,網絡安全對于互聯網的用戶應用有重大影響。本文從惡意代碼反編譯文件出的Op-code操作碼出發, 設計一個基于惡意代碼分類系統的架構。分類系統由特征提取和特征選擇、訓練分類模型、判定模塊三部分組成,本系統提取的特征能有效地描述惡意代碼局部和全局特征,擺脫局部最優,能夠準確進行惡意代碼分類及判定。
[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]羅養霞.選擇和提升多屬性特征識別惡意代碼[J].小型微型計算機系統,2016,37(06):1268-1272.
[5]張小康.基于數據挖掘和機器學習的惡意代碼檢測技術研究[D].中國科學技術大學,2010.
[6]袁琴琴. 基于決策樹算法的改進與應用[D].長安大學, 2006.