蘇志達(dá),祝躍飛,劉 龍
(數(shù)學(xué)工程與先進(jìn)計(jì)算國(guó)家重點(diǎn)實(shí)驗(yàn)室,鄭州 450001)
基于深度學(xué)習(xí)的安卓惡意應(yīng)用檢測(cè)
蘇志達(dá)*,祝躍飛,劉 龍
(數(shù)學(xué)工程與先進(jìn)計(jì)算國(guó)家重點(diǎn)實(shí)驗(yàn)室,鄭州 450001)
(*通信作者電子郵箱dhszd1992@163.com)
針對(duì)傳統(tǒng)安卓惡意程序檢測(cè)技術(shù)檢測(cè)準(zhǔn)確率低,對(duì)采用了重打包和代碼混淆等技術(shù)的安卓惡意程序無法成功識(shí)別等問題,設(shè)計(jì)并實(shí)現(xiàn)了DeepDroid算法。首先,提取安卓應(yīng)用程序的靜態(tài)特征和動(dòng)態(tài)特征,結(jié)合靜態(tài)特征和動(dòng)態(tài)特征生成應(yīng)用程序的特征向量;然后,使用深度學(xué)習(xí)算法中的深度置信網(wǎng)絡(luò)(DBN)對(duì)收集到的訓(xùn)練集進(jìn)行訓(xùn)練,生成深度學(xué)習(xí)網(wǎng)絡(luò);最后,利用生成的深度學(xué)習(xí)網(wǎng)絡(luò)對(duì)待測(cè)安卓應(yīng)用程序進(jìn)行檢測(cè)。實(shí)驗(yàn)結(jié)果表明,在使用相同測(cè)試集的情況下,DeepDroid算法的正確率比支持向量機(jī)(SVM)算法高出3.96個(gè)百分點(diǎn),比樸素貝葉斯(NaiveBayes)算法高出12.16個(gè)百分點(diǎn),比K最鄰近(KNN)算法高出13.62個(gè)百分點(diǎn)。DeepDroid算法結(jié)合了安卓應(yīng)用程序的靜態(tài)特征和動(dòng)態(tài)特征,采用了動(dòng)態(tài)檢測(cè)和靜態(tài)檢測(cè)相結(jié)合的檢測(cè)方法,彌補(bǔ)了靜態(tài)檢測(cè)代碼覆蓋率不足和動(dòng)態(tài)檢測(cè)誤報(bào)率高的缺點(diǎn),在特征識(shí)別的部分采用DBN算法使得網(wǎng)絡(luò)訓(xùn)練速度得到保證的同時(shí)還有很高的檢測(cè)正確率。
安卓; 惡意軟件檢測(cè); 惡意代碼分析; 深度學(xué)習(xí)
Android作為當(dāng)前最為流行的移動(dòng)智能操作系統(tǒng),設(shè)備和用戶數(shù)量龐大,應(yīng)用程序豐富,其安全性受到了廣泛關(guān)注。而且移動(dòng)設(shè)備與用戶的真實(shí)身份密切相關(guān),隨著移動(dòng)設(shè)備的智能化,移動(dòng)設(shè)備中包含的用戶位置信息、社會(huì)關(guān)系、隱私數(shù)據(jù)等敏感信息越來越多,使其安全問題更顯突出。來自TrustGo公司的分析報(bào)告顯示,GooglePlay上有3.15% 的應(yīng)用可能泄露用戶隱私或者存在惡意行為,而國(guó)內(nèi)知名的91應(yīng)用市場(chǎng)這一比例則為19.7%。因我國(guó)Android用戶無法直接從GooglePlay下載和安裝應(yīng)用,導(dǎo)致了大量管理混亂的第三方應(yīng)用市場(chǎng)存在,對(duì)于Android設(shè)備的安全造成了嚴(yán)重威脅。
隨著移動(dòng)智能終端的高速發(fā)展,手機(jī)惡意軟件的不斷涌現(xiàn)已經(jīng)成為亟待解決的安全問題。2009年11月,Android平臺(tái)上發(fā)現(xiàn)了首個(gè)間諜程序Mobile Spy,該程序可以記錄用戶的鍵盤輸入信息并發(fā)送至攻擊者郵箱,還可以視頻監(jiān)控用戶操作。2010年8月,Android平臺(tái)出現(xiàn)了首個(gè)木馬程序FakePlayer,攻擊者可以利用該程序控制用戶設(shè)備不斷發(fā)送短信開通高額收費(fèi)服務(wù)。2011年12月,出現(xiàn)了首個(gè)惡意程序Carrier IQ,該程序能夠?qū)崟r(shí)監(jiān)控用戶設(shè)備狀態(tài),記錄用戶位置信息,靜默收集敏感信息,并獲取設(shè)備管理員權(quán)限[1]。之后,隨著Android設(shè)備的廣泛普及,Android平臺(tái)的惡意程序也出現(xiàn)了爆發(fā)式增長(zhǎng)。來自360的安全報(bào)告顯示,2011年至2015年Android惡意程序樣本數(shù)量和受感染人次的發(fā)展迅速[2],2011年時(shí)惡意程序樣本數(shù)量為0.5萬個(gè),受感染人次為489萬,而2014年全年監(jiān)控到的惡意程序樣本已經(jīng)達(dá)326.0萬個(gè),共有3.19億人次被感染,2015年這一數(shù)據(jù)增長(zhǎng)5.7倍,全年截獲樣本數(shù)達(dá)到1 874.0萬個(gè),累計(jì)3.7億人次被感染,惡意應(yīng)用程序已經(jīng)成為Android智能終端的最主要安全威脅。
隨著惡意代碼的進(jìn)化,基于特征和規(guī)則檢測(cè)方法的局限性日益突出。在靜態(tài)分析和動(dòng)態(tài)分析的方法中,有研究成果使用了機(jī)器學(xué)習(xí)技術(shù)。2009年,Schimidt等[3]使用靜態(tài)分析方法獲取函數(shù)調(diào)用特征,對(duì)Symbian和Android系統(tǒng)的應(yīng)用程序進(jìn)行基于分類算法的惡意代碼檢測(cè);Shabtai等[4]提出基于主機(jī)的惡意Android應(yīng)用檢測(cè)框架Andromaly,通過從移動(dòng)端獲取多種特征和行為記錄來訓(xùn)練分類器,以完成對(duì)應(yīng)用程序的分類。Burguera等[5]使用動(dòng)態(tài)方法提取系統(tǒng)調(diào)用特征,應(yīng)用K-means聚類算法區(qū)分基于同一應(yīng)用程序改寫的惡意代碼和非惡意代碼。
深度學(xué)習(xí)(DeepLearning, DL)是近年來出現(xiàn)的機(jī)器學(xué)習(xí)領(lǐng)域方法[6]。深度學(xué)習(xí)通過學(xué)習(xí)深層非線性網(wǎng)絡(luò)結(jié)構(gòu),實(shí)現(xiàn)復(fù)雜函數(shù)逼近,表征輸入數(shù)據(jù)分布式表示,展現(xiàn)從樣本集中學(xué)習(xí)數(shù)據(jù)集本質(zhì)特征的強(qiáng)大能力。深度學(xué)習(xí)與經(jīng)典神經(jīng)網(wǎng)絡(luò)的區(qū)別在于:1) 強(qiáng)調(diào)模型結(jié)構(gòu)的深度, 通常有3 層、5 層,甚至10 多層的隱層節(jié)點(diǎn);2) 突出特征學(xué)習(xí)的重要性,逐層訓(xùn)練特征,將樣本在原空間的特征表示逐層變換到新特征空間,使分類或預(yù)測(cè)更加準(zhǔn)確。
DeepLearning 的主要思想是把學(xué)習(xí)結(jié)構(gòu)(learning hierarchy)看作是一個(gè)網(wǎng)絡(luò)(network),無監(jiān)督學(xué)習(xí)用于每一層網(wǎng)絡(luò)的pre-train;每次用無監(jiān)督學(xué)習(xí)只訓(xùn)練一層,并將其訓(xùn)練結(jié)果作為其更高(更抽象)一層的輸入;用有監(jiān)督學(xué)習(xí)去調(diào)整 所有層。 最終,構(gòu)建一個(gè)深度有監(jiān)督學(xué)習(xí)的分類器,如神經(jīng)網(wǎng)絡(luò)分類器,或構(gòu)建一個(gè)深度生成模型,如深度玻爾茲曼機(jī)(Deep Boltzmann Machine, DBM)[7]和深度置信網(wǎng)絡(luò)(Deep Belief Network, DBN)。
深度學(xué)習(xí)的優(yōu)勢(shì)在于它是具有多層非線性映射的深層結(jié)構(gòu),可以完成復(fù)雜的函數(shù)逼近。此外深度學(xué)習(xí)理論上可以獲取分布式表示,即可通過逐層學(xué)習(xí)算法獲取輸入數(shù)據(jù)的主要驅(qū)動(dòng)變量[8]。通過深度學(xué)習(xí)的優(yōu)勢(shì)主要表現(xiàn)在非監(jiān)督預(yù)訓(xùn)練算法中,通過生成性訓(xùn)練避免因網(wǎng)絡(luò)函數(shù)表達(dá)能力過強(qiáng)而出現(xiàn)的過擬合情況。由于單層計(jì)算能力有限,深度學(xué)習(xí)通常采用多層映射單元提取主要的結(jié)構(gòu)信息[9]。
基于上述原因, 本文結(jié)合動(dòng)態(tài)特征和靜態(tài)特征,采用深度學(xué)習(xí)的算法進(jìn)行安卓代碼特征分析:一方面結(jié)合靜態(tài)特征和動(dòng)態(tài)特征來獲取完整的應(yīng)用程序信息;另一方面利用深度學(xué)習(xí)的深層學(xué)習(xí)機(jī)制自動(dòng)挖掘深層特征,通過這種動(dòng)靜結(jié)合的深度學(xué)習(xí)系統(tǒng)對(duì)安卓應(yīng)用進(jìn)行檢測(cè)。
Android應(yīng)用程序的行為信息分為靜態(tài)信息和動(dòng)態(tài)行為。任何針對(duì)應(yīng)用程序的分析手段都依賴于對(duì)應(yīng)用程序行為信息的獲取。本章從靜態(tài)信息和動(dòng)態(tài)行為兩個(gè)方面,分別設(shè)計(jì)了自動(dòng)化程序行為信息提取方法。首先針對(duì)靜態(tài)信息,綜合優(yōu)化現(xiàn)有提取手段,給出了標(biāo)準(zhǔn)化提取流程和方法;然后重點(diǎn)闡述了對(duì)動(dòng)態(tài)行為的提取,提出了一種基于虛擬化技術(shù)的動(dòng)態(tài)行為提取技術(shù),實(shí)現(xiàn)了對(duì)內(nèi)核指令、系統(tǒng)調(diào)用、Dalvik指令等多個(gè)層次的程序行為特征提取。
1.1 靜態(tài)特征提取
Android應(yīng)用程序靜態(tài)信息的獲取是指在不執(zhí)行應(yīng)用程序的情況下,使用逆向工程手段,提取待分析程序的靜態(tài)特征。本文中主要是對(duì)其AndroidManifest.xml文件的獲取和解析。AndroidManifest.xml文件定義了多種標(biāo)簽來聲明應(yīng)用程序的基本信息、組件、權(quán)限等,本文獲取的靜態(tài)信息如表1所示。
表1 靜態(tài)信息列表
現(xiàn)有靜態(tài)信息提取方法主要為使用APKTool工具或aapt(android asset packaging tool)工具。aapt工具是Android SDK提供的工具之一,不解包APK(AndroidPackage,Android安裝包)文件,可以對(duì)資源文件和APK文件的基本信息進(jìn)行管理,提取AndroidManifest.xml文件中的信息。aapt工具的執(zhí)行效率遠(yuǎn)高于apktool,故本文以aapt工具為基礎(chǔ)進(jìn)行靜態(tài)信息的提取。
靜態(tài)信息的提取流程如圖1所示。在樣本程序靜態(tài)信息的提取過程中,對(duì)其所申請(qǐng)的權(quán)限信息進(jìn)行了預(yù)處理,主要是:
1)去除自定義的權(quán)限信息。Android允許程序自定義權(quán)限,以對(duì)其他應(yīng)用能否訪問該應(yīng)用的組件進(jìn)行管理。自定義權(quán)限與Android應(yīng)用程序編程接口(Application Programming Interface, API)以及系統(tǒng)資源的保護(hù)無關(guān),故本文只關(guān)注應(yīng)用程序申請(qǐng)的Android系統(tǒng)所定義的權(quán)限。
2)為所有權(quán)限賦予唯一標(biāo)識(shí)。AndroidManifest.xml文件中的權(quán)限信息為字符串,系統(tǒng)在運(yùn)行程序時(shí)才會(huì)對(duì)其進(jìn)行解析并識(shí)別為對(duì)應(yīng)ID。為了之后分析工作的便利,在提取過程中,為每一種新提取到的權(quán)限信息賦予其全局唯一的整數(shù)型ID。通過此操作,簡(jiǎn)化了數(shù)據(jù)處理和運(yùn)算過程。
圖1 靜態(tài)信息提取流程
1.2 動(dòng)態(tài)特征提取
由于Android的多層次體系架構(gòu),程序語(yǔ)義在執(zhí)行中也會(huì)有多層次的展現(xiàn)。對(duì)于惡意程序包含的惡意代碼,也會(huì)在多個(gè)層面上表現(xiàn)出惡意行為。越處于底層的惡意行為,在系統(tǒng)中隱蔽性越高,反之則越明顯。多層次的惡意代碼展現(xiàn)也為惡意行為的監(jiān)控提供了多個(gè)層次選擇,部署于不同層次的監(jiān)控方法,所能夠獲取的語(yǔ)義層次也不同。圖2給出了Android系統(tǒng)各個(gè)層次所對(duì)應(yīng)的程序行為,及其可能存在的攻擊行為。理論上,下層的監(jiān)控方法可以捕獲或還原上層的惡意行為,而上層的監(jiān)控方法對(duì)下層的語(yǔ)義執(zhí)行信息無法獲知。
圖2 動(dòng)態(tài)行為監(jiān)控層次
快速模擬器(Quick Emulator, QEMU)是采用了動(dòng)態(tài)二進(jìn)制翻譯技術(shù)的高效CPU模擬器,本文使用QEMU模擬器分別獲取了內(nèi)核指令、系統(tǒng)調(diào)用、Dalvik指令的信息,從這些信息中提取應(yīng)用程序動(dòng)態(tài)行為特征。整體結(jié)構(gòu)如圖3所示。
圖3 動(dòng)態(tài)監(jiān)控系統(tǒng)架構(gòu)
1)內(nèi)核指令。
要對(duì)客戶機(jī)內(nèi)的Android系統(tǒng)進(jìn)行監(jiān)控,首先要獲取到每個(gè)翻譯好的宿主機(jī)基本指令塊(X86指令)以及其對(duì)應(yīng)的原始客戶機(jī)指令塊(進(jìn)階指令機(jī)(Advanced Risc Machine, ARM)指令)。在微代碼引擎(Tiny Code Generator, TCG)翻譯階段插裝代碼,讀取原始代碼塊以及翻譯后代碼塊的起始地址和大小,在每個(gè)代碼段執(zhí)行之前,再根據(jù)所記錄的位置和大小,將翻譯前和翻譯后的指令記錄到本地文件,將X86指令還原到ARM指令。
2)系統(tǒng)調(diào)用。
在X86架構(gòu)中,從指令層面來看系統(tǒng)調(diào)用的流程為:1)int 0x80指令來進(jìn)入特權(quán)模式;2)通過eax寄存器傳遞要執(zhí)行的系統(tǒng)調(diào)用編號(hào);3)內(nèi)核執(zhí)行相應(yīng)系統(tǒng)調(diào)用。ARM架構(gòu)中使用swi #0來執(zhí)行系統(tǒng)調(diào)用,系統(tǒng)調(diào)用編號(hào)存儲(chǔ)于R7寄存器之中。在獲取原始指令塊的模塊中加入一個(gè)監(jiān)控模塊,當(dāng)發(fā)現(xiàn)模擬器動(dòng)態(tài)翻譯的指令塊中有swi #0指令時(shí),在swi #0指令后插裝額外的TCG指令,執(zhí)行一個(gè)回調(diào)函數(shù)來收集內(nèi)存和寄存器中關(guān)于此次調(diào)用的信息,首先取得R7寄存器中的此次系統(tǒng)調(diào)用編號(hào),再根據(jù)內(nèi)存中的系統(tǒng)調(diào)用表查找到該編號(hào)對(duì)應(yīng)的系統(tǒng)調(diào)用名稱及地址,從而獲取到進(jìn)程信息、系統(tǒng)調(diào)用的參數(shù)以及返回值等。經(jīng)過插裝的代碼被翻譯執(zhí)行時(shí),我們插入的回調(diào)函數(shù)也將被調(diào)用,從而獲得系統(tǒng)調(diào)用信息。
3)Dalvik指令。
Dalvik字節(jié)碼通過Dalvik虛擬機(jī)翻譯為相應(yīng)的可執(zhí)行的本地指令并執(zhí)行,采用解釋執(zhí)行(Interpretation)和實(shí)時(shí)編譯(Just-In-Time compilation, JIT)兩種方式來完成這一過程。
Dalvik的解釋器模塊名為mterp,采用偏移尋址方式將Dalvik 操作碼(opcode,指令編號(hào))映射到機(jī)器碼。每條操作碼都有64 B的內(nèi)存用于存儲(chǔ)其相應(yīng)模擬解釋的本地代碼,對(duì)于模擬解釋代碼不足64 B的操作碼,會(huì)進(jìn)行填充,使其存儲(chǔ)滿64 B。mterp計(jì)算偏移地址公式:
NativeAddress=BaseAddress+opcode*64
(1)
其中:NativeAddress為該操作碼對(duì)應(yīng)的本地代碼;BaseAddress為整個(gè)存儲(chǔ)操作碼對(duì)應(yīng)的本地代碼的內(nèi)存塊的起始地址; Dalvik虛擬機(jī)可以通過此式計(jì)算得到每個(gè)操作碼對(duì)應(yīng)的本地代碼。根據(jù)Dalvik指令的完整還原過程,本文對(duì)mterp和JIT分別進(jìn)行處理。
對(duì)于mterp解釋執(zhí)行的指令,Dalvik虛擬機(jī)中程序計(jì)數(shù)器(Program Counter, PC)的值存儲(chǔ)于R15寄存器中,通過監(jiān)控R15,可以獲知mterp的行為,由式(1),其執(zhí)行的opcode為:
opcode=(R15-BaseAddress)/64
(2)
通過式(2)獲得mterp執(zhí)行的opcode,由于每個(gè)opcode對(duì)應(yīng)唯一的一個(gè)指令,從而得到當(dāng)前執(zhí)行的指令。
JIT編譯時(shí)一個(gè)代碼段中包含多個(gè)基本的代碼塊,難以和指令一一對(duì)應(yīng),因此禁用JIT,僅使用mterp解釋執(zhí)行。
1.3 特征向量
根據(jù)1.1節(jié)和1.2節(jié)提取的靜態(tài)信息和動(dòng)態(tài)信息可以構(gòu)筑特征向量。靜態(tài)信息部分,本文對(duì)在GooglePlayStore得到的12 170個(gè)非惡意樣本和在VirusTotal上得到的2 678個(gè)惡意應(yīng)用進(jìn)行了靜態(tài)信息提取,從所有權(quán)限中采用了41個(gè)使用頻率比較高的權(quán)限作為靜態(tài)特征。若應(yīng)用程序被檢測(cè)到上述權(quán)限就會(huì)在應(yīng)用程序的特征向量中被標(biāo)記為1,否則為0。
動(dòng)態(tài)信息部分,本文從Android系統(tǒng)中選擇了129個(gè)關(guān)鍵動(dòng)態(tài)特征來對(duì)Android應(yīng)用程序的行為進(jìn)行刻畫,覆蓋了進(jìn)程控制、文件操作、文件系統(tǒng)操作、系統(tǒng)控制、網(wǎng)絡(luò)管理、socket控制、用戶控制和進(jìn)程間通信8種類別。應(yīng)用程序的動(dòng)態(tài)分析中若檢測(cè)到相應(yīng)的動(dòng)態(tài)特征則在特征向量中標(biāo)記為1,否則為0。
根據(jù)提取的41個(gè)靜態(tài)特征和129個(gè)動(dòng)態(tài)特征,本文構(gòu)建一個(gè)包含170個(gè)特征的特征向量,其中前41個(gè)是代表靜態(tài)信息的靜態(tài)特征,后129個(gè)是代表動(dòng)態(tài)信息的動(dòng)態(tài)特征,每一個(gè)特征在向量中的取值只有0和1,當(dāng)應(yīng)用程序中檢測(cè)到相應(yīng)特征時(shí),特征值為1,沒有檢測(cè)到時(shí)特征值為0。
目前基于DL理論的應(yīng)用系統(tǒng)中,深度置信網(wǎng)絡(luò)(DBN)是應(yīng)用比較廣泛的一類學(xué)習(xí)結(jié)構(gòu), 它由多層受限波爾茲曼機(jī)(RestrictedBoltzmannMachine,RBM)單元和一層有監(jiān)督網(wǎng)絡(luò)層組成。陳宇等[10]采用DBN算法對(duì)中文實(shí)體關(guān)系進(jìn)行了分析,取得了很好的結(jié)果,本文參照其中的DBN網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)了DBN分類網(wǎng)絡(luò),利用DBN對(duì)提取的應(yīng)用程序特征向量進(jìn)行分類。與其他深度學(xué)習(xí)網(wǎng)絡(luò)(深度玻爾茲曼機(jī)、卷積神經(jīng)網(wǎng)絡(luò)等)相比,DBN算法對(duì)一維特征向量的分類能力更強(qiáng)且訓(xùn)練速度更快,因此本文采用DBN算法對(duì)惡意應(yīng)用進(jìn)行分類。本文所采用的DBN是由若干層自底向上的RBM和一層有監(jiān)督的反向傳播(BackPropagation,BP)網(wǎng)絡(luò)組成的深層神經(jīng)網(wǎng)絡(luò)。
2.1 深度置信網(wǎng)絡(luò)
深度置信網(wǎng)絡(luò)(DBN)是由若干層自底向上的RBM和一層有監(jiān)督的BP網(wǎng)絡(luò)組成的深層神經(jīng)網(wǎng)絡(luò)[6],其結(jié)構(gòu)如圖4 所示。圖4 中,V和H分別表示可視層和隱含層內(nèi)的節(jié)點(diǎn)值,W表示可視層與隱含層之間的權(quán)值。底層的神經(jīng)網(wǎng)絡(luò)接收原始的特征向量,在自底向上的傳遞過程中, 從具體的特征向量逐漸轉(zhuǎn)化為抽象的特征向量,在頂層的神經(jīng)網(wǎng)絡(luò)形成更易于分類的組合特征向量。為確保每一層的聯(lián)合概率分布p(V,H)最大,必須使當(dāng)前層RBM網(wǎng)絡(luò)調(diào)整自身層內(nèi)的權(quán)值以對(duì)該層特征向量映射達(dá)到最優(yōu);但僅依靠RBM層并不能對(duì)整個(gè)DBN的特征向量映射達(dá)到最優(yōu)。因此,BP網(wǎng)絡(luò)還擔(dān)負(fù)著微調(diào)功能:BP網(wǎng)絡(luò)將錯(cuò)誤信息自頂向下傳播至每一層RBM,可以達(dá)到微調(diào)整個(gè)DBN的作用。
圖4 DBN網(wǎng)絡(luò)結(jié)構(gòu)
在訓(xùn)練模型的過程中,DBN主要分為兩步:1)分別單獨(dú)無監(jiān)督地訓(xùn)練每一層RBM網(wǎng)絡(luò),確保特征向量映射到不同特征空間時(shí),都盡可能多地保留特征信息;2)在DBN的最后一層設(shè)置BP網(wǎng)絡(luò),接收RBM的輸出特征向量作為它的輸入特征向量,有監(jiān)督地訓(xùn)練實(shí)體關(guān)系分類器。將特征向量X作為第一層RBM的輸入V0,計(jì)算第一層的輸出H0并修改權(quán)值W0,在計(jì)算H0時(shí)采用Sigmoid函數(shù)進(jìn)行標(biāo)準(zhǔn)化,Sigmoid函數(shù)的結(jié)果作為特征節(jié)點(diǎn)開啟(結(jié)果為1)的概率值p,將p與一個(gè)從(0,1)均勻分布中抽取的隨機(jī)值u比較,若p>u則該節(jié)點(diǎn)開啟,其值取1,否則值取0,因此H0的每個(gè)特征取值均為0或1。當(dāng)?shù)谝粚佑?xùn)練完成后,將第一層的輸出H0作為第二層的輸入V1,同樣計(jì)算H1并修改權(quán)值W1,以此類推充分訓(xùn)練每層RBM。當(dāng)所有RBM層都單獨(dú)充分訓(xùn)練完成后,將最后一層RBM的輸出Hn-1(n為RBM隱藏層層數(shù))作為BP層的輸入Vn,BP網(wǎng)絡(luò)算法有監(jiān)督地訓(xùn)練分類器,并自頂向下反向微調(diào)整個(gè)DBN。DBN訓(xùn)練過程實(shí)現(xiàn)步驟如算法1所示。
算法 1DBN訓(xùn)練算法。
對(duì)于層數(shù)為N的DBN算法,n(0 1) 充分訓(xùn)練第一層RBM,n=1。 2) 固定當(dāng)前RBM的權(quán)重和偏移量,將當(dāng)前RBM的輸出作為下一個(gè)RBM的輸入向量。 3) 充分訓(xùn)練下一個(gè)RBM后,堆疊在當(dāng)前RBM的上方,n←n+1 。 4) 若n=N,轉(zhuǎn)步驟5);否則,轉(zhuǎn)步驟2)。 5) 使用BP網(wǎng)絡(luò)有監(jiān)督地訓(xùn)練分類器, 并自頂向下反向微調(diào)整個(gè)DBN網(wǎng)絡(luò)。 6) 訓(xùn)練結(jié)束。 2.2 限制玻爾茲曼機(jī) 受限玻爾茲曼機(jī)(RBM)由Hinton等[11]提出,該網(wǎng)絡(luò)由可見單元(visibleunit,對(duì)應(yīng)可見變量,亦即數(shù)據(jù)樣本)和隱藏單元(hiddenunit,對(duì)應(yīng)隱藏變量)構(gòu)成,可見變量和隱藏變量都是二元變量,其狀態(tài)取{0, 1}。整個(gè)網(wǎng)絡(luò)是一個(gè)二部圖,可見單元和隱藏單元之間連接,可見單元之間以及隱藏單元之間都不連接。 RBM的訓(xùn)練過程,實(shí)際上是求出一個(gè)最能產(chǎn)生訓(xùn)練樣本的概率分布。也就是說,要求一個(gè)分布,在這個(gè)分布里,訓(xùn)練樣本的概率最大。由于這個(gè)分布的決定性因素在于權(quán)值W,所以本文訓(xùn)練 RBM 的目標(biāo)就是尋找最佳的權(quán)值。 對(duì)于包含N個(gè)二值可見單元和M個(gè)二值隱單元的RBM,設(shè)定vi表示第i個(gè)可見單元的狀態(tài),hj表示第j個(gè)隱單元狀態(tài).那么,給定狀態(tài)(V,H) 所具備的能量定義如式(3): (3) 式中:wij表示可視層與隱藏層之間的權(quán)值;bi表示可視單元的偏置;cj表示隱單元的偏置。RBM處于狀態(tài)(V,H)的概率如式(4)所示: (4) 由于層間單元是無連接的,由可視層的節(jié)點(diǎn)值得到隱含層的節(jié)點(diǎn)值計(jì)算式[12]如式(5): (5) RBM是對(duì)稱網(wǎng)絡(luò),同理,利用式(6)可以由已知的隱含層的節(jié)點(diǎn)值得到可視層的節(jié)點(diǎn)值: (6) 式(5)~(6)中,σ(x)=1/(1+exp(-x))。 通常應(yīng)該采用馬爾可夫鏈的方法計(jì)算權(quán)值W,但是馬爾可夫鏈的計(jì)算復(fù)雜且收斂速度難以保證,因此本文采用對(duì)比散度(Contrastive Divergence, CD)的學(xué)習(xí)算法[13], CD準(zhǔn)則計(jì)算速度快且保持精度,本文利用這個(gè)算法計(jì)算權(quán)值W。CD準(zhǔn)則利用Kullback-Leibler 距離衡量?jī)蓚€(gè)概率分布的“差異性”,表示為KL(P‖P′),如式(7)所示: CDn=KL(p0‖p∞)-KL(pn‖p∞) (7) 其中:p0為RBM網(wǎng)絡(luò)初始狀態(tài)的聯(lián)合概率分布;pn為經(jīng)過n步馬爾可夫鏈之后的RBM網(wǎng)絡(luò)的聯(lián)合概率分布;p∞為馬爾可夫鏈末端的RBM網(wǎng)絡(luò)的聯(lián)合概率分布。所以,CDn可以看作是pn衡量介于p0和p∞之間的位置。不斷地將pn賦值給p0,得到新的p0和pn。由于n取1時(shí)就可以得到很好的結(jié)果[14],因此本文中n=1。RBM的訓(xùn)練過程實(shí)現(xiàn)步驟如算法2所示。 算法 2 基于CD準(zhǔn)則的RBM網(wǎng)絡(luò)自訓(xùn)練過程。 對(duì)于容量為N的訓(xùn)練集中的一個(gè)特征向量xn(0≤n 1) n=0。 2) 將xn附給顯層V0,根據(jù)式(5)計(jì)算隱藏層H0:P(h0j=1|V0)=σ(WjV0) 3) 根據(jù)式(6)重構(gòu)顯層得到V1:P(v1i=1|H0)=σ(WiTH0) 4) 再次根據(jù)式(5)計(jì)算隱藏層H1P(h1j=1|V1)=σ(WjV1) 5) 對(duì)于所有的節(jié)點(diǎn)j,按下式更新權(quán)重:Wj←Wj+λ(P(h0j=1|V0)V0T-P(h1j=1|V1)V1T) 若n=N-1,結(jié)束;否則n=n+1,轉(zhuǎn)步驟2)。 2.3BP網(wǎng)絡(luò) BP網(wǎng)絡(luò)是有監(jiān)督分類器,在DBN的最后一層對(duì)前端提取的特征向量進(jìn)行分類,并與正確結(jié)果比對(duì),進(jìn)而微調(diào)整個(gè)DBN。本文采用BP網(wǎng)絡(luò)訓(xùn)練方法[14],利用Sigmod函數(shù)作為BP網(wǎng)絡(luò)節(jié)點(diǎn)的求值函數(shù)。其訓(xùn)練過程如算法3所示。 算法3BP網(wǎng)絡(luò)的訓(xùn)練過程。 1) 隨機(jī)初始化頂層反向傳播網(wǎng)絡(luò)的參數(shù),設(shè)定訓(xùn)練步長(zhǎng)為N。 2) 3) 4) η為學(xué)習(xí)速率。 5) 如果n=N,訓(xùn)練結(jié)束;否則n=n+1,轉(zhuǎn)步驟2)。 本文設(shè)計(jì)了DeepDroid算法,提取并結(jié)合了安卓應(yīng)用的動(dòng)態(tài)特征和靜態(tài)特征,使用深度學(xué)習(xí)算法中的DBN算法對(duì)安卓應(yīng)用進(jìn)行分析。靜態(tài)特征和動(dòng)態(tài)特征的結(jié)合使得特征向量對(duì)安卓應(yīng)用的描述更加全面,同時(shí)采用DBN算法可以學(xué)習(xí)特征的深層結(jié)構(gòu),使安卓應(yīng)用的檢測(cè)更加精確。DeepDroid算法的結(jié)構(gòu)如圖5所示。 圖5 DeepDroid算法結(jié)構(gòu) 3.1 提取特征向量 特征向量由靜態(tài)特征和動(dòng)態(tài)特征共170種特征組成,其中前41種特征為靜態(tài)特征,后129種特征為動(dòng)態(tài)特征,針對(duì)每個(gè)安卓應(yīng)用分別檢測(cè)它是否含有相應(yīng)的靜態(tài)特征和動(dòng)態(tài)特征行為,并根據(jù)檢測(cè)結(jié)果得到該安卓應(yīng)用的特征向量。對(duì)于特征向量中的每一個(gè)特征值,若檢測(cè)到相應(yīng)的特征則標(biāo)記為1,否則標(biāo)記為0。 3.2 深度學(xué)習(xí)網(wǎng)絡(luò)訓(xùn)練 DBN由多層RBM組成,最后一層采用BP網(wǎng)絡(luò)。DBN的訓(xùn)練分為兩步:1)分別單獨(dú)無監(jiān)督地訓(xùn)練每一層RBM網(wǎng)絡(luò),確保特征向量映射到不同特征空間時(shí),都盡可能多地保留特征信息;2)在DBN的最后一層設(shè)置BP網(wǎng)絡(luò),接收RBM的輸出特征向量作為它的輸入特征向量,有監(jiān)督地訓(xùn)練實(shí)體關(guān)系分類器。每一層RBM網(wǎng)絡(luò)只能確保自身層內(nèi)的權(quán)值對(duì)該層特征向量映射達(dá)到最優(yōu),并不是對(duì)整個(gè)DBN的特征向量映射達(dá)到最優(yōu),所以反向傳播網(wǎng)絡(luò)還將錯(cuò)誤信息自頂向下傳播至每一層RBM,微調(diào)整個(gè)DBN。與傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)所有層同時(shí)訓(xùn)練不同,深度學(xué)習(xí)算法每層隱層都單獨(dú)充分訓(xùn)練后再訓(xùn)練下一層。將3.1節(jié)中得到的特征向量集X作為第一層RBM的輸入V0,通過算法2計(jì)算修改權(quán)值W0。當(dāng)?shù)谝粚佑?xùn)練完成后,將第一層的輸出H0作為第二層的輸入V1,同樣通過算法2計(jì)算修改權(quán)值W1,以此類推充分訓(xùn)練每層RBM。當(dāng)所有RBM層都單獨(dú)充分訓(xùn)練完成后,將最后一層RBM的輸出Hn-1(n為RBM隱藏層層數(shù))作為BP層的輸入Vn,通過2.3節(jié)中的BP網(wǎng)絡(luò)算法有監(jiān)督地訓(xùn)練分類器,并自頂向下反向微調(diào)整個(gè)DBN。 3.3 惡意應(yīng)用檢測(cè) 通過3.2節(jié)訓(xùn)練得到的深度置信網(wǎng)絡(luò),就可以對(duì)安卓應(yīng)用進(jìn)行安全檢測(cè),將安卓應(yīng)用的特征向量輸入到網(wǎng)絡(luò)中就可以對(duì)其進(jìn)行檢測(cè)。實(shí)驗(yàn)部分將會(huì)使用測(cè)試集對(duì)DeepDroid算法的準(zhǔn)確率進(jìn)行驗(yàn)證。 本文在GooglePlayStore共下載得到近13 000個(gè)應(yīng)用程序(https://github.com/Akdeniz/google-play-crawler),去除掉不可解包的應(yīng)用后共得到12 170個(gè)非惡意樣本。惡意樣本來自VirusTotal(https://www.virustotal.com/),共計(jì)2 678個(gè)惡意應(yīng)用。訓(xùn)練集和測(cè)試集均由1 300個(gè)非惡意程序以及1 300個(gè)惡意程序組成。 為了驗(yàn)證本文所提方法的有效性,將本文方法與其他傳統(tǒng)方法進(jìn)行比較,設(shè)計(jì)了3組實(shí)驗(yàn)。第1組實(shí)驗(yàn)采用不同RBM層數(shù)和隱藏層節(jié)點(diǎn)數(shù),確定檢測(cè)準(zhǔn)確率最高的深層網(wǎng)絡(luò)結(jié)構(gòu);第2組實(shí)驗(yàn)采用不同的特征向量,驗(yàn)證動(dòng)靜態(tài)特征結(jié)合對(duì)惡意程序檢測(cè)的有效性;第3組實(shí)驗(yàn)采用不同的機(jī)器學(xué)習(xí)算法,驗(yàn)證了本文采用的DBN算法比傳統(tǒng)的機(jī)器學(xué)習(xí)算法更加有效。在實(shí)驗(yàn)中,采用準(zhǔn)確率(Precision)、召回率(Recall)、F系數(shù)(F-Measure)和正確率(accuracy)來評(píng)價(jià)對(duì)惡意行為檢測(cè)的結(jié)果。深度學(xué)習(xí)網(wǎng)絡(luò)的隱藏層數(shù)越多,隱藏層節(jié)點(diǎn)數(shù)越多其學(xué)習(xí)能力越強(qiáng),但是由于樣本集數(shù)量的關(guān)系,過多的層數(shù)不但導(dǎo)致效率低下,還可能只是干擾層反而影響學(xué)習(xí)結(jié)果。由于目前關(guān)于深度網(wǎng)絡(luò)結(jié)構(gòu)的選取還沒有完善的理論依據(jù),本文通過實(shí)驗(yàn)的方法來確定最優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu)。 本文測(cè)試了多種網(wǎng)絡(luò)結(jié)構(gòu),首先采用單隱藏層,DBN網(wǎng)絡(luò)結(jié)構(gòu)為[170,140,2],輸入層節(jié)點(diǎn)數(shù)為170,隱藏層節(jié)點(diǎn)數(shù)為140,輸出層節(jié)點(diǎn)數(shù)為2,學(xué)習(xí)速率設(shè)置為0.05,采用單隱藏層的結(jié)構(gòu)時(shí)收斂速度較快,檢測(cè)的正確率為95.96%。采用雙層隱藏層時(shí),DBN網(wǎng)絡(luò)結(jié)構(gòu)為[170,140,140,2],輸入層節(jié)點(diǎn)數(shù)為170,隱藏層節(jié)點(diǎn)數(shù)為140,輸出層節(jié)點(diǎn)數(shù)為2,學(xué)習(xí)速率設(shè)置為0.05,檢測(cè)的準(zhǔn)確率為97.08%,收斂速度變慢。采用三層隱藏層時(shí),DBN網(wǎng)絡(luò)結(jié)構(gòu)為[170,140,140,140,2],輸入層節(jié)點(diǎn)數(shù)為170,隱藏層節(jié)點(diǎn)數(shù)為140,輸出層節(jié)點(diǎn)數(shù)為2,學(xué)習(xí)速率設(shè)置為0.05,檢測(cè)的準(zhǔn)確率為96.73%,雖然隱藏層層數(shù)增加了,但是正確率卻略微下降。采用四層隱藏層時(shí),DBN網(wǎng)絡(luò)結(jié)構(gòu)為[170,140,140,140,140,2],輸入層節(jié)點(diǎn)數(shù)為170,隱藏層節(jié)點(diǎn)數(shù)為140,輸出層節(jié)點(diǎn)數(shù)為2,學(xué)習(xí)速率設(shè)置為0.05,檢測(cè)的準(zhǔn)確率為94.92%,收斂速度非常慢。除了隱藏層層數(shù),隱藏層節(jié)點(diǎn)數(shù)也會(huì)對(duì)網(wǎng)絡(luò)的效率有一定的影響,修改前面實(shí)驗(yàn)中四個(gè)網(wǎng)絡(luò)的隱藏層節(jié)點(diǎn)數(shù)為160,得到四個(gè)新的網(wǎng)絡(luò),分別為單隱藏層網(wǎng)絡(luò)[170,160,2]、雙隱藏層網(wǎng)絡(luò)[170,160,160,2]、三隱藏層網(wǎng)絡(luò)[170,160,160,160,2]、四隱藏層網(wǎng)絡(luò)[170,160,160,160,160,2],其正確率分別為96.54%、96.58%、94.54%、94.54%。同樣將隱藏層數(shù)為二、三、四的三個(gè)網(wǎng)絡(luò)隱藏層節(jié)點(diǎn)數(shù)修改為120,得到三個(gè)新的網(wǎng)絡(luò),分別為雙隱藏層網(wǎng)絡(luò)[170,120,120,2]、三隱藏層網(wǎng)絡(luò)[170,120,120,120,2]、四隱藏層網(wǎng)絡(luò)[170,120,120,120,120,2],其正確率分別為96.35%、96.08%、94.35%。當(dāng)采用兩層隱藏層,隱藏層節(jié)點(diǎn)數(shù)為140,網(wǎng)絡(luò)結(jié)構(gòu)為[170,140,140,2]時(shí)檢測(cè)的正確率最高為97.08%。實(shí)驗(yàn)1的結(jié)果如表2所示。 為了驗(yàn)證結(jié)合靜態(tài)特征和動(dòng)態(tài)特征作為特征向量比單獨(dú)采用某種特征向量有更好的性能,在實(shí)驗(yàn)2中,分別使用態(tài)靜態(tài)特征、動(dòng)態(tài)特征、動(dòng)靜態(tài)結(jié)合特征作為輸入特征向量進(jìn)行惡意行為檢測(cè),結(jié)果如表3所示。從表3的結(jié)果中可以看出:采用靜態(tài)特征可以更加準(zhǔn)確地檢測(cè)惡意應(yīng)用,而非惡意應(yīng)用的準(zhǔn)確率低說明有很多誤報(bào);采用動(dòng)態(tài)特征時(shí),惡意應(yīng)用的準(zhǔn)確率較低,非惡意應(yīng)用的準(zhǔn)確率與采用靜態(tài)特征的結(jié)果相比更高;當(dāng)結(jié)合了動(dòng)態(tài)和靜態(tài)特征時(shí),惡意應(yīng)用和非惡意應(yīng)用的準(zhǔn)確率都比較高,與單獨(dú)使用一種特征相比性能有很大提升。 在實(shí)驗(yàn)3中,比較與傳統(tǒng)的機(jī)器學(xué)習(xí)模型和深度學(xué)習(xí)模型,結(jié)果如表4所示。對(duì)于文中的其他機(jī)器學(xué)習(xí)算法(SVM、NaiveBayes、KNN),測(cè)試了linear kernel、polynomial kernel、sigmoid kernel等多種核函數(shù),并選取性能最好的作為實(shí)驗(yàn)結(jié)果。從表4中可以清楚地看到,在使用相同測(cè)試集的情況下,DBN算法的正確率比SVM算法高出3.96個(gè)百分點(diǎn),比Naive Bayes算法高出12.16個(gè)百分點(diǎn),比KNN算法高出13.62個(gè)百分點(diǎn),深度學(xué)習(xí)的模型明顯優(yōu)于其他惡意軟件檢測(cè)模型。 表2 不同深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)檢測(cè)結(jié)果 % 表3 不同特征向量檢測(cè)結(jié)果 % 表4 不同機(jī)器學(xué)習(xí)算法檢測(cè)結(jié)果 % 實(shí)驗(yàn)結(jié)果表明,深度學(xué)習(xí)算法與其他傳統(tǒng)機(jī)器學(xué)習(xí)算法相比有更好的性能。當(dāng)深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)在當(dāng)前數(shù)據(jù)集下達(dá)到最高性能時(shí),深度學(xué)習(xí)算法有很高的準(zhǔn)確率。從表2中可以看到,即使深度學(xué)習(xí)網(wǎng)絡(luò)沒有采用性能最佳的2隱層結(jié)構(gòu),其最低正確率也達(dá)到94.35%。 本文通過靜態(tài)特征和動(dòng)態(tài)特征結(jié)合的檢測(cè)方法,使用深度置信網(wǎng)絡(luò)(DBN)對(duì)提取的安卓應(yīng)用程序特征進(jìn)行分析識(shí)別,實(shí)現(xiàn)了DeepDroid安卓惡意軟件檢測(cè)算法。本文實(shí)驗(yàn)中在Google Play Store得到12 170個(gè)非惡意樣本,在VirusTotal上得到2 678個(gè)惡意應(yīng)用,并通過這些樣本構(gòu)建實(shí)驗(yàn)集。實(shí)驗(yàn)中,首先對(duì)應(yīng)用程序進(jìn)行了特征提取,并將提取到的靜態(tài)特征和動(dòng)態(tài)特征整合到同一個(gè)特征向量中;然后,從數(shù)據(jù)集中選取部分非惡意應(yīng)用和部分惡意應(yīng)用,使用這些應(yīng)用程序的特征向量訓(xùn)練DBN;最終,通過訓(xùn)練好的DBN對(duì)安卓惡意應(yīng)用程序進(jìn)行識(shí)別。深度學(xué)習(xí)是機(jī)器學(xué)習(xí)研究的一個(gè)新領(lǐng)域,與傳統(tǒng)機(jī)器學(xué)習(xí)方法相比,深度學(xué)習(xí)可以學(xué)習(xí)到數(shù)據(jù)中更深層的特征,從而提高檢測(cè)性能。本文中共提取了170個(gè)特征,其中包含41個(gè)常見惡意靜態(tài)特征和129個(gè)高危動(dòng)態(tài)特征,動(dòng)態(tài)特征包含內(nèi)核指令、系統(tǒng)調(diào)用以及Dalvik指令。根據(jù)提取到的170個(gè)特征將數(shù)據(jù)集通過深度學(xué)習(xí)算法對(duì)特征向量進(jìn)行分類。從實(shí)驗(yàn)結(jié)果可以看出,雖然訓(xùn)練集不同,深度學(xué)習(xí)網(wǎng)絡(luò)的性能可能會(huì)略有不同,但是與傳統(tǒng)機(jī)器學(xué)習(xí)算法相比,深度學(xué)習(xí)算法依然有更高的準(zhǔn)確率。 本文研究依然存在一些不足和可以改進(jìn)的地方:由于惡意應(yīng)用收集比較困難,本文收集了2 678個(gè)惡意應(yīng)用,因此數(shù)據(jù)集相對(duì)較小,如果采用更大的數(shù)據(jù)集則可以得到更準(zhǔn)確的結(jié)果。此外特征向量的值可以采用離散值來增加其信息量,采用二進(jìn)制(0,1)只能表示檢測(cè)到了某種惡意行為,而采用離散值可以增加其含義。比如相同的惡意行為出現(xiàn)了兩次,可以標(biāo)記為2,有些高危特征可以加權(quán)來突出其危險(xiǎn)性。 References) [1] 楊歡.協(xié)議漏洞挖掘及Android平臺(tái)惡意應(yīng)用檢測(cè)技術(shù)研究[D].西安:西安電子科技大學(xué),2014:2-3.(YANG H. Research on protocols vulnerability discovery and Android malware detection [D]. Xi’an: Xidian University, 2014: 2-3.) [2] 360互聯(lián)網(wǎng)安全中心.2015年中國(guó)手機(jī)安全狀況報(bào)告[R/OL]. [2016- 09- 15].http://zt.#/1101061855.php?dtid=1101061451&did=1101593997.(360 Internet Security Center. China mobile security status report 2015 [R/OL]. [2016- 09- 15]. http://zt.#/1101061855.php?dtid=1101061451&did=1101593997.) [3] SCHMIDT A D, BYE R, SCHMIDT H G, et al. Static analysis of executables for collaborative malware detection on Android [C]// Proceedings of the 2009 IEEE International Conference on Communications. Piscataway, NJ: IEEE, 2009: 631-635. [4] SHABTAI A, KANONOV U, ELOVICI Y, et al. “Andromaly”: a behavioral malware detection framework for android devices [J]. Journal of Intelligent Information Systems, 2012, 38(1): 161-190. [5] BURGUERA I, ZURUTUZA U, NADJM-TEHRANI S. Crowdroid: behavior-based malware detection system for Android [C]// SPSM’11: Proceedings of the 1st ACM Workshop on Security and Privacy in Smartphones and Mobile Devices. New York: ACM, 2011: 15-26. [6] HINTON G E, OSINDERO S, TEH Y W. A fast learning algorithm for deep belief nets [J]. Neural Computation, 2006, 18(7): 1527-1554 [7] SALAKHUTDINOV R, HINTON G E. Deep Boltzmann machines [C]// Proceedings of the 12th International Conference on Artificial Intelligence and Statistics. [S.l.]: AISTATS, 2009: 448-455. [8] 孫志軍,薛磊,許陽(yáng)明,等.深度學(xué)習(xí)研究綜述[J].計(jì)算機(jī)應(yīng)用研究,2012,29(8):2806-2810.(SUN Z J, XUE L, XU Y M, et al. Overview of deep learning [J]. Application Research of Computers, 2012, 29(8): 2806-2810.) [9] YUAN Z L, LU Y Q, XUE Y B. DroidDetector: Android malware characterization and detection using deep learning [J]. Tsinghua Science and Technology, 2016, 21(1): 114-123. [10] 陳宇,鄭德權(quán),趙鐵軍.基于Deep Belief Nets 的中文名實(shí)體關(guān)系抽取[J].軟件學(xué)報(bào),2012,23(10):2572-2585.(CHEN Y, ZHENG D Q, ZHAO T J. Chinese relation extraction based on deep belief nets [J]. Journal of Software, 2012, 23(10): 2572-2585.) [11] HINTON G E, SEJNOWSKI T J. Learning and relearning in Boltzmann machines [M] // Parallel Distributed Processing: Explorations in the Microstructure of Cognition. Cambridge, MA: MIT Press, 1986: 282-317. [12] HINTON G E. A practical guide to training restricted Boltzmann machines [R]. Toronto: University of Toronto, Machine Learning Group, 2010. [13] HINTON G E. Training products of experts by minimizing contrastive divergence [J]. Neural Computation, 2002, 14(8): 1771-1800. [14] CARREIRA-PERPINAN M A, HINTON G E. On contrastive divergence learning [C]// Proceedings of the 2005 Tenth International Conference on Artificial Intelligence and Statistics. [S.l.]: AISTATS, 2005: 33-40. This work is partially supported by the National Natural Science Foundation of China (61271252). SU Zhida, born in 1992, M. S. candidate. His research interests include Android reverse, Android security detection. ZHU Yuefei, born in 1962, Ph. D., professor. His research interests include number theory for computing, cryptography, information security. LIU long, born in 1983, M. S., lecturer. His research interests include vulnerability mining, mobile security. Android malware application detection using deep learning SU Zhida*, ZHU Yuefei, LIU Long (StateKeyLaboratoryofMathematicalEngineeringandAdvancedComputing,ZhengzhouHenan450001,China) The traditional Android malware detection algorithms have low detection accuracy, which can not successfully identify the Android malware by using the technologies of repacking and code obfuscation. In order to solve the problems, the DeepDroid algorithm was proposed. Firstly, the static and dynamic features of Android application were extracted and the Android application features were created by combining static features and dynamic features. Secondly, the Deep Belief Network (DBN) of deep learning algorithm was used to train the collected training set for generating deep learning network. Finally, untrusted Android application was detected by the generated deep learning network. The experimental results show that, when using the same test set, the correct rate of DeepDroid algorithm is 3.96 percentage points higher than that of Support Vector Machine (SVM) algorithm, 12.16 percentage points higher than that of Naive Bayes algorithm, 13.62 percentage points higher than that ofK-Nearest Neighbor (KNN) algorithm. The proposed DeepDroid algorithm has combined the static features and dynamic features of Android application. The DeepDroid algorithm has made up for the disadvantages that code coverage of static detection is not enough and the false positive rate of dynamic detection is high by using the detection method combined dynamic detection and static detection. By using the DBN algorithm in feature recognition, the proposed DeepDroid algorithm has guaranteed high network training speed and high detection accuracy at the same time. Android; malware detection; malicious code analysis; deep learning 2016- 11- 17; 2017- 02- 20。 基金項(xiàng)目:國(guó)家自然科學(xué)基金資助項(xiàng)目(61271252)。 蘇志達(dá)(1992—),男,內(nèi)蒙古赤峰人,碩士研究生,主要研究方向:安卓逆向、安卓安全檢測(cè); 祝躍飛(1962—),男,浙江杭州人,教授,博士,主要研究方向:計(jì)算數(shù)論、密碼學(xué)、信息安全; 劉龍(1983—),男,河南鄭州人,講師,碩士,主要研究方向:漏洞挖掘、移動(dòng)安全。 1001- 9081(2017)06- 1650- 07 10.11772/j.issn.1001- 9081.2017.06.1650 TP309.5 A3 基于深度學(xué)習(xí)的安卓應(yīng)用檢測(cè)
4 實(shí)驗(yàn)結(jié)果與分析
5 結(jié)語(yǔ)