◆蔡洪民 陸華成
?
基于有監督學習算法的惡意程序分類識別研究
◆蔡洪民1陸華成2
(1.廣州中醫藥大學信息中心 廣東 510006;2.廣州中醫藥大學醫學信息工程學院 廣東 510006)
本文首先使用N-Gram模型和TF-IDF算法對惡意代碼數據集進行特征提取,再使用PCA等方法進行數據約簡;然后分別使用LogisticRegression、KNN、SVM 及MLP等9種有監督學習的算法對惡意代碼特征數據進行訓練和分類預測;最后使用混淆矩陣對模型輸出結果進行評估,并將9種算法的分類結果進行對比。實驗結果證明,本文模型采用的9種有監督學習算法中LogisticRegression、SVM、MLP等算法等取得良好的效果,有效提高了惡意程序自動分類的識別率,加強了網絡安全。
惡意代碼;有監督學習;K近鄰;支持向量機;多層感知機
互聯網的飛速發展使得諸如電子政務、電子商務、在線視頻、網絡游戲、視頻交友等功能成為可能,促進了人類社會的發展;但另一方面惡意程序在互聯網上泛濫成災,以惡意程序為主要工具的病毒產業鏈給廣大網民帶來巨大的經濟損失和精神傷害。2006年國產病毒“熊貓燒香”從最初的破壞系統,發展到借病毒牟取暴利,獲利數千萬;2013年,勒索軟件“密碼鎖”在兩個月之內入侵超過23.4萬臺windows電腦,最終黑客“獲利”2700萬美元;2017年5月12日,WanaCrypt勒索病毒攻擊了全球74個國家,包括美國、英國、中國、西班牙、俄羅斯等,造成數十億的經濟損失。
網絡黑產的盛行促進了惡意代碼技術的發展,特洛伊木馬、蠕蟲、后門、邏輯炸彈等各類惡意程序層出不窮,重則危及系統安全、破壞系統數據;輕則未經用戶許可獲取其敏感信息、曝露個人隱私。惡意代碼編寫者的技術水平越來越高,對抗殺毒軟件的新技術層出不窮,靜態分析和動態分析都遇到了很大的挑戰:很多惡意代碼采用壓縮、變形和多態等組合技術對抗靜態分析;采用反Hook、反調試技術、反虛擬機技術檢測自身是否運行在虛擬分析環境中以對抗動態分析[1]。此外,多數研究產生的惡意代碼分析報告中僅僅羅列惡意代碼的靜態特征數據和捕獲的動態行為信息,其后仍然需要安全專家對數據進行人工篩選和分析,并結合簡單的判別模型對惡意代碼的威脅及類別進行判定,這一過程需要大量的時間。因此,利用研究提取的惡意代碼的靜態和動態特征及所生成惡意代碼分析報告,結合數據挖掘與人工智能知識,建立合適的判定模型來進行惡意代碼的檢測與分類,是當前研究的一個熱點[2]。
本文研究在python大數據處理的基礎上,基于機器學習中的有監督學習方法,通過分析惡意程序的靜態文件特征和動態程序行為特征深入研究對惡意程序的高準確率自動分類,力求在不需人工判斷和干預的情況下識別惡意程序的類型,使惡意代碼分類變得更加簡單、高效,可以提高反惡意代碼人員的工作效率,減少了這一環節的人力和資金的投入,從而加強了網絡安全。
對于惡意代碼的檢測研究,傳統的做法是按照提煉的規則對病毒樣本進行匹配檢測。但面對大數據時代惡意代碼爆炸式的增長趨勢,依賴人工進行惡意代碼分析變得愈發困難。為了解決這個難點,基于機器學習算法的惡意代碼檢測思想被提出來。基于機器學習的檢測技術為實現高準確率、自動化的未知惡意代碼檢測提供了行之有效的技術途徑,逐漸成為業內研究的熱點。
文獻[3]提出了基于字節序列的特征提取框架,使用K近鄰算法實現了惡意代碼的有效檢測。文獻[4]結合操作碼序列的方式,通過神經網絡、決策樹等算法,實現了98.4%的檢測準確率。文獻[5]使用超過3×104個文件的測試集,基于Opcode序列的5種不同分類器進行評估,使得惡意代碼的檢測準確率高達99%。文獻[6]提出了基于最小行為的惡意程序檢測原型系統,動態捕獲惡意程序調用的API及其參數信息,提取API調用之間的使用依賴輪廓,構建惡意程序的最小行為特征向量,利用卡方校驗算法實現了檢測率更高的檢測。文獻[7]中從樣本程序的API調用信息中提取出惡意程序行為特征,實現了一個基于行為特征的惡意程序檢測與分類系統。文獻[8]中使用Apriori算法研究了關聯分析技術在惡意代碼檢測工作中的應用,提出了基于異常檢測規則的惡意代碼檢測系統。文獻[9]中實現了基于動態分析的行為檢測平臺,通過設置隱蔽的監視斷點來捕獲二進制程序運行時所執行的各種行為,調研當前惡意程序的行為規范來構造行為規則庫,并對該程序的威脅度進行評定并輸出綜合結論。
有監督學習使用已知某種或某些特性的樣本作為訓練集,建立一個數學模型,再用已建立的模型來預測未知樣本。本文研究探討基于機器學習的惡意代碼分類識別的主流技術途徑與解決方案,基于有監督學習的多種經典算法實現了一個惡意代碼分類識別模型,取得了良好的實驗結果。
Scikit-learn是一個專門用于機器學習python庫,它包含了分類、回歸、無監督、數據降維、數據預處理等多個模塊和常見的大部分機器學習方法。TFLearn是一個在tensorflow上建立的一個模塊化的易于使用的深度學習庫,它提供了基于tensorflow的高層API接口,有助于加快用戶構建深度學習網絡的過程,節省冗長的代碼時間。
本文提出一種基于有監督學習的惡意程序分類檢測模型,該模型在實現上主要使用了Scikit-learn和TFLearn兩種機器學習庫,有效地提高了對惡意程序分類的檢測率。本文模型主要包括特征提取器和有監督學習分類器兩個模塊,其中有監督學習分類器是整個模型的核心部分[10]。整個工作流程如圖1所示:
(1)Marco Ramilli的MIST數據集存儲在JSON文件中,保存的是惡意代碼的特征文本。讀取MIST數據集后首先以單詞來單位切分文件,提取N-Gram特征,再使用TF-IDF算法進一步處理提升算法分類性能,完成特征文本向量化[11]。
(2)對其中異常數據進行檢測與處理,例如清理丟失或錯誤的數據,添加、插入和刪除無關數據等,最后進行數據分組和轉換,以獲得新的、有意義的新數據。對于向量化后的特征數據再使用PCA和VarianceThreshold方法進行數據維度約簡形成新的特征數據。然后按文件劃分為訓練集數據和測試集數據。

