劉曉東,何加銘,馮 波,史智慧
(1.寧波大學通信技術研究所,浙江寧波315211;2.中國移動通信集團浙江有限公司,浙江寧波315042;3.寧波新然電子信息科技發展有限公司,浙江寧波315211)
近幾年,智能手機的普及使得移動設備惡意程序數目迅速增加,尤其是Android平臺。根據NQ Mobile發布的安全報告顯示,2012年新發現的移動設備惡意軟件總數為65 227個,比2011年增長163%,并且 98.4%的惡意程序針對 Android平臺[1]。市場占有率高是Android惡意程序泛濫的一個很重要原因,另外,除了Google的官方Android應用市場外,還有許多第三方Android應用市場,這些應用市場對于應用程序寬松的審查也是Android惡意程序增長迅速的一個很重要的原因,國內外研究學者提出許多Android惡意程序的檢測方法。
文獻[2]利用數據挖掘算法Apriori給出的關聯規則來檢測程序對于敏感權限的訪問。Kirin方案[3]是一種輕量的基于權限的認證方法,在該方法中如果應用程序所申請的權限中包含預先設定的具有風險的權限組合,則認為該程序具有潛在的惡意性,該方案將會阻止該程序的安裝。該方案作為一個服務運行在Android系統上,是對Android安全機制的擴展,但手機有限的資源和計算能力使Kirin方案具有一定的局限性。本文的檢測方法在Kirin方案的基礎上進行了改進。
對現有的Android惡意程序行為特征進行總結,對于Android程序的惡意性分析有重要意義,從Android惡意程序的權限申請、入侵方式和惡意代碼加載方式3個方面進行總結。
在Android應用程序中,要實現網絡連接或者系統資源的訪問,都需要在配置文件中申請相應的權限,比如網絡連接需要申請INTERNET權限,發送短信需要申請SEND_SMS權限等[4],對972個惡意程序與972個非惡意程序權限申請的統計結果如表1所示。

表1 惡意程序與非惡意程序權限申請對比
惡意程序通常比非惡意程序申請更多的權限,而且惡意程序往往更多的申請與短信相關的權限,比如SEND_SMS和READ_SMS等。某些權限在惡意程序和非惡意程序中都被申請比較普遍,比如INTERNET和READ_PHONE_STATE等,因此并不能簡單的根據權限的申請情況來判斷該程序是否具有惡意性,但是不同權限的組合為分析程序的惡意性提供重要信息。
主要入侵方式有:
①重新打包法是Android惡意程序最常用的入侵手段[5]。黑客將普通應用程序反編譯,在原程序中嵌入惡意代碼,將其重新包裝成一個新的Android應用,并將此含有惡意代碼的應用上傳到Android應用市場,供用戶下載。DroidDream等惡意應用采用這種方式入侵用戶終端;
②重新打包法使用的比較普遍,但是這種方式有個缺點就是被感染的程序安裝文件包含全部的惡意代碼,容易被終端上的殺毒軟件檢測出來。遠程更新法雖然也要對應用程序重新打包[6],但并沒有在被感染的應用中嵌入惡意代碼,只嵌入能夠訪問遠程服務器的代碼,這樣就能避免殺毒軟件的檢測,成功入侵。安裝成功后,被感染的惡意程序會通知用戶更新版本,這時惡意代碼將會被下載到終端并嵌入到應用程序中。BaseBridge等惡意程序采取這種方式入侵[5];
③引誘法是一種比較傳統的入侵手段,黑客通常在網頁或其他Android程序中植入一些比較誘惑的圖片或文字信息,引誘用戶點擊下載。這種手段目前應用的也比較廣泛,GGTracker等惡意程序采用這種入侵方式。
Android惡意程序往往通過注冊系統事件,由系統事件觸發惡意代碼加載。在眾多的系統事件中,BOOT_COMPLETED是被惡意程序使用頻率最高的[7]。當系統啟動完畢時是惡意程序最佳的啟動時機。SMS_RECEIVED也同樣廣泛的被惡意程序采用,因為許多惡意程序對于手機收到短信這一事件很感興趣。另外,惡意程序往往過量的注冊系統事件,有些系統事件程序本身根本用不到。
攔截應用入口界面也是許多惡意程序常用的手段,當用戶啟動或點擊桌面上的啟動圖標時,惡意軟件將會收到ACTION_MAIN事件[8],這時惡意程序就會在用戶啟動好應用程序前迅速的啟運的自己的服務,并將其他應用程序的入口換為自己的入口。
Kirin方案預先定義了一些規則,比如程序中不能同時申請RECEIVE_SMS和WRITE_SMS 2個權限,否則認為該程序是不安全的,但是這樣粗粒度的檢測會增加誤報率,將沒有惡意行為的程序檢測為具有惡意行為的程序。文章擴大了檢測范圍也細化了檢測粒度,增加了對可能導致程序具有惡意性的API的檢則,同時為了更加準確的描述程序的惡意程度,降低誤報率,量化了不同靜態行為特征的惡意性指數,惡意性指數越高說明具有惡意的可能性越大,通過計算程序的惡意性指數來判斷程序的惡意程度。Google提供了針對Android程序安裝文件中.dex文件的反編譯器baksmali,baksmali可以將.dex文件反編譯為smali文件,而smali語法完整的實現了.dex的所有功能,包括程序代碼、注釋和調試等大量信息,利用這個工具可以獲取程序的API,在文中靜態行為特征是指能夠導致某一惡意行為的權限或API的組合。
如圖1所示,基于靜態行為特征的Android程序惡意性檢測方法主要分為4個模塊,分別為預處理模塊、反編譯模塊、檢測模塊和惡意性指數計算模塊,另外還有一個靜態行為特征庫。靜態行為特征庫是檢測方案的核心部分,直接影響整個系統的設計、實現與檢測效果。預處理模塊主要用來分析輸入的樣本文件是否為正常的Android安裝包,另外,如果文件名中包含影響程序運行的特殊字符,將刪除特殊字符,并對文件重命名等。反編譯模塊從檢測樣本中提取出AndroidManifest.xml配置文件與.dex文件,并分別對其進行反編譯,得到檢測樣本的配置文件與smali文件。分析模塊根據靜態行為特征庫中的內容分別對配置文件與smali文件中的內容進行檢測,檢測出程序中所包含的所有滿足條件的靜態行為特征,最后將根據檢測結果計算樣本的惡意性指數。

