文獻(xiàn)標(biāo)識(shí)碼:A
DOI: 10.19358/j.issn.2096-5133.2018.07.001
中文引用格式:李雪虎,王發(fā)明,戰(zhàn)凱.基于大樣本的隨機(jī)森林惡意代碼檢測(cè)與分類算法[J].信息技術(shù)與網(wǎng)絡(luò)安全,2018,37(7):3-5,21.
0 引言
隨著互聯(lián)網(wǎng)的快速發(fā)展,計(jì)算機(jī)安全問題已經(jīng)提高到國(guó)家安全的戰(zhàn)略角度,但是在互聯(lián)網(wǎng)上傳播的惡意代碼的數(shù)量、種類等都在增加。根據(jù)江民病毒疫情監(jiān)測(cè)預(yù)警中心提供的數(shù)據(jù)顯示[1]:2018年5月,新增病毒1 140種,感染計(jì)算機(jī)13 569臺(tái)。北京、上海、廣州是主要的被感染和受攻擊地區(qū)。雖然惡意代碼一直在持續(xù)的增長(zhǎng),但是大部分惡意代碼在編寫過程中都是關(guān)鍵模塊重利用,其特征行為具有高度的相似性[2]。
首先,惡意代碼為了偽裝自身,會(huì)對(duì)自身代碼結(jié)構(gòu)進(jìn)行修改,而修改自身代碼結(jié)構(gòu)的方法則具有規(guī)律性;其次,惡意代碼為了實(shí)現(xiàn)獲取計(jì)算機(jī)相關(guān)權(quán)限、修改計(jì)算機(jī)重要文件等敏感操作,就需要調(diào)用系統(tǒng)相關(guān)的API函數(shù)來達(dá)到目的。所以本文根據(jù)以上惡意代碼的特點(diǎn)通過機(jī)器學(xué)習(xí)的方法實(shí)現(xiàn)對(duì)惡意代碼的辨別與分類。
1 惡意代碼分類算法相關(guān)研究
1.1 基于API調(diào)用的特征提取
應(yīng)用程序編程接口(Application Programming Interface, API)是可以作為惡意代碼分類特征使用的,惡意程序通過調(diào)用一些API(主要是系統(tǒng)底層API),達(dá)到竊取用戶敏感信息或者獲取本計(jì)相操作權(quán)限等,而這些API在大部分的惡意代碼中均被大量使用,本文將這些API稱為敏感API。在文獻(xiàn)[3]中已經(jīng)證實(shí)在同一種分類算法中,使用敏感API得到的分類結(jié)果準(zhǔn)確度要優(yōu)于不使用敏感API得到的分類結(jié)果準(zhǔn)確度,故本文將敏感API作為惡意代碼分類的特征向量。
一般提取惡意代碼特征主要有兩種方法:靜態(tài)分析方法和動(dòng)態(tài)分析方法。靜態(tài)分析主要使用IDA[4]、JEB等反匯編工具,主要特征有PE文件結(jié)構(gòu)信息和敏感API調(diào)用等。動(dòng)態(tài)分析方法主要是使用沙箱[5](例如布谷鳥)等程序模擬操作系統(tǒng)環(huán)境,監(jiān)測(cè)其中未知程序的行為并與已知的惡意代碼行為進(jìn)行匹配,如果匹配成功,則可判定未知程序?yàn)閻阂獬绦?。但是在具體的應(yīng)用過程中發(fā)現(xiàn),由于系統(tǒng)API層次較低,沙箱進(jìn)行行為監(jiān)控時(shí),難以獲得行為的準(zhǔn)確含義,并且沙箱分析出結(jié)果的速度緩慢,耗時(shí)較長(zhǎng)。由于這些缺點(diǎn)的存在,故本文采用靜態(tài)特征分析的方法。
得到特征數(shù)據(jù)以后,就可以使用機(jī)器學(xué)習(xí)的相關(guān)模型進(jìn)行惡意代碼的分類識(shí)別。分類算法有很多,常見的算法有K近鄰(K-Nearest Neighbor, KNN)[6]、支持向量機(jī)(Support Vector Machine, SVM)[7]、邏輯回歸(Logistic Regression)[8]、卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)[9]等。本文主要是使用隨機(jī)森林進(jìn)行惡意代碼分類。
1.2 隨機(jī)森林
隨機(jī)森林可以解釋為若干自變量(X1,X2,…,Xi,…,Xn) 對(duì)因變量Y的作用。如果因變量Y有m個(gè)觀測(cè)值,有n個(gè)自變量與之相關(guān)(并且大多數(shù)情況下,m是遠(yuǎn)遠(yuǎn)小于n的);在構(gòu)建決策分類樹的時(shí)候,隨機(jī)森林會(huì)隨機(jī)地在原數(shù)據(jù)中重新選擇m個(gè)觀測(cè)值,其中有的觀測(cè)值可能被多次選擇,有的可能一次都沒有被選到。根據(jù)選擇的樣本進(jìn)行決策樹建模,然后組合多棵決策樹的預(yù)測(cè),通過投票得出最終的預(yù)測(cè)結(jié)果。
1.3 隨機(jī)森林算法實(shí)現(xiàn)
本文的隨機(jī)森林算法是在Spark下實(shí)現(xiàn)的,采用的是Python第三方庫(kù)Pyspark。實(shí)驗(yàn)分為兩個(gè),第一個(gè)實(shí)驗(yàn)的輸入為樣本文件的文件特征,包括文件類型、文件大小、文件導(dǎo)入表、文件基地址、文件版本等50個(gè)特征作為輸入;第二個(gè)實(shí)驗(yàn)的輸入為敏感API特征,其中調(diào)節(jié)的參數(shù)為:numTrees=150,maxDepth=30,labelCol=“indexed”,featuresCol='features',seed=42,其余參數(shù)保持不變。本文將總數(shù)據(jù)集的80%用于訓(xùn)練,20%用于測(cè)試。
2 實(shí)驗(yàn)分析
2.1 實(shí)驗(yàn)數(shù)據(jù)集
惡意代碼數(shù)據(jù)集是進(jìn)行惡意代碼分析的基礎(chǔ),機(jī)器學(xué)習(xí)算法只有結(jié)合相關(guān)的數(shù)據(jù)集對(duì)樣本進(jìn)行訓(xùn)練,才能更好地實(shí)現(xiàn)檢測(cè)功能。
本文采用的數(shù)據(jù)集是江民新科技術(shù)有限公司病毒庫(kù)中的數(shù)據(jù)集。本次采用的數(shù)據(jù)集總量為90萬(wàn),其中45萬(wàn)白樣本,45萬(wàn)病毒樣本。并且在45萬(wàn)病毒樣本中,Downloader、Trojan、Backdoor三類樣本樣本量分別是15萬(wàn)、15萬(wàn)、15萬(wàn)。
2.2 實(shí)驗(yàn)環(huán)境
實(shí)驗(yàn)環(huán)境:CPU:Intel(R) Xeon(R) CPU E5645 @ 2.40 GHz,操作系統(tǒng)CentOS Linux release 7.3.1611,內(nèi)存32 GB。
Hadoop和Spark的版本為:Hadoop版本2.7.1,Spark版本2.2.1。
2.3 實(shí)驗(yàn)評(píng)判標(biāo)準(zhǔn)
用查準(zhǔn)率(Precision)、查全率(Recall)和F1度量評(píng)估本文算法,通常以關(guān)注的類為正類,其他類為負(fù)類,指標(biāo)的取值為0~1。這些度量的計(jì)算公式如下:
其中,TP(True Positive)是指將正類預(yù)測(cè)為正類數(shù),F(xiàn)P(False Positive)是指將負(fù)類預(yù)測(cè)為正類數(shù),F(xiàn)N(False Negative)是指正類預(yù)測(cè)為負(fù)類數(shù)。
2.4 結(jié)果分析
在所選擇的數(shù)據(jù)集(江民新科技術(shù)有限公司病毒庫(kù)中的數(shù)據(jù)集)上將本文的隨機(jī)森林算法與支持向量機(jī)算法、邏輯回歸算法做比較。
首先進(jìn)行黑白樣本分類的實(shí)驗(yàn),查看實(shí)驗(yàn)的查準(zhǔn)率、查全率和F1值,從實(shí)驗(yàn)結(jié)果可以看出當(dāng)樣本總量在10萬(wàn)左右的時(shí)候,隨機(jī)森林在辨識(shí)黑白樣本的效果上與支持向量機(jī)算法、邏輯回歸算法相比較,結(jié)果并不理想。但是隨著樣本數(shù)量增大到90萬(wàn),隨機(jī)森林模型在辨識(shí)黑白樣本的查準(zhǔn)率、查全率、F1值從原來的0.732、0.711、0.721提升到0.973、0.973、0.973,都達(dá)到了三種分類中的最好,其中在500 000到700 000樣本的時(shí)候,查準(zhǔn)率、查全率和F1值出現(xiàn)了下降,是因?yàn)殡S著病毒樣本的增加,其中部分白樣本經(jīng)過編譯器編譯得到的PE結(jié)構(gòu)信息與部分病毒樣本的結(jié)構(gòu)信息相似,使得隨機(jī)森林算法出現(xiàn)了一定的誤差。但是隨著樣本量的繼續(xù)增大,這一小部分的樣本對(duì)于整體的分類影響逐漸變小。實(shí)驗(yàn)結(jié)果如圖1、圖2、圖3所示。
其次,再進(jìn)行基于Downloader、Trojan、Backdoor這三種病毒分類的實(shí)驗(yàn),本次實(shí)驗(yàn)的惡意代碼數(shù)據(jù)是總數(shù)據(jù)集中的45萬(wàn)病毒樣本。從實(shí)驗(yàn)結(jié)果可以看出隨機(jī)森林在對(duì)Downloader、Trojan、Backdoor三種病毒分類時(shí),與支持向量機(jī)分類算法和邏輯回歸分類算法相比較,實(shí)驗(yàn)效果是比較好的。隨著惡意代碼的樣本量從9萬(wàn)增長(zhǎng)到45萬(wàn)時(shí),查準(zhǔn)率、查全率、F1值從原來的0.924、0.918、0.921提升到0.935、0.932、0.934,評(píng)判標(biāo)準(zhǔn)都有提升。其實(shí)驗(yàn)結(jié)果如圖4、圖5、圖6所示。
從以上結(jié)果可知,隨機(jī)森林在分類的泛化能力上要優(yōu)于SVM和邏輯回歸。
3 結(jié)束語(yǔ)
本文聚焦在大樣本下利用機(jī)器學(xué)習(xí)算法對(duì)惡意代碼進(jìn)行識(shí)別和分類檢測(cè),選擇PE文件結(jié)構(gòu)和敏感API作為輸入,實(shí)驗(yàn)數(shù)據(jù)表明隨機(jī)森林的評(píng)價(jià)效果比支持向量機(jī)、邏輯回歸模型的效果優(yōu)秀。在進(jìn)行三種病毒分類上,雖然隨機(jī)森林的效果最好,但是隨機(jī)森林對(duì)于某些白樣本使用和病毒樣本相同的編譯器時(shí),容易將其劃分為病毒樣本。其次,準(zhǔn)確率仍然不是很高,只有0.935左右,在基于大樣本的前提下,模型的分類效果仍然需要提升,以上兩個(gè)問題是本文今后工作的重點(diǎn)。
參考文獻(xiàn)
[1] 江民病毒疫情監(jiān)測(cè)預(yù)警中心.江民病毒疫情歷史數(shù)據(jù)統(tǒng)計(jì)[EB/OL].[2018-05-30].http://virusinfo.jiangmin.com/virinfo/virusDataStat.aspx.
[2] SIKORSKI M, HONIG A.惡意代碼分析實(shí)戰(zhàn)[M].諸葛建偉,姜輝,張光凱,譯.北京:電子工業(yè)出版社,2014.
[3] 盛超,魏盛娜. 基于權(quán)限與敏感API的惡意程序檢測(cè)方法[J]. 電腦知識(shí)與技術(shù), 2017, 13(33):67-69.
[4] HEX-RAYS SA. IDA pro introduction[EB/OL]. [2018-05-30].http://www.hex-rays. com/products.shtml/.
[5] BABU A J,RAVEENDRANATH R,RAJAMANJ V,et al,Dissecting SMS malwares in Android[C] //Proceedings of International Conference on Contemporary Computing and Informatics,2014:1065-1069.
[6] ABOU-ASSALEH T, CERCONE N, KESELJ V, et al. N-gram-based detection of new malicious code[C]//The 28th Annual International Computer Software and Applications Conference (COMPSAC), 2004:41-42.
[7] ANDERSON B, QUIST D, NEIL J, et al. Graph-based malware detection using dynamic analysis[J]. Journal in Computer Virology,2011, 7(4): 247-258.
[8] 郭尚瓚. 基于流量行為特征的僵尸網(wǎng)絡(luò)研究與檢測(cè)[D]. 北京:北京郵電大學(xué), 2016.
[9] 楊曄. 基于行為的惡意代碼檢測(cè)方法研究[D]. 西安:西安電子科技大學(xué), 2015.
(收稿日期:2018-06-26)
作者簡(jiǎn)介:
李雪虎(1990-),男,學(xué)士,工程師,主要研究方向:反病毒、逆向分析、網(wǎng)絡(luò)攻防。
王發(fā)明(1993-),男,學(xué)士,工程師,主要研究方向:大數(shù)據(jù)、分布式、機(jī)器學(xué)習(xí)。
戰(zhàn)凱(1990-),男,碩士研究生,主要研究方向:推薦系統(tǒng)、反病毒。