徐永盛 紀(jì)躍波
(集美大學(xué)機(jī)械與能源工程學(xué)院 福建 廈門 361000)
Android系統(tǒng)是由谷歌公司所開發(fā)的移動(dòng)端操作系統(tǒng),該系統(tǒng)基于Linux內(nèi)核,由谷歌公司對(duì)其開源,授予開放手機(jī)聯(lián)盟中的手機(jī)制造商免費(fèi)使用。自谷歌公司2008年9月發(fā)布第一版Android系統(tǒng)以來,截止2018年9月,Android系統(tǒng)市場占有率達(dá)到了85.7%[1],遠(yuǎn)高于ios系統(tǒng)市場份額。由于Android系統(tǒng)的開放性,谷歌公司允許手機(jī)制造商在Android系統(tǒng)下進(jìn)行個(gè)性化的定制開發(fā),得到了手機(jī)廠商的青睞,Android系統(tǒng)得到了迅速的發(fā)展壯大。
隨著移動(dòng)互聯(lián)的不斷發(fā)展,人們的衣食住行都離不開智能手機(jī)的身影,智能手機(jī)成了人們重要的私密物品。Android系統(tǒng)具有較高的市場占有率和系統(tǒng)開源性,一旦人們安裝了惡性應(yīng)用,不法分子就會(huì)通過應(yīng)用獲取人們的隱私或者控制手機(jī)進(jìn)行惡意消費(fèi)、勒索等不法行為。Android手機(jī)的安全性日益突出,根據(jù)2018年手機(jī)安全報(bào)告[2],360互聯(lián)網(wǎng)安全中心上半年累計(jì)截獲安卓平臺(tái)新增惡意程序樣本283.1萬個(gè),其中,新增手機(jī)勒索軟件127 455個(gè),1月-7月截獲新增手機(jī)挖礦木馬4 806個(gè)。可見,Android終端存在很大的安全隱患。
由于Android系統(tǒng)的特性,Android終端的安全隱患主要來自于其系統(tǒng)權(quán)限粗粒度的授予機(jī)制。Android應(yīng)用在進(jìn)行各種風(fēng)險(xiǎn)性活動(dòng)時(shí)都離不開權(quán)限的獲取。本文根據(jù)Android應(yīng)用的權(quán)限特征,提出了基于權(quán)限特征的一種Android應(yīng)用風(fēng)險(xiǎn)評(píng)估策略,該策略基于本文提出的權(quán)限樹定義,計(jì)算Android應(yīng)用權(quán)限風(fēng)險(xiǎn)值,通過AHP層次分析法對(duì)權(quán)限風(fēng)險(xiǎn)值進(jìn)行校正,得到更精確的應(yīng)用風(fēng)險(xiǎn)評(píng)估,進(jìn)行應(yīng)用安裝時(shí)的指導(dǎo)。
由于手機(jī)作為人們比較私密且貴重的設(shè)備,存有人們?cè)S多重要且私密的數(shù)據(jù)。設(shè)計(jì)者在Android系統(tǒng)中為了保護(hù)隱私數(shù)據(jù)不被隨意讀取及平臺(tái)資源的安全合法使用,對(duì)平臺(tái)上的大部分資源設(shè)置了權(quán)限標(biāo)簽,當(dāng)應(yīng)用需要使用某一資源時(shí)必須在清單文件中進(jìn)行申請(qǐng)才可使用,若不申請(qǐng)就使用該資源,應(yīng)用將報(bào)錯(cuò)崩潰。例如一個(gè)應(yīng)用需要調(diào)用相機(jī)進(jìn)行拍照,就必須在清單文件中申請(qǐng)CAMERA權(quán)限。Android系統(tǒng)設(shè)置的權(quán)限標(biāo)簽多達(dá)140多個(gè)。Android系統(tǒng)將權(quán)限等級(jí)分為三種,分別為normal、dangerous、signature。其中normal表示正常權(quán)限,在應(yīng)用中申請(qǐng)即可使用,無需用戶同意,一般不會(huì)造成安全隱患。dangerous表示危險(xiǎn)權(quán)限,危險(xiǎn)權(quán)限與人們的隱私及設(shè)備安全密切相關(guān),在應(yīng)用申請(qǐng)后必須經(jīng)過用戶手動(dòng)授予才可正常使用。危險(xiǎn)權(quán)限分為九個(gè)危險(xiǎn)權(quán)限組,所有危險(xiǎn)權(quán)限屬于九個(gè)危險(xiǎn)權(quán)限組中。signature權(quán)限表示系統(tǒng)級(jí)權(quán)限,第三方應(yīng)用無法使用該類權(quán)限,即使申請(qǐng)了,由于非系統(tǒng)應(yīng)用,也無法使用。
危險(xiǎn)權(quán)限涉及到了系統(tǒng)中的敏感資源,相對(duì)于ios的權(quán)限機(jī)制,Android系統(tǒng)對(duì)危險(xiǎn)權(quán)限管理為粗粒度的。當(dāng)某一危險(xiǎn)權(quán)限被授予,其所屬的危險(xiǎn)權(quán)限組中其他危險(xiǎn)權(quán)限也將被自動(dòng)授予,系統(tǒng)不再通知用戶。因此,對(duì)于危險(xiǎn)權(quán)限的授予容易造成安全隱患。
權(quán)限機(jī)制是Android系統(tǒng)安全模型的第一道防線,保證了應(yīng)用訪問系統(tǒng)資源及跨進(jìn)程間的通信。目前對(duì)于Android應(yīng)用的檢測主要分為三類:靜態(tài)檢測、動(dòng)態(tài)檢測、動(dòng)靜態(tài)結(jié)合檢測。靜態(tài)檢測[3]是對(duì)應(yīng)用中的權(quán)限、相關(guān)API的調(diào)用進(jìn)行分析。動(dòng)態(tài)檢測[4]是對(duì)應(yīng)用在運(yùn)行過程中通過Zygote注入系統(tǒng)級(jí)進(jìn)程,對(duì)應(yīng)用在調(diào)用危險(xiǎn)API時(shí)進(jìn)行監(jiān)控,XPosed框架正是利用了該原理。動(dòng)靜態(tài)結(jié)合檢測是將兩者相結(jié)合,使得檢測準(zhǔn)確率更高,但該方法效率較低,特征提取難度較大。
由于Android權(quán)限機(jī)制是應(yīng)用正常運(yùn)行的保證,對(duì)于權(quán)限機(jī)制的研究越來越受到研究人員的關(guān)注。文獻(xiàn)[5]提出了計(jì)算惡意權(quán)限組合下的惡意值,并通過與實(shí)驗(yàn)計(jì)算得出的惡意閾值比較來判斷應(yīng)用是否為惡意應(yīng)用。文獻(xiàn)[6]提出了自定義權(quán)限漏洞所帶來的風(fēng)險(xiǎn),惡意軟件開發(fā)者可以通過該漏洞繞過用戶授予界面訪問其他應(yīng)用組件。文獻(xiàn)[7]設(shè)計(jì)了一個(gè)Androdect檢測工具,采用了一種三層混合系統(tǒng)算法THEA,結(jié)合了動(dòng)靜態(tài)分析提取有效的特征對(duì)Android應(yīng)用進(jìn)行檢測,檢測準(zhǔn)確率較高,但該方法在檢測過程中需要經(jīng)常進(jìn)行人工干預(yù)且檢測效率不高,對(duì)加殼的惡意應(yīng)用容易出現(xiàn)特征提取失敗。文獻(xiàn)[8]提出了一種權(quán)限挖掘算法來提取惡意應(yīng)用特征,以此來檢測其他應(yīng)用是否為惡意應(yīng)用。文獻(xiàn)[9]基于FP-Growth算法設(shè)計(jì)了權(quán)限頻繁項(xiàng)集挖掘算法,對(duì)樣本應(yīng)用提取權(quán)限特征得到最大權(quán)限頻繁項(xiàng)集,利用惡意應(yīng)用檢測得到的閾值來判定應(yīng)用是否為惡意應(yīng)用。文獻(xiàn)[10]提出了基于權(quán)限的Android平臺(tái)惡意應(yīng)用檢測方法,該方法利用PCA算法提取權(quán)限特征,并應(yīng)用SVM(支持向量機(jī))來判定良性與惡性應(yīng)用。文獻(xiàn)[11]利用輕量級(jí)應(yīng)用檢測工具Kirin,提出了基于惡意權(quán)限組合的一組權(quán)限策略。相比于文獻(xiàn)[12]中對(duì)于單個(gè)權(quán)限出現(xiàn)的概率計(jì)算權(quán)限風(fēng)險(xiǎn),本文對(duì)惡意權(quán)限組合以及自定義權(quán)限的風(fēng)險(xiǎn)性進(jìn)行更全面的評(píng)估。
對(duì)Android應(yīng)用權(quán)限研究發(fā)現(xiàn),由于應(yīng)用所屬類別的不同,所要申請(qǐng)的權(quán)限也有很大不同。例如對(duì)于聊天通信類軟件,申請(qǐng)INTERNET、CAMERA權(quán)限是必要的,對(duì)于BLOOTH藍(lán)牙權(quán)限則是不必要的。對(duì)于地圖定位類軟件,ACCESS_FINE_LOCATION定位權(quán)限則是必須的,READ_CONTACTS訪問聯(lián)系人權(quán)限則是完全不必要的。即使對(duì)于危險(xiǎn)權(quán)限的申請(qǐng)使用,不同類別的應(yīng)用也會(huì)有很大不同,因此對(duì)于系統(tǒng)權(quán)限風(fēng)險(xiǎn)評(píng)估必須根據(jù)應(yīng)用類別進(jìn)行相應(yīng)的評(píng)估。為了使得評(píng)估準(zhǔn)確,本文對(duì)每個(gè)類別的應(yīng)用分別構(gòu)建權(quán)限集合τ,集合τ中所包含的權(quán)限為該類別所有樣本應(yīng)用申請(qǐng)的所有權(quán)限。即:τ={c1,c2,…,cm},其中c1、c2、…、cm為樣本集中應(yīng)用申請(qǐng)的權(quán)限。
定義1權(quán)限申請(qǐng)率P(ci):在權(quán)限集合τ中,某一權(quán)限ci中出現(xiàn)的頻率:
(1)
式中:N為樣本集中某一類別應(yīng)用總數(shù),nci為權(quán)限ci在N中的頻數(shù)。
定義2權(quán)限樹T:將權(quán)限集合τ中的所有權(quán)限組成一個(gè)權(quán)限集合,稱為權(quán)限樹集合,用T表示。權(quán)限樹由三個(gè)集合構(gòu)成,分別為安全樹、風(fēng)險(xiǎn)樹和危險(xiǎn)樹集合,同一種權(quán)限在不同類別應(yīng)用映射的所屬的權(quán)限樹集合不一定相同,每一種權(quán)限樹其對(duì)應(yīng)的風(fēng)險(xiǎn)值Ra。
定義3安全樹Ts:對(duì)于某一類別應(yīng)用,若某一權(quán)限ci是完全必要的,即該權(quán)限屬于安全樹集合,安全樹的風(fēng)險(xiǎn)權(quán)值Ra定義為1。表達(dá)式為:
IfP(ci)≥0.68 thenci∈Ts
定義4風(fēng)險(xiǎn)樹Tr:對(duì)于某一類別應(yīng)用,若某一權(quán)限ci是非必要的,即該權(quán)限屬于風(fēng)險(xiǎn)樹集合,風(fēng)險(xiǎn)樹的風(fēng)險(xiǎn)權(quán)值Ra定義為3。表達(dá)式為:
IfP(ci)<0.68&&ci?危險(xiǎn)權(quán)限組thenci∈Tr
定義5危險(xiǎn)樹Td:對(duì)于某一類別應(yīng)用,若某一權(quán)限ci是完全不必要的,即該權(quán)限屬于危險(xiǎn)樹集合,危險(xiǎn)樹的風(fēng)險(xiǎn)權(quán)值Ra定義為5。表達(dá)式為:
IfP(ci)<0.68&&ci∈危險(xiǎn)權(quán)限組thenci∈Td
單一權(quán)限所帶來的風(fēng)險(xiǎn)值Wi如下:
(2)
式中:Ra代表權(quán)限風(fēng)險(xiǎn)權(quán)值。
因此,對(duì)于某一測試應(yīng)用,其所申請(qǐng)的系統(tǒng)權(quán)限的風(fēng)險(xiǎn)值Ws如下:
(3)
式中:Rs代表系統(tǒng)權(quán)限在應(yīng)用風(fēng)險(xiǎn)評(píng)估中權(quán)重。
本文對(duì)Android惡意樣本提取權(quán)限特征分析發(fā)現(xiàn),大部分惡意樣本往往是通過其危險(xiǎn)的權(quán)限組合來進(jìn)行惡意行為,如隱私泄露、惡意廣告植入、勒索詐騙等。通過對(duì)惡意應(yīng)用中權(quán)限組合分析,本文從中提取了24組帶有惡意行為的權(quán)限組合,分別歸為4類惡意行為,將24組惡意權(quán)限組構(gòu)建成惡意權(quán)限組集合,如表1所示。
表1 惡意行為權(quán)限組合
由于惡意權(quán)限組所帶來的風(fēng)險(xiǎn)更大,通過表1所列的權(quán)限組,惡意應(yīng)用能輕松實(shí)施惡意行為或泄露用戶隱私,造成巨大損失。本文定義單個(gè)惡意權(quán)限組合的風(fēng)險(xiǎn)值Ra=20,惡意權(quán)限組的風(fēng)險(xiǎn)值計(jì)算如下:
(4)
式中:Wg代表惡意權(quán)限組合風(fēng)險(xiǎn)評(píng)估值,λg代表惡意權(quán)限組合在應(yīng)用風(fēng)險(xiǎn)評(píng)估中權(quán)重。
Android系統(tǒng)中除了本身權(quán)限集,還允許第三方應(yīng)用自定義權(quán)限,通過自定義權(quán)限,第三方應(yīng)用可以允許或限制其他應(yīng)用對(duì)該應(yīng)用程序組件的訪問及通信。以往對(duì)于應(yīng)用風(fēng)險(xiǎn)評(píng)估都僅僅對(duì)系統(tǒng)權(quán)限特征進(jìn)行,忽略自定義權(quán)限。然而除了系統(tǒng)權(quán)限,自定義權(quán)限也容易造成巨大安全隱患,文獻(xiàn)[6]發(fā)現(xiàn)可以利用自定義權(quán)限漏洞實(shí)施組件攻擊,在一些重要應(yīng)用軟件如:社交、購物、地圖類中已經(jīng)廣泛使用。Android系統(tǒng)通過構(gòu)建權(quán)限模型,使得Android應(yīng)用能夠訪問系統(tǒng)中的硬件和軟件資源。同樣的,應(yīng)用之間也會(huì)產(chǎn)生數(shù)據(jù)通信、組件訪問的需求,例如可以通過微信來打開京東購物等動(dòng)作,因此Android系統(tǒng)允許開發(fā)者自定義權(quán)限,實(shí)現(xiàn)與其他應(yīng)用之間的通信訪問。Android系統(tǒng)中對(duì)自定義權(quán)限同樣分為四種保護(hù)等級(jí),分別為:Normal、Dangerous、Signature和SignatureorSystem。本文對(duì)爬取的部分應(yīng)用進(jìn)行自定義權(quán)限提取分析,發(fā)現(xiàn)約有78.6%的應(yīng)用定義了自定義權(quán)限,其中32.5%的自定義權(quán)限保護(hù)等級(jí)為Normal,即其他應(yīng)用只要申請(qǐng)了就可以使用。本文得到的自定義權(quán)限分布情況如表2所示。
表2 自定義權(quán)限保護(hù)等級(jí)分布表
由表2可知:大部分應(yīng)用程序自定義權(quán)限的保護(hù)等級(jí)為Normal和Signature。Normal權(quán)限只要其他應(yīng)用申請(qǐng)就可以使用,在安裝時(shí)系統(tǒng)不會(huì)通知用戶,自動(dòng)授予該應(yīng)用權(quán)限。Signature權(quán)限則要求兩個(gè)應(yīng)用擁有相同私鑰簽名即可自動(dòng)授予權(quán)限無需用戶同意。因此自定義權(quán)限可以輕松繞過用戶授權(quán)頁面,獲取危險(xiǎn)權(quán)限,存在較大的安全隱患。在Android系統(tǒng)中,每個(gè)應(yīng)用都有一個(gè)獨(dú)立的進(jìn)程,互不影響,進(jìn)程之間可以以IPC的方式進(jìn)行數(shù)據(jù)共享,其中四大組件中的Activity、Service、Receiver都支持在intent中通過bundle傳遞數(shù)據(jù)。在自定義權(quán)限中容易出現(xiàn)兩類安全隱患:
(1) 對(duì)于自定義權(quán)限保護(hù)等級(jí)為Normal的應(yīng)用,一旦被不法分子對(duì)其反編譯獲取其自定義權(quán)限名,就可以在其惡意應(yīng)用中申請(qǐng)?jiān)摍?quán)限,進(jìn)而對(duì)該應(yīng)用組件進(jìn)行訪問,實(shí)施入侵。
(2) 由于Android系統(tǒng)不允許在同一物理設(shè)備上兩個(gè)應(yīng)用定義的權(quán)限名稱相同,因此要完成攻擊,開發(fā)者需要開發(fā)兩個(gè)應(yīng)用,其中一個(gè)應(yīng)用使用自定義權(quán)限,另外一個(gè)應(yīng)用程序只需申請(qǐng)?jiān)摍?quán)限,由于兩個(gè)應(yīng)用為同一開發(fā)者開發(fā),私鑰簽名一致,通過intent傳遞隱私數(shù)據(jù),就可以完成攻擊竊取用戶隱私。
自定義權(quán)限的風(fēng)險(xiǎn)必須考慮在內(nèi),才可以更精確地評(píng)估應(yīng)用的風(fēng)險(xiǎn)性。由于大部分應(yīng)用自定義權(quán)限等級(jí)為Normal和Signature,本文僅對(duì)該兩種等級(jí)自定義權(quán)限做風(fēng)險(xiǎn)計(jì)算。編寫Python腳本提取應(yīng)用的自定義權(quán)限,構(gòu)建自定義權(quán)限集合,本文根據(jù)權(quán)限樹中對(duì)應(yīng)的保護(hù)等級(jí)設(shè)置一致的自定義權(quán)限風(fēng)險(xiǎn)值。風(fēng)險(xiǎn)性與權(quán)限樹中的風(fēng)險(xiǎn)性認(rèn)為一致,由于Nromal等級(jí)的自定義權(quán)限風(fēng)險(xiǎn)高于Signature,定義Normal風(fēng)險(xiǎn)值Ra=5,定義Signature的風(fēng)險(xiǎn)值Ra=3,則自定義權(quán)限風(fēng)險(xiǎn)值的計(jì)算如下:
(5)
式中:Wc代表自定義權(quán)限權(quán)重,λc為自定義權(quán)限在應(yīng)用風(fēng)險(xiǎn)中的評(píng)估權(quán)重。
國內(nèi)有許多應(yīng)用市場提供應(yīng)用的下載,本文選取了豌豆莢應(yīng)用市場作為樣本的來源。該應(yīng)用市場對(duì)Android應(yīng)用分類類別多達(dá)十四種,本文選取了其中的影音播放、通信社交、新聞閱讀、手機(jī)美化、攝影圖像以及旅游出行六類應(yīng)用作為實(shí)驗(yàn)樣本分析。通過編寫Python爬蟲程序從豌豆莢應(yīng)用官網(wǎng)爬取了以上六類下載量高、官方評(píng)分高的應(yīng)用200個(gè),選取各類應(yīng)用150個(gè)作為訓(xùn)練集樣本,剩余50個(gè)用作測試集樣本。同時(shí)從VirusShare[13]網(wǎng)站下載了1 266個(gè)惡意樣本,作為惡意樣本集。VirusShare是一個(gè)惡意樣本收集庫,其中包含了大量的Android及PC端的惡意樣本。
Android應(yīng)用是以apk結(jié)尾的文件,其本質(zhì)是一個(gè)zip文件,將后綴名改為zip后進(jìn)行解壓就可以看見文件結(jié)構(gòu),圖1為解壓后的文件。其中AndroidManifest文件為Android應(yīng)用中的重要文件之一,是全局的配置文件。Android應(yīng)用申請(qǐng)及自定義的所有權(quán)限都必須在Manifest文件中進(jìn)行申明,因此提取權(quán)限特征的工作在Manifest文件中進(jìn)行。
圖1 Android應(yīng)用解壓后文件結(jié)構(gòu)
編寫Python程序,提取訓(xùn)練集樣本應(yīng)用申請(qǐng)的所有系統(tǒng)權(quán)限,構(gòu)建權(quán)限集τ,對(duì)每一種權(quán)限計(jì)算其P(ci)值,根據(jù)權(quán)限樹的定義,將權(quán)限集中的每一種權(quán)限映射到對(duì)應(yīng)的權(quán)限樹中,分別構(gòu)建安全樹、風(fēng)險(xiǎn)樹和危險(xiǎn)樹集合。例如對(duì)于影音播放類應(yīng)用,提取到的權(quán)限如圖2所示,由于提取出的權(quán)限集中含有權(quán)限較多,圖中只選取了影音播放類應(yīng)用中申請(qǐng)率為前20的權(quán)限??梢钥吹郊词箤?duì)于部分危險(xiǎn)權(quán)限,影音播放類應(yīng)用的申請(qǐng)也是較高的。
圖2 影音播放類應(yīng)用申請(qǐng)的主要權(quán)限(前20)
對(duì)于系統(tǒng)權(quán)限、惡意權(quán)限組和自定義權(quán)限漏洞所帶來的風(fēng)險(xiǎn)評(píng)估,本文采用了層次分析法來計(jì)算三者的權(quán)重值。層次分析法簡稱AHP方法,是由美國運(yùn)籌學(xué)家匹茨堡大學(xué)教授薩蒂于20世紀(jì)70年代提出,AHP方法將影響決策目標(biāo)的因素進(jìn)行量化分析,來解決多維度復(fù)雜因素影響下的決策方法。
利用層次分析法構(gòu)建評(píng)估風(fēng)險(xiǎn)的因素有:系統(tǒng)權(quán)限、惡意權(quán)限組合和自定義權(quán)限。為了確定各個(gè)因素之間的權(quán)重值,利用一致矩陣法構(gòu)建判斷矩陣,所構(gòu)建矩陣有其風(fēng)險(xiǎn)值確定,編寫MATLAB程序?qū)ε袛嗑仃囘M(jìn)行計(jì)算,歸一化后計(jì)算出:系統(tǒng)權(quán)限風(fēng)險(xiǎn)權(quán)重λs=0.272;惡意權(quán)限組風(fēng)險(xiǎn)權(quán)重λg=0.545;自定義權(quán)限風(fēng)險(xiǎn)權(quán)重λc=0.183。對(duì)該判斷矩陣進(jìn)行一致性驗(yàn)證,CI=0.010 5<0.1,因此說明該判斷矩陣具有滿意的一致性。
對(duì)樣本集應(yīng)用提取權(quán)限特征,構(gòu)建權(quán)限樹集合及惡意權(quán)限組集合,對(duì)剩下的測試集樣本進(jìn)行風(fēng)險(xiǎn)值評(píng)估。編寫Python腳本,提取測試集樣本權(quán)限,對(duì)應(yīng)用的風(fēng)險(xiǎn)評(píng)估將由以下步驟完成:
Step1提取單個(gè)應(yīng)用申請(qǐng)的系統(tǒng)權(quán)限,根據(jù)權(quán)限所屬的權(quán)限樹,計(jì)算系統(tǒng)權(quán)限的風(fēng)險(xiǎn)評(píng)估值。
Step2提取應(yīng)用自定義權(quán)限,根據(jù)自定義權(quán)限的保護(hù)等級(jí),計(jì)算由自定義權(quán)限漏洞所帶來的風(fēng)險(xiǎn)值。
Step3檢測測試集樣本申請(qǐng)的系統(tǒng)權(quán)限中屬于惡意權(quán)限組真子集數(shù)量,計(jì)算由惡意權(quán)限組所帶來的風(fēng)險(xiǎn)評(píng)估值。
由計(jì)算得到的三類因素風(fēng)險(xiǎn)評(píng)估值相加,計(jì)算應(yīng)用最終的風(fēng)險(xiǎn)評(píng)估值,并得出應(yīng)用的風(fēng)險(xiǎn)級(jí)別。圖3展示了對(duì)應(yīng)用風(fēng)險(xiǎn)評(píng)估的整體流程圖。
圖3 應(yīng)用風(fēng)險(xiǎn)評(píng)估流程圖
本文提出的方法中對(duì)樣本應(yīng)用所帶來的風(fēng)險(xiǎn)由三個(gè)因素構(gòu)成:應(yīng)用申請(qǐng)的系統(tǒng)權(quán)限所帶來的風(fēng)險(xiǎn),自定義權(quán)限漏洞所帶來的風(fēng)險(xiǎn)以及惡意權(quán)限組所帶來的風(fēng)險(xiǎn),基于以上三個(gè)因素計(jì)算樣本應(yīng)用的風(fēng)險(xiǎn)評(píng)估值。表3為部分樣本應(yīng)用的風(fēng)險(xiǎn)評(píng)估情況。從表中可看出,不同類別應(yīng)用,其申請(qǐng)的權(quán)限數(shù)量和自定義權(quán)限數(shù)量并不是影響風(fēng)險(xiǎn)值的主要因素,應(yīng)用com.hunantv.imgo與應(yīng)用com.t-encent.qqmusic為同類別應(yīng)用中,申請(qǐng)的權(quán)限數(shù)量與自定義權(quán)限數(shù)量接近時(shí),惡意權(quán)限組對(duì)風(fēng)險(xiǎn)評(píng)估值成為主要因素。而對(duì)于應(yīng)用com.duokan.reader和應(yīng)用com.huangfang.gro-up,其系統(tǒng)權(quán)限數(shù)量相同,而風(fēng)險(xiǎn)評(píng)估值卻不接近,說明了權(quán)限數(shù)量并不決定其風(fēng)險(xiǎn)值,而是由其綜合因素影響。
表3 應(yīng)用程序風(fēng)險(xiǎn)評(píng)估結(jié)果
通過對(duì)測試集樣本應(yīng)用統(tǒng)計(jì)發(fā)現(xiàn),影音播放類應(yīng)用平均申請(qǐng)的系統(tǒng)權(quán)限數(shù)量最多,同樣地,平均風(fēng)險(xiǎn)值也是最高的。在社交通信類應(yīng)用中自定義權(quán)限數(shù)量最多,由此帶來的風(fēng)險(xiǎn)值較多。而在手機(jī)美化類應(yīng)用中發(fā)現(xiàn)該類應(yīng)用申請(qǐng)的惡意權(quán)限組的頻率較高,因此該類應(yīng)用對(duì)Android系統(tǒng)的惡意性概率較大。
Androguard是一個(gè)用Python編寫的Android應(yīng)用靜態(tài)分析工具,該庫中androrisk.py模塊可以對(duì)Android應(yīng)用進(jìn)行風(fēng)險(xiǎn)性評(píng)估,androapkinfo.py模塊可以分析出Android應(yīng)用中的文件類型、權(quán)限、四大組件、是否NDK反射等信息,而androgexf.py模塊則甚至可以生成函數(shù)調(diào)用圖,是分析Android應(yīng)用的強(qiáng)大靜態(tài)分析工具,因此許多研究人員基于Androguard進(jìn)行二次開發(fā),很多提供上傳檢測的網(wǎng)站也是基于該工具進(jìn)行分析。利用Androrisk.py模塊的風(fēng)險(xiǎn)評(píng)估與本文提出的風(fēng)險(xiǎn)評(píng)估策略對(duì)測試集應(yīng)用進(jìn)行比較,表4展示了兩種方法評(píng)估的主要因素及最終風(fēng)險(xiǎn)評(píng)估值。表中各列分別為:應(yīng)用申請(qǐng)的系統(tǒng)權(quán)限數(shù)量(NSP);應(yīng)用自定義權(quán)限數(shù)量(NCP);應(yīng)用含有的惡意權(quán)限組子集數(shù)量(NGP),使用Androrisk.py模塊得到的風(fēng)險(xiǎn)評(píng)估值(RASA);使用本文方法得到的風(fēng)險(xiǎn)評(píng)估值(RGC)。
表4 兩種風(fēng)險(xiǎn)評(píng)估方法比較
從表4實(shí)驗(yàn)結(jié)果對(duì)比可以發(fā)現(xiàn):Andro-irisk.py模塊對(duì)于應(yīng)用的風(fēng)險(xiǎn)評(píng)估只有大致估計(jì),無法更精確地反映應(yīng)用的風(fēng)險(xiǎn)值,與其實(shí)際風(fēng)險(xiǎn)值有較大誤差,而本文提出的方法中對(duì)自定義權(quán)限和惡意權(quán)限組所帶來的風(fēng)險(xiǎn)進(jìn)行了更綜合的評(píng)估,因此反映的應(yīng)用風(fēng)險(xiǎn)評(píng)估值相比Androrisk.py模塊更精確。根據(jù)對(duì)所有類別的測試集應(yīng)用結(jié)果分析,為了使得用戶對(duì)評(píng)估應(yīng)用的風(fēng)險(xiǎn)值進(jìn)一步理解其危險(xiǎn)性,本文將應(yīng)用的風(fēng)險(xiǎn)性分為三個(gè)等級(jí)。對(duì)風(fēng)險(xiǎn)值為[0,30)之間的應(yīng)用,認(rèn)為該應(yīng)用為低風(fēng)險(xiǎn)應(yīng)用,用戶可以安全的安裝,對(duì)風(fēng)險(xiǎn)值為[30,70)之間的應(yīng)用,則認(rèn)為該應(yīng)用為中風(fēng)險(xiǎn)應(yīng)用,用戶對(duì)其權(quán)限授予需要謹(jǐn)慎,對(duì)風(fēng)險(xiǎn)值為[70,100)之間的應(yīng)用,則認(rèn)為該應(yīng)用為高風(fēng)險(xiǎn)應(yīng)用,用戶需要謹(jǐn)慎下載安裝該類應(yīng)用。
本文對(duì)Android應(yīng)用的權(quán)限特征進(jìn)行提取研究,提出了一種基于權(quán)限特征的應(yīng)用風(fēng)險(xiǎn)評(píng)估策略,其中對(duì)Android惡意應(yīng)用及其家族常用權(quán)限組研究,提出了具有極度危險(xiǎn)的惡意權(quán)限組合,并且對(duì)自定義權(quán)限所帶來的風(fēng)險(xiǎn)進(jìn)行良好評(píng)估。該方法對(duì)Android應(yīng)用風(fēng)險(xiǎn)評(píng)估相比Androguard工具檢測精確值更高,對(duì)于眾多的Android應(yīng)用風(fēng)險(xiǎn)評(píng)估檢測提供了一種行之有效的方法,本文的不足之處對(duì)于惡意權(quán)限組合還需要進(jìn)一步分析提取,使得風(fēng)險(xiǎn)評(píng)估更精確。