劉曉東,何加銘,馮 波,史智慧
(1.寧波大學(xué)通信技術(shù)研究所,浙江寧波315211;2.中國移動通信集團(tuán)浙江有限公司,浙江寧波315042;3.寧波新然電子信息科技發(fā)展有限公司,浙江寧波315211)
近幾年,智能手機的普及使得移動設(shè)備惡意程序數(shù)目迅速增加,尤其是Android平臺。根據(jù)NQ Mobile發(fā)布的安全報告顯示,2012年新發(fā)現(xiàn)的移動設(shè)備惡意軟件總數(shù)為65 227個,比2011年增長163%,并且 98.4%的惡意程序針對 Android平臺[1]。市場占有率高是Android惡意程序泛濫的一個很重要原因,另外,除了Google的官方Android應(yīng)用市場外,還有許多第三方Android應(yīng)用市場,這些應(yīng)用市場對于應(yīng)用程序?qū)捤傻膶彶橐彩茿ndroid惡意程序增長迅速的一個很重要的原因,國內(nèi)外研究學(xué)者提出許多Android惡意程序的檢測方法。
文獻(xiàn)[2]利用數(shù)據(jù)挖掘算法Apriori給出的關(guān)聯(lián)規(guī)則來檢測程序?qū)τ诿舾袡?quán)限的訪問。Kirin方案[3]是一種輕量的基于權(quán)限的認(rèn)證方法,在該方法中如果應(yīng)用程序所申請的權(quán)限中包含預(yù)先設(shè)定的具有風(fēng)險的權(quán)限組合,則認(rèn)為該程序具有潛在的惡意性,該方案將會阻止該程序的安裝。該方案作為一個服務(wù)運行在Android系統(tǒng)上,是對Android安全機制的擴展,但手機有限的資源和計算能力使Kirin方案具有一定的局限性。本文的檢測方法在Kirin方案的基礎(chǔ)上進(jìn)行了改進(jìn)。
對現(xiàn)有的Android惡意程序行為特征進(jìn)行總結(jié),對于Android程序的惡意性分析有重要意義,從Android惡意程序的權(quán)限申請、入侵方式和惡意代碼加載方式3個方面進(jìn)行總結(jié)。
在Android應(yīng)用程序中,要實現(xiàn)網(wǎng)絡(luò)連接或者系統(tǒng)資源的訪問,都需要在配置文件中申請相應(yīng)的權(quán)限,比如網(wǎng)絡(luò)連接需要申請INTERNET權(quán)限,發(fā)送短信需要申請SEND_SMS權(quán)限等[4],對972個惡意程序與972個非惡意程序權(quán)限申請的統(tǒng)計結(jié)果如表1所示。
表1 惡意程序與非惡意程序權(quán)限申請對比
惡意程序通常比非惡意程序申請更多的權(quán)限,而且惡意程序往往更多的申請與短信相關(guān)的權(quán)限,比如SEND_SMS和READ_SMS等。某些權(quán)限在惡意程序和非惡意程序中都被申請比較普遍,比如INTERNET和READ_PHONE_STATE等,因此并不能簡單的根據(jù)權(quán)限的申請情況來判斷該程序是否具有惡意性,但是不同權(quán)限的組合為分析程序的惡意性提供重要信息。
主要入侵方式有:
①重新打包法是Android惡意程序最常用的入侵手段[5]。黑客將普通應(yīng)用程序反編譯,在原程序中嵌入惡意代碼,將其重新包裝成一個新的Android應(yīng)用,并將此含有惡意代碼的應(yīng)用上傳到Android應(yīng)用市場,供用戶下載。DroidDream等惡意應(yīng)用采用這種方式入侵用戶終端;
②重新打包法使用的比較普遍,但是這種方式有個缺點就是被感染的程序安裝文件包含全部的惡意代碼,容易被終端上的殺毒軟件檢測出來。遠(yuǎn)程更新法雖然也要對應(yīng)用程序重新打包[6],但并沒有在被感染的應(yīng)用中嵌入惡意代碼,只嵌入能夠訪問遠(yuǎn)程服務(wù)器的代碼,這樣就能避免殺毒軟件的檢測,成功入侵。安裝成功后,被感染的惡意程序會通知用戶更新版本,這時惡意代碼將會被下載到終端并嵌入到應(yīng)用程序中。BaseBridge等惡意程序采取這種方式入侵[5];
③引誘法是一種比較傳統(tǒng)的入侵手段,黑客通常在網(wǎng)頁或其他Android程序中植入一些比較誘惑的圖片或文字信息,引誘用戶點擊下載。這種手段目前應(yīng)用的也比較廣泛,GGTracker等惡意程序采用這種入侵方式。
Android惡意程序往往通過注冊系統(tǒng)事件,由系統(tǒng)事件觸發(fā)惡意代碼加載。在眾多的系統(tǒng)事件中,BOOT_COMPLETED是被惡意程序使用頻率最高的[7]。當(dāng)系統(tǒng)啟動完畢時是惡意程序最佳的啟動時機。SMS_RECEIVED也同樣廣泛的被惡意程序采用,因為許多惡意程序?qū)τ谑謾C收到短信這一事件很感興趣。另外,惡意程序往往過量的注冊系統(tǒng)事件,有些系統(tǒng)事件程序本身根本用不到。
攔截應(yīng)用入口界面也是許多惡意程序常用的手段,當(dāng)用戶啟動或點擊桌面上的啟動圖標(biāo)時,惡意軟件將會收到ACTION_MAIN事件[8],這時惡意程序就會在用戶啟動好應(yīng)用程序前迅速的啟運的自己的服務(wù),并將其他應(yīng)用程序的入口換為自己的入口。
Kirin方案預(yù)先定義了一些規(guī)則,比如程序中不能同時申請RECEIVE_SMS和WRITE_SMS 2個權(quán)限,否則認(rèn)為該程序是不安全的,但是這樣粗粒度的檢測會增加誤報率,將沒有惡意行為的程序檢測為具有惡意行為的程序。文章擴大了檢測范圍也細(xì)化了檢測粒度,增加了對可能導(dǎo)致程序具有惡意性的API的檢則,同時為了更加準(zhǔn)確的描述程序的惡意程度,降低誤報率,量化了不同靜態(tài)行為特征的惡意性指數(shù),惡意性指數(shù)越高說明具有惡意的可能性越大,通過計算程序的惡意性指數(shù)來判斷程序的惡意程度。Google提供了針對Android程序安裝文件中.dex文件的反編譯器baksmali,baksmali可以將.dex文件反編譯為smali文件,而smali語法完整的實現(xiàn)了.dex的所有功能,包括程序代碼、注釋和調(diào)試等大量信息,利用這個工具可以獲取程序的API,在文中靜態(tài)行為特征是指能夠?qū)е履骋粣阂庑袨榈臋?quán)限或API的組合。
如圖1所示,基于靜態(tài)行為特征的Android程序惡意性檢測方法主要分為4個模塊,分別為預(yù)處理模塊、反編譯模塊、檢測模塊和惡意性指數(shù)計算模塊,另外還有一個靜態(tài)行為特征庫。靜態(tài)行為特征庫是檢測方案的核心部分,直接影響整個系統(tǒng)的設(shè)計、實現(xiàn)與檢測效果。預(yù)處理模塊主要用來分析輸入的樣本文件是否為正常的Android安裝包,另外,如果文件名中包含影響程序運行的特殊字符,將刪除特殊字符,并對文件重命名等。反編譯模塊從檢測樣本中提取出AndroidManifest.xml配置文件與.dex文件,并分別對其進(jìn)行反編譯,得到檢測樣本的配置文件與smali文件。分析模塊根據(jù)靜態(tài)行為特征庫中的內(nèi)容分別對配置文件與smali文件中的內(nèi)容進(jìn)行檢測,檢測出程序中所包含的所有滿足條件的靜態(tài)行為特征,最后將根據(jù)檢測結(jié)果計算樣本的惡意性指數(shù)。
圖1 檢測方法流程圖
靜態(tài)行為特征的選取具有2個方面的條件,首先所選取的特征可能導(dǎo)致程序具有某些惡意行為,比如程序申請的權(quán)限中同時出現(xiàn)具有訪問網(wǎng)絡(luò)的權(quán)限INTERNET和允許應(yīng)用程序讀取手機上存儲的所有聯(lián)系人的權(quán)限READ_CONTACTS,這2個權(quán)限的組合就可能導(dǎo)致手機用戶的聯(lián)系人信息泄露,所以這2個權(quán)限的組合可以作為一個判斷程序是否有惡意性的靜態(tài)行為特征。另外,還要求所選的特征在非惡意程序中的出現(xiàn)概率較低,比如SEND_SMS是允許程序發(fā)送短信的權(quán)限,RECEIVE_SMS是允許程序接收短信的權(quán)限,普通的應(yīng)用程序很少同時申請這2個權(quán)限,但經(jīng)常在一些惡意吸費程序中出現(xiàn),比如惡意程序Zsone,Zsone入侵用戶手機后首先向一個惡意號碼發(fā)送短信訂購業(yè)務(wù),為了不讓用戶發(fā)現(xiàn)自己的惡意行為,Zsone攔截手機運營商發(fā)送業(yè)務(wù)訂購?fù)ㄖⅲ@樣就能在用戶毫無察覺的情況下惡意扣除用戶話費。靜態(tài)行為特征庫還包含可能使程序具有惡意行為的API,比如,一些惡意程序使用Runtime;->exec調(diào)用來執(zhí)行系統(tǒng)命令,還有一些惡意程序利用DexClassLoader;->loadClass來加載外部.a(chǎn)pk或.jar文件來實現(xiàn)惡意行為,這些API都將作為靜態(tài)行為特征來分析程序的惡意程度。
每個靜態(tài)行為特征都是由多個權(quán)限或API組成的,其中的每個權(quán)限或API作為這個靜態(tài)行為特征的一個元素,只有所有元素都具備時才認(rèn)為所檢測的程序具備這個行為特征。靜態(tài)行為特征用下面的模版格式來表示:
{[元素數(shù)目],[元素代號1,元素代號2,…],[行為描述],[惡意性指數(shù)t]}。
元素數(shù)目代表這個靜態(tài)行為特征中所包含的權(quán)限和API總數(shù),模版的第2項列出的是每個元素的代號,例如“1”代表 INTERNET權(quán)限,“2”代表READ_CONTACTS權(quán)限等。行為描述是對這條靜態(tài)行為特征的簡短的描述,例如“泄露用戶通訊錄信息”。惡意性指數(shù)t用來表示這個靜態(tài)行為特征的危險程度,假設(shè)這條靜態(tài)行為特征中有n個元素,且相互獨立,pmi(i=1,2,3,…,n)代表第 i個元素在惡意程序中出現(xiàn)的概率,則這個靜態(tài)行為特征在惡意程序中出現(xiàn)的概率為:
pbi(i=1,2,3,…,n)代表第 i個元素在非惡意程序中出現(xiàn)的概率,則這條靜態(tài)行為特征在非惡意程序中出現(xiàn)的概率為:
在方案中規(guī)定每個靜態(tài)行為特征的惡意性指數(shù)為:
則所檢測的程序樣本的惡意性指數(shù)為:
式中,ti是該程序中所包含的靜態(tài)行為特征的惡意性指數(shù),程序樣本的惡意性指數(shù)將作為判斷程序惡意程度的依據(jù)。
從Android電子應(yīng)用市場系統(tǒng)工具類、游戲類和網(wǎng)絡(luò)通信類等6類應(yīng)用程序中隨機抽取112個程序,分別利用Kirin方案與本文方法對這112個樣本進(jìn)行檢測,檢測結(jié)果如圖2所示。
圖2 實驗結(jié)果
所檢測的程序的惡意性指數(shù)主要分布在0~50這個區(qū)間內(nèi),少數(shù)分布在50~75區(qū)間,只有少數(shù)的程序惡意性指數(shù)超過75。所以如果程序的惡意性指數(shù)超過50則認(rèn)為該程序可能具有惡意行為,如果惡意性指數(shù)超過75則該程序極有可能具有惡意行為。而Kirin方案的檢測結(jié)果相對簡單,檢測粒度比較粗略,誤報率較高,112個樣本中檢測出42個具有風(fēng)險的程序。而利用本文中的方法的檢測結(jié)果,誤報率明顯降低,并且所檢測出的可能具有風(fēng)險的程序中多為可以發(fā)送短信的程序或可能泄露用戶信息的程序。方案的檢測粒度更細(xì),所選取的檢測內(nèi)容能夠準(zhǔn)確地反映程序的行為活動。
提出的基于靜態(tài)行為特征的Android程序惡意性檢測方案,通過量化不同靜態(tài)特征的惡意性指數(shù)來分析Android程序的惡意性。分別從Android程序的配置文件與反編譯的smali文件中提取程序的靜態(tài)特征,這些特征能夠比較準(zhǔn)確的描述程序的行為活動,從而能夠可靠地分析出應(yīng)用程序是否具有惡意的可能性。所選取研究的惡意程序數(shù)量較少,對于惡意程序覆蓋不足,靜態(tài)行為特征庫還需要進(jìn)一步完善。后續(xù)工作還需對更多的惡意程序分析研究,提取更多的靜態(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手機平臺的安全機制分析和應(yīng)用研究[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.