黃梅根 曾云科
(重慶郵電大學計算機科學與技術學院 重慶 400065)
?
基于權限組合的Android竊取隱私惡意應用檢測方法
黃梅根曾云科
(重慶郵電大學計算機科學與技術學院重慶400065)
在分析Android系統總共165個權限的基礎上,提煉出30個理論上可以獲取Android系統隱私資源的惡意權限組合。提出一種針對應用類別的基于惡意權限組合的惡意值、待測應用惡意權值、惡意閾值的竊取隱私惡意應用檢測方法。通過實驗驗證了該方法的正確性和準確率,并在Android系統中得以實現。
Android系統惡意權限組合惡意應用檢測應用類別
Android OS自從發布以后憑借其開放性吸引了大批研發人員的關注和大量智能終端廠商的參與,很快便取得了智能終端市場的絕對優勢地位。據調研公司Kantar Worldpanel ComTech統計數據顯示,2015年Android操作系統在中國智能手機市場的市場份額是70.9%,遠遠超過其他智能手機操作系統[1]。但也正是由于其開放性,Android系統上的惡意應用也隨著Android系統的發展而迅速發展起來了。
如今的手機已經不像傳統的手機只被用來打電話或發短信,它現在已經滲入了人們生活各個方面,諸如交友、購物、娛樂、資訊等。據Android官網統計,每天至少有一百萬臺基于Android系統的設備被激活[2]。Android系統的快速普及也給了惡意應用更大的滋生動力,以獲取人們生活各方面的隱私信息。據網秦的“云安全”監測平臺統計,2014 年第一季度查殺到手機惡意軟件共計 41 199款,被感染的智能手機共計1784 萬部,其中竊取用戶隱私的惡意行為占大部分,隱私安全問題不容忽視[3]。又據360互聯網安全中心統計,2014全年360互聯網安全中心共截獲Android平臺新增惡意應用326.0萬個,平均每天截獲新增惡意應用近8932個[4]。Android 移動終端存在很大的安全隱患。
本文的主要研究如下:首先從隱私信息入手,提出一系列威脅用戶隱私的惡意權限組合,其中任意一個惡意權限組合都能達到竊取用戶隱私的目的。然后以GooglePlay對所有Android應用的分類為基礎,對每個分類下的大量正常應用的權限進行統計分析,以確認某些特定分類確實需要獲取終端的某些隱私信息。為了避免因為這種情況造成的誤報,本文計算出每個類別對每個惡意權限組合的惡意值。最后把惡意值作為初始參數,通過惡意值計算出待檢測應用的惡意權值,從而判斷該應用是否是竊取隱私的惡意應用。本文設計了多組實驗評估本文提出方法的有效性和準確性。
1.1Android權限機制
Google公司為Android系統設計了一系列涉及到安全操作和隱私信息的權限標簽。應用中如果有需要執行某些安全相關操作或者訪問隱私數據的情況,開發者就需要在其配置文件AndroidMainfest.xml[5]中聲明相應權限。Android系統中的權限分為普通、危險、簽名、簽名或系統四種級別[6]。普通和危險級別的權限在應用安裝時會被提示在屏幕上,以通知用戶是否授予相應權限;而簽名或系統級別權限,只有當申請該權限的應用具有與系統相同的簽名或該應用是系統應用時才能被授權。應用有了相應的權限后就可以進行相應的操作或訪問相應的隱私數據。例如:應用如果申請CALL_PHONE這個權限,那么它就可以在無需用戶確認的情況下撥打電話,惡意應用可能會利用這個權限來實施消耗用戶的話費或監聽用戶談話內容等惡意操作,侵犯用戶隱私。Android官網列出了Android系統自帶的165個權限[7]。
1.2國內外研究現狀
目前,Android惡意應用檢測技術分為動態檢測技術和靜態檢測技術。Enck等人的輕量級應用檢測工具Kirin提出了一組危險權限組合[8],如表1所示。文獻[9]對Android的隱私信息風險點進行了分析,并通過編寫竊取隱私的惡意代碼驗證各個風險點確實存在。文獻[10]曾針對Android隱私數據提出了TaintDroid模型,其對隱私數據做著色跟蹤以判斷應用是否竊取用戶隱私。文獻[11]提出了Saint機制,Saint可以控制應用安裝時權限的分配,程序運行時根據自定義策略保護應用的對外接口。文獻[12]提出了APEX,通過修改包管理器讓用戶可以在運行應用時授予或撤銷應用申請的某些權限。文獻[13]從Android所有權限中提取出相關度小、使用頻繁的68個權限并計算每個權限的先驗概率,再通過改進的貝葉斯算法計算后驗概率以計算應用的惡意概率,以此判斷應用是否是惡意應用。文獻[14]根據GooglePlay對Android應用的分類分別統計每一類應用中每個權限出現的概率,通過每個權限的概率計算未知應用的惡意值以判斷應用是否惡意。對大量數據運用數據挖掘技術可以挖掘出很多有用的信息[15],文獻[16,17]利用數據挖掘技術挖掘出惡意應用的特征,以此來檢測未知惡意應用。

