劉曉東,何加銘,馮 波,史智慧
(1.寧波大學(xué)通信技術(shù)研究所,浙江寧波315211;2.中國(guó)移動(dòng)通信集團(tuán)浙江有限公司,浙江寧波315042;3.寧波新然電子信息科技發(fā)展有限公司,浙江寧波315211)
近幾年,智能手機(jī)的普及使得移動(dòng)設(shè)備惡意程序數(shù)目迅速增加,尤其是Android平臺(tái)。根據(jù)NQ Mobile發(fā)布的安全報(bào)告顯示,2012年新發(fā)現(xiàn)的移動(dòng)設(shè)備惡意軟件總數(shù)為65 227個(gè),比2011年增長(zhǎng)163%,并且 98.4%的惡意程序針對(duì) Android平臺(tái)[1]。市場(chǎng)占有率高是Android惡意程序泛濫的一個(gè)很重要原因,另外,除了Google的官方Android應(yīng)用市場(chǎng)外,還有許多第三方Android應(yīng)用市場(chǎng),這些應(yīng)用市場(chǎng)對(duì)于應(yīng)用程序?qū)捤傻膶彶橐彩茿ndroid惡意程序增長(zhǎng)迅速的一個(gè)很重要的原因,國(guó)內(nèi)外研究學(xué)者提出許多Android惡意程序的檢測(cè)方法。
文獻(xiàn)[2]利用數(shù)據(jù)挖掘算法Apriori給出的關(guān)聯(lián)規(guī)則來(lái)檢測(cè)程序?qū)τ诿舾袡?quán)限的訪問(wèn)。Kirin方案[3]是一種輕量的基于權(quán)限的認(rèn)證方法,在該方法中如果應(yīng)用程序所申請(qǐng)的權(quán)限中包含預(yù)先設(shè)定的具有風(fēng)險(xiǎn)的權(quán)限組合,則認(rèn)為該程序具有潛在的惡意性,該方案將會(huì)阻止該程序的安裝。該方案作為一個(gè)服務(wù)運(yùn)行在Android系統(tǒng)上,是對(duì)Android安全機(jī)制的擴(kuò)展,但手機(jī)有限的資源和計(jì)算能力使Kirin方案具有一定的局限性。本文的檢測(cè)方法在Kirin方案的基礎(chǔ)上進(jìn)行了改進(jìn)。
對(duì)現(xiàn)有的Android惡意程序行為特征進(jìn)行總結(jié),對(duì)于Android程序的惡意性分析有重要意義,從Android惡意程序的權(quán)限申請(qǐng)、入侵方式和惡意代碼加載方式3個(gè)方面進(jìn)行總結(jié)。
在Android應(yīng)用程序中,要實(shí)現(xiàn)網(wǎng)絡(luò)連接或者系統(tǒng)資源的訪問(wèn),都需要在配置文件中申請(qǐng)相應(yīng)的權(quán)限,比如網(wǎng)絡(luò)連接需要申請(qǐng)INTERNET權(quán)限,發(fā)送短信需要申請(qǐng)SEND_SMS權(quán)限等[4],對(duì)972個(gè)惡意程序與972個(gè)非惡意程序權(quán)限申請(qǐng)的統(tǒng)計(jì)結(jié)果如表1所示。
表1 惡意程序與非惡意程序權(quán)限申請(qǐng)對(duì)比
惡意程序通常比非惡意程序申請(qǐng)更多的權(quán)限,而且惡意程序往往更多的申請(qǐng)與短信相關(guān)的權(quán)限,比如SEND_SMS和READ_SMS等。某些權(quán)限在惡意程序和非惡意程序中都被申請(qǐng)比較普遍,比如INTERNET和READ_PHONE_STATE等,因此并不能簡(jiǎn)單的根據(jù)權(quán)限的申請(qǐng)情況來(lái)判斷該程序是否具有惡意性,但是不同權(quán)限的組合為分析程序的惡意性提供重要信息。
主要入侵方式有:
①重新打包法是Android惡意程序最常用的入侵手段[5]。黑客將普通應(yīng)用程序反編譯,在原程序中嵌入惡意代碼,將其重新包裝成一個(gè)新的Android應(yīng)用,并將此含有惡意代碼的應(yīng)用上傳到Android應(yīng)用市場(chǎng),供用戶下載。DroidDream等惡意應(yīng)用采用這種方式入侵用戶終端;
②重新打包法使用的比較普遍,但是這種方式有個(gè)缺點(diǎn)就是被感染的程序安裝文件包含全部的惡意代碼,容易被終端上的殺毒軟件檢測(cè)出來(lái)。遠(yuǎn)程更新法雖然也要對(duì)應(yīng)用程序重新打包[6],但并沒(méi)有在被感染的應(yīng)用中嵌入惡意代碼,只嵌入能夠訪問(wèn)遠(yuǎn)程服務(wù)器的代碼,這樣就能避免殺毒軟件的檢測(cè),成功入侵。安裝成功后,被感染的惡意程序會(huì)通知用戶更新版本,這時(shí)惡意代碼將會(huì)被下載到終端并嵌入到應(yīng)用程序中。BaseBridge等惡意程序采取這種方式入侵[5];
③引誘法是一種比較傳統(tǒng)的入侵手段,黑客通常在網(wǎng)頁(yè)或其他Android程序中植入一些比較誘惑的圖片或文字信息,引誘用戶點(diǎn)擊下載。這種手段目前應(yīng)用的也比較廣泛,GGTracker等惡意程序采用這種入侵方式。
Android惡意程序往往通過(guò)注冊(cè)系統(tǒng)事件,由系統(tǒng)事件觸發(fā)惡意代碼加載。在眾多的系統(tǒng)事件中,BOOT_COMPLETED是被惡意程序使用頻率最高的[7]。當(dāng)系統(tǒng)啟動(dòng)完畢時(shí)是惡意程序最佳的啟動(dòng)時(shí)機(jī)。SMS_RECEIVED也同樣廣泛的被惡意程序采用,因?yàn)樵S多惡意程序?qū)τ谑謾C(jī)收到短信這一事件很感興趣。另外,惡意程序往往過(guò)量的注冊(cè)系統(tǒng)事件,有些系統(tǒng)事件程序本身根本用不到。
攔截應(yīng)用入口界面也是許多惡意程序常用的手段,當(dāng)用戶啟動(dòng)或點(diǎn)擊桌面上的啟動(dòng)圖標(biāo)時(shí),惡意軟件將會(huì)收到ACTION_MAIN事件[8],這時(shí)惡意程序就會(huì)在用戶啟動(dòng)好應(yīng)用程序前迅速的啟運(yùn)的自己的服務(wù),并將其他應(yīng)用程序的入口換為自己的入口。
Kirin方案預(yù)先定義了一些規(guī)則,比如程序中不能同時(shí)申請(qǐng)RECEIVE_SMS和WRITE_SMS 2個(gè)權(quán)限,否則認(rèn)為該程序是不安全的,但是這樣粗粒度的檢測(cè)會(huì)增加誤報(bào)率,將沒(méi)有惡意行為的程序檢測(cè)為具有惡意行為的程序。文章擴(kuò)大了檢測(cè)范圍也細(xì)化了檢測(cè)粒度,增加了對(duì)可能導(dǎo)致程序具有惡意性的API的檢則,同時(shí)為了更加準(zhǔn)確的描述程序的惡意程度,降低誤報(bào)率,量化了不同靜態(tài)行為特征的惡意性指數(shù),惡意性指數(shù)越高說(shuō)明具有惡意的可能性越大,通過(guò)計(jì)算程序的惡意性指數(shù)來(lái)判斷程序的惡意程度。Google提供了針對(duì)Android程序安裝文件中.dex文件的反編譯器baksmali,baksmali可以將.dex文件反編譯為smali文件,而smali語(yǔ)法完整的實(shí)現(xiàn)了.dex的所有功能,包括程序代碼、注釋和調(diào)試等大量信息,利用這個(gè)工具可以獲取程序的API,在文中靜態(tài)行為特征是指能夠?qū)е履骋粣阂庑袨榈臋?quán)限或API的組合。
如圖1所示,基于靜態(tài)行為特征的Android程序惡意性檢測(cè)方法主要分為4個(gè)模塊,分別為預(yù)處理模塊、反編譯模塊、檢測(cè)模塊和惡意性指數(shù)計(jì)算模塊,另外還有一個(gè)靜態(tài)行為特征庫(kù)。靜態(tài)行為特征庫(kù)是檢測(cè)方案的核心部分,直接影響整個(gè)系統(tǒng)的設(shè)計(jì)、實(shí)現(xiàn)與檢測(cè)效果。預(yù)處理模塊主要用來(lái)分析輸入的樣本文件是否為正常的Android安裝包,另外,如果文件名中包含影響程序運(yùn)行的特殊字符,將刪除特殊字符,并對(duì)文件重命名等。反編譯模塊從檢測(cè)樣本中提取出AndroidManifest.xml配置文件與.dex文件,并分別對(duì)其進(jìn)行反編譯,得到檢測(cè)樣本的配置文件與smali文件。分析模塊根據(jù)靜態(tài)行為特征庫(kù)中的內(nèi)容分別對(duì)配置文件與smali文件中的內(nèi)容進(jìn)行檢測(cè),檢測(cè)出程序中所包含的所有滿足條件的靜態(tài)行為特征,最后將根據(jù)檢測(cè)結(jié)果計(jì)算樣本的惡意性指數(shù)。
圖1 檢測(cè)方法流程圖
靜態(tài)行為特征的選取具有2個(gè)方面的條件,首先所選取的特征可能導(dǎo)致程序具有某些惡意行為,比如程序申請(qǐng)的權(quán)限中同時(shí)出現(xiàn)具有訪問(wèn)網(wǎng)絡(luò)的權(quán)限INTERNET和允許應(yīng)用程序讀取手機(jī)上存儲(chǔ)的所有聯(lián)系人的權(quán)限READ_CONTACTS,這2個(gè)權(quán)限的組合就可能導(dǎo)致手機(jī)用戶的聯(lián)系人信息泄露,所以這2個(gè)權(quán)限的組合可以作為一個(gè)判斷程序是否有惡意性的靜態(tài)行為特征。另外,還要求所選的特征在非惡意程序中的出現(xiàn)概率較低,比如SEND_SMS是允許程序發(fā)送短信的權(quán)限,RECEIVE_SMS是允許程序接收短信的權(quán)限,普通的應(yīng)用程序很少同時(shí)申請(qǐng)這2個(gè)權(quán)限,但經(jīng)常在一些惡意吸費(fèi)程序中出現(xiàn),比如惡意程序Zsone,Zsone入侵用戶手機(jī)后首先向一個(gè)惡意號(hào)碼發(fā)送短信訂購(gòu)業(yè)務(wù),為了不讓用戶發(fā)現(xiàn)自己的惡意行為,Zsone攔截手機(jī)運(yùn)營(yíng)商發(fā)送業(yè)務(wù)訂購(gòu)?fù)ㄖⅲ@樣就能在用戶毫無(wú)察覺(jué)的情況下惡意扣除用戶話費(fèi)。靜態(tài)行為特征庫(kù)還包含可能使程序具有惡意行為的API,比如,一些惡意程序使用Runtime;->exec調(diào)用來(lái)執(zhí)行系統(tǒng)命令,還有一些惡意程序利用DexClassLoader;->loadClass來(lái)加載外部.a(chǎn)pk或.jar文件來(lái)實(shí)現(xiàn)惡意行為,這些API都將作為靜態(tài)行為特征來(lái)分析程序的惡意程度。
每個(gè)靜態(tài)行為特征都是由多個(gè)權(quán)限或API組成的,其中的每個(gè)權(quán)限或API作為這個(gè)靜態(tài)行為特征的一個(gè)元素,只有所有元素都具備時(shí)才認(rèn)為所檢測(cè)的程序具備這個(gè)行為特征。靜態(tài)行為特征用下面的模版格式來(lái)表示:
{[元素?cái)?shù)目],[元素代號(hào)1,元素代號(hào)2,…],[行為描述],[惡意性指數(shù)t]}。
元素?cái)?shù)目代表這個(gè)靜態(tài)行為特征中所包含的權(quán)限和API總數(shù),模版的第2項(xiàng)列出的是每個(gè)元素的代號(hào),例如“1”代表 INTERNET權(quán)限,“2”代表READ_CONTACTS權(quán)限等。行為描述是對(duì)這條靜態(tài)行為特征的簡(jiǎn)短的描述,例如“泄露用戶通訊錄信息”。惡意性指數(shù)t用來(lái)表示這個(gè)靜態(tài)行為特征的危險(xiǎn)程度,假設(shè)這條靜態(tài)行為特征中有n個(gè)元素,且相互獨(dú)立,pmi(i=1,2,3,…,n)代表第 i個(gè)元素在惡意程序中出現(xiàn)的概率,則這個(gè)靜態(tài)行為特征在惡意程序中出現(xiàn)的概率為:
pbi(i=1,2,3,…,n)代表第 i個(gè)元素在非惡意程序中出現(xiàn)的概率,則這條靜態(tài)行為特征在非惡意程序中出現(xiàn)的概率為:
在方案中規(guī)定每個(gè)靜態(tài)行為特征的惡意性指數(shù)為:
則所檢測(cè)的程序樣本的惡意性指數(shù)為:
式中,ti是該程序中所包含的靜態(tài)行為特征的惡意性指數(shù),程序樣本的惡意性指數(shù)將作為判斷程序惡意程度的依據(jù)。
從Android電子應(yīng)用市場(chǎng)系統(tǒng)工具類、游戲類和網(wǎng)絡(luò)通信類等6類應(yīng)用程序中隨機(jī)抽取112個(gè)程序,分別利用Kirin方案與本文方法對(duì)這112個(gè)樣本進(jìn)行檢測(cè),檢測(cè)結(jié)果如圖2所示。
圖2 實(shí)驗(yàn)結(jié)果
所檢測(cè)的程序的惡意性指數(shù)主要分布在0~50這個(gè)區(qū)間內(nèi),少數(shù)分布在50~75區(qū)間,只有少數(shù)的程序惡意性指數(shù)超過(guò)75。所以如果程序的惡意性指數(shù)超過(guò)50則認(rèn)為該程序可能具有惡意行為,如果惡意性指數(shù)超過(guò)75則該程序極有可能具有惡意行為。而Kirin方案的檢測(cè)結(jié)果相對(duì)簡(jiǎn)單,檢測(cè)粒度比較粗略,誤報(bào)率較高,112個(gè)樣本中檢測(cè)出42個(gè)具有風(fēng)險(xiǎn)的程序。而利用本文中的方法的檢測(cè)結(jié)果,誤報(bào)率明顯降低,并且所檢測(cè)出的可能具有風(fēng)險(xiǎn)的程序中多為可以發(fā)送短信的程序或可能泄露用戶信息的程序。方案的檢測(cè)粒度更細(xì),所選取的檢測(cè)內(nèi)容能夠準(zhǔn)確地反映程序的行為活動(dòng)。
提出的基于靜態(tài)行為特征的Android程序惡意性檢測(cè)方案,通過(guò)量化不同靜態(tài)特征的惡意性指數(shù)來(lái)分析Android程序的惡意性。分別從Android程序的配置文件與反編譯的smali文件中提取程序的靜態(tài)特征,這些特征能夠比較準(zhǔn)確的描述程序的行為活動(dòng),從而能夠可靠地分析出應(yīng)用程序是否具有惡意的可能性。所選取研究的惡意程序數(shù)量較少,對(duì)于惡意程序覆蓋不足,靜態(tài)行為特征庫(kù)還需要進(jìn)一步完善。后續(xù)工作還需對(duì)更多的惡意程序分析研究,提取更多的靜態(tài)行為特征。
[1] WANG Z,ZHOU Y,JIANG X,et al.Detecting Repackaged Smartphone Applications in Third-party Android Marketplaces[C]∥Proc.of the Second ACM Conference on Data and Application Security and Privacy.USA:ACM,2012:317 -326.
[2] CERBO D F,GIRARDELLO A,MICHAHELLES F,et al.Detection of Malicious Applications on Android OS[C]∥Computational forensics.Japan,2011:138 -149.
[3] ENCK W,ONGTANG M,MCDANIEL P.On Lightweight Mobile Phone Application Certification[C]∥Proc.of ACM Conference on Computer and Communications Security.USA:ACM,2009:235 -245.
[4] 宋杰,黨李成,郭振朝,等.Android OS手機(jī)平臺(tái)的安全機(jī)制分析和應(yīng)用研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2010,20(6):152 -155.
[5] ZHOU Y,JIANG X.Dissecting Android Malware:Characterization and Evolution[C]∥ Proc.of the 33rd IEEE Symposium on Security and Privacy.USA,2012:95 -109.
[6] 乜聚虎,周學(xué)海,余艷瑋等.Android安全加固技術(shù)[J].電信科學(xué),2011,20(10) :74 -77.
[7] ZHOU Ya-jin,WANG Zhi,ZHOU Wu,et al.Hey,You,Get off of My Market:Detecting Malicious Apps in Official and Alternative Android Markets[C]∥Proc.of the 19th Annual Symposium on Network and Distributed System Security.USA,2012:168 -174.
[8] ALAZAB M,MONSAMY V,BATTEN L,et al.Analysis of Malicious and Benign Android Applications[C]∥ Proc.of the 32nd IEEE International Conference on Distributed Computing Systems Workshops.China,2012:608 -616.
[9] WILLIAM E,PETER G,BYUNG-GON C,et al.Taint Droid:An Information-Flow Tracking System for Realtime Privacy Monitoring on Smartphones[C]∥Pro.of the 9th USENIX Symposium on Operating Systems Design and Implementation(OSDI).Canada,2010:514 -520.
[10] BURGUERA I,ZURUTUZA U,NADJM-TEHRANI S.Crowdroid:Behavior-based malware detection system for android[C]∥ Proc of the ACM Conference on Computer and Communications Security.USA,2011:56 -74.