朱曉妍,章輝,馬建峰
?
基于Hook技術(shù)的Android平臺隱私保護(hù)系統(tǒng)
朱曉妍1,章輝1,馬建峰2
(1. 西安電子科技大學(xué)通信工程學(xué)院,陜西 西安 710071;2. 西安電子科技大學(xué)網(wǎng)絡(luò)與信息安全學(xué)院,陜西 西安 710071)
針對Android中惡意應(yīng)用竊取用戶隱私的問題,設(shè)計并實現(xiàn)了一個基于Hook技術(shù)的隱私保護(hù)系統(tǒng)。該系統(tǒng)包括應(yīng)用分類模塊、隱私信息管理模塊和共謀攻擊管理模塊。應(yīng)用分類模塊利用權(quán)限特征向量集構(gòu)建分類模型,對手機(jī)上的應(yīng)用進(jìn)行分類;隱私信息管理模塊利用Hook技術(shù)對所有涉及隱私信息的API進(jìn)行掛鉤,通過返回虛假值或者空值,攔截惡意應(yīng)用獲取隱私信息;共謀攻擊管理模塊同樣使用Hook技術(shù),對提供應(yīng)用間通信的API進(jìn)行掛鉤,當(dāng)通信雙方滿足共謀攻擊的權(quán)限規(guī)則,通過返回空值實現(xiàn)攔截雙方的通信內(nèi)容。最后,通過實驗驗證了該系統(tǒng)的可行性和有效性,并且該系統(tǒng)不需要對Android系統(tǒng)和應(yīng)用進(jìn)行修改,占用的內(nèi)存較小,能夠?qū)崟r攔截竊取隱私的行為。
隱私保護(hù);Android平臺;Hook技術(shù);共謀攻擊;權(quán)限管理
近年來,隨著移動互聯(lián)網(wǎng)的迅速發(fā)展,智能手機(jī)幾乎成為人們生活及工作中的必需品。根據(jù)美國市場研究公司Gartner[1]發(fā)布的2017年全球智能手機(jī)系統(tǒng)市場份額報告顯示,全球手機(jī)銷量超過15億臺,其中,搭載Android系統(tǒng)的手機(jī)在全球手機(jī)市場的占有率達(dá)到85.9%,以絕對的優(yōu)勢占據(jù)著主導(dǎo)地位。與此同時,Android各類應(yīng)用軟件激增,為用戶帶來方便的同時也帶來了危險,因為其中不乏有泄露隱私信息的惡意應(yīng)用,對用戶的隱私數(shù)據(jù)造成了嚴(yán)重的威脅。
針對Android智能手機(jī)隱私泄露的問題,國內(nèi)外經(jīng)典的惡意應(yīng)用檢測技術(shù)主要是基于行為的檢測技術(shù)。
首先出現(xiàn)的是靜態(tài)分析方法,采用靜態(tài)數(shù)據(jù)流分析技術(shù)對應(yīng)用中的敏感數(shù)據(jù)流向進(jìn)行分析,如Gibler等[2]提出的AndroidLeaks系統(tǒng)、Yang等[3]提出的Leakminer系統(tǒng)、Arzt等[4]提出的Flowdroid系統(tǒng)。靜態(tài)分析方法雖然具有運行速度快、代碼覆蓋率高的特點,但無法解決代碼混淆、加固的問題,因此出現(xiàn)了動態(tài)分析方法。動態(tài)分析方法根據(jù)應(yīng)用程序運行時敏感信息的傳輸特征,動態(tài)監(jiān)控應(yīng)用泄露隱私的行為,其中,最著名的是Enck等[5]設(shè)計的TaintDroid系統(tǒng),該系統(tǒng)修改了Android內(nèi)核代碼,使用動態(tài)污點分析技術(shù)對隱私數(shù)據(jù)進(jìn)行標(biāo)記,當(dāng)被標(biāo)記的隱私數(shù)據(jù)通過網(wǎng)絡(luò)或者其他途徑離開手機(jī)系統(tǒng)時,TaintDroid會記錄隱私數(shù)據(jù)的去向,并警告用戶。之后研究者對TaintDroid進(jìn)行改進(jìn),設(shè)計出其他類似的系統(tǒng),如Hornyack等[6]設(shè)計的AppFence系統(tǒng)和Lantz等[7]設(shè)計的DroidBox系統(tǒng)。
近年來,基于動態(tài)污點分析技術(shù)的思想,研究者設(shè)計出不需要對Android系統(tǒng)進(jìn)行修改的動態(tài)分析系統(tǒng)。Rastogi等[8]提出的Uranine通過對應(yīng)用進(jìn)行修改,實現(xiàn)對應(yīng)用的動態(tài)監(jiān)控:首先對應(yīng)用進(jìn)行反編譯,然后注入污染代碼,最后將應(yīng)用重打包。You等[9]提出的TaintMan同樣采取注入污染代碼的方式對應(yīng)用進(jìn)行修改,同時對庫文件進(jìn)行導(dǎo)出,然后對庫文件注入污染代碼,最后將庫文件重新導(dǎo)入,實現(xiàn)對應(yīng)用更全面的動態(tài)監(jiān)控。
雖然動態(tài)分析方法解決了靜態(tài)分析不能解決的問題,但是也存在代碼覆蓋率不足、運行慢等問題,因此研究者結(jié)合2種分析方法的優(yōu)勢,提出了動靜態(tài)結(jié)合分析方法。Yang等[10]提出的AppIntent首先利用靜態(tài)分析方法獲取應(yīng)用中敏感數(shù)據(jù)傳播的候選集,然后通過動態(tài)符號化執(zhí)行驗證候選敏感數(shù)據(jù)流是否會發(fā)生。Xia等[11]提出的AppAudit首先使用靜態(tài)方法找出可疑函數(shù),然后通過近似執(zhí)行的動態(tài)分析方法執(zhí)行部分應(yīng)用代碼,有效猜測未知變量,保證分析路徑盡可能完全。
近年來,數(shù)據(jù)挖掘技術(shù)也被應(yīng)用到檢測惡意應(yīng)用中[12]。楊歡等[13]提出的Androdect系統(tǒng)首先利用靜態(tài)和動態(tài)方法獲取應(yīng)用盡可能多的特征,然后分別對不同特征應(yīng)用不同的分類器,最后通過判決算法對應(yīng)用進(jìn)行分類。Talha等[14]提出的APKAuditor系統(tǒng)首先使用靜態(tài)方法獲取應(yīng)用權(quán)限特征,利用概率論方法對每個權(quán)限進(jìn)行評分,然后用Logistic回歸方法確定惡意應(yīng)用分?jǐn)?shù)的臨界值。
由于針對單個應(yīng)用的檢測已經(jīng)有很多方法,近幾年出現(xiàn)了隱蔽性更高的共謀攻擊。Bhandari等[15]針對內(nèi)部組件通信而導(dǎo)致的共謀攻擊提出了一種自動化框架,首先利用靜態(tài)分析技術(shù)獲取2個應(yīng)用的通信流向,然后通過自定義權(quán)限策略判斷是否存在共謀攻擊。Bugiel等[16,17]設(shè)計了XManDroid框架,該框架能夠分別從Android中間層、內(nèi)核層監(jiān)控應(yīng)用間通信,同樣通過自定義權(quán)限策略判斷是否存在共謀攻擊。Blasco等[18]針對共謀攻擊開發(fā)出ACE系統(tǒng),該系統(tǒng)能夠根據(jù)配置文件自動生成共謀攻擊應(yīng)用對,為共謀攻擊實驗提供樣本集。
基于以上提出技術(shù)的優(yōu)點以及存在的問題,本文提出一種數(shù)據(jù)挖掘分類、Hook技術(shù)監(jiān)控和攔截的用戶隱私信息保護(hù)系統(tǒng)。該系統(tǒng)提取基于權(quán)限的靜態(tài)特征作為訓(xùn)練集,對智能手機(jī)上的應(yīng)用進(jìn)行分類判斷,同時使用Hook技術(shù)對用戶隱私信息的獲取進(jìn)行監(jiān)控及攔截,針對隱蔽性較高的共謀攻擊,采用Hook技術(shù)監(jiān)控應(yīng)用間通信渠道,對滿足共謀攻擊規(guī)則的應(yīng)用進(jìn)行攔截,實現(xiàn)更加全面的用戶隱私信息保護(hù)。本文設(shè)計了多個實驗對VirusShare網(wǎng)站上的惡意應(yīng)用和應(yīng)用市場上的非惡意應(yīng)用進(jìn)行檢測,證明本文提出方法的有效性,相比于基于DTA技術(shù)的檢測系統(tǒng),該系統(tǒng)不需要修改Android系統(tǒng)和應(yīng)用本身,占用的內(nèi)存不會隨著系統(tǒng)的運行成倍增加,相比于文獻(xiàn)[15]和文獻(xiàn)[17]的權(quán)限策略,本文制訂權(quán)限規(guī)則降低了誤報率,并且該系統(tǒng)能夠?qū)崟r攔截竊取隱私的行為。
本文提出了一種基于數(shù)據(jù)挖掘技術(shù)和Hook技術(shù)的Android用戶隱私信息保護(hù)系統(tǒng),能夠檢測與攔截惡意應(yīng)用,保護(hù)用戶的隱私信息。該系統(tǒng)將權(quán)限信息作為分類特征,對手機(jī)上的應(yīng)用進(jìn)行分類,同時使用Hook技術(shù)對應(yīng)用獲取隱私信息的行為進(jìn)行監(jiān)控與攔截;針對共謀攻擊,同樣使用Hook技術(shù)監(jiān)控應(yīng)用間通信,對于滿足共謀攻擊規(guī)則的應(yīng)用行為進(jìn)行攔截。
系統(tǒng)結(jié)構(gòu)框架如圖1所示,該系統(tǒng)由3部分組成:應(yīng)用分類模塊、隱私信息管理模塊和共謀攻擊管理模塊,具體介紹如下。
1) 應(yīng)用分類模塊
圖1 系統(tǒng)結(jié)構(gòu)框架
提取從網(wǎng)絡(luò)上收集的正常應(yīng)用與惡意應(yīng)用的權(quán)限特征,將各自的權(quán)限信息組合成權(quán)限向量,所有權(quán)限向量組合成的向量集作為數(shù)據(jù)挖掘分類算法的訓(xùn)練集,生成分類模型,內(nèi)置在系統(tǒng)中;對于手機(jī)上的應(yīng)用,通過Android系統(tǒng)提供的PackageManager類獲取權(quán)限信息,組合成特征向量,根據(jù)分類模型進(jìn)行分類判斷,輸出分類結(jié)果。
2) 隱私信息管理模塊
使用Hook技術(shù)對提供涉及用戶隱私信息的接口進(jìn)行Hook,用戶隱私信息包括聯(lián)系人信息、通話記錄、短信信息、電話標(biāo)識、地理位置、瀏覽歷史、日歷信息、多媒體文件等,當(dāng)分類為惡意的應(yīng)用調(diào)用涉及用戶隱私信息的接口時,將空值或者隨機(jī)生成的虛假值替換這些接口的返回值,實現(xiàn)對用戶隱私信息的攔截,對于分類為正常的應(yīng)用不予攔截。
3) 共謀攻擊管理模塊
使用Hook技術(shù)對提供應(yīng)用間通信的接口進(jìn)行Hook,通信渠道包括Intent、ContentProvider、SharedPreferences以及External Storage,當(dāng)2個分類為正常的應(yīng)用調(diào)用提供通信的接口并訪問同一個位置時,對雙方權(quán)限信息進(jìn)行共謀攻擊權(quán)限規(guī)則判斷,若滿足規(guī)則,將空值替換通信渠道接口的返回值,實現(xiàn)對通信內(nèi)容的攔截,并對雙方的隱私信息獲取和外部訪問能力進(jìn)行限制,否則不予攔截。
系統(tǒng)中的特征構(gòu)建采用的是靜態(tài)分析技術(shù),圖2為特征構(gòu)建的流程,具體步驟如下。
1) 使用反編譯軟件對應(yīng)用apk文件進(jìn)行批量反編譯操作,獲得反編譯文件夾中的AndroidManifest. xml文件。
2) 使用腳本對每個xml文件進(jìn)行解析,提取其中的權(quán)限特征信息,各自放到一個集合中。
3) 自定義權(quán)限向量矩陣,并根據(jù)權(quán)限信息集對權(quán)限向量矩陣進(jìn)行賦值,將權(quán)限向量矩陣作為特征向量集。
上述步驟除了反編譯操作使用軟件進(jìn)行,其余步驟都是通過Python腳本自動執(zhí)行。首先通過ElementTree解析AndroidManifest.xml文件,獲取所有
圖2 特征構(gòu)建流程
系統(tǒng)中隱私信息管理模塊和共謀攻擊管理模塊的監(jiān)控和攔截都是基于Hook技術(shù),其中,隱私信息管理模塊主要對涉及用戶隱私信息的接口進(jìn)行Hook,而共謀攻擊管理模塊主要對應(yīng)用間的通信渠道進(jìn)行Hook,下面分別介紹2個模塊實現(xiàn)Hook的細(xì)節(jié)。
3.2.1 隱私信息Hook
Android框架層中提供了很多管理系統(tǒng)服務(wù)的接口,可以通過這些接口獲取所需的系統(tǒng)資源,首先需要通過getSystemService函數(shù)獲取相關(guān)管理類,其中,LocationManager類和TelephonyManager類分別提高了位置信息和電話信息的獲取,因此這2個類中的一些函數(shù)是Hook的目標(biāo)。
Android四大組件之一的ContentProvider可以用來實現(xiàn)應(yīng)用程序之間共享數(shù)據(jù),Android系統(tǒng)通過默認(rèn)的URL路徑為開發(fā)者提供常見的數(shù)據(jù)獲取方法,其中,聯(lián)系人、通話記錄、短信、瀏覽記錄、日歷信息、多媒體文件等就是通過這種方式獲取的。本方案調(diào)用getContentResolver函數(shù)得到對象來獲取query函數(shù)。因為query函數(shù)根據(jù)傳入的URL值返回對應(yīng)的數(shù)據(jù),本方案把它作為Hook的目標(biāo)。
表1展示了部分被Hook的提供用戶隱私信息的接口結(jié)構(gòu)。
3.2.2 應(yīng)用間通信渠道Hook
Intent是Android組件之間相互通信的紐帶,封裝了不同組件之間通信的條件,根據(jù)這些條件啟動或者喚醒想要通信的組件,而這些組件可以位于不同應(yīng)用中。2個組件通信時,發(fā)送方可以通過putExtra等函數(shù)攜帶數(shù)據(jù),接收方通過getExtra等函數(shù)獲得數(shù)據(jù),因此,Intent類中傳遞數(shù)據(jù)和獲取數(shù)據(jù)的函數(shù)是hook的目標(biāo)。
表1 提供用戶隱私信息的接口結(jié)構(gòu)
ContentProvider組件不僅可以獲取系統(tǒng)資源,也可以通過自定義URL路徑實現(xiàn)自己的數(shù)據(jù)共享。ContentProvider提供了類似于數(shù)據(jù)庫的操作,通過insert、delete、update和query函數(shù)實現(xiàn)增刪改查,因此,ContentResolver類中插入、修改和查詢的函數(shù)是Hook的目標(biāo)。
Android文件系統(tǒng)提供了SharedPreferences和外部存儲對數(shù)據(jù)進(jìn)行存放和讀取,其中SharedPreferences實際上是一個xml文件,而外部存儲的文件可以是任何格式。不管使用哪種方式,最終都會調(diào)用IoBridge類的open函數(shù),因此open函數(shù)是Hook的目標(biāo)。
表2展示了部分被Hook的應(yīng)用間通信渠道接口結(jié)構(gòu)。
表2 應(yīng)用間通信渠道的接口結(jié)構(gòu)
3.2.3 Xposed模塊實現(xiàn)
確定了Hook目標(biāo),就可以進(jìn)行Hook操作。著名的開源項目XPosed是一個基于Java層Hook的框架服務(wù),其Hook函數(shù)的原理就是修改Java虛擬機(jī)調(diào)用函數(shù)的方式,將指向原函數(shù)的指針指向自己實現(xiàn)的函數(shù),然后在這個函數(shù)中調(diào)用原來的函數(shù),并在調(diào)用前后插入鉤子,這樣就達(dá)到Hook的目的。
本文基于XPosed框架實現(xiàn)了一個Hook模塊,針對以上提到的接口進(jìn)行Hook,添加的操作主要位于上述接口之前。
針對涉及用戶隱私信息的各個接口的處理流程大致相同,具體過程如下。
1) 對于LocationManager類和Telephony Manager類,獲取類的所有接口名稱,對于ContentResolver類,獲取query方法的參數(shù)信息。
2) 根據(jù)接口的名稱或者接口的參數(shù)判斷通過該接口能否獲取隱私信息。
3) 若不能獲取隱私信息,結(jié)束處理流程;若可以,查詢應(yīng)用分類模塊中的惡意應(yīng)用數(shù)據(jù)庫是否存在調(diào)用該接口的應(yīng)用的名稱。
4) 若不存在,結(jié)束處理流程;若存在,生成與該接口返回數(shù)據(jù)類型相同的虛假數(shù)據(jù),作為該接口的返回值。
針對所提供應(yīng)用間通信的各個接口的處理流程,可以根據(jù)處理數(shù)據(jù)的不同分為兩類,具體過程如下。
存儲數(shù)據(jù)的接口的處理流程如下。
1) 通過接口的參數(shù)獲取存儲位置,并通過Binder類的接口獲取調(diào)用該接口的應(yīng)用的名稱。
2) 查詢應(yīng)用分類模塊的惡意應(yīng)用數(shù)據(jù)庫中是否存在該應(yīng)用的名稱。
3) 若存在,結(jié)束處理流程,若不存在,將該應(yīng)用的名稱、存儲數(shù)據(jù)的位置和通信渠道類型寫入共謀攻擊數(shù)據(jù)庫中。
讀取數(shù)據(jù)的接口的處理流程如下。
1) 通過接口的參數(shù)獲取讀取位置,并通過Binder類的接口獲取調(diào)用該接口的應(yīng)用的名稱。
2) 查詢應(yīng)用分類模塊的惡意應(yīng)用數(shù)據(jù)庫中是否存在該應(yīng)用的名稱。
3) 若存在,結(jié)束處理流程;若不存在,查詢共謀攻擊數(shù)據(jù)庫中是否存在通信位置和通信類型相同但是應(yīng)用名稱不同的記錄。
4) 若不存在,結(jié)束處理流程;若存在,獲取兩個應(yīng)用的權(quán)限信息,并判斷是否符合權(quán)限規(guī)則。
5) 若不符合規(guī)則,結(jié)束處理流程;若符合,將2個應(yīng)用的名稱寫入惡意應(yīng)用數(shù)據(jù)庫中,并將空值作為接口的返回值。
為了隱蔽自己的行為,一些惡意應(yīng)用的作者將獲取隱私信息的行為和發(fā)送隱私信息的行為分割到2個應(yīng)用執(zhí)行,減少了每個應(yīng)用申請的權(quán)限,而一般的檢測工具都是針對單個應(yīng)用的,通常很難檢測到這種攻擊。系統(tǒng)針對數(shù)據(jù)挖掘分類不能很好檢測出共謀攻擊的問題,設(shè)計了一種針對共謀攻擊的檢測規(guī)則。
應(yīng)用獲取隱私信息和訪問外界都需要申請相應(yīng)的權(quán)限,因此可以針對應(yīng)用的權(quán)限進(jìn)行分析。文獻(xiàn)[15]中提出若一個申請了某種隱私權(quán)限的應(yīng)用通過Intent傳遞了信息,而接收Intent的應(yīng)用申請了某種外部訪問權(quán)限,那么它們之間可能存在共謀攻擊。而實際上有些正常應(yīng)用會相互調(diào)用,如在支付時,可能會調(diào)用支付寶或者微信,而雙方可能滿足了這種權(quán)限規(guī)則,這種情況下進(jìn)行攔截就會造成交易異常。因此,本文在這種規(guī)則的基礎(chǔ)上,添加了一些限制,從而減小誤判的概率。
定義集合P為所有隱私權(quán)限的集合,集合T為所有外部訪問權(quán)限的集合,對于2個應(yīng)用A和B,定義它們的權(quán)限集合為A和B,若2個應(yīng)用同時滿足以下式子,則認(rèn)為雙方存在共謀攻擊。
其中,式(1)表示應(yīng)用A申請了隱私權(quán)限,式(3)應(yīng)用B申請了外部訪問權(quán)限,式(2)和式(4)是針對共謀攻擊的分割性,同時為了降低誤判而添加的條件,式(2)表示應(yīng)用A沒有申請外部訪問的權(quán)限,式(4)表示應(yīng)用B沒有申請隱私權(quán)限。
本文所有實驗在內(nèi)存為6 GB,處理器為Intel(R) Core i5-3210M 2.50 GHz的Windows7系統(tǒng)上完成,Android虛擬機(jī)系統(tǒng)版本為4.4。特征構(gòu)建部分和樣本收集部分使用Python語言,在Eclipse平臺上完成,其他部分使用Java語言,在Android Studio平臺上完成。
1) 應(yīng)用分類模塊測試:包括對收集的樣本應(yīng)用集進(jìn)行特征構(gòu)建和分類測試。惡意應(yīng)用來自VirusShare網(wǎng)站,正常應(yīng)用使用Python腳本爬取應(yīng)用商店不同類別的應(yīng)用,經(jīng)過篩選,剔除部分無效應(yīng)用,最終選取了688個惡意應(yīng)用和594個正常應(yīng)用,測試分類的正確率。
2) 隱私信息管理模塊測試:包括對應(yīng)用獲取隱私信息的監(jiān)控以及對惡意應(yīng)用進(jìn)行攔截的測試,攔截以日志的形式存儲并展示。
3) 共謀攻擊管理模塊測試:包括對應(yīng)用間通信的監(jiān)控以及對存在共謀攻擊的應(yīng)用進(jìn)行攔截的測試,攔截以日志的形式存儲并展示。
4.3.1 應(yīng)用分類模塊
本實驗采用混淆矩陣對應(yīng)用分類性能進(jìn)行分析,它是分析分類器識別不同類元組情況的一種工具。本文將惡意應(yīng)用定義為正元組,將正常應(yīng)用定義為負(fù)元組,如表3所示。
表3 混淆矩陣
TP表示分類器將惡意應(yīng)用正確識別為惡意應(yīng)用的數(shù)量,F(xiàn)P表示分類器將正常應(yīng)用錯誤識別為惡意應(yīng)用的數(shù)量,F(xiàn)N表示分類器將惡意應(yīng)用錯誤識別為正常應(yīng)用的數(shù)量,TN表示分類器將正常應(yīng)用正確識別為正常應(yīng)用的數(shù)量。
由于隨機(jī)森林算法的思想簡單,實現(xiàn)容易,計算開銷小,本文采用隨機(jī)森林算法通過十折交叉確認(rèn)對1 282個應(yīng)用進(jìn)行測試,得到的混淆矩陣如表4所示,并根據(jù)混淆矩陣可以計算出分類效果的評定指標(biāo)——準(zhǔn)確率、精確率、找回率以及精確率和召回率的調(diào)和平均值-Measure。
表4 應(yīng)用分類模塊的混淆矩陣
根據(jù)對機(jī)器學(xué)習(xí)的性能評定,精確率和召回率的結(jié)果越趨近于1,說明查準(zhǔn)率和查全率越高。而根據(jù)計算結(jié)果顯示,分類的準(zhǔn)確率達(dá)到90.7%,精確率達(dá)到90.7%,召回率達(dá)到92.2%,-Measure達(dá)到91.4%,證明了隨機(jī)森林算法對應(yīng)用進(jìn)行分類的準(zhǔn)確性。
為了進(jìn)一步說明隨機(jī)森林算法對應(yīng)用分類的分類效果,本文同時采用Native Bayes算法、SVM算法、J48算法和Bagging算法對1 282個應(yīng)用進(jìn)行分類測試,圖3為各個算法分類的準(zhǔn)確率對比。
圖3 各個算法分類的準(zhǔn)確率
從圖3可以看出,相比于單一分類算法,隨機(jī)森林算法的準(zhǔn)確率要高得多,而相比于同為集成學(xué)習(xí)算法的Bagging,隨機(jī)森林算法的準(zhǔn)確率也較高,充分證明了隨機(jī)森林算法對應(yīng)用分類模塊的有效性。
4.3.2 隱私信息管理模塊
本實驗通過在Android虛擬機(jī)上運行隱私信息管理模塊,來實時監(jiān)控惡意應(yīng)用以及攔截它們獲取隱私信息的行為,并將具體行為記錄下來,通過界面進(jìn)行展示,驗證該模塊的有效性,部分結(jié)果如圖4所示。
圖4 隱私信息管理模塊攔截日志
圖4展示了2個惡意應(yīng)用試圖獲取的隱私信息,uid為10033是一個會計從業(yè)資格考的應(yīng)用,uid為10031是一個常用漢字識字卡的應(yīng)用,它們都是在提供一些正常功能的情況下額外獲取用戶的隱私信息。以常用漢字識字卡這個應(yīng)用為例,當(dāng)單擊圖標(biāo)進(jìn)入該應(yīng)用主界面時,該應(yīng)用會嘗試獲取位置信息和電話標(biāo)識,并且可以看出來,它試圖通過調(diào)用不同API來獲取位置信息,但都被攔截了下來。
通過隱私信息管理模塊的攔截日志,用戶可以清楚知道惡意應(yīng)用獲取的隱私信息種類、獲取時間、獲取方式和獲取次數(shù),證明了隱私信息管理模塊的有效性。
4.3.3 共謀攻擊管理模塊
本實驗首先驗證權(quán)限規(guī)則的準(zhǔn)確性,然后通過在Android虛擬機(jī)上運行共謀攻擊管理模塊,來實時監(jiān)控存在共謀攻擊的應(yīng)用以及攔截它們之間的通信行為,并將具體行為記錄下來,通過界面進(jìn)行展示,驗證該模塊的可靠性。
文獻(xiàn)[18]中設(shè)計了一個共謀攻擊應(yīng)用生成系統(tǒng),它能夠根據(jù)配置文件自動生成相對應(yīng)的應(yīng)用對,模擬惡意應(yīng)用進(jìn)行共謀攻擊,因此本實驗選取文獻(xiàn)[18]中設(shè)計的系統(tǒng)生成的應(yīng)用對作為實驗樣本。該實驗樣本中,將Intent作為通信渠道的應(yīng)用對共有81對,將SharedPreferences作為通信渠道的應(yīng)用對共有80對,將External Storage作為通信渠道的應(yīng)用對共有80對,共計241對應(yīng)用對。
首先,為了驗證權(quán)限規(guī)則的準(zhǔn)確性,本實驗通過Python腳本將每對應(yīng)用的權(quán)限信息提取出來,對這2個應(yīng)用進(jìn)行權(quán)限規(guī)則判斷,圖5展示了獲取各類隱私信息的應(yīng)用個數(shù)以及檢測出來的應(yīng)用個數(shù)。
由圖5可以看出,所有的共謀攻擊應(yīng)用對都被檢測了出來,即檢測率為100%,證明了權(quán)限規(guī)則的準(zhǔn)確性。
為了與機(jī)器學(xué)習(xí)算法的分類效果做比較,本文將這241對應(yīng)用的權(quán)限信息提取并轉(zhuǎn)換成特征向量,使用應(yīng)用分類模塊的訓(xùn)練模型對它們進(jìn)行分類,表5展示了每對應(yīng)用的檢測結(jié)果以及檢測個數(shù)。
表5 每對應(yīng)用的檢測結(jié)果及檢測個數(shù)
由表5可以計算出482個惡意應(yīng)用的檢測率。
考慮到共謀攻擊中,一旦其中一個惡意應(yīng)用被檢測出來,就無法完成隱私信息的竊取,因此可以計算出241對惡意應(yīng)用的檢測率。
由以上2個檢測率的結(jié)果可以看出,使用機(jī)器學(xué)習(xí)算法對共謀攻擊應(yīng)用的檢測率比使用權(quán)限規(guī)則低很多,充分證明了使用權(quán)限規(guī)則檢測共謀攻擊的有效性。
圖5 各類應(yīng)用個數(shù)以及檢測出的應(yīng)用個數(shù)
然后,為了證明本文設(shè)計的權(quán)限規(guī)則降低了誤報率,選取了5個存在互相調(diào)用的正常應(yīng)用,觸發(fā)它們之間調(diào)用的原因都是信息分享,表6展示了各個應(yīng)用是否存在互相調(diào)用的關(guān)系。
筆者使用QQ音樂、新浪新聞以及騰訊新聞的信息分享功能時,觸發(fā)了新浪微博和微信的喚起,喚起過程中應(yīng)用運行正常,并且沒有觸發(fā)模塊的攔截提示。而若采用文獻(xiàn)[17]的策略,喚起過程中會觸發(fā)策略8和策略11(如圖6所示),導(dǎo)致應(yīng)用運行異常,證明了本文設(shè)計的權(quán)限規(guī)則降低了誤報率。
最后,為了驗證該模塊攔截的有效性,分別選取了樣本中通過3種不同渠道竊取隱私的應(yīng)用對,運行于Android系統(tǒng)中,攔截的日志記錄如圖7所示。
表6 各個應(yīng)用互相調(diào)用的關(guān)系
Advanced rules (8)A third party application with permission ACCESS_FINE.LOCATION must not communicate to a third party application that has permission INTERNET (9)A third party application with permission READ_CONTACTS must not communicate to a third party application that has permission INTERNET (10)A third party application with permission READ_SMS must not communicate to a third party application that has permission INTERNET Strong rules (11)A third party application with permission RECORD_AUDIO and PHONE.STATE or PROCESS_OUTGOING_CALLS must not communicate to a third party application that has permission INTERNET
圖6 部分策略
由圖7可以看出,共謀攻擊管理模塊對3種通信渠道都實現(xiàn)了監(jiān)控并攔截了惡意應(yīng)用,同時獲取了通信雙方以及通信渠道的路徑或者標(biāo)識,能夠一目了然地知道惡意應(yīng)用的具體行為,證明了該模塊攔截惡意應(yīng)用的有效性。
圖7 共謀攻擊攔截日志
本文提出一種基于Android平臺的隱私信息保護(hù)系統(tǒng),該系統(tǒng)結(jié)合數(shù)據(jù)挖掘分類技術(shù)和hook技術(shù),在不需要修改Android系統(tǒng)和應(yīng)用自身、占用內(nèi)存較小的情況下實現(xiàn)了動態(tài)監(jiān)控和攔截惡意應(yīng)用獲取隱私信息的行為,同時針對隱蔽性較高的共謀攻擊,設(shè)計了基于權(quán)限的規(guī)則檢測,在保證檢測共謀攻擊的情況下減少了誤報率。實驗結(jié)果表明,該系統(tǒng)能夠準(zhǔn)確攔截隱私信息的獲取以及應(yīng)用間通信內(nèi)容,對保護(hù)隱私信息能夠起到較好的作用。下一步工作將繼續(xù)完善系統(tǒng),使用更精確的分類算法和權(quán)限規(guī)則,擴(kuò)展系統(tǒng)監(jiān)控的API范圍,更全面地保護(hù)Android系統(tǒng)中的隱私數(shù)據(jù)。
[1] Gartner. Market share: final PCs, ultramobiles and mobile phones, all countries, 4Q17[R]. Connecticut: Gartner, 2018.
[2] GIBLER C, CRUSSELL J, ERICKSON J, et al. AndroidLeaks: automatically detecting potential privacy leaks in android applications on a large scale[J]. Trust, 2012, 12: 291-307.
[3] YANG Z, YANG M. Leakminer: detect information leakage on android with static taint analysis[C]//2012 Third World Congress on Software Engineering (WCSE). 2012: 101-104.
[4] ARZT S, RASTHOFER S, FRITZ C, et al. Flowdroid: precise context, flow, field, object-sensitive and lifecycle-aware taint analysis for android apps[J]. ACM Sigplan Notices, 2014, 49(6): 259-269.
[5] ENCK W, GILBERT P, CHUN B G, et al. Taintdroid: an information-flow tracking system for realtime privacy monitoring on smartphones[C]//The 9th USENIX Conference on Operating Systems Design and Implementation. USENIX Association, 2010.
[6] HORNYACK P, HAN S, JUNG J, et al. These aren't the droids you're looking for: Retrofitting Android to protect data from imperious applications[C]//The 18th ACM Conference on Computer and Communications Security. ACM, 2011: 639-652.
[7] Droidbox[EB/OL]. http://code.google.com/p/droidbox/.
[8] RASTOGI V, QU Z, MCCLURG J, et al. Uranine: real-time privacy leakage monitoring without system modification for Android[J]. Security and Privacy in Communication Networks, 2015: 256-276.
[9] YOU W, LIANG B, SHI W, et al. TaintMan: an ART-compatible dynamic taint analysis framework on unmodified and non-rooted Android devices[J]. IEEE Transactions on Dependable and Secure Computing, 2017.
[10] YANG Z, YANG M, ZHANG Y, et al. Appintent: Analyzing sensitive data transmission in Android for privacy leakage detection[C]//2013 ACM SIGSAC Conference on Computer & Communications Security. ACM, 2013: 1043-1054.
[11] XIA M, GONG L, LYU Y, et al. Effective real-time android application auditing[C]//2015 IEEE Symposium on Security and Privacy (SP). 2015: 899-914.
[12] 孫博文, 黃炎裔, 溫俏琨, 等. 基于靜態(tài)多特征融合的惡意軟件分類方法[J]. 網(wǎng)絡(luò)與信息安全學(xué)報, 2017, 3(11): 68-76.
SUN B W, HUANG Y Y, WEN Q K, et al. Malware classification method based on static multiple-feature fusion[J]. Chinese Journal of Network and Information Security, 2017, 3(11): 68-76.
[13] 楊歡, 張玉清, 胡予濮, 等. 基于多類特征的 Android 應(yīng)用惡意行為檢測系統(tǒng)[J]. 計算機(jī)學(xué)報, 2014, 37(1): 15-27.
YANG H, ZHANG Y Q, HU Y P, et al. A malware behavior detection system of Android applications based on multi-class features[J]. Chinese Journal of Computers, 2014, 37(1): 15-27.
[14] TALHA K A, ALPER D I, AYDIN C. APK auditor: permission-based Android malware detection system[J]. Digital Investigation, 2015, 13: 1-14.
[15] BHANDARI S, LAXMI V, ZEMMARI A, et al. Intersection automata based model for android application collusion[C]//2016 IEEE 30th International Conference on Advanced Information Networking and Applications (AINA). 2016: 901-908.
[16] BUGIEL S, DAVI L, DMITRIENKO A, et al. Xmandroid: a new android evolution to mitigate privilege escalation attacks[R]. Technical Report,2011.
[17] BUGIEL S, DAVI L, DMITRIENKO A, et al. Towards taming privilege-escalation attacks on Android[C]//NDSS. 2012: 19.
[18] BLASCO J, CHEN T M. Automated generation of colluding Apps for experimental research[J]. Journal of Computer Virology and Hacking Techniques, 2017: 1-12.
Privacy protection system based on Hook for Android
ZHU Xiaoyan1, ZHANG Hui1, MA Jianfeng2
1. School of Telecommunications Engineering, Xidian University, Xi’an 710071, China 2. School of Cyber Engineering, Xidian University, Xi’an 710071, China
A privacy protection system based on Hook technology was designed and implemented to address the problem of user privacy leakage caused by malicious applications in Android. The system consists of three modules: application classification module, privacy information management module and collusion attack management module. The application classification module constructs classification model by using permission feature vectors and then classifies mobile applications into malicious applications and normal applications. The privacy information management module hooks all privacy-related application programming interfaces (API) based on Hook technology and then intercepts malicious applications by returning false data or empty data. The collusion attack management module hooks all inter-application communication channels and then intercepts corresponding communication contents by using the permission rules of collusion attack. Finally, the proposed privacy protection scheme on Android virtual machine was implemented to prove and its feasibility and effectiveness were proved. In addition, the system can intercept application behaviors of breaching privacy in real time with less memory, which does not need to modify Android system and applications.
privacy protection, Android platform, Hook technology, collusion attack, permission management
TN91
A
10.11959/j.issn.2096-109x.2018033
2018-02-07;
2018-04-02
朱曉妍,xyzhu@mail.xidian.edu.cn
國家自然科學(xué)基金資助項目(No.61772406);NSFC-通用技術(shù)基礎(chǔ)研究聯(lián)合基金資助項目(No.U1636209);中央高校基本科研業(yè)務(wù)費基金資助項目(No.JB180110)
朱曉妍(1979-),女,陜西西安人,博士,西安電子科技大學(xué)通信工程學(xué)院副教授,主要研究方向為大數(shù)據(jù)環(huán)境下移動互聯(lián)網(wǎng)隱私保護(hù)與風(fēng)險管控、通信與計算機(jī)網(wǎng)絡(luò)安全、應(yīng)用密碼學(xué)、大數(shù)據(jù)應(yīng)用。
章輝(1993-),男,福建三明人,西安電子科技大學(xué)碩士生,主要研究方向為移動互聯(lián)網(wǎng)隱私保護(hù)。
馬建峰(1963-),男,陜西西安人,博士,西安電子科技大學(xué)教授、博士生導(dǎo)師,主要研究方向為應(yīng)用密碼學(xué)、無線網(wǎng)絡(luò)安全、數(shù)據(jù)安全、移動智能系統(tǒng)安全。
The National Nature Science Foundation of China (No.61772406), NSFC-General Technical Fundamental Research Joint Project (No.U1636209), Fundamental Research Funds for Central Universities (No.JB180110)