表1 Kirin 安全策略
在以權限判斷惡意應用的研究中,文獻[8,16]總結惡意權限組合以判斷應用是否是惡意應用。但某些惡意權限組合確實是某些類別應用所必需的,例如FINE_LOCATION+ INTERNET這個組合可以被用來跟蹤用戶地理位置,天氣預報類應用的確需要這個組合來判斷用戶的位置以顯示本地天氣預報。文獻[14]通過分別計算每個應用類別中每一個權限出現的概率,以此為基礎分析待測應用是否是惡意應用。由于同一類別的Android應用申請單個權限的差異性也很大,因此這種方法的精確性會受到該原因的影響。本文把上述兩種研究方法結合起來,首先通過分析提出30個能竊取用戶隱私的惡意權限組合,然后通過實驗統計和計算得出每個惡意權限組合在每一類應用中的惡意值,最后通過惡意值計算出待檢測應用的惡意權值,以惡意權值判斷待測應用是否是竊取用戶隱私的惡意應用。相比于文獻[8,16],本文的方法在惡意權限組合的基礎上加入了應用類別的概念,把應用類別對惡意權限組合的影響納入考慮范圍,從而可以降低誤報率;相比于文獻[14]僅通過計算單個權限在每個類別中出現的概率的方法,本文則提出一系列竊取用戶隱私的惡意權限組合,通過計算各惡意權限組合相對于應用類別的惡意值來判斷應用的惡意性,以惡意權限組合和類別來判斷應用的惡意性,其對惡意應用的針對性更強。
2.1惡意權限組合
本文以竊取Android系統隱私數據為切入點。Android系統隱私數據可以劃分為四類:通話、短信、地理位置信息、其他個人隱私信息。通過參考Kirin安全規則[8]并分析在Android源代碼中對應于官網165個權限[7]每個權限的詳細解釋,本文提出如表2所示的一系列惡意權限組合。

表2 惡意權限組合
如果其中任意一個權限組合被應用申請且被用戶授予權限,那么該應用就有獲取用戶相應的隱私數據并發送給惡意應用指定接收方的能力。如表2中第1條惡意權限組合,READ_PHONE_STATE權限允許應用實時監聽手機通話狀態;表3是Android系統定義的手機通話模塊的三種狀態。

