盧文清,何加銘,2,曾興斌,2,樊玲慧
(1.寧波大學(xué)通信技術(shù)研究所,浙江寧波315211;2.浙江省移動(dòng)網(wǎng)應(yīng)用技術(shù)重點(diǎn)實(shí)驗(yàn)室,浙江寧波315211;3.寧波新然電子信息科技發(fā)展有限公司,浙江寧波315211)
惡意軟件作用一般分為搜集用戶信息、竊取信用卡信息、組建僵尸網(wǎng)絡(luò)和獲取root權(quán)限等。趨勢科技的監(jiān)測數(shù)據(jù)顯示,截止到2012年底,Android系統(tǒng)中的惡意應(yīng)用已經(jīng)達(dá)到35萬個(gè)。而在2013年,這一數(shù)字很有可能增長4倍,躍升至140萬個(gè),對(duì)信息安全構(gòu)成嚴(yán)重挑戰(zhàn)[1]。
SVM是在高維特征空間使用線性函數(shù)假設(shè)空間的學(xué)習(xí)系統(tǒng),它是由一個(gè)來自最優(yōu)化理論的學(xué)習(xí)算法訓(xùn)練,該算法實(shí)現(xiàn)了一個(gè)由統(tǒng)計(jì)學(xué)理論導(dǎo)出的學(xué)習(xí)偏置。它在文本分類、生物信息、語音識(shí)別、圖像分類[2]、故障識(shí)別和預(yù)測以及信息安全等諸多領(lǐng)域有了成功的應(yīng)用。因此,將支持向量機(jī)引入手機(jī)惡意檢測是一種非常有效的方法。手機(jī)惡意檢測方法分為靜態(tài)檢測和動(dòng)態(tài)檢測。文獻(xiàn)[3]是基于行為的惡意檢測,需要模擬應(yīng)用運(yùn)行環(huán)境,監(jiān)控系統(tǒng)變化,屬于動(dòng)態(tài)檢測。本文的方法是在Android應(yīng)用包上做靜態(tài)分析,導(dǎo)出分類器所需的向量集,屬于靜態(tài)檢測。
對(duì)于Android惡意檢測,靜態(tài)分析有很多有利條件。不用模擬手機(jī)軟件運(yùn)行環(huán)境,耗用資源少、快速且有較高的檢測準(zhǔn)確率。像Android Leaks[4]和文獻(xiàn)[5]提到的組件都屬于靜態(tài)檢測工具,但是都集中在檢測信息泄露的方面。文獻(xiàn)[6]應(yīng)用機(jī)器學(xué)習(xí)方法對(duì)Android應(yīng)用進(jìn)行分類,其研究對(duì)象為工具類應(yīng)用和游戲類應(yīng)用。文獻(xiàn)[7]通過抽取DEX文件的類與函數(shù)名應(yīng)用信息,作為程序的行為特征,應(yīng)用機(jī)器學(xué)習(xí)算法對(duì)樣本進(jìn)行分類,但分類精度不高。文獻(xiàn)[8]采用用戶級(jí)和內(nèi)核級(jí)的特征向量,應(yīng)用機(jī)器學(xué)習(xí)算法對(duì)惡意軟件分類,也是沒有考慮到權(quán)限方面的影響。文獻(xiàn)[9]特征集來源靜態(tài)鏈接庫和應(yīng)用程序接口,未涉及到Android權(quán)限和命令行的調(diào)用,文獻(xiàn)[10]則使用的是單類支持向量機(jī)。
綜上所述,提出了基于混合特征的Android惡意軟件靜態(tài)檢測方案,利用危險(xiǎn)API調(diào)用、命令行和權(quán)限集結(jié)合組成的混合特征集,然后采用主成分分析(PCA)方法和支持向量機(jī)(SVM)結(jié)合構(gòu)造分類器,對(duì)Android樣本進(jìn)行惡意檢測?;旌咸卣鞲苋矫娴乇憩F(xiàn) Android惡意軟件的特征,且采用PCA方法能夠去除一些冗余特征,提高分類精度。
Android應(yīng)用大部分都是運(yùn)用Java語言開發(fā)的。Android SDK工具編譯源代碼,將數(shù)據(jù)和資源打包成一個(gè)以.a(chǎn)pk結(jié)尾的包文件。編譯生成的apk文件都可以看做一個(gè)在Android上運(yùn)行的應(yīng)用。
Android應(yīng)用程序由4個(gè)組件組成:活動(dòng)(Activities)、服務(wù)(Services)、廣播接收(Broadcast Receivers)和內(nèi)容提供者(Content Providers)。每一個(gè)應(yīng)用程序必須在程序工程根目錄下的manifest文件中聲明自己的組件。在Android系統(tǒng)運(yùn)行一個(gè)程序組件前,系統(tǒng)必須讀取應(yīng)用程序的manifest文件來確定有多少組件存在。這個(gè)文件還聲明了應(yīng)用需要的權(quán)限,例如網(wǎng)絡(luò)訪問權(quán)限和通訊錄訪問權(quán)限等。
Android應(yīng)用程序apk文件是由一系列的文件壓縮而成,這些文件主要包括:AndroidManifest.xml,classes.dex(一個(gè)完整的字節(jié)碼文件,由Dalvik VM解釋),其他二進(jìn)制或XML等資源文件都保存在res/和assets/目錄下。
本文的檢測方法是利用Android應(yīng)用依賴的平臺(tái)API和它的權(quán)限列表、系統(tǒng)調(diào)用等屬性來作為應(yīng)用程序可疑行為的指示器,例如信息泄露、運(yùn)行時(shí)實(shí)時(shí)下載惡意軟件或嵌入額外的程序。這些屬性作為分類器的樣本數(shù)據(jù),可以用來決定Android應(yīng)用程序是正常的還是惡意的。
VirusTotal是一個(gè)免費(fèi)的病毒、蠕蟲、木馬和各種惡意軟件分析服務(wù),可以針對(duì)可疑文件和網(wǎng)址進(jìn)行快速檢測。在第3方應(yīng)用市場下載多款A(yù)ndroid應(yīng)用,這些軟件覆蓋多種不同類型,包括娛樂、工具、體育、健康衛(wèi)生、新聞和雜志、財(cái)經(jīng)、音樂、商貿(mào)、教育以及游戲等。使用VirusTotal對(duì)這些應(yīng)用進(jìn)行檢測分析,確認(rèn)是否為惡意軟件。為了試驗(yàn)中正、負(fù)樣本的平衡,經(jīng)過人工整理,整理出450款惡意軟件和450款正常軟件。分析過程中發(fā)現(xiàn),經(jīng)過官方發(fā)布的軟件,含有較少的威脅,而非官方的軟件,則包含較多的惡意行為。
惡意軟件和正常軟件都為apk文件,為了獲得建立分類器模型的樣本數(shù)據(jù),采用開源工具apktool,將apk文件解壓成mainifest文件、資源文件、簽名文件和dex文件,然后利用工具dex2jar將dex文件反編譯成.jar文件,最后利用Java Decompiler生成java源文件。然后在代碼源文件和mainifest文件中提取所需要的混合特征,具體過程如圖1所示。
圖1 Android逆向工程過程
經(jīng)過Android應(yīng)用的逆向工程后,得到應(yīng)用源代碼和manifest文件,采用匹配算法,探測程序中出現(xiàn)的API調(diào)用、命令行和權(quán)限列表,并計(jì)算它們出現(xiàn)的次數(shù)作為這個(gè)應(yīng)用的特征。
API調(diào)用是應(yīng)用程序與手機(jī)相互作用的紐帶,API調(diào)用可以獲取手機(jī)的subscriber ID、phone ID和其他類似個(gè)人隱秘信息。同樣,可以發(fā)送/接收SMS、調(diào)用手機(jī)號(hào)碼、獲取手機(jī)信息和下載其他應(yīng)用程序等。而Android惡意行為包括竊取用戶隱私、遠(yuǎn)程控制、私自下載和惡意扣費(fèi)等行為,這些行為涉及的API如表1所示,利用匹配算法,計(jì)算出每個(gè)應(yīng)用中對(duì)應(yīng)API的數(shù)目,形成API特征向量[FAPI]1×14。
表1 惡意軟件涉及的API列表
因?yàn)锳ndroid是基于Linux系統(tǒng)的,因而Linux系統(tǒng)命令可以在Android上運(yùn)行。這些命令包括‘chmod’、‘mount’、‘remount’和‘chown’等。其他包括Java Realtime.exec命令,它可以運(yùn)行子進(jìn)程來下載惡意軟件。分析450款惡意軟件,統(tǒng)計(jì)其中使用頻率較高的系統(tǒng)命令如表2所示,利用匹配算法,計(jì)算出每個(gè)應(yīng)用中對(duì)應(yīng)系統(tǒng)命令行的數(shù)目,形成命令行特征向量[FCMD]1×10。
表2 命令行列表
每個(gè) apk文件都包含一個(gè) mainifest文件,Android系統(tǒng)可以在這個(gè)文件中獲得應(yīng)用所需要的權(quán)限的詳細(xì)信息。這些權(quán)限包括各種硬件訪問權(quán)限(GPS、照相機(jī)等)和敏感信息(通訊錄、短信等),還有訪問其他應(yīng)用的權(quán)限。例如,權(quán)限“android.permission.INTERNET”允許應(yīng)用連接網(wǎng)絡(luò);權(quán)限“android.permission.READ_CONTACTS”允許應(yīng)用訪問手機(jī)通訊錄。450個(gè)惡意軟件中使用頻率較高的權(quán)限列表如表3所示,利用匹配算法,計(jì)算出每個(gè)應(yīng)用中對(duì)應(yīng)權(quán)限的數(shù)目,形成權(quán)限特征向量[FPER]1×20。
表3 惡意軟件使用頻率較高的權(quán)限列表
有多種方法可以評(píng)價(jià)基于機(jī)器學(xué)習(xí)方法的分類器性能。在本文中引用以下提到的公式來評(píng)價(jià)分類器性能。以下公式中,nnor→nor代表正常應(yīng)用軟件被分類器正確分類的數(shù)目;nnor→sus代表正常應(yīng)用軟件被分類器錯(cuò)誤分類的數(shù)目;nsus→sus代表惡意軟件被分類器正確分類的數(shù)目;nsus→nor代表惡意軟件被分類器錯(cuò)誤分類的數(shù)目。準(zhǔn)確率Acc和錯(cuò)誤率Err分別為:
式中,Acc代表所有被正確分類的應(yīng)用占所有測試應(yīng)用的比例,包括正常軟件和惡意軟件;Err代表所有被錯(cuò)誤分類的應(yīng)用占測試應(yīng)用的比例。其中,Err=1-Acc。還定義了 FPR、FNR、TPR、TNR 和精度P:
FPR代表正常應(yīng)用被分類器錯(cuò)誤分類的數(shù)目占所有測試正常應(yīng)用中的比例。TNR測量的是正常應(yīng)用被分類器正確分類的數(shù)目占所有測試正常應(yīng)用中的比例。TPR和檢測率意義相同,因?yàn)樗鼫y量的是惡意應(yīng)用被分類器正確分類的數(shù)目占所有測試惡意應(yīng)用中的比例,它同樣代表著分類器檢測未知惡意軟件的能力。FNR代表惡意應(yīng)用被分類器錯(cuò)誤分類的數(shù)目占所有測試惡意應(yīng)用中的比例,是檢測率的補(bǔ)充。預(yù)測率反映整個(gè)惡意檢測模型預(yù)測惡意軟件的預(yù)測能力。
實(shí)驗(yàn)所用均來自Android第3方應(yīng)用市場,經(jīng)過VirusTotal分析檢測,最終整理得到450款正常軟件和450款惡意軟件,經(jīng)過圖1所示的方法,將每個(gè)apk文件轉(zhuǎn)化為對(duì)應(yīng)的[FAPI,F(xiàn)CMD,RPER]1 ×44 的特征向量,隨機(jī)選擇正常軟件和惡意軟件的70%作為訓(xùn)練集,剩余作為測試集。
所有實(shí)驗(yàn)在Intel(R)Core(TM)i5、內(nèi)存4G的計(jì)算機(jī)上運(yùn)行,算法在matlap 2010a上實(shí)現(xiàn),SVM實(shí)現(xiàn)采用libsvm3-17,實(shí)驗(yàn)中所有參數(shù)都采用默認(rèn)參數(shù)。式(1)和式(2)對(duì)應(yīng),式(4)和式(5)對(duì)應(yīng),式(3)和式(6)對(duì)應(yīng),因而實(shí)驗(yàn)結(jié)果只記錄 Acc、FPR、TPR 和P。
首先分別提取應(yīng)用放入 API特征[FAPI]1×14、系統(tǒng)命令行調(diào)用特征[FCMD]1×10和權(quán)限特征[FPER]1×20這3個(gè)特征;然后采用SVM對(duì)Android應(yīng)用進(jìn)行分類,2類應(yīng)用在不同的單一特征下的運(yùn)行10次后平均分類結(jié)果如表4示。
表4 單一特征對(duì)應(yīng)的分類結(jié)果
從表4以看出,無論使用哪種單一特征對(duì)惡意軟件的分類,其分類的結(jié)果都不高。其中權(quán)限特征的分類結(jié)果要明顯低于其他兩種特征,檢測準(zhǔn)確率Acc只有0.725 9,其原因是在于正常軟件與惡意軟件大體上都擁有相似的權(quán)限,區(qū)分度不高。系統(tǒng)命令行特征分類結(jié)果Acc為0.833 3,低于API特征分類結(jié)果的0.870 4,可以看出API特征在3種特征中對(duì)Andriod惡意軟件的檢測能力最高。而基于系統(tǒng)命令行特征分類結(jié)果在于有些惡意軟件不調(diào)用系統(tǒng)命令行,也能達(dá)到其惡意攻擊用戶手機(jī)的目的。同樣,有些惡意軟件只在代碼中調(diào)用危險(xiǎn)的API,也能攻擊用戶手機(jī),因此可以看出,單一特征不能為Android惡意軟件檢測提供高精度的檢測率。
首先對(duì)實(shí)驗(yàn)1中所提取的3種特征進(jìn)行合并,從而得到 Android應(yīng)用的混合特征[FAPI,F(xiàn)CMD,RPER]1×44。然后利用PCA方法對(duì)混合特征進(jìn)行降維處理,去除冗余信息,最后利用libsvm對(duì)Android應(yīng)用進(jìn)行分類,記為PCA-SVM算法。同樣,為了對(duì)比實(shí)驗(yàn),不對(duì)混合特征做處理,利用libsvm對(duì)Android應(yīng)用進(jìn)行分類,記為SVM算法。10次運(yùn)行后平均分類結(jié)果如表5所示。
表5 2種算法的圖像分類結(jié)果比較
從表4和表5可以看出,單一特征的Android惡意軟件檢測都要低于混合特征的Android惡意檢測。實(shí)驗(yàn)結(jié)果表明,混合特征在Android惡意檢測方面有更佳的檢測能力。從PCA-SVM算法和SVM算法的比較結(jié)果上可以看出,PCA-SVM算法在去除混合特征中冗余特征后,分類結(jié)果更優(yōu)。
綜上所述,Android靜態(tài)惡意檢測中,混合特征惡意檢測準(zhǔn)確率要高于單一特征的惡意檢測準(zhǔn)確率,Android惡意軟件實(shí)現(xiàn)手段的多樣化,使得單一特征不足以表現(xiàn)Android惡意軟件的特征。而混合特征可以多方面地表現(xiàn) Android惡意軟件,基于PCA的SVM分類器對(duì)Android惡意靜態(tài)檢測有很高的準(zhǔn)確率。
通過多款惡意軟件,從中分析出惡意軟件中的危險(xiǎn)API調(diào)用、危險(xiǎn)系統(tǒng)命令行和權(quán)限集,并以這些特征建立Andriod惡意靜態(tài)檢測模型。通過對(duì)450款惡意軟件和450款正常軟件進(jìn)行惡意檢測仿真實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明,基于混合特征的Android靜態(tài)檢測方法能夠有效地提高Andriod惡意檢測的檢測精度和惡意檢測模型的泛化能力。
[1] 趨勢科技.2013信息安全關(guān)鍵十大預(yù)測報(bào)告[J].計(jì)算機(jī)安全,2013(2):75-76.
[2] 李釗,李建軍,李智生,等.基于生物視覺特征的SVM目標(biāo)分類算法[J].無線電工程,2012,42(10):58-60.
[3] BURGUERA I,ZURUTUZA U,NADJM-TEHRANI S.Crowdroid:Behavior-based Malware Detection System for Android[C]∥ Proc.First ACM Workshop on Security and Privacy in Smartphones and Mobile devices(SPSM’11),New York,NY,USA,2011:15 -26.
[4] GIBLER C,CRUSSELL J,ERICKSON J,et al.Android Leaks:Automatically Detecting Potential Privacy Leaks in Android Applications on a Large Scale[C]∥ Proc.Fifth Int.Conf.Trust and Trustworthy Computing(TRUST 2012),Vienna,Austria,2012:291 -307.
[5] MANN C,STAROSTIN A.A Framework for Static Detection of Privacy Leaks in Android Applications[C]∥Proc.27thAnnualACM Symp.AppliedComputing(SAC’12),Trento,Italy,2012:1457 -1462.
[6] SHABTAI A,F(xiàn)LEDEL Y,ELOVICI Y.Automated Static Code Analysis for Classifying Android Applications Using Machine Learning[C]∥ in Proceedings of the 2010 International Conf.on Computational Intelligence and Security,2010:329 -333.
[7] 房鑫鑫.Android惡意軟件實(shí)現(xiàn)及檢測研究[D].南京:南京郵電大學(xué),2013:36-46.
[8] DINI G,MARTINELLI F,SARACINO A,et al.A Multilevel Anomaly Detector for Android Malware[J].In:Kotenko,I.,Skormin,V.(eds.)MMM-ACNS 2012.LNCS,2012(7531):240-253.
[9] WANG T Y,WU C H,HSIEH C C.A Virus Prevention Model Based on Static Analysis and Data Mining Methods[C]∥ Proc.IEEE Eighth Int.Conf.Computer and Information Technology Workshops,Sydney,2008:288 -293.
[10] SAHS J,KHAN L.A Machine Learning Approach to Android Malware Detection[C]∥ European Intelligence and Security Informatics Conf.,Odense,Denmark,2012:141-147.