基于模糊加權隨機森林算法的惡意軟件檢測
2008年在安全社區中所知道的windows惡意可執行軟件大約有1000多萬個,2013年這個數字達到了1億,2020年安全社區已知的windows惡意可執行軟件數量已經超過5億[1],這個數字還在持續增長。
面對如此龐大的數量,基于特征的人工或半人工檢測技術已經難以應付需求。近年來,基于機器學習的惡意軟件檢測技術逐漸地被運用在實際檢測中,機器學習的方法使得檢測網絡攻擊的大部分工作自動化,并大大減少攻擊所需要的內存。D. Gavrilu?[2]等人提出了一個通用框架,使用不同的機器學習算法對惡意軟件和良性軟件進行分類。
Rezaei Tina[3]等人提取PE文件頭的原始字節作為特征,給出了一種新的深度學習方法,在深度神經網絡訓練過程中使用聚類算法,根據聚類結果更新網絡參數,重復此過程進行惡意軟件檢測。
Azeez[4]等人提出了一種基于集成學習的惡意軟件檢測方法,基礎階段分類由全連接和一維卷積神經網絡堆疊完成,末階段分類由機器學習算法完成,在PE文件數據集上進行實驗。
Raff E[5]等人提出了一種基于卷積神經網絡模型的惡意軟件檢測模型,測試整個文件的二進制代碼。Jeon S[6]等人提出了一種從可執行文件中提取操作碼序列的算法和一種使用操作碼序列作為輸入的基于深度學習的惡意軟件檢測方法。
本文對傳統的隨機森林算法進行改進,傳統算法采用投票選取機制確定最終分類結果,體現不出每棵樹的差異性,對結果有一定影響。
故通過卡方檢驗確定出每棵樹的權重,采用加權投票法,并將模糊理論應用到決策樹中。同時,對提取出的PE文件的靜態特征使用哈希技巧降維。
通過對算法的改進,以及使用哈希技巧處理特征,能提高效率并有效地保證分類效果。
惡意軟件的特征提取
對惡意軟件的分析[8-11]分為靜態分析和動態分析,從靜態分析中,可提取靜態特征如:字符串特征、PE頭特征、導入地址表特征等;從動態分析中,可提取動態特征如:API調用特征、系統修改特征和網絡行為特征等。
1.1靜態分析
(1)軟件二進制的字符串特征是文件可打印字符中所有連續字符串,這些字符串至少具有一定的最小長度,一個基于機器學習的檢測器可能使用數百萬個在二進制軟件文件中出現的字符串作為特征。例如,對一個二進制文件,若包含以下可打印字符序列:
[“A”, “The”, “PE executable”, “Malicious payload”]
設置最小長度為5個字符,其中“PE executable”和“Malicious payload”超出五個字符,可將這兩個字符串作為特征。
(2)使用python模塊pefile解析PE文件格式,可以取得從DOS_Header到OPTIONAL_HEADER再到PE Sections的每個結構,列出二進制文件將加載的DLL文件,以及它將在這些DLL文件中所請求的函數調用,并將這些基本信息作為惡意軟件的靜態特征。
以文件ircbot.exe為例,從其PE字段中提取節數據,如表1所示:

其中,VirtualAddress是這些節的虛擬內存地址基址,可將其視作節的內存地址基址,Misc_VirtualSize指出了節被加載后所需的內存大小,SizeOfRawData表示該節在該內存塊中所占用的數據量,此處以十進制顯示。
(3)除了對基礎的靜態特征進行分析,反匯編和逆向工程是對惡意軟件樣本進行深入靜態分析的核心。惡意軟件作者在編寫程序時常采用C或C++等高級語言,再通過編譯器將源代碼進行編譯生成x86二進制編碼,通過對惡意軟件程序反匯編可以了解其核心行為。使用IDA Pro等反匯編器進行分析,以ircbot.exe為例,對其中一部分匯編代碼段反匯編,輸出如圖1所示結果。