表3 通話模塊的狀態
那么竊取隱私的惡意應用則可以根據監聽到通話模塊的狀態由CALL_STATE_RINGING變為CALL_STATE_OFFHOOK而確定用戶正在通話,從而再利用RECORD_AUDIO權限啟動錄音功能記錄用戶通話內容;監聽到通話模塊狀態由CALL_STATE_OFFHOOK變為CALL_STATE_IDEL而判斷用戶通話完畢掛機,從而中止錄音;最后再利用INTERNET權限把錄音上傳到指定服務器并刪除本地錄音。至此,惡意應用就利用惡意權限組合1完成了竊取用戶通話內容并上傳的惡意操作。
2.2具體檢測方法
但并不是所有申請了表2中權限組合的應用都是惡意應用,如一個天氣預報APP就需要獲取ACCESS_FINE_LOCATION+INTERNET或ACCESS_COARSE_LOCAION+INTERNET這些惡意權限組合,它們可以給用戶自動提供本地天氣預報;如果一味按照以上惡意權限組合規則去判斷一個應用是否是惡意應用,則會造成很多誤報。
針對類似情況,本文提出一種在不同應用類別情景下基于惡意權限組合的竊取Android隱私惡意應用檢測方法。該方法的設計思想為:首先根據GooglePlay對Android應用的分類(如表4所示),從每個類別中各取30個非惡意應用作為實驗樣本,統計30個惡意權限組合在每個類別實驗樣本中出現的概率,并通過概率計算出各個惡意權限組合對于各類別的惡意值。例如天氣類應用中惡意權限組合16、17的惡意值計算出來應該很小,而在音樂與音頻類應用中其惡意值應該很大。然后利用惡意值計算待檢測應用的惡意權值。如果應用的惡意權值小于或等于預設的閾值,那么就認為該應用不是竊取用戶隱私的惡意應用,反之則是竊取隱私的惡意應用。下面給出詳細介紹。
設應用類別集合C={c1,c2,…,c26},ci代表表4中相應的應用類別,設惡意權限組合集合M={m1,m2,…,m30},mj代表表2中相應的惡意權限組合。設T為惡意閾值。

表4 GooglePlay對應用的分類
定義1概率P(ci,mj):在ci類應用樣本中第mj條惡意權限組合出現的概率。
(1)
其中TS(ci):類別ci中實驗樣本的總數;PT(ci,mj):類ci樣本中第mj條惡意權限組合在實驗樣本中出現的次數。
定義2惡意值B(ci,mj):對類ci,第mj條惡意權限組合的惡意值。
(2)
以0.9為底的對數函數在0到1區間內的較大斜率單調遞減性質可以放大各惡意權限組合的惡意值之間的差異性。P(ci,mj)等于0則惡意值B(ci,mj)趨向于無窮大,表征類ci應用申請第mj條惡意權限組合是不合理的。
定義3惡意權值T(a):應用a的惡意權值;
(3)

本文檢測方法的步驟:
Step1構建非惡意樣本庫。
GooglePlay是Android應用的官方市場,它對上線的應用有嚴格的審核機制。本文根據GooglePlay對應用的26個分類,從其中下載評分高、下載用戶多的應用,并通過殺毒軟件過濾,分別采集每類樣本各30個,共780個,把它們作為非惡意應用實驗樣本。GooglePlay應用分為26類,如表4所示(由于個性化與動態壁紙內容相同故歸為一類)。
Step2根據式(1)、式(2)計算出P(ci,mj)、B(ci,mj)。
Android SDK(soft development kit)中的資產打包工具AAPT(Android asset packaging tool)可以提取應用AndroidManifest.xml中申請的權限,編寫Java程序自動執行APTT工具,對Step1構建的非惡意樣本庫中的應用進行解壓,以應用類別為單位逐一提取每個樣本應用的權限并以二維數組的形式保存,二維數組的行存儲的是一個應用申請的所有權限。將二維數組的每一行與表2對比,統計該類別中每個惡意權限組合出現的次數,即式(1)中的PT(ci,mj)。圖1、圖2分別是娛樂、天氣兩個類別的非惡意樣本通過統計得出的PT(ci,mj)統計圖。根據PT(ci,mj)計算式(1)的概率P(ci,mj)和式(2)中的惡意值B(ci,mj),由于不同類別中不同惡意權限組合的B(ci,mj)各不相同,限于篇幅不予列出。

圖1 娛樂類應用權限組合分布圖

圖2 天氣類應用權限組合分布圖
Step3由B(ci,mj)根據式(3)計算任意一個應用a的惡意權值T(a)。
由Step2得到B(ci,mj)后就可以通過式(3)檢測任意一個類別中任意一個應用的惡意性了。執行過程如圖3所示。執行Java程序啟動aapt.exe提取其AndroidManifest.xml中聲明的權限,并在程序中把應用a的權限與表3中的惡意權限組合對比,得到應用a中出現的惡意權限組合的集合N(a),通過式(3)計算應用a的惡意權值T(a)。如果T(a)大于惡意閾值T,則判斷a為威脅用戶隱私的惡意應用,若T(a)小于或等于T則判斷a是正常應用。T的取值很關鍵,如果該值過大,會造成檢測的準確率很低,T太小會造成正常應用的誤報率很高。通過給閾值T取不同的值,反復實驗對比分析,取經驗值T=0.5時檢測的準確率較高、誤報率較低,綜合表現最佳。

