◆蔡洪民 陸華成
?
基于有監(jiān)督學習算法的惡意程序分類識別研究
◆蔡洪民1陸華成2
(1.廣州中醫(yī)藥大學信息中心 廣東 510006;2.廣州中醫(yī)藥大學醫(yī)學信息工程學院 廣東 510006)
本文首先使用N-Gram模型和TF-IDF算法對惡意代碼數(shù)據(jù)集進行特征提取,再使用PCA等方法進行數(shù)據(jù)約簡;然后分別使用LogisticRegression、KNN、SVM 及MLP等9種有監(jiān)督學習的算法對惡意代碼特征數(shù)據(jù)進行訓練和分類預測;最后使用混淆矩陣對模型輸出結果進行評估,并將9種算法的分類結果進行對比。實驗結果證明,本文模型采用的9種有監(jiān)督學習算法中LogisticRegression、SVM、MLP等算法等取得良好的效果,有效提高了惡意程序自動分類的識別率,加強了網(wǎng)絡安全。
惡意代碼;有監(jiān)督學習;K近鄰;支持向量機;多層感知機
互聯(lián)網(wǎng)的飛速發(fā)展使得諸如電子政務、電子商務、在線視頻、網(wǎng)絡游戲、視頻交友等功能成為可能,促進了人類社會的發(fā)展;但另一方面惡意程序在互聯(lián)網(wǎng)上泛濫成災,以惡意程序為主要工具的病毒產(chǎn)業(yè)鏈給廣大網(wǎng)民帶來巨大的經(jīng)濟損失和精神傷害。2006年國產(chǎn)病毒“熊貓燒香”從最初的破壞系統(tǒng),發(fā)展到借病毒牟取暴利,獲利數(shù)千萬;2013年,勒索軟件“密碼鎖”在兩個月之內入侵超過23.4萬臺windows電腦,最終黑客“獲利”2700萬美元;2017年5月12日,WanaCrypt勒索病毒攻擊了全球74個國家,包括美國、英國、中國、西班牙、俄羅斯等,造成數(shù)十億的經(jīng)濟損失。
網(wǎng)絡黑產(chǎn)的盛行促進了惡意代碼技術的發(fā)展,特洛伊木馬、蠕蟲、后門、邏輯炸彈等各類惡意程序層出不窮,重則危及系統(tǒng)安全、破壞系統(tǒng)數(shù)據(jù);輕則未經(jīng)用戶許可獲取其敏感信息、曝露個人隱私。惡意代碼編寫者的技術水平越來越高,對抗殺毒軟件的新技術層出不窮,靜態(tài)分析和動態(tài)分析都遇到了很大的挑戰(zhàn):很多惡意代碼采用壓縮、變形和多態(tài)等組合技術對抗靜態(tài)分析;采用反Hook、反調試技術、反虛擬機技術檢測自身是否運行在虛擬分析環(huán)境中以對抗動態(tài)分析[1]。此外,多數(shù)研究產(chǎn)生的惡意代碼分析報告中僅僅羅列惡意代碼的靜態(tài)特征數(shù)據(jù)和捕獲的動態(tài)行為信息,其后仍然需要安全專家對數(shù)據(jù)進行人工篩選和分析,并結合簡單的判別模型對惡意代碼的威脅及類別進行判定,這一過程需要大量的時間。因此,利用研究提取的惡意代碼的靜態(tài)和動態(tài)特征及所生成惡意代碼分析報告,結合數(shù)據(jù)挖掘與人工智能知識,建立合適的判定模型來進行惡意代碼的檢測與分類,是當前研究的一個熱點[2]。
本文研究在python大數(shù)據(jù)處理的基礎上,基于機器學習中的有監(jiān)督學習方法,通過分析惡意程序的靜態(tài)文件特征和動態(tài)程序行為特征深入研究對惡意程序的高準確率自動分類,力求在不需人工判斷和干預的情況下識別惡意程序的類型,使惡意代碼分類變得更加簡單、高效,可以提高反惡意代碼人員的工作效率,減少了這一環(huán)節(jié)的人力和資金的投入,從而加強了網(wǎng)絡安全。
對于惡意代碼的檢測研究,傳統(tǒng)的做法是按照提煉的規(guī)則對病毒樣本進行匹配檢測。但面對大數(shù)據(jù)時代惡意代碼爆炸式的增長趨勢,依賴人工進行惡意代碼分析變得愈發(fā)困難。為了解決這個難點,基于機器學習算法的惡意代碼檢測思想被提出來?;跈C器學習的檢測技術為實現(xiàn)高準確率、自動化的未知惡意代碼檢測提供了行之有效的技術途徑,逐漸成為業(yè)內研究的熱點。
文獻[3]提出了基于字節(jié)序列的特征提取框架,使用K近鄰算法實現(xiàn)了惡意代碼的有效檢測。文獻[4]結合操作碼序列的方式,通過神經(jīng)網(wǎng)絡、決策樹等算法,實現(xiàn)了98.4%的檢測準確率。文獻[5]使用超過3×104個文件的測試集,基于Opcode序列的5種不同分類器進行評估,使得惡意代碼的檢測準確率高達99%。文獻[6]提出了基于最小行為的惡意程序檢測原型系統(tǒng),動態(tài)捕獲惡意程序調用的API及其參數(shù)信息,提取API調用之間的使用依賴輪廓,構建惡意程序的最小行為特征向量,利用卡方校驗算法實現(xiàn)了檢測率更高的檢測。文獻[7]中從樣本程序的API調用信息中提取出惡意程序行為特征,實現(xiàn)了一個基于行為特征的惡意程序檢測與分類系統(tǒng)。文獻[8]中使用Apriori算法研究了關聯(lián)分析技術在惡意代碼檢測工作中的應用,提出了基于異常檢測規(guī)則的惡意代碼檢測系統(tǒng)。文獻[9]中實現(xiàn)了基于動態(tài)分析的行為檢測平臺,通過設置隱蔽的監(jiān)視斷點來捕獲二進制程序運行時所執(zhí)行的各種行為,調研當前惡意程序的行為規(guī)范來構造行為規(guī)則庫,并對該程序的威脅度進行評定并輸出綜合結論。
有監(jiān)督學習使用已知某種或某些特性的樣本作為訓練集,建立一個數(shù)學模型,再用已建立的模型來預測未知樣本。本文研究探討基于機器學習的惡意代碼分類識別的主流技術途徑與解決方案,基于有監(jiān)督學習的多種經(jīng)典算法實現(xiàn)了一個惡意代碼分類識別模型,取得了良好的實驗結果。
Scikit-learn是一個專門用于機器學習python庫,它包含了分類、回歸、無監(jiān)督、數(shù)據(jù)降維、數(shù)據(jù)預處理等多個模塊和常見的大部分機器學習方法。TFLearn是一個在tensorflow上建立的一個模塊化的易于使用的深度學習庫,它提供了基于tensorflow的高層API接口,有助于加快用戶構建深度學習網(wǎng)絡的過程,節(jié)省冗長的代碼時間。
本文提出一種基于有監(jiān)督學習的惡意程序分類檢測模型,該模型在實現(xiàn)上主要使用了Scikit-learn和TFLearn兩種機器學習庫,有效地提高了對惡意程序分類的檢測率。本文模型主要包括特征提取器和有監(jiān)督學習分類器兩個模塊,其中有監(jiān)督學習分類器是整個模型的核心部分[10]。整個工作流程如圖1所示:
(1)Marco Ramilli的MIST數(shù)據(jù)集存儲在JSON文件中,保存的是惡意代碼的特征文本。讀取MIST數(shù)據(jù)集后首先以單詞來單位切分文件,提取N-Gram特征,再使用TF-IDF算法進一步處理提升算法分類性能,完成特征文本向量化[11]。
(2)對其中異常數(shù)據(jù)進行檢測與處理,例如清理丟失或錯誤的數(shù)據(jù),添加、插入和刪除無關數(shù)據(jù)等,最后進行數(shù)據(jù)分組和轉換,以獲得新的、有意義的新數(shù)據(jù)。對于向量化后的特征數(shù)據(jù)再使用PCA和VarianceThreshold方法進行數(shù)據(jù)維度約簡形成新的特征數(shù)據(jù)。然后按文件劃分為訓練集數(shù)據(jù)和測試集數(shù)據(jù)。
圖1 模型的工作流程
(3)本文模型的核心部分為有監(jiān)督學習分類器,基于有監(jiān)督學習的步驟,本文基于scikit-learn庫實現(xiàn)了一個通用模型[12],各種經(jīng)典有監(jiān)督學習算法都可以載入使用。將訓練集的數(shù)據(jù)特征載入9種有監(jiān)督學習分類器,經(jīng)過訓練后對載入的測試集進行分類預測,得到分類結果。然后讀取數(shù)據(jù)集中已有的類別標記進行對比,評估模型的優(yōu)劣。
(4)對于同樣的數(shù)據(jù)集,分別使用深度學習算法中的CNN算法和RNN算法進行同樣的實驗,并一起與步驟(3)的9種模型的實驗結果進行比較[13]。
實驗部分包括實驗環(huán)境與數(shù)據(jù)、實驗過程與結果分析兩部分內容。
本文以Windows Server下的Anaconda作為實驗平臺,使用Marco Ramilli的MIST數(shù)據(jù)集作為實驗數(shù)據(jù)集。MIST主要使用CWSandbox來分析大量的惡意程序,提取靜態(tài)的文件特征和動態(tài)的程序行為特征。MIST目前包含的惡意程序主要分為APT1、Cryto、Locker、Zeus 4類。MIST數(shù)據(jù)集各類型數(shù)據(jù)如表1所示。
表1 實驗所用MIST數(shù)據(jù)集
本文模型采用機器學習領域常用精確率、召回率、F1-Score等三項指標來評估本文實驗模型。在機器學習領域,混淆矩陣是可視化工具,特別用于有監(jiān)督學習,此三種指標用混淆矩陣來解釋[14]。矩陣的列表示預測類的實例,行表示實際類的實例,這樣通過混淆矩陣的一些指標可以衡量算法的精度。
本文模型在某大學校園網(wǎng)環(huán)境中一臺Windows Server服務器上進行實驗測試。實驗過程中對本文模型提出的有監(jiān)督學習分類模型進行測試,并將實驗結果分別與CNN和RNN兩種深度學習模型進行實驗結果對比,如圖2和圖3所示。由圖可知,本文采用的多種有監(jiān)督學習方法比采用CNN算法和RNN算法的深度學習模型的分類效果都要好:針對本實驗數(shù)據(jù),在9種模型中,比較好的實驗結果是LogisticRegression算法、SVM算法和MLP算法。因為數(shù)據(jù)集小的原因,兩種深度學習模型實驗結果并不好,大大劣于9種有監(jiān)督學習算法。
圖2 九種機器學習算法結果對比
圖3 兩種深度學習算法結果對比
在當前網(wǎng)絡黑產(chǎn)導致惡意程序大爆發(fā)的背景下,本文提出一種基于有監(jiān)督學習的惡意程序分類檢測模型,模型使用自然語言處理N-Gram模型和TF-IDF算法進行惡意代碼向量化,使用PCA等方法對數(shù)據(jù)進行降維,基于多種有監(jiān)督學習算法實現(xiàn)了惡意代碼分類模型,并采用Python多進程技術提高了模型運行效率。實驗結果表明,針對小數(shù)據(jù)集樣本,本文基于多種有監(jiān)督學習算法實現(xiàn)的模型在準確率、召回率和F1-Score三項指標上均優(yōu)于基于CNN算法和RNN算法的深度學習模型。
本文使用Marco Ramilli的MIST數(shù)據(jù)集進行惡意代碼分類的研究,數(shù)據(jù)量較小,下一步將基于更大的數(shù)據(jù)集展開研究。
[1]張東,張堯,劉剛,宋桂香.基于機器學習算法的主機惡意代碼檢測技術研究[J].網(wǎng)絡與信息安全學報,2017.
[2]韓奕,姜建國,仇新梁,馬新建.趙雙.基于云計算的的的惡意程序檢測平臺設計與實現(xiàn)[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].系統(tǒng)工程與電子技術,2012.
[7]鄭春陽.惡意程序檢測與分類系統(tǒng)的設計與實現(xiàn)[D].西安:西安電子科技大學,2013.
[8]黃超毅.惡意代碼異常檢測系統(tǒng)的需求分析與架構設計[D].昆明:云南大學,2013.
[9]康凱.二進制程序行為檢測分析平臺[D].成都:電子科技大學,2010.
[10]張躍騫,何涇沙.基于機器學習的 Windows 環(huán)境下惡意程序檢測系統(tǒng)[J].重慶郵電大學學報(自然科學版),2014.
[11]李鵬飛.基于操作碼序列和機器學習的惡意程序檢測技術研究[D].北京:北京郵電大學,2017.
[12]曹瑩.基于行為特征的惡意程序動態(tài)分析與檢測方法研究 [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]徐健鋒,苗奪謙,張遠健.基于混淆矩陣的多目標優(yōu)化三支決策模型[J].模式識別與人工智能,2017.