圖1 模型的工作流程
(3)本文模型的核心部分為有監督學習分類器,基于有監督學習的步驟,本文基于scikit-learn庫實現了一個通用模型[12],各種經典有監督學習算法都可以載入使用。將訓練集的數據特征載入9種有監督學習分類器,經過訓練后對載入的測試集進行分類預測,得到分類結果。然后讀取數據集中已有的類別標記進行對比,評估模型的優劣。
(4)對于同樣的數據集,分別使用深度學習算法中的CNN算法和RNN算法進行同樣的實驗,并一起與步驟(3)的9種模型的實驗結果進行比較[13]。
實驗部分包括實驗環境與數據、實驗過程與結果分析兩部分內容。
本文以Windows Server下的Anaconda作為實驗平臺,使用Marco Ramilli的MIST數據集作為實驗數據集。MIST主要使用CWSandbox來分析大量的惡意程序,提取靜態的文件特征和動態的程序行為特征。MIST目前包含的惡意程序主要分為APT1、Cryto、Locker、Zeus 4類。MIST數據集各類型數據如表1所示。

表1 實驗所用MIST數據集
本文模型采用機器學習領域常用精確率、召回率、F1-Score等三項指標來評估本文實驗模型。在機器學習領域,混淆矩陣是可視化工具,特別用于有監督學習,此三種指標用混淆矩陣來解釋[14]。矩陣的列表示預測類的實例,行表示實際類的實例,這樣通過混淆矩陣的一些指標可以衡量算法的精度。
本文模型在某大學校園網環境中一臺Windows Server服務器上進行實驗測試。實驗過程中對本文模型提出的有監督學習分類模型進行測試,并將實驗結果分別與CNN和RNN兩種深度學習模型進行實驗結果對比,如圖2和圖3所示。由圖可知,本文采用的多種有監督學習方法比采用CNN算法和RNN算法的深度學習模型的分類效果都要好:針對本實驗數據,在9種模型中,比較好的實驗結果是LogisticRegression算法、SVM算法和MLP算法。因為數據集小的原因,兩種深度學習模型實驗結果并不好,大大劣于9種有監督學習算法。

