鄭艷梅,鮮茜
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)
隨著現(xiàn)代網(wǎng)絡(luò)通信技術(shù)的快速發(fā)展,Android操作系統(tǒng)也成為智能手機(jī)和平板電腦最流行的操作系統(tǒng),與其他移動操作系統(tǒng)相比,Android允許用戶從第三方商店下載應(yīng)用程序,其中很多都沒有任何機(jī)制或工具來檢查提交的惡意軟件的應(yīng)用程序,因此導(dǎo)致了惡意軟件迅速崛起,也導(dǎo)致了Android成為最受移動惡意軟件攻擊的平臺,而這些惡意軟件也變得越來越復(fù)雜,以逃避那些最先進(jìn)的檢測方法。Android惡意軟件的傳播途徑主要通過第三方應(yīng)用市場、短信、社交網(wǎng)絡(luò)、系統(tǒng)ROM等方式。而大多的應(yīng)用市場又因?yàn)槿狈?yán)格的檢測手段和相關(guān)的安全標(biāo)準(zhǔn),導(dǎo)致了Android惡意軟件的快速傳播。Android系統(tǒng)容易受到各方攻擊的另一個原因就是其開源性。近年來,Android惡意軟件越來越多,并且具有不同的攻擊方法、數(shù)量大、傳播快、變種多等特點(diǎn),與此同時(shí)針對Android惡意軟件檢測的研究工作也有所發(fā)展。為了維護(hù)系統(tǒng)和用戶的安全,An?droid要求應(yīng)用程序在使用某些系統(tǒng)數(shù)據(jù)和功能之前應(yīng)先請求相關(guān)權(quán)限。而惡意應(yīng)用程序比良性應(yīng)用程序更傾向于請求更多的權(quán)限,因此將權(quán)限信息作為檢測Android惡意軟件的方法之一。在本文中,首先,通過對Android系統(tǒng)的權(quán)限機(jī)制的研究,我們確定了提取權(quán)限作為檢測的特征;其次,從獲取到的應(yīng)用程序安裝包中提取其所有權(quán)限信息,并通過卡方檢驗(yàn)去除了冗余權(quán)限特征,選取了相關(guān)的權(quán)限特征;最后根據(jù)軟件類別,利用最大后驗(yàn)估計(jì)的方法實(shí)現(xiàn)對惡意軟件的檢測。本文提出的Android惡意行為檢測方法先收集了大量真實(shí)的惡意軟件樣本,并在此基礎(chǔ)上進(jìn)行了實(shí)驗(yàn),最后通過實(shí)驗(yàn)驗(yàn)證了該方法的有效性。
目前Android惡意軟件檢測主要為動態(tài)檢測和靜態(tài)檢測兩種方法。動態(tài)檢測方法,是指在應(yīng)用程序運(yùn)行過程中觀察其行為特征,試圖識別在真實(shí)設(shè)備上部署和執(zhí)行應(yīng)用程序后的惡意行為。這些技術(shù)要求與應(yīng)用程序進(jìn)行一些人工或自動化的交互,因?yàn)橹挥性谀承┦录l(fā)生后才會觸發(fā)惡意行為。動態(tài)分析可以提供更多的信息,但我們可能不會看到所有的執(zhí)行路徑,而且會消耗大量資源和時(shí)間。靜態(tài)分析方法則是在安裝Android應(yīng)用程序前對其進(jìn)行安全檢測,先通過反編譯等逆向手段獲取到程序的特征,然后分析其源代碼級的指令序列等。把收集到的數(shù)據(jù)重新整合和映射到一起,以便進(jìn)行全局的分析。而靜態(tài)分析的一個特別的缺點(diǎn)是,它對動態(tài)代碼加載是盲目的,也就是說,靜態(tài)分析不能處理在執(zhí)行過程中下載的部分代碼。相反,動態(tài)分析可以檢查應(yīng)用程序?qū)嶋H執(zhí)行的所有代碼。與動態(tài)檢測相比,靜態(tài)檢測只需要分析一次就可以查出應(yīng)用中的可疑行為。且靜態(tài)分析通常更有效,因?yàn)樗恍枰a的執(zhí)行。
為了限制應(yīng)用的行為,Android系統(tǒng)有一套嚴(yán)格的權(quán)限管理機(jī)制。當(dāng)運(yùn)行一個Android應(yīng)用程序時(shí),如電話、短信、藍(lán)牙、Wi-Fi等,某些系統(tǒng)功能是不允許被默認(rèn)調(diào)用的。這些功能通常對應(yīng)于特定的硬件設(shè)備。因此我們在AndroidManifest.xml中使用了〈uses-permis?sion〉標(biāo)簽來向程序授予相應(yīng)的權(quán)限以便使用這些功能。所有必需的權(quán)限需要被授予應(yīng)用程序才能在系統(tǒng)上運(yùn)行。權(quán)限不僅是Android系統(tǒng)為安全而設(shè)計(jì)的獨(dú)特身份,也是為Android應(yīng)用程序?qū)崿F(xiàn)某些操作的前提。但實(shí)際使用不完全符合設(shè)計(jì)目標(biāo)。用戶不會像預(yù)期那樣重視敏感權(quán)限的系統(tǒng)警告。一方面,當(dāng)系統(tǒng)發(fā)生警告時(shí)用戶決定使用該應(yīng)用程序,此時(shí)用戶將不會放棄此決定,并忽略該警告。另一方面,一般用戶不熟悉權(quán)限的真正效果,也不知道敏感權(quán)限可能帶來的危害。所有上述因素導(dǎo)致盡管系統(tǒng)通知惡意軟件仍然被利用的嚴(yán)重后果。因此,判斷用戶是否選擇是不合理和不切實(shí)際的。一方面,大多數(shù)用戶沒有相關(guān)的系統(tǒng)安全知識;另一方面,用戶更關(guān)心App的實(shí)際功能,而不是潛在的威脅。文獻(xiàn)[3]中Yajin Zhou建立了一個Android惡意軟件家族的數(shù)據(jù)集,其中超過了1200種惡意軟件樣本。并且比較了1260個惡意軟件樣本和良性軟件樣本的使用權(quán)限差異,通過分析發(fā)現(xiàn),惡意應(yīng)用與良性軟件相比更傾向于請求以下權(quán)限:SMS相關(guān)權(quán)限,例如WRITE_SMS,READ_SMS,SEND_SMS,RE?CEIVE_SMS,RECEIVE_BOOT_COMPLETED和CHANGE_WIFI_STATE等。同時(shí),惡意應(yīng)用明顯比良性應(yīng)用請求更多的權(quán)限。惡意軟件和一般軟件的重要區(qū)別也是我們選擇權(quán)限為特征的原因。我們考慮使用權(quán)限有兩個原因:應(yīng)用程序通常需要那些實(shí)際上不需要的權(quán)限,而使用權(quán)限可以為Android惡意軟件檢測提供有用的信息。
對于惡意軟件的檢測技術(shù)研究,F(xiàn)eng等人開發(fā)了Appopscopy,這是一種基于語義的Android簽名檢測策略。在這種方法中,為每個惡意軟件家族創(chuàng)建通用簽名。而簽名匹配是基于控制流屬性的內(nèi)部組件調(diào)用圖實(shí)現(xiàn)的。除此之外,它還使用了靜態(tài)污染分析來提高結(jié)果的準(zhǔn)確性。然而,這種方法在代碼混淆和動態(tài)代碼加載方面似乎相當(dāng)薄弱。文獻(xiàn)[7]中Andrew W-alen?stein等人基于程序結(jié)構(gòu)的特征選擇來進(jìn)行惡意軟件分析。文中通過選擇所有類的方法,發(fā)現(xiàn)潛在的接受廣播事件的組件,這些是接受組件的入口點(diǎn)。如果一個接受組件在程序剩余部分是孤立的,那么這個組件被標(biāo)記為可疑。通過在程序依賴圖(PDG)進(jìn)行網(wǎng)絡(luò)中心度量來對孤立的接收組件進(jìn)行排序。Aphonso提出了一種主要依靠系統(tǒng)調(diào)用頻率和API調(diào)用的動態(tài)分析技術(shù)。這種方法的主要缺點(diǎn)是,它只能在應(yīng)用程序滿足某些API級別的情況下檢測惡意軟件。Blsing等人提出了一個Android應(yīng)用程序沙箱(AAS),它使用靜態(tài)和動態(tài)分析Android應(yīng)用程序來自動檢測可疑的應(yīng)用程序。對于靜態(tài)分析部分,代碼是反編譯的,有五種不同類型的模式是匹配的:(i)Java本機(jī)接口使用、(ii)反射、(iii)生成子進(jìn)程、(iv)服務(wù)和進(jìn)程間通信使用以及(v)運(yùn)行時(shí)請求的權(quán)限。Apvrille和Strazzere采用了基于靜態(tài)分析的Android惡意軟件檢測的啟發(fā)式方法。他們的啟發(fā)式引擎使用了39種不同的標(biāo)記,這些標(biāo)記是基于由惡意軟件作者在他們的代碼中常用的技術(shù)計(jì)算出來的。然后,引擎輸出一個風(fēng)險(xiǎn)評分,以突出最可能的惡意樣本。貝葉斯分類法是一種比較成熟的機(jī)器學(xué)習(xí)算法,其模型被廣泛應(yīng)用于多個方面,且均有很好的效果。貝葉斯分類器主要分為樸素貝葉斯和貝葉斯網(wǎng)絡(luò)分類兩種,而在目前的研究中,將樸素貝葉斯方法用于Android惡意軟件的檢測已成為研究的主要方向,所以本文利用樸素貝葉斯方法對Android應(yīng)用惡意行為檢測進(jìn)行了研究。
Android-SDK(Software Development Kit)工具包下的 AAPT(Android Assert Packaging Tool)工具,可以解包APK格式軟件,通過命令:aaptd permissions可抽取其中的權(quán)限信息并可進(jìn)行單獨(dú)存儲。本文先是將獲取到的應(yīng)用程序安裝包全部放到本地文件夾下,然后編寫Java程序來獲取該文件夾下的各個安裝包,并利用Java程序調(diào)動并執(zhí)行AAPT工具,再通過權(quán)限獲取命令批量獲取到各個應(yīng)用程序的權(quán)限信息并存放到指定本地文件中,然后開始特征預(yù)處理工作,抽取關(guān)鍵權(quán)限特征和去除冗余權(quán)限屬性。
本文通過卡方檢驗(yàn)來獲得軟件的惡意傾向相關(guān)性,然后根據(jù)獲得的相關(guān)性過濾掉其中低相關(guān)的那部分權(quán)限特征??ǚ綑z驗(yàn)是用途非常廣的一種假設(shè)檢驗(yàn)方法,它在分類資料統(tǒng)計(jì)推斷中的應(yīng)用,分為成組比較和個別比較兩類,通過卡方檢驗(yàn)公式可以快速獲得兩個成分的相關(guān)性。然而卡方檢驗(yàn)的設(shè)計(jì)思想中對于樣本特征只統(tǒng)計(jì)樣本中的有無特征,不考慮出現(xiàn)計(jì)次數(shù),即“低頻缺陷問題”,相關(guān)性的計(jì)算會受到影響。而每條權(quán)限信息在Android軟件的權(quán)限聲明信息中要么出現(xiàn)一次要么不出現(xiàn),正好避開了“低頻缺陷問題”,因此卡方檢驗(yàn)適用于該應(yīng)用場景。其中四格卡方檢驗(yàn)的公式如下:
式中:a、b、c、d代表兩個構(gòu)成形成的 4種比較;N表示總的頻數(shù),即a、b、c、d之和。這里把是否是惡意軟件和是否含有該權(quán)限作為兩個構(gòu)成,兩兩組合,統(tǒng)計(jì)可得 a、b、c、d.利用式(1)Android的 134個權(quán)限依次計(jì)算獲得卡方值χ2i,根據(jù)檢驗(yàn)水準(zhǔn)α(默認(rèn)值0.05)查找卡方界值表獲得臨界值與其比較,如果查表值小于卡方值該權(quán)限視為冗余權(quán)限予以去除。經(jīng)過上述處理,權(quán)限特征集合得到初步降維,獲得權(quán)限特征集合T。
基于貝葉斯定理的貝葉斯算法是一類簡單常用的分類算法,有嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)理論作支撐。它是在假定所有待分類項(xiàng)的各個屬性都相互獨(dú)立的時(shí)候構(gòu)造出來的一種分類算法,因此稱為樸素的,即樸素貝葉斯算法。
基本思想是:先求出在某一待分類項(xiàng)出現(xiàn)的情況下各類別出現(xiàn)的概率,然后將概率最大的分類項(xiàng)作為該類別。對樸素貝葉斯算法定義如下:
1、設(shè)為一個待分類項(xiàng),而每個a為x的一個特征屬性。
最大后驗(yàn)估計(jì)(Maximum A Posteriori,MAP)可以理解為當(dāng)先驗(yàn)概率p($)為均勻分布時(shí)的MAP估計(jì)器。它與最大似然估計(jì)相比,不同之處在于:最大后驗(yàn)估計(jì)融入了要估計(jì)量的先驗(yàn)分布在其中,可看做是規(guī)則化的最大似然估計(jì)。我們在估計(jì)過程中先將目標(biāo)函數(shù)作為后驗(yàn)概率的似然函數(shù),然后利用先驗(yàn)概率和樸素貝葉斯定理得到其后驗(yàn)概率,最后利用極大思想求出該似然函數(shù)最大時(shí)的參數(shù)值,即MAP的目標(biāo)結(jié)果。其公式為:
其中:(1)vMAP為最可能的分類,V為目標(biāo)屬性取值集合(此處為{0,1},1代表是正常程序,0代表是惡意程序),vj為目標(biāo)屬性(j)的取值,a1,a2,……an為樣例的特征屬性。
(2)估計(jì)P(vj)只需要計(jì)算每個目標(biāo)值出現(xiàn)在訓(xùn)練樣例中的頻率即可其中n為權(quán)限特征集合T總樣本數(shù)量各權(quán)限總數(shù)。
(4)必須要一個非常大的樣例空間才可以,但這不現(xiàn)實(shí)。基于一個簡單的假定:若屬性間在給定目標(biāo)值時(shí)相互獨(dú)立,有(文獻(xiàn)[12]在數(shù)學(xué)角度上說明了樸素貝葉斯能有效分類的原因以及樸素貝葉斯假設(shè)的合理性。項(xiàng)也可根據(jù)訓(xùn)練數(shù)據(jù)上出現(xiàn)的頻率得出。代入上式:
便可得到最可能的分類預(yù)測。
在實(shí)際應(yīng)用中,并不是所有申請了惡意權(quán)限組合的應(yīng)用都是惡意應(yīng)用,如一個天氣預(yù)報(bào)App就需要獲取ACCESS_FINE_LOCATION+INTERNET或ACCESS_COARSE_LOCATION+INTERNET這些惡意權(quán)限組合,它們可以給用戶自動提供本地天氣預(yù)報(bào);如果一味按照惡意權(quán)限組合去判斷一個應(yīng)用是否是惡意應(yīng)用,則會造成很多誤報(bào)。因此,我們對于不同的Android應(yīng)用程序類別提出了一種基于權(quán)限信息的惡意軟件檢測的方法。該方法的設(shè)計(jì)思想為:首先根據(jù)Google Play(因?yàn)楣雀韫俜綄徍讼鄬Ρ容^嚴(yán)格,所以本文所選取的正常應(yīng)用均是從Google Play中進(jìn)行下載的)對An?droid應(yīng)用的分類,從每個類別中各取100個非惡意應(yīng)用作為實(shí)驗(yàn)樣本,再從VirusShare(VirusShare是一個龐大的病毒庫,其收集了被各大殺毒中心認(rèn)定為病毒的病毒樣本,也包含Android系統(tǒng)上竊取用戶隱私的惡意應(yīng)用)中分別獲取與各非惡意軟件類別對應(yīng)的100個惡意軟件,然后編寫Java程序來利用AAPT工具,解包APK格式軟件,抽取其中的權(quán)限信息單獨(dú)存儲。然后開始對特征進(jìn)行預(yù)處理,在抽取關(guān)鍵權(quán)限特征的過程中刪減其中冗余的權(quán)限特征。之后將上述的正常軟件和惡意軟件各抽取了50個分為一組,并在這些樣本中隨機(jī)抽取3組數(shù)據(jù)(將其序號編為1、2、3),在未參與訓(xùn)練的新樣本中隨機(jī)抽取3組數(shù)據(jù)(序號為4、5、6)進(jìn)行檢測,然后計(jì)算貝葉斯后驗(yàn)概率。最后通過最大后驗(yàn)估計(jì)公式(2)比較其屬于正常軟件和惡意軟件的概率值來得到軟件檢測結(jié)果。整個實(shí)驗(yàn)流程如圖1。
圖1 惡意軟件檢測流程
實(shí)驗(yàn)采用正常應(yīng)用和惡意應(yīng)用各50個為一組,共6組來作為實(shí)驗(yàn)數(shù)據(jù)。限于篇幅,此處僅列出了常用的四類軟件(工具、財(cái)務(wù)、健康與健身、娛樂)的實(shí)驗(yàn)結(jié)果,如下列各表所示。
表1 工具類實(shí)驗(yàn)結(jié)果
表2 財(cái)務(wù)類實(shí)驗(yàn)結(jié)果
表3 健康與健身類實(shí)驗(yàn)結(jié)果
表4 娛樂類實(shí)驗(yàn)結(jié)果
本文先分析介紹了Android系統(tǒng)的權(quán)限機(jī)制以及Android權(quán)限的特點(diǎn),在去除冗余權(quán)限信息的過程中選取了Android權(quán)限作為特征,然后利用樸素貝葉斯算法進(jìn)行了分類,最終形成了一個初步的Android惡意軟件判斷方法。此方案在惡意軟件檢測的應(yīng)用過程中簡單易施行,且檢測效果良好,速度快,適合于對惡意軟件的惡意傾向進(jìn)行初步檢測,再結(jié)合已有的動態(tài)分析方法還可進(jìn)一步提高其對惡意軟件檢測的準(zhǔn)確率。在將來工作中將完善Android手機(jī)安全機(jī)制,可以利用工具M(jìn)onkey Runner來實(shí)現(xiàn)對軟件動態(tài)行為的獲取,通過動態(tài)檢測和靜態(tài)檢測相結(jié)合來進(jìn)行分析,再使用其他機(jī)器學(xué)習(xí)技術(shù)來評估組合特征集,以此來有效提高檢測的準(zhǔn)確率。
參考文獻(xiàn):
[1]Song Jie,Party Li Cheng,Guo Chao,Zhao Meng.Security Mechanisms Analysis and Appliction Research of Android Mobile Platform[J].Computer Technology and Development,2010,20(6):152-155.
[2]Liao Ming-Hua,Zheng Liming.Android Security Analysis and Solutions Study[J].Science Technology and Engineering,2011,11(26):6350-6355.
[3]Ya-jin Zhou,Xu-xian Jiang.Dissecting Android Malware:Characterization and Evolution.North Carolina State University.Security and Privacy(SP)[J].2012IEEE.
[4]A.p.Felt,E.Chin,S.Hanna,D.Song,D.Wagner.Android Permissions Demystified.Proc.18th ACM conference on Computer and Communications security,ACM,2011,pp.627-638.
[5]V.Moonsamy,J.Rong,S.Liu.Mining Permission Patterns for Contrasting Clean and Malicious Android Applications.Future Generation Computer Systems,2013.
[6]Blasing Thomas,BatyukLeonid,SchmidtAubrey-Derrick,CamtepeSeyit Ahmet,Albayrak Sahin.An Android Application Sandbox System for Suspicious.Software Detection[C].IEEE Conference Publications,2010:55-62.
[7]Andrew W|alenstein,Luke Deshotels,Anm Lakhotia.Program Structure.Based Feature Selection for Android Malware Analysis.In Security and Privacy in Mobile Information and Communical[ion Systems2012.Springer.P51-52.
[8]Borja Sanz,Igor Santos,Carlos Laorden,eta1.Puma:Permission usage to Detect Mal ware in Android[C].Intemational Joint Conference CISIS'1 2.ICEUTE 1 2.SOCO'1 2 Special Sessions.Springer,2013:289-298.
[9]文偉平,梅瑞,寧戈,等.惡意軟件檢測技術(shù)分析和應(yīng)用研究[J].通信學(xué)報(bào),2014(8):78-86
[10]Chiang H-S,TsaurW.Mobile Malw are Behavioral Analysis and Preventive Strategy Using Ontology[C].Proceedings of the Social Computing(SocialCom),2010 IEEE Second International Conference on,2010:1080-1085.
[11]Enck W,Ongtang M,McDaniel P.On Lightweight Mobile Phone Application Certification[C].Proceedings of the Proceedings of the 16th ACM Conference on Computer and Communications Security,2009:235-245.
[12]HARRY ZHANG.The Optimality of Naive Bayes[EB/OL].University of New Brunswick.http://www.aaai.org/Papers/FLAIRS/2004/Flairs04-097.pdf.