◆孫澤浩
?
基于深度學(xué)習(xí)的惡意代碼檢測(cè)技術(shù)
◆孫澤浩
(武漢市第二高級(jí)中學(xué) 湖北 430010)
本文首先分析了當(dāng)前惡意代碼檢測(cè)技術(shù)所面臨的問(wèn)題,介紹了深度學(xué)習(xí)技術(shù)及caffe深度學(xué)習(xí)框架,最后提出了一種基于深度學(xué)習(xí)的惡意代碼檢測(cè)方法,并采用6000個(gè)樣本進(jìn)行訓(xùn)練測(cè)試,檢測(cè)率可以達(dá)到99%,證明了本方法具有較好的可行性。
深度學(xué)習(xí);惡意代碼;Caffe
隨著人類智能工業(yè)的發(fā)展,智能手機(jī)迅速普及。據(jù)著名的數(shù)據(jù)預(yù)測(cè)公司Garner統(tǒng)計(jì),Android系統(tǒng)手機(jī)占了87.7%的份額[1]。但因Android系統(tǒng)的開(kāi)放性,它也成為了眾多惡意代碼開(kāi)發(fā)者的活躍地盤。由于惡意代碼的數(shù)量和種類越來(lái)越多,加上代碼混淆、代碼變異、代碼加密等技術(shù)的興起,使得惡意代碼檢測(cè)變得越來(lái)越困難。全球每天都有超過(guò)百萬(wàn)的安卓惡意代碼變種在肆虐,傳統(tǒng)的病毒庫(kù)對(duì)比技術(shù)很難適應(yīng)惡意代碼的變種速度[2],因此,研究如何不完全依賴于病毒庫(kù),檢測(cè)未知惡意代碼成為研究熱點(diǎn)。
近年來(lái),隨著計(jì)算機(jī)硬件性能的提升,深度學(xué)習(xí)(Deep Learning)得到了巨大的發(fā)展。2016年谷歌公司DeepMind團(tuán)隊(duì)開(kāi)發(fā)的深度學(xué)習(xí)系統(tǒng)AlphaGo[3]以4:1的驚人戰(zhàn)績(jī)打敗了韓國(guó)圍棋界傳奇人物李世石九段,大大提升了深度學(xué)習(xí)的關(guān)注度。目前,深度學(xué)習(xí)技術(shù)已經(jīng)在很多計(jì)算機(jī)傳統(tǒng)領(lǐng)域,如圖像識(shí)別、語(yǔ)音識(shí)別、手寫識(shí)別、文本識(shí)別等取得了突破性的進(jìn)步。惡意代碼檢測(cè)本質(zhì)上也是一種分類與識(shí)別的問(wèn)題,在獲取海量的惡意代碼數(shù)據(jù)基礎(chǔ)上,采用深度學(xué)習(xí)進(jìn)行惡意代碼檢測(cè)成為了一種新路徑。本文提出了一種基于深度學(xué)習(xí)的惡意代碼檢測(cè)方法,并采用6000個(gè)樣本進(jìn)行訓(xùn)練測(cè)試,檢測(cè)率可以達(dá)到99%,驗(yàn)證了該方法的可行性。
深度學(xué)習(xí)的興起,最早因機(jī)器學(xué)習(xí)領(lǐng)域的泰斗、多倫多大學(xué)G.E.Hinton教授帶領(lǐng)的深度學(xué)習(xí)團(tuán)隊(duì)在ImageNet圖像分類大賽中一舉奪魁,其準(zhǔn)確率超過(guò)了第二名10%以上[4],而引起了計(jì)算機(jī)視覺(jué)領(lǐng)域的極大震動(dòng),再一次掀起了深度學(xué)習(xí)的熱潮。
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)研究的一個(gè)新領(lǐng)域,其動(dòng)機(jī)在于建立、模擬人腦進(jìn)行分析學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),通過(guò)模仿人腦的機(jī)制來(lái)解讀數(shù)據(jù),例如圖像,聲音和文本。實(shí)際上它是一種無(wú)監(jiān)督的學(xué)習(xí),其概念源于人工神經(jīng)網(wǎng)絡(luò)的研究,含多隱層的多層感知器就是一種深度學(xué)習(xí)結(jié)構(gòu),其通過(guò)組合低層特征形成更加抽象的高層表示屬性類別或特征,以發(fā)現(xiàn)數(shù)據(jù)的分布式特征表達(dá)。深度學(xué)習(xí)允許那些由多處理層組成的計(jì)算機(jī)模型去學(xué)習(xí)具有多個(gè)等級(jí)抽象數(shù)據(jù)的表達(dá),可利用反向傳播算法發(fā)現(xiàn)大數(shù)據(jù)的內(nèi)在復(fù)雜結(jié)構(gòu),然后BP算法會(huì)指導(dǎo)機(jī)器如何在每一層利用從上一次獲得的表達(dá)來(lái)改變其內(nèi)部參數(shù)。在許多領(lǐng)域得到了廣泛的應(yīng)用,例如視覺(jué)對(duì)象識(shí)別、語(yǔ)音識(shí)別、對(duì)象檢測(cè)等,同時(shí)對(duì)醫(yī)藥學(xué)的新發(fā)現(xiàn)和基因組學(xué)的新進(jìn)展也起到了促進(jìn)作用。
深度學(xué)習(xí)采用的模型為深層神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks,DNN)模型,即包含多個(gè)隱藏層(Hidden Layer,也稱隱含層)的神經(jīng)網(wǎng)絡(luò)(Neural Networks,NN),利用模型中的隱藏層,通過(guò)特征組合的方式,逐層將原始輸入轉(zhuǎn)化為淺層特征、中層特征、高層特征直至最終的任務(wù)目標(biāo)。下圖1展現(xiàn)的就是深度學(xué)習(xí)的基本處理流程[5]。
圖1 深度學(xué)習(xí)基本處理流程
在深度學(xué)習(xí)概念的提出以及GPU被用于科學(xué)計(jì)算之前,大型神經(jīng)網(wǎng)絡(luò)幾乎鮮有問(wèn)津。究其原因,其一,深度神經(jīng)網(wǎng)絡(luò)面臨著由梯度消失和過(guò)擬合等原因?qū)е碌挠?xùn)練困難的問(wèn)題。其二,大型神經(jīng)網(wǎng)絡(luò)動(dòng)輒百萬(wàn)甚至千萬(wàn)級(jí)的參數(shù)數(shù)量不僅令人望而生畏。而且面臨著訓(xùn)練周期以周甚至月為單位計(jì)量的尷尬局面。深度學(xué)習(xí)的提出在很大程度上解決了梯度消失和過(guò)擬合的問(wèn)題。而GPU計(jì)算平臺(tái)被直接用于科學(xué)計(jì)算,主要以NVIDIA公司的CUDA框架為底層系統(tǒng)。在此基礎(chǔ)上,科研人員開(kāi)發(fā)了眾多的深度學(xué)習(xí)開(kāi)源框架,其中Caffe是較為成熟和完善的一個(gè)深度學(xué)習(xí)框架[6]。
Caffe是一個(gè)清晰而高效的深度學(xué)習(xí)框架,它是開(kāi)源的,核心語(yǔ)言是C++,支持命令行、Python和MATLAB接口,既可以在CPU上運(yùn)行也可以在GPU上運(yùn)行。而且可以應(yīng)用在視覺(jué)、語(yǔ)音識(shí)別、機(jī)器人、神經(jīng)科學(xué)和天文學(xué)等領(lǐng)域。Caffe提供了一個(gè)完整的工具包,用來(lái)訓(xùn)練、測(cè)試、微調(diào)和部署模型。它具有模塊化、表示和現(xiàn)實(shí)分離、測(cè)試覆蓋全面、接口豐富和預(yù)訓(xùn)練參考模型等特點(diǎn)。
Caffe框架支持多種網(wǎng)絡(luò)模型,比如LeNet、ImageNet等。下面以LeNet為例進(jìn)行介紹。圖2為L(zhǎng)eNet網(wǎng)絡(luò)的示意圖,LeNet模型結(jié)構(gòu)一共包括8層網(wǎng)絡(luò):由下至上分別為輸入層、卷積層C1、下采樣層S2、卷積層C3、下采樣層S4、卷積層C5、全連接層F6和輸出全連接層。
圖片經(jīng)過(guò)固定的裁剪后固定輸入的像素大小后,將訓(xùn)練集通過(guò)上圖C1、S2、C3、S4兩對(duì)卷積層和池化層,提取出圖片的主要特征,隨后C5、F6作為后層全連接層的輸入,輸入的特征在全連接與訓(xùn)練樣本的標(biāo)簽之間不斷調(diào)整權(quán)值,通過(guò)調(diào)整權(quán)值的大小,來(lái)使網(wǎng)絡(luò)的具有記憶性。
圖2 LeNet網(wǎng)絡(luò)圖
最后的全連接層也為輸出層,輸出的節(jié)點(diǎn)數(shù)為結(jié)果數(shù)。例如使用LeNet對(duì)手寫數(shù)字圖片的識(shí)別,那么節(jié)點(diǎn)數(shù)就為10,分別代表數(shù)字0-9。若為手寫大寫字母識(shí)別,那么節(jié)點(diǎn)數(shù)字就為26。通過(guò)最后的全連接層輸出結(jié)果。
深度學(xué)習(xí)的特長(zhǎng)是對(duì)學(xué)習(xí)的數(shù)據(jù)進(jìn)行分類,為此,本文提出圖3所示的惡意代碼檢測(cè)處理流程。
圖3 基于深度學(xué)習(xí)的惡意代碼檢測(cè)處理流程
要進(jìn)行深度學(xué)習(xí),首先要收集大量學(xué)習(xí)數(shù)據(jù)。在惡意代碼檢測(cè)領(lǐng)域,需要采集大量正常的和惡意的代碼,對(duì)其進(jìn)行特征提取,進(jìn)而生成提供給深度學(xué)習(xí)模塊學(xué)習(xí)的素材。
通??梢圆捎渺o態(tài)分析技術(shù),使用反編譯工具獲取反編譯的Smali文件,去掉無(wú)關(guān)的動(dòng)作指令并進(jìn)行統(tǒng)計(jì),為深度學(xué)習(xí)提供所需的特征。
APKTool是Google提供的APK編譯工具,能夠反編譯APK文件,將數(shù)萬(wàn)個(gè)APK樣本按照樣本的順序,進(jìn)行如流程圖4的步驟處理:
圖4 APK反編譯執(zhí)行流程圖
運(yùn)行編寫的python腳本將提取出來(lái)的核心Dalvik指令按N-gram規(guī)則處理,生成Dalvik指令的N-Gram序列并進(jìn)行統(tǒng)計(jì)處理,生成如下文本文件,如圖5所示。
圖5 匯總后的Smali文件
采用第2節(jié)介紹的Caffe框架,將以上靜態(tài)分析所獲取的樣本特征數(shù)據(jù)構(gòu)造成樣本矩陣,數(shù)據(jù)包含4000個(gè)安全APK樣本和2000個(gè)惡意APK的樣本數(shù)據(jù),該矩陣為60×35。為了進(jìn)行有監(jiān)督學(xué)習(xí),將惡意TZHD-Mat圖像記為數(shù)值1,將安全TZHD-Mat圖像記為數(shù)值0,原始圖像對(duì)其進(jìn)行卷積操作、下采樣操作等,并將采集到的特征輸入到構(gòu)造的LeNet網(wǎng)絡(luò),進(jìn)行不斷訓(xùn)練學(xué)習(xí),進(jìn)而得到一個(gè)檢測(cè)模型。具體運(yùn)行過(guò)程如圖6所示。
圖6 Caffe卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練完畢
首輪的卷積神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練完畢,但如圖6所示,檢測(cè)精確度為40%,還需要進(jìn)行模型優(yōu)化?,F(xiàn)主要工作就是調(diào)整部分關(guān)鍵的網(wǎng)絡(luò)參數(shù),讓卷積神經(jīng)網(wǎng)絡(luò)在不同的網(wǎng)絡(luò)參數(shù)下進(jìn)行重新迭代訓(xùn)練,最后再統(tǒng)計(jì)網(wǎng)絡(luò)的訓(xùn)練時(shí)間以及模型的預(yù)測(cè)準(zhǔn)確率。在卷積神經(jīng)網(wǎng)絡(luò)的迭代訓(xùn)練過(guò)程中,Caffe主要采用默認(rèn)的隨機(jī)梯度下降的策略進(jìn)行梯度更新,直到收斂。梯度下降法也叫最速下降法,其通過(guò)負(fù)梯度▽L(W)和上一次的權(quán)重更新值Vt的線性組合來(lái)更新梯度Wt,迭代公式如下:(其中μ代表動(dòng)量,α 代表基礎(chǔ)學(xué)習(xí)率)
由以上迭代關(guān)系可以觀察到,卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練迭代過(guò)程中,基礎(chǔ)學(xué)習(xí)率和動(dòng)量這兩個(gè)參數(shù)對(duì)于網(wǎng)絡(luò)的訓(xùn)練效果影響比其他參數(shù)更大。于是網(wǎng)絡(luò)的優(yōu)化過(guò)程中,主要通過(guò)改變基礎(chǔ)學(xué)習(xí)率α和動(dòng)量μ這兩個(gè)參數(shù)。
將基礎(chǔ)學(xué)習(xí)率base_lr設(shè)置為0.01,將初始動(dòng)量momentum設(shè)置為0.9,網(wǎng)絡(luò)模型的預(yù)測(cè)效果較好。具體參數(shù)如表1所示。參數(shù)設(shè)置完畢以后,圖像分類識(shí)別準(zhǔn)確率達(dá)到了0.99,模型訓(xùn)練時(shí)間為1077分鐘。
表1 caffe參數(shù)設(shè)置
本文在分析現(xiàn)有惡意代碼檢測(cè)技術(shù)存在的問(wèn)題的基礎(chǔ)上,提出了一種基于深度學(xué)習(xí)的惡意代碼檢測(cè)方法,并通過(guò)對(duì)6000個(gè)樣本進(jìn)行訓(xùn)練學(xué)習(xí),最終訓(xùn)練出來(lái)的模型可以達(dá)到99%的檢測(cè)率。未來(lái)將使用更多的樣本數(shù)據(jù)來(lái)改進(jìn)完善檢測(cè)模型,進(jìn)一步驗(yàn)證本方法的可行性。
[1]Gartner. Android accounted for 87.7% of global smartphone sales in the second quarter[OL]. [2017-08-23].https://www.phonearena.com/news/Gartner-Android-accounted-for-87.7-of-global-smartphone-sales-in-the-second-quarter_id97353.
[2]鳳凰資訊. “勒索病毒”幕后工具指向美國(guó)國(guó)安局[OL]. [2017-05-16].http://news.ifeng.com/a/20170516/51097848_0.shtml.
[3]新浪新聞.AlphaGo最終戰(zhàn)勝李世石人機(jī)大戰(zhàn)總比分1:4[OL].[2016-03-15].http://tech.sina.com.cn/it/2016-03-15/doc-ifxqhmvc2486669.shtml.
[4]ImageNet.Large Scale Visual Recognition Challenge 2012(ILSVRC2012)[OL].[2012-10-12].Large ScaleVisual RecongnitionChallenge2012.http://www.image- net.org/challenges/LSVRC/2012/results.html.
[5]LE Q, NGIAM J, CHEN Zheng-hao, et al. Tiled convolutional neural networks[C]. Advances in Neural Information Processing Systems. Cambridge:MIT Press, 2010.
[6]Yangqing Jia. Convolution in Caffe: a memo [OL]. [2015-07-19]https://github.com/Yangqing/caffe/wiki/Convolution-in-Caffe:-a-memo.