卜同同 曹天杰
摘 要:針對(duì)Android權(quán)限機(jī)制存在的問題以及傳統(tǒng)的應(yīng)用風(fēng)險(xiǎn)等級(jí)評(píng)估方法的不足,提出了一種基于權(quán)限的Android應(yīng)用風(fēng)險(xiǎn)評(píng)估方法。首先,通過對(duì)應(yīng)用程序進(jìn)行逆向工程分析,提取出應(yīng)用程序聲明的系統(tǒng)權(quán)限、靜態(tài)分析的權(quán)限以及自定義的權(quán)限,和通過動(dòng)態(tài)檢測(cè)獲取應(yīng)用程序執(zhí)行使用到的權(quán)限;然后,從具有惡意傾向的組合權(quán)限、“溢權(quán)”問題和自定義權(quán)限三個(gè)方面對(duì)應(yīng)用程序進(jìn)行量性風(fēng)險(xiǎn)評(píng)估;最后,采用層次分析法(AHP)計(jì)算上述三個(gè)方面的權(quán)重,評(píng)估應(yīng)用的風(fēng)險(xiǎn)值。對(duì)6245個(gè)軟件樣本進(jìn)行訓(xùn)練,構(gòu)建自定義權(quán)限數(shù)據(jù)集和具有惡意傾向的權(quán)限組合數(shù)據(jù)集。實(shí)驗(yàn)結(jié)果表明,與Androguard相比,所提方法能更精確地評(píng)估應(yīng)用軟件的風(fēng)險(xiǎn)值。
關(guān)鍵詞:Android安全;風(fēng)險(xiǎn)評(píng)估;應(yīng)用權(quán)限;量性評(píng)估;靜態(tài)分析;動(dòng)態(tài)檢測(cè)
中圖分類號(hào): TP309.2
文獻(xiàn)標(biāo)志碼:A
Abstract: Focusing on the problems existing in Android permission mechanism and poor capability of traditional measurement methods of Android software security, a risk assessment method of Android APP based on permission was proposed. Firstly, the system permissions declared by application, the permissions obtained through static analysis and custom permissions were extracted by reverse-engineering analysis of application. At the same time, the permissions used by executing application were extracted through dynamic detection. Secondly, quantitative risk assessment of applications was performed from three aspects: permission combination of hiding malicious intent, “over-privilege” problem and custom permission vulnerability. Finally, the Analytic Hierarchy Process (AHP) evaluation model was adopted to calculate the weights of three aspects above for estimating risk value of application. In addition, custom permission data set and permissions combination dataset with hiding malicious intent were built by training 6245 software samples collected from application store and VirusShare. The experimental results show that the proposed method can assess risk value of application software more accurately compared with Androguard.
Key words: Android security; risk assessment; application permission; quantitative assessment; static analysis; dynamic detection
0 引言
隨著移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,手機(jī)逐漸成為用戶連接網(wǎng)絡(luò)和存儲(chǔ)個(gè)人信息最重要的設(shè)備,在人們生活中處于越來越重要的地位。根據(jù)國(guó)際數(shù)據(jù)公司(International Data Corporation, IDC)的統(tǒng)計(jì)[1],智能手機(jī)公司在2017年的出貨量為14.6億部,其中約85%的設(shè)備運(yùn)行Android平臺(tái)。與此同時(shí),Android系統(tǒng)的開放性吸引了更多的應(yīng)用程序開發(fā)者;而Android應(yīng)用程序的多樣性同樣吸引了越來越多的用戶開始嘗試并使用Android系統(tǒng)的智能手機(jī),但是這也是信息科技(Information Technology, IT)專家的焦慮之源。由于智能手機(jī)中存放著大量高度隱私的個(gè)人數(shù)據(jù),故智能手機(jī)比PC掌握用戶更多的敏感數(shù)據(jù),吸引了更多的黑客注意,這對(duì)于Android生態(tài)系統(tǒng)以及用戶個(gè)人數(shù)據(jù)的安全性提出了更高的安全要求。
為了保證護(hù)用戶數(shù)據(jù)的安全隱私及系統(tǒng)資源,Android操作系統(tǒng)采用了沙盒機(jī)制,在默認(rèn)情況下,Android應(yīng)用只能訪問有限的系統(tǒng)資源,除此之外,Android OS還采用了權(quán)限機(jī)制來限制對(duì)敏感資源的訪問。雖然自Android 6.0以來,Android平臺(tái)采用了動(dòng)態(tài)權(quán)限授予機(jī)制,允許用戶在安裝應(yīng)用程序以后,可以撤銷或授予應(yīng)用程序敏感權(quán)限進(jìn)行敏感操作,以保證用戶數(shù)據(jù)的安全和隱私;但是,動(dòng)態(tài)權(quán)限授予機(jī)制依賴于用戶對(duì)于Android權(quán)限有充分的認(rèn)識(shí),并能妥善地管理應(yīng)用權(quán)限這個(gè)前提。然而Bagheri等[2]學(xué)者的研究表明只有極少的用戶關(guān)注并熟悉Android動(dòng)態(tài)運(yùn)行時(shí)權(quán)限。此外,非專業(yè)用戶并不知道,在危險(xiǎn)權(quán)限組的第一個(gè)權(quán)限使用提醒時(shí)授予該應(yīng)用此權(quán)限并不再主動(dòng)撤銷授權(quán)。該應(yīng)用在擁有此項(xiàng)權(quán)限的狀態(tài)下,再申請(qǐng)使用此危險(xiǎn)權(quán)限組的其他權(quán)限時(shí),Android系統(tǒng)會(huì)在不與用戶交互的情況下直接授權(quán)。Android粗粒度的權(quán)限授予機(jī)制、Android應(yīng)用開發(fā)者的過度申請(qǐng)權(quán)限、多個(gè)應(yīng)用利用自定義權(quán)限漏洞而提升權(quán)限和第三方應(yīng)用市場(chǎng)不完善的審核機(jī)制等,使得Android軟件大量存在“溢權(quán)(over-privilege)”和權(quán)限泄露等問題,從而導(dǎo)致Android應(yīng)用的質(zhì)量良莠不齊。由此可見,Android采用的權(quán)限機(jī)制對(duì)用戶數(shù)據(jù)安全性進(jìn)行保護(hù)的方法并不能夠達(dá)到理想的安全防御效果。為了保護(hù)用戶,Android應(yīng)用市場(chǎng)非常需要更好的風(fēng)險(xiǎn)評(píng)估方法來定量評(píng)估應(yīng)用程序可能帶來的威脅。
1 相關(guān)工作
權(quán)限是Android系統(tǒng)安全模型的第一道防線,能保證應(yīng)用安全地訪問敏感數(shù)據(jù)以及跨應(yīng)用交互。Google[3]提供了關(guān)于正確使用Android權(quán)限模型的建議和最佳做法,但最終依靠應(yīng)用程序開發(fā)人員將其正確用于產(chǎn)品中。
近年來Android權(quán)限機(jī)制存在的問題被越來越多的研究學(xué)者所關(guān)注。Felt等[4]提出了Android應(yīng)用程序存在“溢權(quán)”現(xiàn)象:很多Android應(yīng)用程序開發(fā)人員為了后續(xù)再開發(fā)或收集用戶偏好信息等原因,在軟件開發(fā)中突破了“最小權(quán)限原則”,在應(yīng)用程序清單文件中申請(qǐng)過多的權(quán)限,使得多達(dá)三分之一的應(yīng)用程序存在“溢權(quán)”問題。
張銳等[5]提出了采用卡方檢驗(yàn)計(jì)算各權(quán)限屬性對(duì)于分類結(jié)果的影響大小,利用權(quán)限之間以及權(quán)限和惡意傾向的相關(guān)性,去除冗余權(quán)限特征、對(duì)權(quán)限屬性聚類,提取具有代表性的權(quán)限特征,并進(jìn)一步減少冗余后,利用基于不同權(quán)限特征權(quán)重的改進(jìn)樸素貝葉斯算法進(jìn)行軟件分類,能夠初步檢測(cè)Android應(yīng)用軟件是否有惡意傾向。實(shí)驗(yàn)表明,應(yīng)用的權(quán)限組合才是決定應(yīng)用威脅性的關(guān)鍵。
Google驗(yàn)證了文獻(xiàn)[6]中提出的嚴(yán)重的自定義權(quán)限漏洞,惡意軟件開發(fā)者可以利用這些漏洞來開發(fā)應(yīng)用來獲得對(duì)關(guān)鍵平臺(tái)和應(yīng)用程序資源的未經(jīng)授權(quán)的訪問。利用這些漏洞,應(yīng)用軟件可以繞過請(qǐng)求用戶授予/拒絕權(quán)限的交互界面而直接獲取高風(fēng)險(xiǎn)的系統(tǒng)資源,并且還可以未經(jīng)授權(quán)訪問其他應(yīng)用程序的受保護(hù)組件。這嚴(yán)重違反了Android運(yùn)行時(shí)權(quán)限模型中應(yīng)始終保持的一個(gè)關(guān)鍵安全原則:沒有用戶交互授權(quán),不應(yīng)授予應(yīng)用任何危險(xiǎn)的運(yùn)行時(shí)權(quán)限。Android上自定義的兩種權(quán)限漏洞攻擊為自定義權(quán)提升攻擊和混淆代理攻擊。
權(quán)限信息是檢測(cè)Android軟件的關(guān)鍵因素之一。大量研究學(xué)者針對(duì)權(quán)限存在的問題來評(píng)估應(yīng)用程序的隱私風(fēng)險(xiǎn)或安全等級(jí)。Hamed等[7]提出了一種主動(dòng)的面向用戶的方法,讓用戶意識(shí)到授予Android應(yīng)用程序權(quán)限所涉及的隱私風(fēng)險(xiǎn)。該模型的參數(shù)是權(quán)限及其相互作用的嚴(yán)重性和相對(duì)重要性。徐君鋒等[8]通過對(duì)Android軟件逆向分析,根據(jù)不同系統(tǒng)權(quán)限安全等級(jí)劃分,給定安全范圍內(nèi)的安全系數(shù),并對(duì)Android軟件進(jìn)行初步安全評(píng)分;同時(shí)結(jié)合Android軟件的認(rèn)證強(qiáng)度和第三方應(yīng)用市場(chǎng)上的違規(guī)記錄,再綜合度量軟件的最終安全信用指數(shù)。文獻(xiàn)[9]中提出使用靜態(tài)代碼指標(biāo)作為預(yù)測(cè)器,首先對(duì)靜態(tài)代碼度量進(jìn)行初步風(fēng)險(xiǎn)評(píng)分,在進(jìn)一步作數(shù)據(jù)處理確定各個(gè)靜態(tài)代碼度量的風(fēng)險(xiǎn)等級(jí),最后選擇合適的靜態(tài)代碼度量來預(yù)測(cè)和評(píng)估與Android應(yīng)用程序相關(guān)的安全和隱私風(fēng)險(xiǎn)。Android多準(zhǔn)則應(yīng)用程序信任評(píng)估器(Multi-criteria App Evaluator of TRust for AndrOID, MAETROID)[10]是一個(gè)用來評(píng)估Android應(yīng)用程序的可信度的框架,可以評(píng)估應(yīng)用程序?qū)τ脩粼斐娠L(fēng)險(xiǎn)的概率。在部署時(shí)對(duì)應(yīng)用程序進(jìn)行多準(zhǔn)則分析,返回一個(gè)簡(jiǎn)單易懂的應(yīng)用程序風(fēng)險(xiǎn)等級(jí)評(píng)估,即判斷應(yīng)用程序是可信還是中等風(fēng)險(xiǎn)或高風(fēng)險(xiǎn),旨在幫助用戶決定是否要安裝新的應(yīng)用程序。該框架以應(yīng)用程序所申請(qǐng)的權(quán)限集合、從市場(chǎng)收集到的應(yīng)用程序質(zhì)量和受歡迎程度作為一組元數(shù)據(jù)。
2 評(píng)估方法
目前的研究主要是針對(duì)應(yīng)用程序本身的代碼元數(shù)據(jù)數(shù)量進(jìn)行統(tǒng)計(jì)分析,并沒有將自定義權(quán)限漏洞放入應(yīng)用風(fēng)險(xiǎn)評(píng)估中。本文針對(duì)Android權(quán)限機(jī)制存在的問題,提出一種由具有惡意傾向的系統(tǒng)權(quán)限組合檢測(cè)評(píng)估模塊、系統(tǒng)權(quán)限的“溢權(quán)”的檢測(cè)評(píng)估模塊和自定義權(quán)限漏洞的檢測(cè)評(píng)估模塊構(gòu)成的定量應(yīng)用風(fēng)險(xiǎn)評(píng)估方法。
2.1 具有惡意傾向的權(quán)限組合檢測(cè)評(píng)估
應(yīng)用程序可以通過申請(qǐng)組合的權(quán)限來實(shí)現(xiàn)對(duì)用戶隱私信息的竊取和傳播。例如,APP_M申請(qǐng)了連接網(wǎng)絡(luò)和讀取聯(lián)系人這組權(quán)限,就存在未經(jīng)用戶同意而收集用戶通信錄信息,為進(jìn)一步的廣告推廣、甚至電話或者短信詐騙助力。文獻(xiàn)[11]的實(shí)驗(yàn)結(jié)果證明,應(yīng)用程序的權(quán)限組合能夠檢測(cè)Android應(yīng)用軟件是否有惡意傾向,是判定應(yīng)用程序威脅性的重要因素,但它并沒考慮應(yīng)用本身的用途,只考慮了權(quán)限本身。例如,位置定位權(quán)限對(duì)于導(dǎo)航和地圖類應(yīng)用程序是必要權(quán)限,對(duì)于健身運(yùn)動(dòng)類應(yīng)用是非必要權(quán)限,對(duì)于主題壁紙類應(yīng)用是非需權(quán)限。通過對(duì)收集的良性應(yīng)用程序進(jìn)行逆向工程,提取權(quán)限信息樣本,根據(jù)各類應(yīng)用程序的使用概率,將每類單個(gè)應(yīng)用權(quán)限分為三個(gè)威脅級(jí)別。
定義1 根據(jù)單個(gè)權(quán)限pi在該類應(yīng)用程序的必要性,其威脅值取為1,3,5中的一個(gè):
T(pi)=1, pi對(duì)該類應(yīng)用程序有明顯的必要性3, pi對(duì)該類應(yīng)用程序有一定的必要性5, pi對(duì)該類應(yīng)用程序有很弱的必要性
在影音播放類中:網(wǎng)絡(luò)連接、訪問網(wǎng)絡(luò)狀態(tài)和寫入外部存儲(chǔ)等權(quán)限明顯很必要;而讀取短信和發(fā)送短信在用戶登錄過程中有一定的必要性;寫短信和使用指紋硬件等權(quán)限在該類應(yīng)用的必要性很弱。在各類應(yīng)用中,權(quán)限的必要性越強(qiáng),其威脅性越小。采用層次分析法(Analytic Hierarchy Process, AHP)計(jì)算單個(gè)權(quán)限的威脅值T(pi)。
不同的權(quán)限組合有不同的安全威脅值,根據(jù)有惡意傾向的組合權(quán)限不同的收集來源定義組合權(quán)限的威脅級(jí)別。
定義2 權(quán)限組合pci的威脅性級(jí)別值為:
T(pci)=1, pci來自相關(guān)文獻(xiàn)的實(shí)驗(yàn)結(jié)果3, pci來自Mal_Per_group5, pci來自典型的利用權(quán)限組合的攻擊
其中,Mal_Per_group的收集在3.1.2節(jié)中詳述。具有惡意傾向的權(quán)限組合檢測(cè)算法如下所示。
RRper_group為從應(yīng)用程序請(qǐng)求的權(quán)限組中去除待評(píng)估App所屬類常用權(quán)限組的非空真子集的剩余權(quán)限組。該方法根據(jù)式(1)計(jì)算該應(yīng)用程序由于使用的權(quán)限的組合帶來的風(fēng)險(xiǎn)。
其中:T(pci)為Mal_Per_group中具有惡意傾向的權(quán)限組和的威脅值,λm代表具有惡意傾向的權(quán)限組合在應(yīng)用風(fēng)險(xiǎn)評(píng)估中的權(quán)重。
2.2 “溢權(quán)”檢測(cè)評(píng)估
手機(jī)應(yīng)用軟件管理著大量的用戶個(gè)人信息,例如:身份證、地址、通信記錄、短信、郵箱等,這為通過不同方法來分析用戶和操縱這些數(shù)據(jù)獲得利益提供了新的契機(jī)。不僅惡意軟件,甚至有些合法軟件也濫用這些信息。例如:Twitter手機(jī)軟件在沒得到用戶同意的情況下,將用戶的個(gè)人信息公之于眾。在應(yīng)用被允許執(zhí)行敏感操作時(shí),用戶數(shù)據(jù)有可能被修改甚至丟失。
Android應(yīng)用軟件普遍存在著“溢權(quán)”問題。例如,38.5%的學(xué)習(xí)幫助類應(yīng)用程序?yàn)榱硕ㄏ蛲茝V自己的應(yīng)用軟件,而申請(qǐng)危險(xiǎn)權(quán)限組PHONE中的READ_PHONE_STATE來讀取用戶手機(jī)狀態(tài)。若應(yīng)用程序在清單文件中申請(qǐng)的權(quán)限,不存在于靜態(tài)分析得到的權(quán)限列表中,則該應(yīng)用程序就擁有過度權(quán)限。此時(shí),過度權(quán)限集是申請(qǐng)的權(quán)限集與靜態(tài)分析得到的權(quán)限集的差集;反之,若一個(gè)權(quán)限存在靜態(tài)分析得到的權(quán)限中,而不存在應(yīng)用程序在清單文件中申請(qǐng)的權(quán)限時(shí),則稱該權(quán)限為提升權(quán)限;然后,將其與從動(dòng)態(tài)執(zhí)行獲取的日志文件中提取的動(dòng)態(tài)權(quán)限列表相比較,兩者的差集記為靜默權(quán)限。
該方法將應(yīng)用程序申請(qǐng)的系統(tǒng)權(quán)限列表記為Rper_list,將靜態(tài)分析的系統(tǒng)權(quán)限列表記為Sper_list,將動(dòng)態(tài)分析得到的系統(tǒng)權(quán)限列表記為Dper_list。系統(tǒng)權(quán)限的“溢權(quán)”檢測(cè)的詳細(xì)步驟如算法2所述。
本文提出的風(fēng)險(xiǎn)評(píng)估方法根據(jù)式(2)計(jì)算由系統(tǒng)權(quán)限的“溢權(quán)”帶來的風(fēng)險(xiǎn):
其中:T(opi)代表Oper_list中的系統(tǒng)權(quán)限對(duì)應(yīng)的保護(hù)等級(jí)的權(quán)重,λo表示了“溢權(quán)”問題評(píng)估應(yīng)用程序安全時(shí)的權(quán)重。
2.3 自定義權(quán)限的風(fēng)險(xiǎn)評(píng)估
Android提供一組權(quán)限標(biāo)簽來保護(hù)系統(tǒng)和用戶資源。與此同時(shí),Android平臺(tái)允許不受信任的第三方應(yīng)用聲明自己的自定義權(quán)限,來限制其他應(yīng)用程序?qū)υ搼?yīng)用程序組件的訪問。簡(jiǎn)而言之,Android的權(quán)限模型是通過使用一組名為權(quán)限的安全標(biāo)簽,規(guī)范對(duì)平臺(tái)和應(yīng)用程序資源的訪問。為了保護(hù)平臺(tái)資源(例如,麥克風(fēng)、互聯(lián)網(wǎng)等),平臺(tái)使用由系統(tǒng)本身引入的預(yù)定義權(quán)限集。權(quán)限模型還為平臺(tái)提供更細(xì)粒度的安全性,以此保護(hù)不同應(yīng)用程序或系統(tǒng)組件之間的進(jìn)程間通信(Inter-Process Communication, IPC),為此Android引入了自定義權(quán)限:這些是應(yīng)用程序定義的權(quán)限,允許開發(fā)人員通過其他應(yīng)用程序控制對(duì)其應(yīng)用程序組件的訪問。實(shí)際上,在第三方應(yīng)用程序中使用自定義權(quán)限非常常見。根據(jù)本文對(duì)各個(gè)應(yīng)用市場(chǎng)頂級(jí)免費(fèi)應(yīng)用程序的研究,約72%的應(yīng)用程序定義了自定義權(quán)限。其中30%的自定義權(quán)限的保護(hù)等級(jí)為Normal,即只要申請(qǐng)了就可以使用,如表1所示。
從表1可以看出,應(yīng)用程序自定義保護(hù)等級(jí)為Dangerous的權(quán)限較少,而絕大多數(shù)的自定義權(quán)限的保護(hù)等級(jí)為Signature和Normal。自定義權(quán)限提升攻擊通過在清單文件中聲明保護(hù)級(jí)別為Signature或Normal的自定義權(quán)限,并將此自定義權(quán)限設(shè)置為系統(tǒng)權(quán)限組的一部分,而Android系統(tǒng)允許第三方開發(fā)者將自定義權(quán)限聲明為系統(tǒng)權(quán)限組的一部分,使應(yīng)用程序可以繞過用戶權(quán)限授予界面,并自動(dòng)獲取任何危險(xiǎn)的系統(tǒng)權(quán)限。故該方法中自定義權(quán)限的保護(hù)級(jí)別為Signature或Normal的權(quán)重比保護(hù)級(jí)別為Dangerous和SignatureorSystem大,而在混淆代理攻擊中,攻擊者利用缺乏Android自定義權(quán)限的命名約定,來對(duì)一個(gè)使用自定義權(quán)限保護(hù)組件的受害者應(yīng)用程序發(fā)起攻擊。故該方法對(duì)從各大官網(wǎng)收集到應(yīng)用程序的分析,提取應(yīng)用程序的自定義權(quán)限存入自定義權(quán)限數(shù)據(jù)集CPer_set中,對(duì)待測(cè)試的APP的自定義權(quán)限進(jìn)行檢查并對(duì)CPer_set進(jìn)行補(bǔ)充。
自定義權(quán)限通過為IPC提供安全性,在支持Android平臺(tái)的可重用性方面發(fā)揮了重要作用;因此,對(duì)其正確操作的任何威脅都可能導(dǎo)致應(yīng)用程序和平臺(tái)本身的安全性受到損害。該模塊主要針對(duì)由重名的自定義權(quán)限帶來的混淆代理的可能性進(jìn)行評(píng)估。利用這個(gè)自定義權(quán)限漏洞,應(yīng)用可以繞過用戶同意屏幕來授予/拒絕權(quán)限以獲取高風(fēng)險(xiǎn)系統(tǒng)資源,并且還可以未經(jīng)授權(quán)訪問其他應(yīng)用的受保護(hù)組件。由于現(xiàn)在Android規(guī)定在同一個(gè)物理設(shè)備上,不允許存在兩個(gè)應(yīng)用程序定義相同名稱的權(quán)限。為了完成這個(gè)攻擊,惡意應(yīng)用程序開發(fā)者需要開發(fā)至少兩個(gè)應(yīng)用:
1)定義者攻擊應(yīng)用程序。通過重新使用相同的權(quán)限名稱來欺騙受害者應(yīng)用程序的自定義權(quán)限,并將保護(hù)級(jí)別更改為危險(xiǎn)。
2)用戶攻擊應(yīng)用程序。它只在其清單文件中請(qǐng)求此權(quán)限。
編寫Python腳本cusPermission.py提取收集到的應(yīng)用程序自定義的權(quán)限,存儲(chǔ)為cusPer.set,其存儲(chǔ)結(jié)構(gòu)為[權(quán)限,權(quán)限組,權(quán)限定義應(yīng)用包名稱(權(quán)限等級(jí)),申請(qǐng)?jiān)摍?quán)限的應(yīng)用包名稱];編寫getCusPermission.py,提取待檢測(cè)應(yīng)用程序在AndroidManifest.xml文件中定義的權(quán)限列表cusPlist,該部分檢測(cè)分為兩個(gè)模塊:數(shù)據(jù)集獲取模塊和分析評(píng)估模塊。
根據(jù)式(3)計(jì)算由自定義權(quán)限漏洞問題帶來的風(fēng)險(xiǎn):
其中:T(cpi)代表自定義權(quán)限的定義的保護(hù)級(jí)別的權(quán)重,λc代表自定義權(quán)限問題在評(píng)估應(yīng)用程序風(fēng)險(xiǎn)時(shí)的權(quán)重。
3 方法實(shí)現(xiàn)與結(jié)果分析
3.1 數(shù)據(jù)集收集
本文通過檢測(cè)分析806個(gè)應(yīng)用市場(chǎng)可下載的安卓應(yīng)用、5439個(gè)惡意樣本和Android官方網(wǎng)站發(fā)布的權(quán)限文檔,構(gòu)建各類應(yīng)用程序常用的組合權(quán)限數(shù)據(jù)集、具有惡意傾向的權(quán)限組合數(shù)據(jù)集和Android原生權(quán)限數(shù)據(jù)集。
3.1.1 多類應(yīng)用程序常用的組合權(quán)限數(shù)據(jù)集
編寫Python腳本從百度手機(jī)助手、小米應(yīng)用商店和華為應(yīng)用市場(chǎng)爬取下載量較高、獲得官方版認(rèn)證的、安全優(yōu)質(zhì)的Android應(yīng)用軟件。相對(duì)于官方應(yīng)用市場(chǎng)沒有任何說明的評(píng)分,高下載量更能代表用戶使用的滿意度較高、權(quán)限使用在用戶的接受范圍之內(nèi)。
該方法共收集了806個(gè)不同的安卓應(yīng)用,主要分為以下類別:影音播放(95)、社交通信(76)、學(xué)習(xí)幫助(39)、新聞閱讀(43)、運(yùn)動(dòng)健康(36)、金融理財(cái)(80)、游戲娛樂(139)、網(wǎng)上購(gòu)物(48)、辦公工具(36)、拍攝美化(57)、主題壁紙(52)、地圖導(dǎo)航(24)、旅游購(gòu)票(22)、生活實(shí)用(59)。例如,影音視聽類應(yīng)用常用的權(quán)限組如表2所示。
由于權(quán)限組的存在,若授予了權(quán)限組中任一權(quán)限,該應(yīng)用若申請(qǐng)同一權(quán)限組中的其他權(quán)限,系統(tǒng)不再與用戶交互而直接為該應(yīng)用授予其申請(qǐng)?jiān)摻M內(nèi)的權(quán)限。故該類別的權(quán)限組還需添加STORAGE組中的READ_EXTERNAL_STORAGE危險(xiǎn)權(quán)限。
3.1.2 具有惡意傾向的權(quán)限組合數(shù)據(jù)集
本文從VirusShare[12]中獲得的5439個(gè)惡意樣本,對(duì)其中50個(gè)家族成員數(shù)大于10的5048個(gè)樣本進(jìn)行反編譯字節(jié)碼操作,并從其清單文件中提取權(quán)限,將其家族成員都使用的權(quán)限作為權(quán)限集的一個(gè)權(quán)限組合。該方法會(huì)對(duì)數(shù)據(jù)集進(jìn)行進(jìn)一步去除冗余、計(jì)算權(quán)限組合的權(quán)重,將其存入惡意軟件家族常用權(quán)限組合的數(shù)據(jù)集Mal_Per_group。例如:從相關(guān)安全網(wǎng)站收集相關(guān)的最新的權(quán)限攻擊實(shí)例,將其加入到數(shù)據(jù)集Mal_Per_group。例如,Android版本在7.1.2及以下都會(huì)受到Cloak&Dagger攻擊的影響,而該攻擊是一種利用權(quán)限不匹配問題來訪問Android設(shè)備的攻擊方法,主要通過獲取SYSTEM_ALERT_WINDOW和BIND_ACCE-SSIBILITY_SERVICE權(quán)限來實(shí)施攻擊。故Cloak&Dagger惡意軟件家族的常用權(quán)限組為[SYSTEM_ALERT_WINDOW,BIND_ACCESSIBILITY_SERVICE]。
3.1.3 Android原生權(quán)限
編寫Python腳本對(duì)Android官方網(wǎng)站的上發(fā)布的權(quán)限文檔進(jìn)行分析,統(tǒng)計(jì)文檔中的權(quán)限及其級(jí)別。目前共有152個(gè)原生權(quán)限,包括:38個(gè)保護(hù)等級(jí)為normal的權(quán)限,27個(gè)保護(hù)等級(jí)為dangerous的權(quán)限,10個(gè)等級(jí)為signature的特殊權(quán)限,19個(gè)等級(jí)為signature|privileged(同API≤23,signatureOr-System)的權(quán)限,44個(gè)不提供給第三方應(yīng)用使用的權(quán)限,此外還有14個(gè)權(quán)限在版本更新中不再建議使用的權(quán)限。
3.2 權(quán)限提取
通過靜態(tài)分析,對(duì)Android安裝包(Android Package, APK)文件的逆向分析,從清單文件中提取應(yīng)用程序申請(qǐng)的系統(tǒng)權(quán)限Rper_list;靜態(tài)分析smali代碼提取敏感應(yīng)用程序編程接口(Application Programming Interface, API),通過收集的map-ping映射得到對(duì)應(yīng)的靜態(tài)權(quán)限列表Sper_list;通過自動(dòng)運(yùn)行注入了1000個(gè)不同的基于Android的Monkey測(cè)試套件的事件,以提取包括被調(diào)用的方法在內(nèi)的運(yùn)行信息的日志,然后通過分析日志信息,提取動(dòng)態(tài)權(quán)限列表Dper_list。其具體過程如圖1所示。
3.3 權(quán)重計(jì)算
本文采用了層次分析法來計(jì)算同一層次影響評(píng)估結(jié)果的各因素的權(quán)重。AHP是定性和定量相結(jié)合的分析方法。該方法將復(fù)雜的問題層次化,對(duì)影響決策目標(biāo)的判斷因素進(jìn)行量化分析,是一種層次權(quán)重決策分析方法。
將該方法使用作為指標(biāo)層的評(píng)估因素有:具有惡意傾向的權(quán)限組、系統(tǒng)權(quán)限的“溢權(quán)”、自定義權(quán)限漏洞。
構(gòu)建判斷矩陣,并使用Matlab程序?qū)崿F(xiàn)層次分析方法,計(jì)算出具有惡意傾向的權(quán)限組權(quán)重為:λm=0.3255,系統(tǒng)權(quán)限的“溢權(quán)”權(quán)重為:λo=0.2772,自定義權(quán)限漏洞權(quán)重為:λc=0.3973。
3.4 實(shí)驗(yàn)結(jié)果分析
本文所提方法的實(shí)驗(yàn)結(jié)果表明,應(yīng)用程序所需的權(quán)限數(shù)量和自定義的權(quán)限數(shù)量并不是影響風(fēng)險(xiǎn)值分?jǐn)?shù)的主要因素。從表3可以看出,應(yīng)用com.xiaoyu.rightone申請(qǐng)的權(quán)限數(shù)量少于com.imjingjing.jingjing,但是其風(fēng)險(xiǎn)評(píng)分明顯高于com.imjingjing.jingjing。
此外,統(tǒng)計(jì)數(shù)據(jù)表明,現(xiàn)存的應(yīng)用都申請(qǐng)了允許訪問網(wǎng)絡(luò)的權(quán)限和訪問網(wǎng)絡(luò)狀態(tài)這兩個(gè)權(quán)限。拍攝美化類應(yīng)用除了申請(qǐng)必要的拍攝和讀寫存儲(chǔ)器權(quán)限外,通常還會(huì)申請(qǐng)定位和讀取聯(lián)系人權(quán)限;社交通信類的自定義權(quán)限最多,主題壁紙類的自定義權(quán)限與其他應(yīng)用程序自定義權(quán)限重名的最多,且主題壁紙類申請(qǐng)的權(quán)限數(shù)較多故風(fēng)險(xiǎn)值平均較高;直播類應(yīng)用申請(qǐng)的權(quán)限最多,平均風(fēng)險(xiǎn)值最高。
Androguard[13]主要用來進(jìn)行靜態(tài)分析,提供了很多模塊供分析人員使用,有很多靜態(tài)分析工具都是基于它,其中Androrisk.py模塊用于評(píng)估APK文件中潛在的風(fēng)險(xiǎn)。該模塊主要是利用權(quán)限和DEX文件對(duì)APK文件進(jìn)行風(fēng)險(xiǎn)評(píng)估,其中將權(quán)限按功能分為:隱私權(quán)限、普通權(quán)限、與收費(fèi)有關(guān)的權(quán)限、聯(lián)網(wǎng)類的權(quán)限、信息類的權(quán)限、危險(xiǎn)權(quán)限、簽名或系統(tǒng)權(quán)限、通話類的權(quán)限、簽名權(quán)限和全球定位系統(tǒng)(Global Positioning System, GPS)權(quán)限,通過Fuzzy算法對(duì)應(yīng)用程序風(fēng)險(xiǎn)進(jìn)行評(píng)估。表4展示了兩種方法評(píng)估的主要因素及最終評(píng)估的風(fēng)險(xiǎn)值,其各列名為應(yīng)用程序在清單文件中申請(qǐng)的系統(tǒng)權(quán)限數(shù)(Number of system Permissions declared in the Manifest file, NPM)、自定義權(quán)限數(shù)(Number of Custom Permissions, NCP)、與別的應(yīng)用程序定義的權(quán)限同名的自定義權(quán)限個(gè)數(shù)(Number of Custom permissions with the Same name as those defined by other APPs, NCS這個(gè)的縮寫是對(duì)應(yīng)表4中的“NSC”嗎?為何表示C的Custom,卻在S的前面?英文全稱正確嗎?請(qǐng)明確??s寫是對(duì)應(yīng)表4中的“NSC”,這兩處都確定為“NCS”。)、使用Androrisk.py模塊得到的風(fēng)險(xiǎn)評(píng)估分?jǐn)?shù)(Risk Assessment Scores using Androrisk.py module, RASA)、本文方法對(duì)測(cè)試應(yīng)用程序風(fēng)險(xiǎn)評(píng)估分?jǐn)?shù)(Risk assessment Scores using this Quantitative Evaluation method, RSQE)。
Androrisk.py模塊是靜態(tài)檢測(cè)中的常用方法,從實(shí)驗(yàn)結(jié)果上看有靜態(tài)檢測(cè)本身的局限性,從表4可以看出,其實(shí)驗(yàn)結(jié)果會(huì)有較大的誤差;而本文方法相對(duì)于Androrisk增加了自定義權(quán)限風(fēng)險(xiǎn)評(píng)估和系統(tǒng)“溢權(quán)”風(fēng)險(xiǎn)評(píng)估,能夠更精確地評(píng)估應(yīng)用程序的風(fēng)險(xiǎn)。
根據(jù)實(shí)驗(yàn)結(jié)果和三個(gè)方面潛在的威脅,為了進(jìn)一步方便用戶理解由于權(quán)限機(jī)制造成的風(fēng)險(xiǎn),可將應(yīng)用程序潛在的風(fēng)險(xiǎn)值劃分為四三個(gè)風(fēng)險(xiǎn)等級(jí):待測(cè)應(yīng)用程序的風(fēng)險(xiǎn)值為[0,30)區(qū)間,則認(rèn)為應(yīng)用程序的風(fēng)險(xiǎn)等級(jí)為低風(fēng)險(xiǎn);待測(cè)應(yīng)用程序的風(fēng)險(xiǎn)值為[30,70)區(qū)間,則認(rèn)為應(yīng)用程序的風(fēng)險(xiǎn)等級(jí)為中等風(fēng)險(xiǎn);待測(cè)應(yīng)用程序的風(fēng)險(xiǎn)值大于70,則認(rèn)為應(yīng)用程序的風(fēng)險(xiǎn)等級(jí)為高風(fēng)險(xiǎn)。
4 結(jié)語
本文通過提取權(quán)限信息,提出了一種新的基于權(quán)限的Android應(yīng)用程序風(fēng)險(xiǎn)評(píng)估方法。針對(duì)應(yīng)用市場(chǎng)提供的應(yīng)用程序質(zhì)量參差不齊和風(fēng)險(xiǎn)等級(jí)評(píng)估的不透明等問題,該方法通過靜態(tài)分析和動(dòng)態(tài)檢測(cè)權(quán)限的使用情況,從系統(tǒng)權(quán)限和自定義權(quán)限帶來的威脅,來定量評(píng)估應(yīng)用程序的潛在風(fēng)險(xiǎn)值。實(shí)驗(yàn)驗(yàn)證,本文的風(fēng)險(xiǎn)評(píng)估方法能有效地度量應(yīng)用程序的風(fēng)險(xiǎn),為進(jìn)一步分析應(yīng)用程序的安全性提供了參考,但自定義權(quán)限數(shù)據(jù)集還不充分,需要進(jìn)一步補(bǔ)充完善。
參考文獻(xiàn) (References)
[1] IDC. Smartphone market share [EB/OL]. (2018-02-20)[2018-03-29]. https://www.idc.com/promo/smartphone-market-share/os.
[2] BAGHERI H, KANG E, MALEK S, et al. A formal approach for detection of security flaws in the Android permission system [J]. Formal Aspects of Computing, 2017, 9: 1-20.
[3] Google. Permissions best practices [EB/OL]. (2018-01-20)[2018-03-26]. https://developer.android.google.cn/training/permissions/best-practice.
[4] FELT A P, CHLN E, HANNA S, et al. Android permissions demystified[C]// CCA2011: Proceedings of the 18th ACM Conference on Computer and Communications Security. New York: ACM, 2011:627-638.
[5] 張銳,楊吉云.基于權(quán)限相關(guān)性的Android惡意軟件檢測(cè)[J].計(jì)算機(jī)應(yīng)用,2014,34(5):1322-1325.(ZHANG R, YANG J Y. Android malware detection based on permission correlation[J]. Journal of Computer Applications,2014, 34(5):1322-1325.)
[6] TUNCAY G S, DEMETRIOU S, GANJU K, et al. Resolving the predicament of Android custom permissions[C]// NDSS 2018: Proceedings of the 2018 Network and Distributed System Security Symposium. Piscataway, NJ: IEEE, 2018:1-16.
[7] HAMED A, AYED H K B. Privacy risk assessment and users awareness for mobile APPs permissions[C]// Proceedings of the 2017 International Symposium on Computer Systems and Applications. Piscataway, NJ: IEEE, 2017:1-8.
[8] 徐君鋒,王嘉捷,朱克雷,等.基于AHP的安卓應(yīng)用安全信用指數(shù)度量方法[J].清華大學(xué)學(xué)報(bào)(自然科學(xué)版),2018,58(2):131-136.(XU J F, WANG J J, ZHU K L, et al. Credit index measurement method for Android application security based on AHP[J]. Journal of Tsinghua University (Science and Technology), 2018,58(2):131-136.)
[9] RAHMAN A, PRADHAN P, PARTHO A, et al. Predicting Android application security and privacy risk with static code metrics[C]// Proceedings of the 2017 IEEE/ACM International Conference on Mobile Software Engineering and Systems. Piscataway, NJ: IEEE, 2017:149-153.
[10] DINI G, MARTINELLI F, MATTEUCCI I, et al. Risk analysis of Android applications: a user-centric solution [J]. Future Generation Computer Systems, 2018, 80: 505-518.
[11] TANG W, JIN G, HE J, et al. Extending Android security enforcement with a security distance model[C]// Proceedings of the 2011 International Conference on Internet Technology and Applications. Piscataway, NJ: IEEE, 2011: 1-4.
[12] VXShare. VirusShare[EB/OL]. [2017-10-09]. https://vir-usshare.com.
[13] DESNOS A, GUEGUEN G, BACHMANN S. Androguard package[EB/OL]. [2017-12-29]. http://androguard.readthedocs.io/en/latest/api/androguard.html.