圖2 九種機器學習算法結果對比

圖3 兩種深度學習算法結果對比
在當前網絡黑產導致惡意程序大爆發的背景下,本文提出一種基于有監督學習的惡意程序分類檢測模型,模型使用自然語言處理N-Gram模型和TF-IDF算法進行惡意代碼向量化,使用PCA等方法對數據進行降維,基于多種有監督學習算法實現了惡意代碼分類模型,并采用Python多進程技術提高了模型運行效率。實驗結果表明,針對小數據集樣本,本文基于多種有監督學習算法實現的模型在準確率、召回率和F1-Score三項指標上均優于基于CNN算法和RNN算法的深度學習模型。
本文使用Marco Ramilli的MIST數據集進行惡意代碼分類的研究,數據量較小,下一步將基于更大的數據集展開研究。
[1]張東,張堯,劉剛,宋桂香.基于機器學習算法的主機惡意代碼檢測技術研究[J].網絡與信息安全學報,2017.
[2]韓奕,姜建國,仇新梁,馬新建.趙雙.基于云計算的的的惡意程序檢測平臺設計與實現[J],計算機工程,2014.
[3]T Abou-Assaleh,N Cercone,V Keselj,R Sweidan,N-gram- based detection of new malicious code[C]// The28th Annual Inter national Computer Software and Applications Conference (COM PSAC).2004:41-42.
[4]M Siddiqui,MC Wang,J Lee,Data mining methods for mal-ware detection using instruction sequences[C]//The Artificial Intel-ligence and Applications (AIA).2008:358-363.
[5]R Moskovitch,C Feher,N Tzachar,E Berger,M Gitelman, Un known malcode detection using opcode representation[C]//Europ ean Con-ference on Intelligence and Security Informatics(Euro ISI).2008:204-215.
[6]苗啟廣,王蘊,曹瑩,劉文闖.面向最小行為的惡意程序檢測研究[J].系統工程與電子技術,2012.
[7]鄭春陽.惡意程序檢測與分類系統的設計與實現[D].西安:西安電子科技大學,2013.
[8]黃超毅.惡意代碼異常檢測系統的需求分析與架構設計[D].昆明:云南大學,2013.
[9]康凱.二進制程序行為檢測分析平臺[D].成都:電子科技大學,2010.
[10]張躍騫,何涇沙.基于機器學習的 Windows 環境下惡意程序檢測系統[J].重慶郵電大學學報(自然科學版),2014.
[11]李鵬飛.基于操作碼序列和機器學習的惡意程序檢測技術研究[D].北京:北京郵電大學,2017.
[12]曹瑩.基于行為特征的惡意程序動態分析與檢測方法研究 [D].西安:西安電子科技大學,2014.
[13]MJ Kang.JW Kang.Intrusion Detection System Using Deep Neural Network for In-Vehicle Network Security[C].PLOS ONE,2016,11(6):1-17.
[14]徐健鋒,苗奪謙,張遠健.基于混淆矩陣的多目標優化三支決策模型[J].模式識別與人工智能,2017.