圖1 ircbot.exe的部分反匯編輸出
Fig. 1 Partial disassembly output of ircbot.exe
1.2 動態分析
靜態分析側重于軟件在文件形式上的表現,而動態分析[11]則是在一個安全、受控的環境中運行惡意軟件從而獲得其行為特征。常使用沙箱、虛擬機來模擬軟件的執行過程,在運行時發生的典型的行為有:文件系統的修改,注冊表的修改,系統配置的更改,加載設備驅動程序,以及發出HTTP請求等。通過一些開源的安全工具可以簡潔高效的獲取惡意樣本的靜態和基本動態行為特征。以ircbot.exe為例,在騰訊哈勃分析系統平臺[12]提交并上傳文件,可獲得如圖2所示的基本行為特征。


圖 2 ircbot.exe基本行為特征
Fig. 2 Basic behavioral characteristics of ircbot.exe
改進的隨機森林算法
隨著惡意軟件數量的驟增,傳統的技術在效率上有欠缺,機器學習[13]技術逐漸運用到大量樣本的惡意軟件分析中。隨機森林是常用的用于檢測惡意軟件的方法,它由數百或數千個決策樹組成,以不同的方式訓練多個決策樹,為確定一個二進制文件是惡意還是正常的,使用決策樹進行投票,二進制文件為惡意的概率是正投票決策樹的數量除以所有決策樹的總數。
2.1 隨機森林算法
隨機森林[14]的出現主要是為了解決單一決策樹可能出現的很大的誤差和overfitting的問題,它是一種典型的集成算法,集成中的個體學習器應盡可能相互獨立。其隨機性體現在兩方面,一是對訓練數據集隨機抽樣,二是每棵決策樹都隨機選擇一定是數量特征來對其結點進行分裂。該算法需要兩個主要參數:構建的決策樹的個數t,決策樹中每個節點進行分裂時需要考慮的輸入特征的個數m。算法關鍵步驟如下:
(1)設原始樣本集有N個樣例,每輪從原始樣本集中有放回地抽取N個樣例,得到大小為N的訓練集;共進行t輪的抽取,則每輪抽取的訓練集分別為
。
(2)設訓練樣例的輸入特征的個數為M,且m遠小于M,在每棵決策樹的每個節點進行分裂時,從M個特征里隨機選擇m個輸入特征,并從m個輸入特征里選擇最佳特征進行分裂。
(3)對于每個測試樣例,綜合多個決策樹的分類結果來作為隨機森林的分類結果。
隨機森林中的樹是清晰決策樹,但在真實的分類案例中,很多屬性的概念是模糊的,并不呈現出非此即彼的關系,例如現實世界中的大小、美丑、長短等模糊概念無法用傳統決策樹理論進行劃分;其次每棵樹在構建的過程中選取的屬性不同,應具有不同的分類性能,但最終的分類結果按多數服從少數確定,這兩方面的缺陷使得隨機森林還有改進的空間。
2.2 改進的算法
2.2.1模糊決策樹
傳統決策樹在分類過程中以“非此即彼”作為分類標準,而根據二進制文件的字符串特征判斷該文件是否惡意時,并不能以一個絕對的標準去判斷,比如,在提取某軟件的IAT內容后,可以得知該軟件使用了WriteFile和CreateFileA等函數,這些函數在正常的軟件中也會存在。若以此作為決策樹中的一個分支點實際上是不合理的,將模糊理論應用到決策樹中,可以處理此類具有模糊性的特征。模糊決策樹的相關定義[15,16]如下:
定義1設有一個模糊信息系統
其中
是對象的非空有限集合,
是模糊特征的集合,D是標簽集合 。對于任意的模糊特征Ai,i=1,2...n,由ki個模糊語言術語構成,記
;每個模糊語言術語
或
是一個模糊集,用扎德表示法可表示為:
;
其中
表示對
的特征隸屬度。
定義2 隸屬度函數也被稱為模糊集的特征函數,它將域中的每一個元素的隸屬度關聯到一個對應的模糊集 ,隸屬度一般在0-1之間。隸屬函數的選擇通常有三種方法:直覺法、二元對比法、模糊統計實驗法。
定義3 在CART決策樹[17]中使用基尼指數來選擇劃分屬性,選擇使得劃分后基尼指數最小的屬性作為最優劃分屬性。對于模糊決策樹,給定一個數據集D,其中包含來自n個類別的N個樣本和屬性Ai的模糊集
(每個屬性可能有m種值)。令
是D中類Ck的模糊子集,并令|D|是模糊數據集D中隸屬度值的總和。則D的基尼指數Gini(D)為:
。
定義4 如果將數據集D拆分為k個模糊子集{D1,D2,D3,...Dk},拆分后的基尼指數為
。
其中|Ni|是模糊集|Dk|中所有元素的隸屬度之和,|N|是模糊集|D|中的隸屬度值的總和。
模糊決策樹是將樹中的每個結點交集看作空間上的模糊子集,其基本算法可以概括如下:
(1) 針對樣本的不同特征選擇合適的隸屬函數,對數據進行模糊化處理。
(2) 計算當前數據集的模糊基尼指數,對每一個特征計算其劃分后的模糊基尼指數。
(3) 選擇劃分后基尼指數最小的特征和對應的切分點作為最優特征和最佳切分點,將訓練數據依次分配到子節點中。
(4) 對子結點遞歸調用(2)、(3)。
(5) 遞歸返回得到情形與決策樹相似,有三種情形:(a)當前結點包含的樣本全屬于同一類別;(b)當前特征集為空;(c)當前結點包含的樣本集為空。
2.2.2 加權隨機森林
隨機森林中的決策樹在每次分裂前都會從n個特征中隨機選擇m個特征(m據其分類能力賦予每棵樹不同的權值。卡方檢驗[18]用于統計樣本的實際觀測值與理論推斷值得偏離程度,在特征提取時通過對特征進行打分然后排序,選擇排名靠前的特征。基于卡方檢驗的統計特性,計算訓練數據集中n個特征與類別屬性之間的卡方統計量,統計量越大表示二者的相關性越強。設共有t棵樹,由于每棵樹所選擇的屬性不同,可先將每棵樹所有特征的卡方統計量求和,記作
,最終該樹的權重為
.
惡意軟件檢測器
3.1 特征哈希[19]
在構建檢測器的過程中,通過靜態或動態分析使用所有的特征并不是最佳方案。一是在提取特征過程中容易影響掃描文件的速度,二是可能會遇到內存不足的問題。當提取字符串特征時,對訓練數據中每個獨特字符,都必須設置一個對應的字符,這將出現成千上萬的的特征,采用特征哈希可以解決這一問題。
假設有100萬個特征,使用哈希技巧可以將這些特征壓縮為一個長度為4000個條目的特征向量,然后將原始特征的值作為4000維特征向量中索引處的值。本文在提取特征階段,使用哈希技巧壓縮特征,達到降維的效果。
3.2 訓練檢測器
圖 3 實驗流程圖
Fig. 3 Experimental flowchart
Step1 提取惡意與正常二進制文件中所有最小長度為5的可打印字符串,使用哈希技巧壓縮特征維度;
Step2 采用卡方檢驗計算每個特征的與類別屬性的相關性,記錄卡方統計量;
Step3 數據標準化處理,選擇隸屬度函數,對特征數組模糊化;
Step4 模型采用改進的隨機森林算法,對于標簽列,惡意軟件記作1,正常軟件記作0;
Step5 通過加權結果判斷該軟件是否為惡意軟件。
3.3 實驗結果
為測試改進后的算法性能,將改進后的算法(FW-RF)與其他機器學習算法進行對比實驗,再單獨與隨機森林算法進行對比。
硬件環境為:Intel(R)Core(TM)i7-10750H@2.60GHz。
軟件環境為:Windows10操作系統,使用python編程實現。
實驗樣本由http://www.malwaredatascience.com/提供,樣本包括990個惡意軟件,333個良性軟件。首先設置特征哈希后的維度為100,實驗結果如表2所示,通過指標:準確度(ACC)、精確度(PREC)、召回率(REC)可得出改進后的算法(FW-RF)較優于其他方法。
表 2 多種方法實驗結果
Table 2 Experimental results of various methods

考慮隨機森林中樹的棵樹對結果的影響,將傳統算法與改進算法進行對比實驗,所得結果如圖4-(a)所示,從整體上看隨著決策樹數量的增加,準確率也相對得到提升,但數量到達一定時準確率不會再出現明顯的提高。決策樹數量為45棵時FW-RF算法準確率為90.94%,所以固定決策樹棵樹為45棵,考慮準確率與壓縮維度的關系。從圖4-(b)中可知,對于本文實驗數據,隨著維度的降低兩種算法的準確率都在一定范圍內波動,維度設置在1000時FW-RF算法準確率達到94.53%。

圖 4 決策樹數量、壓縮維度與準確率的關系
Fig. 4 The relationship between the number of decision trees, compression dimensions and accuracy
結論
本文針對惡意軟件的檢測提出了一種改進的隨機森林算法,首先針對清晰決策樹無法處理模糊信息這一缺陷,采用模糊決策樹來替代,其次隨機森林中不同決策樹具有相同的權重,通過計算每棵樹中特征的卡方統計量來賦予樹權重。
在特征提取的過程中使用哈希技巧壓縮特征,最終實驗結果可知改進的算法具有較好的分類效果,且決策樹的數量達到一定值時準確率最高,其次維度設置在1000以內時,準確率在一定范圍內波動,但整體上準確率都要高于隨機森林算法。
參考文獻
[1] The Independent IT-Security Institute. 2021 AV-TEST[DB/OL]. [2021-08-31]. https://www.av-test.org/en/statistic/malware/.
[2] Gavrilut D, Cimpoesu M, Dan A, et al. Malware detection using machine learning[C]// International Multiconference on Computer Science & Information Technology. IEEE, 2010: 735-741.
[3] Rezaei Tina, Manavi Farnoush, Hamzeh Ali. A PE header-based method for malware detection using clustering and deep embedding techniques[J/OL]. Journal of Information Security and Applications: 60.(2021): doi:10.1016/J.JISA.2021.102876.
[4] Azeez Nureni Ayofe, Odufuwa Oluwanifise Ebunoluwa,Misra, Misra Sanjay, et al. Windows PE Malware Detection Using Ensemble Learning[J]. Informatics, 2021, 8(1):1-22.
[5] Raff E, Barker J, Sylvester J, et al. Malware detection by eating a whole exe[C]//Workshops at the Thirty-Second AAAI Conference on Artificial Intelligence. Louisiana, USA:AAAI Press, 2018: 268-276.
[6] Jeon S, Moon J. Malware-detection method with a convolutional recurrent neural network using opcode sequences[J]. Information Sciences, 2020, 535: 1-15.
[7] Dama?evi?ius Robertas, Ven?kauskas Algimantas, Toldinas Jevgenijus, et al. Ensemble-Based Classification Using Neural Networks and Machine Learning Models for Windows PE Malware Detection[J]. Electronics,2021,10(4): 2-5.
[8] S. L. Shiva Darshan,C. D. Jaidhar. Windows malware detection system based on LSVC recommended hybrid features[J]. Journal of Computer Virology and Hacking Techniques,2019,15(2): 127-146.
[9] Joshua Saxe, Hillary Sanders. 基于數據科學的惡意軟件分析[M]. 何能強, 嚴寒冰, 譯. 1版. 北京: 機械工業出版社, 2020: 2-6, 130-139.
[10]白金榮,王俊峰,趙宗渠.基于PE靜態結構特征的惡意軟件檢測方法[J].計算機科學,2013,40(01):122-126.
[11]汪嘉來,張超,戚旭衍,榮易.Windows平臺惡意軟件智能檢測綜述[J].計算機研究與發展,2021,58(05):977-994.
[12] 騰訊公司.騰訊哈勃分析系統[CP/DK] . [2021-08-31]. https://habo.qq.com.
[13]趙凌園. 基于機器學習的惡意軟件檢測方法研究[D].成都: 電子科技大學,2019.
[14]曹正鳳. 隨機森林算法優化研究[D]. 北京: 首都經濟貿易大學,2014.
[15] 翟俊海,王華超,張素芳.一種基于模糊熵的模糊分類算法[J].計算機工程與應用,2010,46(20):176-180.
[16] N. M. Abu-halaweh and R. W. Harrison, "FDT 1.0: An improved fuzzy decision tree induction tool," 2010 Annual Meeting of the North American Fuzzy Information Processing Society, 2010: 1-5.
[17]張亮,寧芊.CART決策樹的兩種改進及應用[J].計算機工程與設計,2015,36(05):1209-1213.
[18]馬曉東. 基于加權決策樹的隨機森林模型優化[D]. 武漢: 華中師范大學,2017.
[19] Weinberger K, Dasgupta A, Attenberg J, et al. Feature Hashing for Large Scale Multitask Learning[J]. ACM, 2009: 1113-1120.
