鄭艷梅,鮮茜
(四川大學計算機學院,成都 610065)
隨著現(xiàn)代網絡通信技術的快速發(fā)展,Android操作系統(tǒng)也成為智能手機和平板電腦最流行的操作系統(tǒng),與其他移動操作系統(tǒng)相比,Android允許用戶從第三方商店下載應用程序,其中很多都沒有任何機制或工具來檢查提交的惡意軟件的應用程序,因此導致了惡意軟件迅速崛起,也導致了Android成為最受移動惡意軟件攻擊的平臺,而這些惡意軟件也變得越來越復雜,以逃避那些最先進的檢測方法。Android惡意軟件的傳播途徑主要通過第三方應用市場、短信、社交網絡、系統(tǒng)ROM等方式。而大多的應用市場又因為缺乏嚴格的檢測手段和相關的安全標準,導致了Android惡意軟件的快速傳播。Android系統(tǒng)容易受到各方攻擊的另一個原因就是其開源性。近年來,Android惡意軟件越來越多,并且具有不同的攻擊方法、數(shù)量大、傳播快、變種多等特點,與此同時針對Android惡意軟件檢測的研究工作也有所發(fā)展。為了維護系統(tǒng)和用戶的安全,An?droid要求應用程序在使用某些系統(tǒng)數(shù)據和功能之前應先請求相關權限。而惡意應用程序比良性應用程序更傾向于請求更多的權限,因此將權限信息作為檢測Android惡意軟件的方法之一。在本文中,首先,通過對Android系統(tǒng)的權限機制的研究,我們確定了提取權限作為檢測的特征;其次,從獲取到的應用程序安裝包中提取其所有權限信息,并通過卡方檢驗去除了冗余權限特征,選取了相關的權限特征;最后根據軟件類別,利用最大后驗估計的方法實現(xiàn)對惡意軟件的檢測。本文提出的Android惡意行為檢測方法先收集了大量真實的惡意軟件樣本,并在此基礎上進行了實驗,最后通過實驗驗證了該方法的有效性。
目前Android惡意軟件檢測主要為動態(tài)檢測和靜態(tài)檢測兩種方法。動態(tài)檢測方法,是指在應用程序運行過程中觀察其行為特征,試圖識別在真實設備上部署和執(zhí)行應用程序后的惡意行為。這些技術要求與應用程序進行一些人工或自動化的交互,因為只有在某些事件發(fā)生后才會觸發(fā)惡意行為。動態(tài)分析可以提供更多的信息,但我們可能不會看到所有的執(zhí)行路徑,而且會消耗大量資源和時間。靜態(tài)分析方法則是在安裝Android應用程序前對其進行安全檢測,先通過反編譯等逆向手段獲取到程序的特征,然后分析其源代碼級的指令序列等。把收集到的數(shù)據重新整合和映射到一起,以便進行全局的分析。而靜態(tài)分析的一個特別的缺點是,它對動態(tài)代碼加載是盲目的,也就是說,靜態(tài)分析不能處理在執(zhí)行過程中下載的部分代碼。相反,動態(tài)分析可以檢查應用程序實際執(zhí)行的所有代碼。與動態(tài)檢測相比,靜態(tài)檢測只需要分析一次就可以查出應用中的可疑行為。且靜態(tài)分析通常更有效,因為它不需要代碼的執(zhí)行。
為了限制應用的行為,Android系統(tǒng)有一套嚴格的權限管理機制。當運行一個Android應用程序時,如電話、短信、藍牙、Wi-Fi等,某些系統(tǒng)功能是不允許被默認調用的。這些功能通常對應于特定的硬件設備。因此我們在AndroidManifest.xml中使用了〈uses-permis?sion〉標簽來向程序授予相應的權限以便使用這些功能。所有必需的權限需要被授予應用程序才能在系統(tǒng)上運行。權限不僅是Android系統(tǒng)為安全而設計的獨特身份,也是為Android應用程序實現(xiàn)某些操作的前提。但實際使用不完全符合設計目標。用戶不會像預期那樣重視敏感權限的系統(tǒng)警告。一方面,當系統(tǒng)發(fā)生警告時用戶決定使用該應用程序,此時用戶將不會放棄此決定,并忽略該警告。另一方面,一般用戶不熟悉權限的真正效果,也不知道敏感權限可能帶來的危害。所有上述因素導致盡管系統(tǒng)通知惡意軟件仍然被利用的嚴重后果。因此,判斷用戶是否選擇是不合理和不切實際的。一方面,大多數(shù)用戶沒有相關的系統(tǒng)安全知識;另一方面,用戶更關心App的實際功能,而不是潛在的威脅。文獻[3]中Yajin Zhou建立了一個Android惡意軟件家族的數(shù)據集,其中超過了1200種惡意軟件樣本。并且比較了1260個惡意軟件樣本和良性軟件樣本的使用權限差異,通過分析發(fā)現(xiàn),惡意應用與良性軟件相比更傾向于請求以下權限:SMS相關權限,例如WRITE_SMS,READ_SMS,SEND_SMS,RE?CEIVE_SMS,RECEIVE_BOOT_COMPLETED和CHANGE_WIFI_STATE等。同時,惡意應用明顯比良性應用請求更多的權限。惡意軟件和一般軟件的重要區(qū)別也是我們選擇權限為特征的原因。我們考慮使用權限有兩個原因:應用程序通常需要那些實際上不需要的權限,而使用權限可以為Android惡意軟件檢測提供有用的信息。
對于惡意軟件的檢測技術研究,F(xiàn)eng等人開發(fā)了Appopscopy,這是一種基于語義的Android簽名檢測策略。在這種方法中,為每個惡意軟件家族創(chuàng)建通用簽名。而簽名匹配是基于控制流屬性的內部組件調用圖實現(xiàn)的。除此之外,它還使用了靜態(tài)污染分析來提高結果的準確性。然而,這種方法在代碼混淆和動態(tài)代碼加載方面似乎相當薄弱。文獻[7]中Andrew W-alen?stein等人基于程序結構的特征選擇來進行惡意軟件分析。文中通過選擇所有類的方法,發(fā)現(xiàn)潛在的接受廣播事件的組件,這些是接受組件的入口點。如果一個接受組件在程序剩余部分是孤立的,那么這個組件被標記為可疑。通過在程序依賴圖(PDG)進行網絡中心度量來對孤立的接收組件進行排序。Aphonso提出了一種主要依靠系統(tǒng)調用頻率和API調用的動態(tài)分析技術。這種方法的主要缺點是,它只能在應用程序滿足某些API級別的情況下檢測惡意軟件。Blsing等人提出了一個Android應用程序沙箱(AAS),它使用靜態(tài)和動態(tài)分析Android應用程序來自動檢測可疑的應用程序。對于靜態(tài)分析部分,代碼是反編譯的,有五種不同類型的模式是匹配的:(i)Java本機接口使用、(ii)反射、(iii)生成子進程、(iv)服務和進程間通信使用以及(v)運行時請求的權限。Apvrille和Strazzere采用了基于靜態(tài)分析的Android惡意軟件檢測的啟發(fā)式方法。他們的啟發(fā)式引擎使用了39種不同的標記,這些標記是基于由惡意軟件作者在他們的代碼中常用的技術計算出來的。然后,引擎輸出一個風險評分,以突出最可能的惡意樣本。貝葉斯分類法是一種比較成熟的機器學習算法,其模型被廣泛應用于多個方面,且均有很好的效果。貝葉斯分類器主要分為樸素貝葉斯和貝葉斯網絡分類兩種,而在目前的研究中,將樸素貝葉斯方法用于Android惡意軟件的檢測已成為研究的主要方向,所以本文利用樸素貝葉斯方法對Android應用惡意行為檢測進行了研究。
Android-SDK(Software Development Kit)工具包下的 AAPT(Android Assert Packaging Tool)工具,可以解包APK格式軟件,通過命令:aaptd permissions可抽取其中的權限信息并可進行單獨存儲。本文先是將獲取到的應用程序安裝包全部放到本地文件夾下,然后編寫Java程序來獲取該文件夾下的各個安裝包,并利用Java程序調動并執(zhí)行AAPT工具,再通過權限獲取命令批量獲取到各個應用程序的權限信息并存放到指定本地文件中,然后開始特征預處理工作,抽取關鍵權限特征和去除冗余權限屬性。
本文通過卡方檢驗來獲得軟件的惡意傾向相關性,然后根據獲得的相關性過濾掉其中低相關的那部分權限特征??ǚ綑z驗是用途非常廣的一種假設檢驗方法,它在分類資料統(tǒng)計推斷中的應用,分為成組比較和個別比較兩類,通過卡方檢驗公式可以快速獲得兩個成分的相關性。然而卡方檢驗的設計思想中對于樣本特征只統(tǒng)計樣本中的有無特征,不考慮出現(xiàn)計次數(shù),即“低頻缺陷問題”,相關性的計算會受到影響。而每條權限信息在Android軟件的權限聲明信息中要么出現(xiàn)一次要么不出現(xiàn),正好避開了“低頻缺陷問題”,因此卡方檢驗適用于該應用場景。其中四格卡方檢驗的公式如下:
式中:a、b、c、d代表兩個構成形成的 4種比較;N表示總的頻數(shù),即a、b、c、d之和。這里把是否是惡意軟件和是否含有該權限作為兩個構成,兩兩組合,統(tǒng)計可得 a、b、c、d.利用式(1)Android的 134個權限依次計算獲得卡方值χ2i,根據檢驗水準α(默認值0.05)查找卡方界值表獲得臨界值與其比較,如果查表值小于卡方值該權限視為冗余權限予以去除。經過上述處理,權限特征集合得到初步降維,獲得權限特征集合T。
基于貝葉斯定理的貝葉斯算法是一類簡單常用的分類算法,有嚴謹?shù)臄?shù)學理論作支撐。它是在假定所有待分類項的各個屬性都相互獨立的時候構造出來的一種分類算法,因此稱為樸素的,即樸素貝葉斯算法。
基本思想是:先求出在某一待分類項出現(xiàn)的情況下各類別出現(xiàn)的概率,然后將概率最大的分類項作為該類別。對樸素貝葉斯算法定義如下:
1、設為一個待分類項,而每個a為x的一個特征屬性。
最大后驗估計(Maximum A Posteriori,MAP)可以理解為當先驗概率p($)為均勻分布時的MAP估計器。它與最大似然估計相比,不同之處在于:最大后驗估計融入了要估計量的先驗分布在其中,可看做是規(guī)則化的最大似然估計。我們在估計過程中先將目標函數(shù)作為后驗概率的似然函數(shù),然后利用先驗概率和樸素貝葉斯定理得到其后驗概率,最后利用極大思想求出該似然函數(shù)最大時的參數(shù)值,即MAP的目標結果。其公式為:
其中:(1)vMAP為最可能的分類,V為目標屬性取值集合(此處為{0,1},1代表是正常程序,0代表是惡意程序),vj為目標屬性(j)的取值,a1,a2,……an為樣例的特征屬性。
(2)估計P(vj)只需要計算每個目標值出現(xiàn)在訓練樣例中的頻率即可其中n為權限特征集合T總樣本數(shù)量各權限總數(shù)。
(4)必須要一個非常大的樣例空間才可以,但這不現(xiàn)實。基于一個簡單的假定:若屬性間在給定目標值時相互獨立,有(文獻[12]在數(shù)學角度上說明了樸素貝葉斯能有效分類的原因以及樸素貝葉斯假設的合理性。項也可根據訓練數(shù)據上出現(xiàn)的頻率得出。代入上式:
便可得到最可能的分類預測。
在實際應用中,并不是所有申請了惡意權限組合的應用都是惡意應用,如一個天氣預報App就需要獲取ACCESS_FINE_LOCATION+INTERNET或ACCESS_COARSE_LOCATION+INTERNET這些惡意權限組合,它們可以給用戶自動提供本地天氣預報;如果一味按照惡意權限組合去判斷一個應用是否是惡意應用,則會造成很多誤報。因此,我們對于不同的Android應用程序類別提出了一種基于權限信息的惡意軟件檢測的方法。該方法的設計思想為:首先根據Google Play(因為谷歌官方審核相對比較嚴格,所以本文所選取的正常應用均是從Google Play中進行下載的)對An?droid應用的分類,從每個類別中各取100個非惡意應用作為實驗樣本,再從VirusShare(VirusShare是一個龐大的病毒庫,其收集了被各大殺毒中心認定為病毒的病毒樣本,也包含Android系統(tǒng)上竊取用戶隱私的惡意應用)中分別獲取與各非惡意軟件類別對應的100個惡意軟件,然后編寫Java程序來利用AAPT工具,解包APK格式軟件,抽取其中的權限信息單獨存儲。然后開始對特征進行預處理,在抽取關鍵權限特征的過程中刪減其中冗余的權限特征。之后將上述的正常軟件和惡意軟件各抽取了50個分為一組,并在這些樣本中隨機抽取3組數(shù)據(將其序號編為1、2、3),在未參與訓練的新樣本中隨機抽取3組數(shù)據(序號為4、5、6)進行檢測,然后計算貝葉斯后驗概率。最后通過最大后驗估計公式(2)比較其屬于正常軟件和惡意軟件的概率值來得到軟件檢測結果。整個實驗流程如圖1。
圖1 惡意軟件檢測流程
實驗采用正常應用和惡意應用各50個為一組,共6組來作為實驗數(shù)據。限于篇幅,此處僅列出了常用的四類軟件(工具、財務、健康與健身、娛樂)的實驗結果,如下列各表所示。
表1 工具類實驗結果
表2 財務類實驗結果
表3 健康與健身類實驗結果
表4 娛樂類實驗結果
本文先分析介紹了Android系統(tǒng)的權限機制以及Android權限的特點,在去除冗余權限信息的過程中選取了Android權限作為特征,然后利用樸素貝葉斯算法進行了分類,最終形成了一個初步的Android惡意軟件判斷方法。此方案在惡意軟件檢測的應用過程中簡單易施行,且檢測效果良好,速度快,適合于對惡意軟件的惡意傾向進行初步檢測,再結合已有的動態(tài)分析方法還可進一步提高其對惡意軟件檢測的準確率。在將來工作中將完善Android手機安全機制,可以利用工具Monkey Runner來實現(xiàn)對軟件動態(tài)行為的獲取,通過動態(tài)檢測和靜態(tài)檢測相結合來進行分析,再使用其他機器學習技術來評估組合特征集,以此來有效提高檢測的準確率。
參考文獻:
[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]文偉平,梅瑞,寧戈,等.惡意軟件檢測技術分析和應用研究[J].通信學報,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.