圖3 惡意應該檢測流程圖
實驗在內存為4 GB、處理器為Intel(R) Core(TM) 2.6 GHz的機器上完成,用Java語言實現了如圖3所示檢測流程。為了衡量實驗的效果,先定義真陽性TP(True Positive),即正常應用被檢測為正常的數量;假陽性FP(Fail Positive),即正常應用被檢測為惡意的數量;真陰性TN(True Negative),即惡意應用被檢測為惡意的數量;假陰性FN(Fail Negative),即惡意應用被檢測為正常的數量;定義FPR=FP/(TP+FP),即正常應用的誤報率;TNR=TN/(TN+FN),即惡意應用被檢測為惡意應用的檢出率;ACC=(TP+TN)/( TP+FP+TN+FN),即檢測的總體準確率。
VirusShare[18]是一個龐大的病毒庫,其收集了被各大殺毒中心認定為病毒的病毒樣本,其中也包含Android系統上竊取用戶隱私的惡意應用。本文從其中下載竊取用戶隱私的惡意應用500個,從其中隨機抽取300個作為實驗數據。從初始樣本中取150個正常應用,再另外從GooglePlay中下載150個正常應用。以正常應用和竊取用戶隱私的惡意應用各50個為一組,共6組作為實驗數據。統計實驗結果如表5所示。

表5 實驗結果
由表5可以計算出本文方法的總體準確率ACC為82.83%,惡意應用樣本的檢出率為74.67%,正常應用的誤報率為9%。用以上6組數據作為樣本,用文獻[8]的方法進行檢測,得出總體準確率ACC為62.15%,惡意應用樣本的檢出率為32.29%,正常應用的誤報率為8%。本文方法雖然誤報率略高于文獻[8],但總體檢測準確率和惡意應用檢出率均高出文獻[8]很多。同時,本文與文獻[19]同屬于基于權限檢測惡意應用的靜態檢測方法,本文的平均準確率略高于文獻[19]的總體平均準確率ACC的80.634%。可見本文檢測方法雖然誤報率略高一點,但是其準確率和惡意應用檢出率都較高,相比之下綜合表現更佳。作為一個輕量級檢測方法,用來初步判斷Android應用是否有竊取隱私信息的惡意傾向還是有效的。
實現是在一臺內存為4 GB、處理器為Intel(R) Core(TM) 3.2GHz、操作系統為Ubuntu12.04的機器上,先下載并編譯Android4.0.3源代碼;然后修改Android系統安裝應用的入口代碼PackageInstaller:在用戶安裝應用時對安裝應用申請的權限進行檢測,如果檢測到待安裝應用存在惡意權限組合,則要求用戶選擇應用類別以進一步檢測,如圖4所示;最后根據用戶選擇的應用類別計算出待安裝應用的惡意權值T(a),如果T(a)大于閾值T則提示該應用的何風險,并讓用戶選擇是否繼續安裝。

