蔣煦,張長勝,戴大蒙,慕德俊
1(西北工業(yè)大學(xué) 自動化學(xué)院,西安 710071)2(溫州大學(xué) 物理與電子信息工程學(xué)院,溫州 325000)
?
Android平臺惡意應(yīng)用程序靜態(tài)檢測方法①
蔣煦1,張長勝2,戴大蒙2,慕德俊1
1(西北工業(yè)大學(xué) 自動化學(xué)院,西安 710071)
2(溫州大學(xué) 物理與電子信息工程學(xué)院,溫州 325000)
摘 要:本文構(gòu)建的靜態(tài)檢測系統(tǒng)主要用于檢測Android平臺未知惡意應(yīng)用程序.首先,對待檢測應(yīng)用程序進(jìn)行預(yù)處理,從AndroidManifest.xml文件中提取權(quán)限申請信息作為一類特征屬性; 如待檢測應(yīng)用程序存在動態(tài)共享庫,則提取從第三方調(diào)用的函數(shù)名作為另一類特征屬性.對選取的兩類特征屬性分別選擇最優(yōu)分類算法,最后根據(jù)上述的兩個(gè)最優(yōu)分類算法對待檢測應(yīng)用程序的分類結(jié)果判定待檢測應(yīng)用程序是否為惡意應(yīng)用程序.實(shí)驗(yàn)結(jié)果表明: 該靜態(tài)檢測系統(tǒng)能夠有效地檢測出Android未知惡意應(yīng)用程序,準(zhǔn)確率達(dá)到95.4%,具有良好的應(yīng)用前景.
關(guān)鍵詞:安卓; 靜態(tài)檢測; 機(jī)器學(xué)習(xí); 特征屬性; 惡意應(yīng)用
隨著移動智能終端井噴式的增長,越來越多的人使用智能手機(jī),智能手機(jī)的品牌雖然繁多,但智能手機(jī)的操作系統(tǒng)主要集中在Android和ios系統(tǒng).2015年2月,IDC發(fā)布了2014年智能手機(jī)出貨量數(shù)據(jù),采用Android和ios操作系統(tǒng)的智能手機(jī)出貨量占全部智能手機(jī)出貨量的96.3%,其中Android操作系統(tǒng)的手機(jī)出貨量為10.59億部,市場份額為81.5%.因此,基于Android平臺的第三方應(yīng)用軟件如同雨后春筍,數(shù)以萬計(jì),隨之而來的是惡意應(yīng)用程序的問題.在中國,因?yàn)檎叩脑?Android手機(jī)用戶無法從Google Play下載應(yīng)用程序,缺少了Google Play對應(yīng)用程序的審查機(jī)制.據(jù)360互聯(lián)網(wǎng)安全中心的報(bào)告顯示,2014年全國僅360互聯(lián)網(wǎng)安全中心累計(jì)截獲Android平臺新增惡意程序樣本326萬個(gè).由此可見,Android平臺惡意程序的問題在我國尤為嚴(yán)重.目前,國內(nèi)外典型的Android平臺惡意代碼檢測技術(shù)主要有基于特征碼和基于行為檢測這兩種方式[1].基于特征碼的檢測方法可以有效地檢測出待安裝的應(yīng)用程序是否具備病毒特征庫中已存在病毒的特征,但無法檢測出未知的病毒,相對滯后.國外著名的Android惡意代碼檢測工具Androguard也是基于特征碼的方法[2].隨著惡意病毒及其變種不斷增加,會導(dǎo)致惡意代碼特征庫需要頻繁更新,制約了基于特征碼檢測方法的發(fā)展.當(dāng)然,隨著云技術(shù)的發(fā)展,可以有效解決樣本庫內(nèi)容不斷增加的難題.
基于行為的惡意代碼檢測主要是靜態(tài)檢測和動態(tài)檢測兩種方法,兩種方法各有利弊.就Android平臺而言,靜態(tài)方法主要是通過反編譯應(yīng)用程序,獲取應(yīng)用程序組件、權(quán)限、API等信息,選擇部分信息作為特征屬性,與惡意樣本庫中的樣本進(jìn)行相似度比較,判斷待檢測應(yīng)用程序是否為惡意應(yīng)用程序.靜態(tài)檢測方法具有無需運(yùn)行應(yīng)用程序、代碼覆蓋率高、檢測時(shí)間短等優(yōu)點(diǎn),所以很多殺毒軟件都采用這種方法; 缺點(diǎn)是代碼混淆、加密等在程序運(yùn)行時(shí)才恢復(fù)其真面目的代碼,采用靜態(tài)檢測方法無法檢測出[3].
動態(tài)檢測是指在虛擬機(jī)或手機(jī)上執(zhí)行應(yīng)用程序,通過捕捉系統(tǒng)關(guān)鍵數(shù)據(jù)的變化,如日志信息、文件訪問、數(shù)據(jù)庫等信息,對這些關(guān)鍵的行為進(jìn)行分析,預(yù)測應(yīng)用程序是否為惡意病毒.該檢測方法的優(yōu)點(diǎn)是解決了代碼混淆、加密等需要程序運(yùn)行才能檢測出的問題,同時(shí)也不需要維護(hù)惡意代碼特征庫; 但動態(tài)檢測的實(shí)時(shí)性要求比較高,需要持續(xù)地對系統(tǒng)運(yùn)行狀況進(jìn)行監(jiān)測,對手機(jī)運(yùn)行的性能有影響[4].
靜態(tài)檢測與動態(tài)檢測相比,優(yōu)點(diǎn)在于: 靜態(tài)分析不受一個(gè)程序的特定執(zhí)行過程約束,適用于程序的所有執(zhí)行過程; 而動態(tài)檢測技術(shù)只能對符合特定的行為進(jìn)行檢測[5].同時(shí),靜態(tài)檢測能夠減少成本,提高性能.
目前,Android平臺的惡意代碼檢測相對已經(jīng)成熟,但主要針對特定類型的惡意代碼或者更多地依賴與惡意代碼特征庫樣本相似度的比較.該檢測方法在針對未知的惡意應(yīng)用程序時(shí),檢測的準(zhǔn)確率有所下降.童振飛[6]采用抽取apk(Android Package)類名和調(diào)用函數(shù)名作為特征屬性,通過計(jì)算與樣本相似度的方法對Android apk文件進(jìn)行分類.實(shí)驗(yàn)證明,該方法可以有效的對APK進(jìn)行分類,但整個(gè)實(shí)驗(yàn)的樣本取自非惡意應(yīng)用程序,設(shè)計(jì)為從隨機(jī)的應(yīng)用程序中識別出一種類型的應(yīng)用程序,沒有用真實(shí)的惡意應(yīng)用程序作為樣本,同時(shí)該檢測方法局限于在JAVA層,未考慮動態(tài)共享庫的加載.秦中元等[7]設(shè)計(jì)的Android平臺惡意軟件靜態(tài)檢測的方法不依賴于病毒庫的收集和更新,能夠成功檢測出隱私竊取與惡意扣費(fèi)的惡意行為,但檢測方法針對的惡意代碼類型局限,同時(shí)檢測的樣本數(shù)量過少.李子鋒等[3]采用靜態(tài)數(shù)據(jù)流分析技術(shù),模擬應(yīng)用程序的執(zhí)行過程,通過跟蹤應(yīng)用程序?qū)ΤA恐档氖褂?可以檢測出惡意行為,但是未對本地代碼進(jìn)行安全檢測.李子峰在文中也指出40%的應(yīng)用程序存在執(zhí)行本地命令或加載本地庫文件的行為,加載本地代碼中可能存在提權(quán)行為.Schmidt[5]抽取應(yīng)用程序的Elf可執(zhí)行文件(包括惡意和非惡意應(yīng)用程序)函數(shù)調(diào)用作為樣本,并運(yùn)用Part,Prism和Nearest Neighbor Algorithms等算法對抽取的樣本進(jìn)行分類,對于選擇的特征屬性而言,未必是最優(yōu)的算法.楊歡等[8]建立了基于多類特征的Android應(yīng)用惡意行為檢測系統(tǒng),將靜態(tài)檢測與動態(tài)檢測相結(jié)合,能夠有效的判斷未知應(yīng)用程序是否為惡意病毒.但該檢測系統(tǒng)構(gòu)建的三層混合系綜算法選擇的基礎(chǔ)分類器都屬于強(qiáng)分類器,而系綜算法選擇的基礎(chǔ)分類器應(yīng)該為弱分類器[9].本文采用楊歡的系綜算法對樣本進(jìn)行測試,發(fā)現(xiàn)對特征屬性進(jìn)行系綜分類后效果不如單一的強(qiáng)分類器,說明該分類算法不夠完善,理論上存在缺陷.
基于上述研究,本文更加專注于動態(tài)共享庫的分析、特征屬性的選擇和數(shù)據(jù)挖掘算法的研究,構(gòu)建由應(yīng)用程序申請的權(quán)限分析模塊和加載的動態(tài)共享庫分析模塊相結(jié)合的全新的Android平臺惡意應(yīng)用程序靜態(tài)檢測系統(tǒng).
Android的權(quán)限機(jī)制是Android系統(tǒng)在Linu-x的權(quán)限管理基礎(chǔ)上擴(kuò)展的一種安全保護(hù)機(jī)制,這些控制權(quán)限包括撥打電話、定位、網(wǎng)絡(luò)使用等100多個(gè)內(nèi)置的權(quán)限,位于Android系統(tǒng)的框架層,它的主要任務(wù)是對應(yīng)用程序可以執(zhí)行的某些操作進(jìn)行權(quán)限細(xì)分和訪問控制,限制應(yīng)用開發(fā)者對系統(tǒng)資源或者用戶信息的濫用.同時(shí)Android系統(tǒng)不允許動態(tài)注冊權(quán)限,在安裝應(yīng)用程序之前就必須申請應(yīng)用程序所需要用到的權(quán)限[10].由于Android應(yīng)用程序需要在AndroidManifest.xml中使用
實(shí)驗(yàn)所用的惡意應(yīng)用程序來源于參考文獻(xiàn)[11],從中隨機(jī)抽取300個(gè)惡意應(yīng)用程序進(jìn)行分析,發(fā)現(xiàn)惡意應(yīng)用程序樣本中有55%含有動態(tài)共享庫,而從Google play下載的300個(gè)非惡意應(yīng)用程序樣本中僅有39%包含動態(tài)共享庫,說明惡意應(yīng)用程序更傾向于使用動態(tài)加載技術(shù).因此,本文將動態(tài)共享庫作為重要研究對象之一.
本文Android平臺靜態(tài)檢測系統(tǒng)架構(gòu)如圖1所示.首先,待檢測的應(yīng)用程序通過預(yù)處理模塊處理,該模塊使用apktool工具反編譯應(yīng)用程序,可以得到Android應(yīng)用程序的源代碼、圖片、XML配置、語言資源等文件.其中配置文件AndroidManifest.xml描述了package中暴露的組件、權(quán)限、啟動位置等,用Python語言編寫的代碼掃描AndroidManifest.xml,提取
圖1 靜態(tài)檢測系統(tǒng)架構(gòu)
3.1特征屬性提取技術(shù)
在數(shù)據(jù)挖掘的研究中,會通過計(jì)算樣本距離來比較樣本之間的差異,而樣本距離是通過屬性來計(jì)算的.不同的屬性在樣本空間的權(quán)重是不一樣的,即關(guān)聯(lián)度不同,因此有必要進(jìn)行屬性選擇.有些研究者認(rèn)為應(yīng)用程序中存在敏感權(quán)限的組合即為惡意應(yīng)用程序,本文認(rèn)為這種方法不具備實(shí)際應(yīng)用的價(jià)值,比如應(yīng)用程序“百度地圖”就會在安裝時(shí),申請獲得地理位置、Internet等敏感權(quán)限,雖然惡意應(yīng)用程序申請這樣的敏感權(quán)限組合頻率更高,但并不代表“百度地圖”是惡意應(yīng)用程序.本文從實(shí)際出發(fā),在所有惡意應(yīng)用程序申請的權(quán)限中選取信息增益高的申請權(quán)限作為特征屬性,通過機(jī)器學(xué)習(xí),去挖掘惡意應(yīng)用程序申請權(quán)限的規(guī)律,用于檢測未知的惡意應(yīng)用程序.首先使用apktool工具反編譯從參考文獻(xiàn)[11]中隨機(jī)抽取出的500個(gè)惡意應(yīng)用程序和從Google Play下載的500個(gè)非惡意應(yīng)用程序,得到1000個(gè)應(yīng)用程序的AndroidManifest.xml全局配置文件,掃描這1000個(gè)全局配置文件,提取出所有應(yīng)用程序申請的權(quán)限,使用Weka工具采用InfoGain算法對提取出的申請權(quán)限特征屬性進(jìn)行篩選,最終選定信息增益超過設(shè)定閾值的95個(gè)申請權(quán)限特征屬性.
目前,大多數(shù)針對Android平臺惡意應(yīng)用程序的行為研究主要集中在Java層,依賴于控制流程與數(shù)據(jù)流程的分析,即如果惡意應(yīng)用程序?qū)㈧o態(tài)信息存在Java代碼中,能夠有效地檢測出來.但惡意應(yīng)用程序的開發(fā)者為了躲避檢測會采用動態(tài)加載技術(shù),則Java層的檢測方法完全失效[12].所以,本文將動態(tài)共享庫作為研究的一個(gè)重要方面.如果待檢測應(yīng)用程序中存在動態(tài)共享庫,則對其執(zhí)行Android NDK工具中readelf命令,得到ELF文件的存儲結(jié)構(gòu)和內(nèi)容,包含了代碼、數(shù)據(jù)、符號表、字符串等信息.這些信息按不同的屬性,以段的形式存儲,其中就包括dynsym段,該段包含了在本文件中定義的全局符號以及本文件中引用的外部函數(shù)或者變量.通過對大量惡意和非惡意應(yīng)用程序中動態(tài)共享庫進(jìn)行分析可以發(fā)現(xiàn),動態(tài)共享庫中從第三方庫調(diào)用的函數(shù)主要來libc.so,libstdc++.so,libm.so,liblog.so等Android平臺內(nèi)置的共享庫.因此,本文將“dynsym”段中從第三方調(diào)用的函數(shù)名作為研究動態(tài)共享庫模塊的特征屬性,即該函數(shù)在符號表中的Type屬性為“FUNC”和“Ndx”屬性為“UND”,有這兩個(gè)標(biāo)簽的函數(shù)意味著此函數(shù)來自外部調(diào)用、共享庫或者系統(tǒng)調(diào)用的函數(shù).而本地定義的函數(shù)不予采納為特征屬性是因?yàn)閻阂鈶?yīng)用程序的開發(fā)者為了逃避檢測可以定義不同的函數(shù)名和變量名稱,而代碼執(zhí)行內(nèi)容卻不變.
3.2分類算法的選擇
算法的性能依賴于數(shù)據(jù)集的特性以及產(chǎn)生差異性的方法等因素,所以差異性是提高算法性能的一個(gè)重要因素[9].本文構(gòu)架的靜態(tài)檢測系統(tǒng)主要依賴于兩個(gè)檢測模塊,一個(gè)是關(guān)于應(yīng)用程序申請權(quán)限的檢測模塊,一個(gè)是關(guān)于動態(tài)共享庫中函數(shù)調(diào)用的檢測模塊.由于兩個(gè)模塊的特征屬性是不同的類型,所以為了使檢測效果更優(yōu),應(yīng)該針對不同類型的特征屬性選擇最適合它的最優(yōu)的分類算法.THEA[8]采用了系綜算法以提高針對不同特征屬性的基礎(chǔ)分類器性能,進(jìn)而提高惡意應(yīng)用程序的檢測率.
DroidMat[13]提取應(yīng)用程序的Intent、API等作為特征屬性,采用了KNN和NB兩種分類算法用于檢測惡意應(yīng)用程序.本文構(gòu)建的靜態(tài)檢測系統(tǒng)所選取的分類算法結(jié)合前人的研究成果,選取分類算法差異性較大的4種算法,即KNN,NB,C4.5,Part算法,用10折交叉確認(rèn)的方法對兩種特征屬性模塊進(jìn)行不同分類算法的訓(xùn)練.通過對訓(xùn)練集分類結(jié)果的對照研究,選擇各自特征屬性的最優(yōu)分類算法.圖2為選擇最適合該特征屬性的最優(yōu)分類算法的過程.
圖2 選擇最優(yōu)分類算法的過程
首先,創(chuàng)建動態(tài)共享庫函數(shù)調(diào)用檢測模型的訓(xùn)練集,該訓(xùn)練集由惡意應(yīng)用程序和非惡意應(yīng)用程序構(gòu)成,惡意應(yīng)用程序隨機(jī)取自于參考文獻(xiàn) [11] 中的500個(gè)惡意應(yīng)用程序; 隨機(jī)下載于Google Play商店500個(gè)非惡意應(yīng)用程序,這1000個(gè)訓(xùn)練樣本均含有動態(tài)共享庫,即lib文件夾下有后綴名為.so的文件,同時(shí)訓(xùn)練樣本均使用目前主流的殺毒軟件進(jìn)一步確認(rèn).
其次,對上述的1000個(gè)應(yīng)用程序進(jìn)行反編譯,利用4.1中介紹的特征屬性提取方法,提取Android Manifest.xml全局配置文件中權(quán)限申請信息作為一類特征屬性,如應(yīng)用程序中存在動態(tài)共享庫,則抽取從第三方庫調(diào)用的函數(shù)名作為另一類特征屬性.
最后,使用Weka工具對兩類特征屬性進(jìn)行分類算法的學(xué)習(xí),從KNN,PART,C4.5,NB中選出針對該特征屬性的最優(yōu)分類算法.因?yàn)閃eka工具存儲數(shù)據(jù)采用ARFF(Attribute-Relati-onFile Format)格式,所以實(shí)驗(yàn)需要用python語言編寫的程序?qū)⒁陨蟽深愄卣鲗傩园凑障鄳?yīng)的要求編寫成后綴名為arff的文件.
最優(yōu)分類算法的選擇取決于分類算法學(xué)習(xí)的結(jié)果,主要依賴于Accuracy、TP Rate、FP rate、Precision等相關(guān)指標(biāo)參數(shù).Accuracy反映了分類器對整個(gè)訓(xùn)練集正確判斷的能力,即將惡意應(yīng)用程序及非惡意應(yīng)用程序都判斷正確的能力; TP Rate為某類被正確分類的訓(xùn)練樣本占該類樣本的比例,同時(shí)等同于Recall; FP Rate是某類被誤判為另一類的數(shù)量占該類的比例; Precision為某類判斷正確的數(shù)量占結(jié)果判定為該類的比例; F-Measure是綜合Precision和Recall二者指標(biāo)的評估指標(biāo),用于綜合反映整體的指標(biāo); ROC指標(biāo)反映了分類器分類的效果,一般認(rèn)為越接近0.5,模型準(zhǔn)確率越低,最好狀態(tài)接近1,完全正確的模型面積為1.以下是相關(guān)參數(shù)指標(biāo)的計(jì)算公式,如果是針對非惡意應(yīng)用程序而言,t_ pos為非惡意應(yīng)用程序被正確分類為非惡意應(yīng)用程序的數(shù)量,t_ neg為惡意應(yīng)用程序被正確分類為惡意應(yīng)用程序的數(shù)量,f_ pos為惡意應(yīng)用程序被錯誤分為非惡意應(yīng)用程序的數(shù)量,f_ neg為非惡意應(yīng)用程序被錯誤分為惡意應(yīng)用程序的數(shù)量.
3.3綜合檢測模塊的建立
綜合檢測模塊從待檢測應(yīng)用程序中抽取的兩類特征屬性通過各自最優(yōu)分類算法的檢測,如果兩個(gè)特征屬性檢測模塊判斷結(jié)果中任一分類器判定待檢測應(yīng)用程序?yàn)閻阂鈶?yīng)用程序,則判定待檢測應(yīng)用程序?yàn)閻阂鈶?yīng)用軟件.綜合檢測模型如圖3虛線框內(nèi)所示.
圖3 綜合檢測模塊示意圖
4.1實(shí)驗(yàn)環(huán)境
本文檢測系統(tǒng)使用Java和python語言實(shí)現(xiàn),自動化地檢測基于Android平臺的第三方應(yīng)用程序.其中,兩類特征屬性的提取和判斷部分的函數(shù)由Python語言編寫的代碼實(shí)現(xiàn),最優(yōu)分類算法使用WEKA工具的jar包實(shí)現(xiàn).隨機(jī)選取參考文獻(xiàn)中[11]500個(gè)惡意應(yīng)用程序和隨機(jī)下載于Google Play的500個(gè)非惡意應(yīng)用程序作為測試集進(jìn)行測試,測試集和訓(xùn)練集無交集.所有實(shí)驗(yàn)在內(nèi)存為4G,處理器為Intel(R)Core (TM)i5-3337U 1.80GHz的機(jī)器上完成.
4.2算法的選擇
對選取的兩類特征屬性分別進(jìn)行KNN、PART、C4.5、NB機(jī)器算法的學(xué)習(xí),得到表1、表2的結(jié)果,表1是申請權(quán)限信息作為特征屬性模塊的分類算法學(xué)習(xí)結(jié)果,表2是調(diào)用函數(shù)名作為特征屬性模塊的分類算法學(xué)習(xí)結(jié)果,表1和表2中的Class1是指500個(gè)惡意應(yīng)用程序集合,Class0是指500個(gè)非惡意應(yīng)用程序集合.分類結(jié)果的參考指標(biāo)有很多,但不同的應(yīng)用環(huán)境,關(guān)注的參考指標(biāo)側(cè)重點(diǎn)不同.本文選擇特征屬性最優(yōu)分類算法的策略: 在Accurracy、F-Measure、ROC參考指標(biāo)數(shù)值接近的情況下,主要依據(jù)惡意應(yīng)用程序的識別率(TP Rate)和非惡意應(yīng)用程序的誤識率(FP Rate)來選擇最優(yōu)算法,惡意應(yīng)用程序識別率越高,非惡意應(yīng)用程序的誤識率越低,越能說明該算法能夠有效地檢測出惡意應(yīng)用程序.理由是本檢測系統(tǒng)的目的是為了檢測出惡意應(yīng)用程序,惡意應(yīng)用程序的識別率可以看出該算法是否能夠有效的檢測出惡意應(yīng)用程序,非惡意應(yīng)用程序的誤識率可以看出該算法將惡意應(yīng)用程序判定為非惡意應(yīng)用程序的情況,之所以看中這個(gè)指標(biāo)是因?yàn)闄z測惡意應(yīng)用程序的算法將惡意應(yīng)用程序判定為非惡意應(yīng)用程序帶來的后果遠(yuǎn)超過非惡意應(yīng)用程序被劃歸為惡意應(yīng)用程序.
通過比較,發(fā)現(xiàn)KNN算法對于兩個(gè)特征屬性檢測模塊都是最優(yōu)分類算法,KNN算法的各項(xiàng)參考指標(biāo)都優(yōu)于其他分類算法.ROC面積指標(biāo)也充分印證了對于這兩類特征屬性模塊而言,KNN算法分類效果最佳.所以,本文的兩個(gè)特征屬性檢測模塊均選取KNN算法作為分類算法.從表1、表2的對比,也可以看出動態(tài)共享庫中函數(shù)調(diào)用特征屬性的分類結(jié)果明顯優(yōu)于申請權(quán)限特征屬性的分類結(jié)果,說明惡意應(yīng)用程序的開發(fā)者利用動態(tài)加載的技術(shù)十分普遍.
表1 申請權(quán)限特征屬性分類結(jié)果
0 0.873 0.061 0.932 0.873 0.923 0.879 1 0.878 0.076 0.923 0.878 0.9 0.945 PART 0 0.924 0.122 0.88 0.924 0.901 0.945 90.06 1 0.976 0.165 0.86 0.976 0.914 0.955 NB 0 0.835 0.024 0.971 0.835 0.898 0.955 90.68
表2 函數(shù)調(diào)用特征屬
4.3實(shí)驗(yàn)結(jié)果
將測試集的1000個(gè)應(yīng)用程序(并非所有應(yīng)用程序都包含動態(tài)共享庫)通過本文架構(gòu)的靜態(tài)檢測系統(tǒng),得到的混淆矩陣如表3,準(zhǔn)確率為95.4%.惡意應(yīng)用程序的識別率95.8%,惡意程序的誤識率4.2%.測試結(jié)果充分證明了該模型能夠有效檢測出惡意應(yīng)用程序.通過表1、表2、表3的對比,可以發(fā)現(xiàn)檢測系統(tǒng)的Accuracy指標(biāo)相對于單一的檢測應(yīng)用程序申請權(quán)限KNN算法分類結(jié)果的Accuracy指標(biāo)有所提高,但相對于單一的動態(tài)共享庫函數(shù)調(diào)用特征屬性的KNN算法分類結(jié)果而言,Accurancy指標(biāo)有所下降.這是因?yàn)樗械膽?yīng)用程序都有AndroidManifest.xml全局配置文件,表1的訓(xùn)練集的元素可以是任一應(yīng)用程序; 表2的訓(xùn)練集是從包含動態(tài)共享庫的應(yīng)用程序中隨機(jī)抽取的,而最后測試集是隨機(jī)抽取的1000個(gè)惡意和非惡意應(yīng)用程序,即有些應(yīng)用程序不含動態(tài)共享庫.所以本檢測系統(tǒng)將兩個(gè)分類器集成于一體,隨機(jī)抽取應(yīng)用程序作為測試集,更具有實(shí)際應(yīng)用的價(jià)值.
表3 本文檢測系統(tǒng)的混淆矩陣
4.4與其他檢測系統(tǒng)比較
目前針對Android平臺惡意應(yīng)用軟件的檢測研究成果有許多,但由于實(shí)驗(yàn)采集的樣本不同,樣本中包含動態(tài)共享庫的應(yīng)用程序所占比例不同,直接會導(dǎo)致不同的檢測結(jié)果; 而且大部分的研究成果都只給出思路和方法,未公布源碼; 另外,由于本文的惡意應(yīng)用程序的實(shí)驗(yàn)樣本均取自于2013年之前的,對于主流的殺毒軟件而言,其MD5值早已在其病毒的特征庫中.所以,本文未與其他的檢測系統(tǒng)進(jìn)行橫向比較.但就其它研究者的研究內(nèi)容看,檢測系統(tǒng)的架構(gòu)組成復(fù)雜,當(dāng)然特征屬性選擇越多,靜態(tài)檢測與動態(tài)檢測相結(jié)合等手段會提高惡意應(yīng)用程序的檢測率,但相對于本文的檢測系統(tǒng)需要消耗更多的成本,并且從其他研究者公布的研究成果看,惡意應(yīng)用程序的檢出率一般在94%左右.綜上所述,本文的靜態(tài)檢測系統(tǒng)在不影響檢測率的情況下,具有高效、輕便的特點(diǎn),對資源的依賴更少.
本文靜態(tài)檢測系統(tǒng)采取應(yīng)用程序申請權(quán)限分析模塊與應(yīng)用程序加載的動態(tài)共享庫分析模塊相結(jié)合的方法,分別采用適合于模塊特征屬性的機(jī)器算法,能夠有效地檢測出Android平臺未知惡意應(yīng)用程序,具有高效、輕便的特點(diǎn).但仍然存在需要在后面的研究工作中完善的地方:
① 本檢測系統(tǒng)的第一步工作就是對應(yīng)用程序進(jìn)行反編譯,軟件開發(fā)人員為了防止自己的應(yīng)用程序被反編譯,會采取加殼等手段,本檢測系統(tǒng)未考慮這部分,所以會出現(xiàn)部分應(yīng)用程序無法檢測.
② 靜態(tài)檢測和動態(tài)檢測各有利弊,存在互補(bǔ)的關(guān)系.下一步要重點(diǎn)研究動態(tài)檢測,將靜態(tài)檢測判斷為惡意應(yīng)用程序作為動態(tài)檢測的重點(diǎn),將動態(tài)檢測系統(tǒng)集成到本文檢測系統(tǒng)中.
參考文獻(xiàn)
1李華,劉智,覃征,等.基于行為分析和特征碼的惡意代碼檢測技術(shù).計(jì)算機(jī)應(yīng)用研究,2011,28(3):1127–1129.
2王菲飛.基于Android平臺的手機(jī)惡意代碼檢測與防護(hù)技術(shù)研究[碩士學(xué)位論文].北京:北京交通大學(xué),2012.
3李子鋒,程紹銀,蔣凡.一種Android應(yīng)用程序惡意行為的靜態(tài)檢測方法.計(jì)算機(jī)系統(tǒng)應(yīng)用,2013,22(7):148–151.
4Enck W,Gilbert P,Chun B,et al.TaintDroid: An informationflow tracking system for real time privacy monitoring on Smartphones.Proc.of the 9th USENIX.Vancouve.BC,Canada.2010.1–6.
5Schmidt AD,Bye R,Schmidt HG,et al.Static analysis of executables for collaborative malware detection on Android.Proc.of the 9th IEEE International Conference on Communications.Dresden,Germany.2009.631–635.
6童振飛.Android惡意軟件靜態(tài)檢測方案的研究[碩士學(xué)位論文].南京:南京郵電大學(xué),2013.
7秦中元,徐毓青,梁彪,等.一種Android平臺惡意軟件靜態(tài)檢測方法.東南大學(xué)學(xué)報(bào),2013,43(6):1162–1167.
8楊歡,張玉清,胡玉璞,等.基于多類特征的Android應(yīng)用惡意行為檢測系統(tǒng).計(jì)算機(jī)學(xué)報(bào),2014,37(1):20–26.
9王秀霞.分類器的選擇性集成及其差異性研究[學(xué)位論文].蘭州:蘭州理工大學(xué),2013.
10劉智偉,孫其博.基于權(quán)限管理的Android應(yīng)用行為檢測.信息網(wǎng)絡(luò)安全,2014,(6):72–76.
11Zhou YJ,Jiang XX.Dissecting Android malware: Characterization and evolution.Proc.of the 33rd IEEE Symposium on Security and Privacy.Oakland,USA.2012.95–109.
12文偉平,梅瑞,寧戈,等.Android惡意軟件檢測技術(shù)分析和應(yīng)用研究.通信學(xué)報(bào),2014,35(8):78–85.
13Wu DJ,Mao CH,Wei TE,et al.DroidMat: Android malware detection through manifest and API calls tracing.Proc.of the 7th Asia Joint Conference on Information Security.Tokyo,Japan.2012.62–69.
Static Detection of Android Malware
JIANG Xu1,ZHANG Chang-Sheng2,DAI Da-Meng2,MU De-Jun11(Department of Automation,Northwestern Polytechnical University,Xi’an 710071,China)
2(Department of Physics & Electronic Information Engineering,Wenzhou University,Wenzhou 325000,China)
Abstract:The static detection system referred in this article is used to detect unknown malware.First of all,the Android application sample is preprocessed and permission information that the application developer applies for is extracted as a kind of characteristic attribute.If there is shared object file,the name of function called from other libraryis is extracted as another kind of characteristic attribute.Secondly,the two optimal classifiers chose are used to hand two classes of features separately.Finally,the result of comprehensive judgment system depends on the result of classifiers about two types of characteristic attribute.The result of experiment shows that the static detection system can detect the unknown malware efficiently,and the accuracy of the static detection system reaches up to 95.4%.
Key words:Android; static detection; machine learning; characteristic attribute; malware
基金項(xiàng)目:①國家自然科學(xué)基金(61303224);浙江省科技廳公益項(xiàng)目(2104C31079)
收稿時(shí)間:2015-07-10;收到修改稿時(shí)間:2015-09-08