圖1 檢測方法流程圖
靜態行為特征的選取具有2個方面的條件,首先所選取的特征可能導致程序具有某些惡意行為,比如程序申請的權限中同時出現具有訪問網絡的權限INTERNET和允許應用程序讀取手機上存儲的所有聯系人的權限READ_CONTACTS,這2個權限的組合就可能導致手機用戶的聯系人信息泄露,所以這2個權限的組合可以作為一個判斷程序是否有惡意性的靜態行為特征。另外,還要求所選的特征在非惡意程序中的出現概率較低,比如SEND_SMS是允許程序發送短信的權限,RECEIVE_SMS是允許程序接收短信的權限,普通的應用程序很少同時申請這2個權限,但經常在一些惡意吸費程序中出現,比如惡意程序Zsone,Zsone入侵用戶手機后首先向一個惡意號碼發送短信訂購業務,為了不讓用戶發現自己的惡意行為,Zsone攔截手機運營商發送業務訂購通知消息,這樣就能在用戶毫無察覺的情況下惡意扣除用戶話費。靜態行為特征庫還包含可能使程序具有惡意行為的API,比如,一些惡意程序使用Runtime;->exec調用來執行系統命令,還有一些惡意程序利用DexClassLoader;->loadClass來加載外部.apk或.jar文件來實現惡意行為,這些API都將作為靜態行為特征來分析程序的惡意程度。
每個靜態行為特征都是由多個權限或API組成的,其中的每個權限或API作為這個靜態行為特征的一個元素,只有所有元素都具備時才認為所檢測的程序具備這個行為特征。靜態行為特征用下面的模版格式來表示:
{[元素數目],[元素代號1,元素代號2,…],[行為描述],[惡意性指數t]}。
元素數目代表這個靜態行為特征中所包含的權限和API總數,模版的第2項列出的是每個元素的代號,例如“1”代表 INTERNET權限,“2”代表READ_CONTACTS權限等。行為描述是對這條靜態行為特征的簡短的描述,例如“泄露用戶通訊錄信息”。惡意性指數t用來表示這個靜態行為特征的危險程度,假設這條靜態行為特征中有n個元素,且相互獨立,pmi(i=1,2,3,…,n)代表第 i個元素在惡意程序中出現的概率,則這個靜態行為特征在惡意程序中出現的概率為:

pbi(i=1,2,3,…,n)代表第 i個元素在非惡意程序中出現的概率,則這條靜態行為特征在非惡意程序中出現的概率為:

在方案中規定每個靜態行為特征的惡意性指數為:

則所檢測的程序樣本的惡意性指數為:

式中,ti是該程序中所包含的靜態行為特征的惡意性指數,程序樣本的惡意性指數將作為判斷程序惡意程度的依據。
從Android電子應用市場系統工具類、游戲類和網絡通信類等6類應用程序中隨機抽取112個程序,分別利用Kirin方案與本文方法對這112個樣本進行檢測,檢測結果如圖2所示。

圖2 實驗結果
所檢測的程序的惡意性指數主要分布在0~50這個區間內,少數分布在50~75區間,只有少數的程序惡意性指數超過75。所以如果程序的惡意性指數超過50則認為該程序可能具有惡意行為,如果惡意性指數超過75則該程序極有可能具有惡意行為。而Kirin方案的檢測結果相對簡單,檢測粒度比較粗略,誤報率較高,112個樣本中檢測出42個具有風險的程序。而利用本文中的方法的檢測結果,誤報率明顯降低,并且所檢測出的可能具有風險的程序中多為可以發送短信的程序或可能泄露用戶信息的程序。方案的檢測粒度更細,所選取的檢測內容能夠準確地反映程序的行為活動。
提出的基于靜態行為特征的Android程序惡意性檢測方案,通過量化不同靜態特征的惡意性指數來分析Android程序的惡意性。分別從Android程序的配置文件與反編譯的smali文件中提取程序的靜態特征,這些特征能夠比較準確的描述程序的行為活動,從而能夠可靠地分析出應用程序是否具有惡意的可能性。所選取研究的惡意程序數量較少,對于惡意程序覆蓋不足,靜態行為特征庫還需要進一步完善。后續工作還需對更多的惡意程序分析研究,提取更多的靜態行為特征。
[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].計算機技術與發展,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] 乜聚虎,周學海,余艷瑋等.Android安全加固技術[J].電信科學,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.