圖4 提示用戶選擇應用類別
本文通過參考Kirin檢測工具的安全策略,并分析Android系統的所有權限,從隱私信息入手提出了一系列竊取用戶隱私信息的Android惡意權限組合;由于某些惡意組合出現在某些特定類別應用中是合理的,所以又通過大量實驗計算出每個類別分別對每個惡意權限組合的惡意值;利用惡意值可以計算出任意待檢測應用的惡意權值,把惡意權值與本文提出的閾值T比較,從而判斷該應用是否是竊取隱私的惡意應用。實驗結果證明本文提出的方法的檢測準確率高。最后通過編譯并修改Android系統源代碼,把本文的方法添加到應用安裝入口PackageInstaller中,增加了Android系統的安全性。下一步將擴大樣本的數量等,進一步完善本文的檢測方法。
[1] Smartphone OS sales market share[EB/OL].(2015-3-7) http://www.kantarworldpanel.com/global/smartphone-os-market-share/.
[2] Android,the world’s most popular mobile platform[EB/OL].(2015-4-22) http://developer.android.com/about/index.html.[3] 2014年第一季度網秦全球手機安全報告[EB/OL].(2014-5-28) http://s1.nq.com/file/cnnq/download/2014Q1.pdf.
[4] 360互聯網安全中心2014年手機安全報告[EB/OL].(2015-3-20) http://zt.360.cn/1101061855.php?dtid=1101061451&did=1101205565.
[5] The Android manifest.xml file [EB/OL].(2015-4-3) https://developer.android.com/samples/BluetoothLeGatt/AndroidManifest.html.
[6] 蔣紹林,王金雙,張濤,等.Android安全研究綜述[J].計算機應用與軟件,2012,29(10):205-210.
[7] Mainfest.Permission[EB/OL].(2015-4-22) http://developer.and roid.com/reference/android/Manifest.permission.html.
[8] Enck W,Ongtang M,Patrick McDaniel.On Lightweight Mobile Phone Application Certification[C]//Proceedings of the 16th ACM Conference on Computer and Communication-s,2009:235-245.
[9] 張嘉賓.Android應用的安全性研究[D].北京:北京郵電大學,2013.
[10] Enck W,Gilbert P,Byunggon C,et al.TaintDroid:An information flow tracking system for real-time privacy monitoring on smartphones[C]//Proceeding of the 9th USENIX Symposium on Operating Systems Design and Implementation (OSDI 10),2010:393-408.
[11] Ongtang M,McLaughlin S,Enck W,et al.Semantically rich application-centric security in Android [C]//Annual Computer Security Applications Conference,2009:304-309.
[12] Nauman M,Khan S,Zhang X.Apex:Extending Android permission model and enforcement with defined runtime constraints [C]//ACM Conference on Computer and Communication Security,2010:328-332.
[13] 張銳,楊吉云.基于權限相關性的Android惡意軟件檢測[J].計算機應用,2014,34(5):1322-1325.
[14] 張葉慧,彭新光,蔡志標.基于類別以及權限的Android惡意應用檢測[J].計算機工程與設計,2014,35(5):1568-1571.
[15] 李海峰,章寧,朱建明,等.時間敏感數據流上的頻繁項集挖掘算法[J].計算機學報,2012,35(11):2283-2293.
[16] 楊歡,張玉清,胡予濮,等.基于權限頻繁模式挖掘算法的 Android 惡意應用檢測方法[J].通信學報,2013,34(S1):106-115.
[17] 楊歡,張玉清,胡予濮,等.基于多類特征的Android應用惡意行為檢測系統[J].計算機學報,2014,37(1):15-27.
[18] Virusshare.com-Because share is caring [EB/QL].(2015-4-3) http://virusshare.com/support.
[19] Sanz B,Santos I,Laorden C,et al.Permission usage to detect Malware in android [C]//International Joint Conference CISIS’ 12-ICEUTE’ 12-SOCO’ 12 Special Sessions,2013:289-298.
DETECTION METHOD FOR ANDROID MALWARE OF PRIVACY STEALING BASED ON PERMISSIONS COMBINATION
Huang MeigenZeng Yunke
(College of Computer Science and Technology,Chongqing University of Posts and Telecommunications,Chongqing 400065,China)
On the basis of analysing 165 permissions of Android system,we extracted 30 malicious permissions combinations that can theoretically acquire privacy resources of Android system.Aiming at the application category we proposed a detection method for the malwares stealing privacies,which is based on malicious value of malicious permissions combination,malicious weight of application under test,and malicious threshold.The correctness and accuracy of this method have been verified through the experiment.The method has also been implemented in Android operating system.
Android operating systemMalicious permissions combinationMalware detectionApplication category
2015-05-21。重慶市自然科學基金項目(cstc2012jjA4014);重慶市教委科學技術研究項目(KJ130518)。黃梅根,高工,主研領域:網絡通信。曾云科,碩士生。
TP309
A
10.3969/j.issn.1000-386x.2016.09.074