一種基于Dalvik指令抽象的Android惡意代碼檢測方法【專利摘要】一種基于Dalvik指令抽象的Android惡意代碼檢測方法,包括如下步驟:1)惡意代碼的檢測與分類模型訓(xùn)練,從smali文件中提取出Dalvik操作碼并進行抽象簡化為指令符號,再針對抽象的Dalvik指令符號的N?Gram序列特征進行統(tǒng)計與歸一化處理,最后采用機器學(xué)習的分類算法建立惡意代碼檢測模型和惡意家族分類模型;2)將待測APK文件先進行預(yù)處理,提取出Dalvik指令特征并作抽象簡化與N?Gram序列化處理,再通過惡意代碼檢測模型的檢測,初步判斷出是否為惡意代碼;如果不是就直接給出檢測結(jié)果,如果是則進一步通過惡意家族分類模型來獲得該惡意代碼家族類型。本發(fā)明快速性良好、有效性較高。【專利說明】一種基于DaIvik指令抽象的Android惡意代碼檢測方法
技術(shù)領(lǐng)域:
[0001]本發(fā)明涉及惡意代碼檢測
技術(shù)領(lǐng)域:
,尤其是一種Android惡意代碼檢測方法?!?br>背景技術(shù):
】[0002]隨著移動互聯(lián)網(wǎng)的發(fā)展,移動智能終端越來越普及,移動應(yīng)用的種類與數(shù)量都呈現(xiàn)高速增長,智能手機已經(jīng)成為網(wǎng)民最常用的上網(wǎng)工具。來自Gartner統(tǒng)計數(shù)據(jù)顯示,2015年第4季度全球智能手機的銷售量為4億多臺,其中Android系統(tǒng)占據(jù)了80.7%。截止2016年2月1日,僅Android官方應(yīng)用市場GooglePlay上的應(yīng)用數(shù)量就接近200萬。同時,移動惡意應(yīng)用的種類與數(shù)量也呈現(xiàn)高速增長,根據(jù)阿里聚安全發(fā)布的2015移動安全病毒年報,18%的Android設(shè)備感染過病毒,95%的熱門移動應(yīng)用存在仿冒應(yīng)用,惡意應(yīng)用類型越來越多。常見手機病毒的惡意行為包括惡意扣費、信息竊取、短信劫持等,可嚴重損害手機用戶的利益,危害不容忽視。[0003]Android惡意代碼檢測方法主要有基于特征代碼和基于行為的檢測?;谔卣鞔a的檢測方法通過檢測文件是否擁有已知惡意軟件的特征代碼來判斷其是否為惡意軟件,具有快速、準確率高等特點,但無法檢測未知的惡意代碼,且通常需要維護病毒特征數(shù)據(jù)庫。國外著名的Android惡意代碼檢測工具Androguard就是基于特征代碼實現(xiàn)的。[0004]基于行為的檢測方法則通過程序的行為與已知惡意行為模式進行匹配,判斷目標文件是否包含惡意代碼。誤報率雖然并不理想,但可實現(xiàn)對未知惡意代碼或病毒的檢測,彌補基于特征代碼的檢測?;谛袨榈姆治鲇挚蛇M一步分為動態(tài)和靜態(tài)兩種分析方法。動態(tài)分析方法是指利用"沙盒或虛擬機"來模擬運行程序,通過攔截或監(jiān)控的方式分析程序運行時的行為特征,一定程度上可繞過代碼混淆等代碼保護機制,但是計算資源和時間消耗較大,且代碼覆蓋率低。相對于重量級的動態(tài)分析,靜態(tài)分析則相對屬于輕量級的方法,通常是通過逆向工程抽取程序的特征,分析函數(shù)調(diào)用、程序指令等序列,具有快速高效、代碼覆蓋率高等特點。[0005]目前,大部分的靜態(tài)分析方法主要從4]1(11'〇丨(11&111丨€68.11111文件、1;[13庫文件(.80文件)、Java源文件(通過反編譯APK文件獲得)等進行特征的提取與分析,而針對Dalvik指令序列的特征研究相對較少?!?br/>發(fā)明內(nèi)容】[0006]為了克服已有Android惡意代碼檢測方法的快速性較差、有效性較低的不足,本發(fā)明提供一種快速性良好、有效性較高的基于Dalvik指令抽象的Android惡意代碼檢測方法。[0007]本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:[0008]一種基于Dalvik指令抽象的Android惡意代碼檢測方法所述檢測方法包括如下步驟:[0009]1)惡意代碼的檢測與分類模型訓(xùn)練,過程如下:[0010]1.1)確定訓(xùn)練惡意代碼檢測模型訓(xùn)練集,訓(xùn)練集分為兩個子集,一個是惡意APK樣本集合,另一個是非惡意樣本APK集合;APK文件格式通常都包含一個classes.dex文件,該Dex文件封裝可被Dalvik虛擬機執(zhí)行的Dalvik字節(jié)碼,利用工具Apktool反匯編APK文件,就能得到一個包含smali源碼的文件目錄,smali目錄結(jié)構(gòu)對應(yīng)著Java源碼的src目錄,smali是對Dalvik字節(jié)碼的一種解釋,所有語句都遵循一套標準的語法規(guī)范,從smali文件中提取出Dalvik操作碼并進行抽象簡化為指令符號,再針對抽象的Dalvik指令符號的N-Gram序列特征進行統(tǒng)計與歸一化處理,最后采用機器學(xué)習的分類算法建立惡意代碼檢測模型;[0011]1.2)確定惡意家族分類模型的訓(xùn)練集,訓(xùn)練集按照惡意家族類型數(shù)量分為子集,按照步驟1.1)的方式建立惡意家族分類模型;[0012]2)將待測APK文件先進行預(yù)處理,提取出Dalvik指令特征并作抽象簡化與N-Gram序列化處理,再通過惡意代碼檢測模型的檢測,初步判斷出是否為惡意代碼;如果不是就直接給出檢測結(jié)果,如果是則進一步通過惡意家族分類模型來獲得該惡意代碼家族類型。[0013]進一步,所述抽象簡化的過程為:在指令集中提取出能夠正確反映程序語義的指令和操作碼,對功能相近的指令進行歸類,并將該類的指令集合抽象為指令符號。[0014]再進一步,在Dalvik指令集中提取出的107種代表性指令并分成10大功能相近的類,并且每類指令抽象為一個特定的指令符號,N-Gram編碼直接使用這種指令符號代替完整的Dalvik指令。[00?5]更進一步,所述N-Gram序列化處理處理采用3-Gram序列的隨機森林算法。[0016]本發(fā)明的技術(shù)構(gòu)思為:基于Dalvik指令序列的抽象模型再結(jié)合機器學(xué)習的Android惡意代碼檢測方法。首先研究AndroidDalvik指令的抽象與簡化,提取Dalvik指令的操作碼,再借鑒OpCodeN-Gram方法提取抽象指令符的序列特征,最后實現(xiàn)針對Android的一種快速有效的惡意代碼檢測方法。[0017]本發(fā)明的有益效果主要表現(xiàn)在:(1)簡化Dalvik指令集,用指令符號抽象一類指令的操作碼,并提出了一種基于N-Gram序列的特征模型,提高了特征提取的效率。[00?8](2)針對抽象的Da1vik指令符號的N-Gram序列特征,采用隨機森林學(xué)習算法,有效實現(xiàn)了一種Android惡意代碼的檢測方法,與常見反病毒軟件相比較,獲得較高的檢測率。[0019](3)隨著Android惡意代碼訓(xùn)練樣本數(shù)量的增加,檢測方法可不斷提高檢測精度,具有良好的擴展性?!靖綀D說明】[0020]圖1是惡意代碼的檢測與分類模型訓(xùn)練過程的示意圖。[0021]圖2是惡意代碼的檢測與分類過程的示意圖?!揪唧w實施方式】[0022]下面結(jié)合附圖對本發(fā)明作進一步描述。[0023]參照圖1和圖2,一種基于Dalvik指令抽象的Android惡意代碼檢測方法所述檢測方法包括如下步驟:[0024]1)惡意代碼的檢測與分類模型訓(xùn)練,過程如下:[0025]1.1)確定訓(xùn)練惡意代碼檢測模型的訓(xùn)練集,訓(xùn)練集分為兩個子集,一個是惡意APK樣本集合,另一個是非惡意樣本APK集合;APK文件格式通常都包含一個classes.dex文件,該Dex文件封裝可被Dalvik虛擬機執(zhí)行的Dalvik字節(jié)碼,利用工具Apktool反匯編APK文件,就能得到一個包含smali源碼的文件目錄,smali目錄結(jié)構(gòu)對應(yīng)著Java源碼的src目錄,smali是對Dalvik字節(jié)碼的一種解釋,所有語句都遵循一套標準的語法規(guī)范,從smali文件中提取出Dalvik操作碼并進行抽象簡化為指令符號,再針對抽象的Dalvik指令符號的N-Gram序列特征進行統(tǒng)計與歸一化處理,最后采用機器學(xué)習的分類算法建立惡意代碼檢測模型;[0026]1.2)確定惡意家族分類模型的訓(xùn)練集,訓(xùn)練集按照惡意家族類型數(shù)量分為子集,按照步驟1.1)的方式建立惡意家族分類模型;[0027]2)將待測APK文件先進行預(yù)處理,提取出Dalvik指令特征并作抽象簡化與N-Gram序列化處理,再通過惡意代碼檢測模型的檢測,初步判斷出是否為惡意代碼;如果不是就直接給出檢測結(jié)果,如果是則進一步通過惡意家族分類模型來獲得該惡意代碼家族類型。[0028]本實施例的Android惡意代碼檢測系統(tǒng)。該系統(tǒng)可以快速有效地檢測Android應(yīng)用程序,識別惡意應(yīng)用且能夠給出惡意家族的類別信息。[0029]整個系統(tǒng)分為兩部分,第一部分是惡意代碼檢測模型和惡意家族分類模型的訓(xùn)練,如圖1所示;第二部分是惡意代碼檢測模型和惡意家族分類模型的測試,如圖2所示。[0030]首先,需要確定訓(xùn)練惡意代碼檢測模型的訓(xùn)練集。訓(xùn)練集分為兩個子集,一個是惡意APK樣本集合,另一個是非惡意樣本APK集合。APK文件格式通常都包含一個classes.dex文件,該Dex(Dalvikexecutableformat)文件封裝了可被Dalvik虛擬機執(zhí)行的Dalvik字節(jié)碼。利用工具Apktool反匯編APK文件,就能得到一個包含smali源碼的文件目錄,smali目錄結(jié)構(gòu)對應(yīng)著Java源碼的src目錄。sma1i是對Da1vik字節(jié)碼的一種解釋,所有語句都遵循一套標準的語法規(guī)范。從smali文件中提取出Dalvik操作碼并進行抽象簡化為指令符號,再針對抽象的Dalvik指令符號的N-Gram序列特征進行統(tǒng)計與歸一化處理,最后采用機器學(xué)習的分類算法建立惡意代碼檢測模型。同理,按照惡意家族的類型劃分多個訓(xùn)練子集,按照上述類似的處理過程,可建立一個惡意家族分類模型。[0031]利用模型檢測與分類時,將待測APK文件先進行預(yù)處理步驟,提取出Dalvik指令特征并作同樣的抽象簡化與N-Gram序列化處理,再通過惡意代碼檢測模型的檢測,就可判斷出是否為惡意代碼,如果不是就直接給出檢測結(jié)果,如果是則需要進一步通過惡意家族分類模型來獲得該惡意代碼家族類型。[0032]官方Dalvik指令有230條,分別包括方法調(diào)用指令、數(shù)據(jù)操作指令、返回指令等十幾種類型。設(shè)計了一種利用指令符號的簡化方案:在指令集中提取出能夠正確反映程序語義的指令和操作碼,對功能相近的指令進行歸類,并將該類的指令集合抽象為指令符號。與原有的Dalvik的指令集相比,更加簡化精要,且便于后續(xù)的分析與特征提取。表1中給出了最終的設(shè)計方案,在Dalvik指令集中提取出的107種代表性指令并分成10大功能相近的類,并且每類指令抽象為一個特定的指令符號,后續(xù)N-Gram編碼將直接使用這種指令符號代替完整的Dalvik指令。表1為Dalvik指令與指令符號表:[0035]表1[0036]N-Gram算法經(jīng)常用于自然語言處理領(lǐng)域,但是它也經(jīng)常用來處理惡意代碼的分析。對Dalvik指令符號進行N-Gram編碼,同樣可以用于分析Android的惡意代碼。N-Gram算法假設(shè)第m個詞的出現(xiàn)只是于前面的m-1個詞相關(guān),現(xiàn)假設(shè)有Dalvik指令符號序列為MRGITPV,3-Gram編碼后提取的特征為[{MRG},{RGI},{GIT},{ITP},{TPV}]。表2中給出了當3-Gram編碼時,一個對應(yīng)的APK應(yīng)用中包含的1000種不同N-Gram特征的頻率統(tǒng)計。[0038]表2[0039]米用270個惡意樣本和330正常樣本作為實驗樣本集,根據(jù)2-Gram、3-Gram、4-Gram編碼分別提取了不同長度的Dalvik指令符號序列,然后再分別使用4種分類算法包括隨機森林算法(RandomForest)、支持向量機算法(SVM)、K-最近鄰算法(KNN)、樸素貝葉斯算法(NaiveBayes)對3種編碼的序列采用10折交叉驗證進行測試,結(jié)果如表3~表5所示。表3為基于2-Gram序列的測試結(jié)果表,表4為基于3-Gram序列的測試結(jié)果表,表5為基于4-Gram序列的測試結(jié)果表:。[0045]表5[0046]選用AUC、TPR、FPR、Precision、Recall、F_Measure等通用性指標作為實驗的評估標準,其中AUC是最重要的標準,它可以正確地反映TPR和FPR之間的關(guān)系,AUC值越高代表檢測的綜合表現(xiàn)越優(yōu)。FPR也是一項重要的指標,F(xiàn)PR值越低代表誤報率越低。在表3中,隨機森林算法的AUC值最高,F(xiàn)PR值最低,而TPR值略不如KNN算法。在表4中,隨機森林算法的各項指標都表項最優(yōu)。在表5中,隨機森林算法的AUC值最高,KNN算法的FPR值最理想,但是隨機森林算法的FPR值與KNN算法的FPR值差距很小。因此,在2-Gram、3-Gram、4-Gram指令符號序列中,隨機森林算法的效果最佳。[0047]以隨機森林算法為基礎(chǔ)進一步尋找最優(yōu)的N-Gram序列。綜合比較表3~表5,不難發(fā)現(xiàn),隨機森林算法AUC值按從優(yōu)到劣的順序為:4-Gram、3-Gram、2-Gram;隨機森林算法FPR值按從優(yōu)到劣的順序為:3-6抑111、4-6瓜111、2-6抑111;2-6瓜1]1序列表現(xiàn)都是最劣的,可以不再考慮。4-Gram序列的隨機森林算法AUC值比3-Gram序列的隨機森林算法AUC值只高出了2%,而4-Gram序列的隨機森林算法FPR值比3-Gram序列的隨機森林算法FPR值卻足足高出了30%。綜合分析,3-Gram序列的隨機森林算法是一種優(yōu)選的方法。[0048]選用3-Gram序列的隨機森林算法,實現(xiàn)了本發(fā)明提出的Android惡意代碼檢測系統(tǒng)。通過與專業(yè)的反病毒軟件進行對比實驗,檢驗對惡意代碼的檢測效果。選用了1000個惡意樣本,然后隨機劃分了2個獨立的樣本庫,60%數(shù)據(jù)作為訓(xùn)練樣本庫,40%數(shù)據(jù)作為所有被測系統(tǒng)的測試樣本庫。將測試樣本發(fā)送到VirusBook多引擎文件檢測服務(wù),然后得到了8種常見的反病毒軟件(Dr·Web、AVG、TrendMicro、⑶ATA、Rising、ESET、MSE、Avast)的檢測結(jié)果,并統(tǒng)計出各系統(tǒng)的檢測率與誤報率,如表6所示。[0049][0050]表6[0051]根據(jù)表6顯示的本次實驗結(jié)果,本發(fā)明申請?zhí)岢龅臋z測方法在所有的反病毒軟件中,以92%的檢測率排名第三,超過6個世界著名殺毒軟件,說明了本方法的優(yōu)勢。只要訓(xùn)練樣本不斷擴充且不斷優(yōu)化,檢測效果可以不斷提高。[0052]本發(fā)明的技術(shù)構(gòu)思為:提出了一種Android惡意代碼檢測方法,用逆向工程將Dex文件轉(zhuǎn)化為Dalvik指令并對指令進行簡化抽象,再將抽象后的指令序列進行N-Gram編碼作為樣本訓(xùn)練,利用3-Gram序列和隨機森林學(xué)習算法創(chuàng)建優(yōu)化的分類檢測模型,可實現(xiàn)精準高效的Andriod惡意代碼檢測。【主權(quán)項】1.一種基于Dalvik指令抽象的Android惡意代碼檢測方法,其特征在于:所述檢測方法包括如下步驟:1)惡意代碼的檢測與分類模型訓(xùn)練,過程如下:1.1)確定訓(xùn)練惡意代碼檢測模型的訓(xùn)練集,訓(xùn)練集分為兩個子集,一個是惡意APK樣本集合,另一個是非惡意樣本APK集合;APK文件格式通常都包含一個classes.dex文件,該Dex文件封裝可被Dalvik虛擬機執(zhí)行的Dalvik字節(jié)碼,利用工具Apktool反匯編APK文件,就能得到一個包含smali源碼的文件目錄,smali目錄結(jié)構(gòu)對應(yīng)著Java源碼的src目錄,smali是對Dalvik字節(jié)碼的一種解釋,所有語句都遵循一套標準的語法規(guī)范,從smali文件中提取出Dalvik操作碼并進行抽象簡化為指令符號,再針對抽象的Dalvik指令符號的N-Gram序列特征進行統(tǒng)計與歸一化處理,最后采用機器學(xué)習的分類算法建立惡意代碼檢測模型;1.2)確定惡意家族分類模型的訓(xùn)練集,訓(xùn)練集按照惡意家族類型數(shù)量分為子集,按照步驟1.1)的方式建立惡意家族分類模型;2)將待測APK文件先進行預(yù)處理,提取出Dalvik指令特征并作抽象簡化與N-Gram序列化處理,再通過惡意代碼檢測模型的檢測,初步判斷出是否為惡意代碼;如果不是就直接給出檢測結(jié)果,如果是則進一步通過惡意家族分類模型來獲得該惡意代碼家族類型。2.如權(quán)利要求1所述的基于Dalvik指令抽象的Android惡意代碼檢測方法,其特征在于:所述抽象簡化的過程為:在指令集中提取出能夠正確反映程序語義的指令和操作碼,對功能相近的指令進行歸類,并將該類的指令集合抽象為指令符號。3.如權(quán)利要求2所述的基于Dalvik指令抽象的Android惡意代碼檢測方法,其特征在于:在Dalvik指令集中提取出的107種代表性指令并分成10大功能相近的類,并且每類指令抽象為一個特定的指令符號,N-Gram編碼直接使用這種指令符號代替完整的Dalvik指令。4.如權(quán)利要求1~3之一所述的基于Dalvik指令抽象的Android惡意代碼檢測方法,其特征在于:所述N-Gram序列化處理處理采用3-Gram序列的隨機森林算法?!疚臋n編號】G06F21/56GK106096405SQ201610266436【公開日】2016年11月9日【申請日】2016年4月26日公開號201610266436.4,CN106096405A,CN106096405A,CN201610266436,CN-A-106096405,CN106096405A,CN106096405A,CN201610266436,CN201610266436.4【發(fā)明人】陳鐵明,楊益敏【申請人】浙江工業(yè)大學(xué)