劉曉明
摘要:目前面向Android系統(tǒng)的攻擊越來越多,因此,分析與檢測Android惡意應用已經(jīng)成為了一個非常重要的研究課題。本-文主要從惡意應用類型,國內外主流檢測技術等方面分析了Android惡意應用的檢測方法研究現(xiàn)狀,并基于當前的檢測技術,提出僅將良性樣本作為訓練集來實現(xiàn)對未知Android應用進行異常檢測的方法,取得了良好的實驗結果。最后,本文分析了Android應用異常檢測方法的發(fā)展趨勢及未來主要研究方向。
關鍵詞:Android系統(tǒng);Android應用;檢測技術;異常檢測
隨著移動互聯(lián)網(wǎng)的快速發(fā)展,移動智能終端用戶的數(shù)量呈現(xiàn)爆炸式的增長。據(jù)市場調研公司IDC最新報告顯示,在2015年年底,全球智能手機出貨量將會超過14億臺,其中運行Android系統(tǒng)的設備將會占到11.5億臺,全球市場占比達到79.4%。同時由9Android系統(tǒng)的開放性,它也成為眾多惡意應用開發(fā)者的活躍地盤。據(jù)獵豹移動安全實驗室日前發(fā)布的《2014 2015中國互聯(lián)網(wǎng)安全研究報告》顯示,2014年全球感染病毒的Android手機計2.8億部,平均每天80萬部Android手機中毒,而中國以近1.2億部手機中毒高居榜首,已成為全球受病毒之害最嚴重的國家。因此,如何對發(fā)布到互聯(lián)網(wǎng)及應用商店的應用程序的安全性進行有效的檢測和評測,無論是對應用市場的監(jiān)管方還是對終端用戶來說都具有非常重要的意義。
本文通過對國內外研究現(xiàn)狀進行分析,對目前主流的惡意應用類型及檢測方法進行深入分析與總結,以期能為相關工作提供參考。同時結合自己的研究成果,提出了一種僅基于良性樣本作為訓練集來實現(xiàn)對未知Android應用進行異常檢測的方法。最后提出了Android應用異常檢測的發(fā)展趨勢及本文未來的主要研究方向。
1 Android平臺下惡意應用的類型
隨著智能手機的廣泛應用,發(fā)布手機應用程序的官方市場和第三方市場上都出現(xiàn)了含有惡意代碼的應用程序,因此,分析與檢測Android惡意應用已經(jīng)成為了一個非常重要的研究課題。但無論何種檢測方法都需要對Android惡意應用類型有深入的了解。Zhou等人根據(jù)惡意應用的樣本來提取每個惡意家族的足跡。通過對現(xiàn)存市場中49個惡意家族共計1260個惡意應用進行靜態(tài)分析,發(fā)現(xiàn)目前Android平臺下的惡意應用主要包括3大類,分別是安裝攻擊、功能觸發(fā)以及惡意負載。
1.1 安裝攻擊
Android平臺下的安裝攻擊式惡意應用,其主要就是將自己偽裝成時下人們常用的各類應用軟件,吸引用戶對其進行下載,這樣就能夠達到快速傳播的目的,當用戶錯誤下載了這類惡意應用,其就會通過重打包、更新包以及偷渡式下載方式對用戶的移動通訊端口進行入侵。其中重打包技術是目前惡意應用開發(fā)者普遍使用的攻擊技術,占研究數(shù)據(jù)的86%。攻擊者從應用市場下載主流應用程序,對其系統(tǒng)進行重新編碼以此隱藏其惡意行為,然后利用應用平臺的開放性,將具有惡意行為的應用重新發(fā)布到應用市場,進而通過用戶的下載安裝實現(xiàn)其盜取用戶隱私、扣取費用等惡意目的;而更新包的方式主要是在用戶安裝過程中提示需要下載更新包,而更新包中就隱藏著惡意編碼,進而對用戶端進行入侵;偷渡式下載主要是在安裝軟件中有部分惡意網(wǎng)站的鏈接,引導用戶對惡意應用進行下載。
1.2 功能觸發(fā)
部分惡意應用通過注冊相關的系統(tǒng)事件使其具有監(jiān)聽功能,當系統(tǒng)自發(fā)或由用戶完成某一操作后,惡意應用便可監(jiān)聽到這一事件,進而執(zhí)行其惡意代碼。如當Android手機開機后,系統(tǒng)就會發(fā)送BOOT_COMPLETED廣播,監(jiān)聽這個廣播就能監(jiān)聽開機。此廣播也因此成為惡意應用開發(fā)者最常利用的監(jiān)聽事件,占所研究數(shù)據(jù)的83.3%。
2 Android平臺下惡意應用的檢測技術
由于第三方市場的開放性,任何人都可以向應用市場提交應用。用戶通過所有不可靠途徑得到的應用程序很有可能被植入了惡意代碼,這些惡意應用可對用戶實施惡意扣費、竊取隱私、系統(tǒng)破壞等惡意行為,嚴重干擾到用戶的正常使用。因此,如何對發(fā)布到互聯(lián)網(wǎng)及應用商店的應用程序的安全性進行有效的檢測和評測,無論是對應用市場的監(jiān)管方還是對終端用戶來說都具有非常重要的意義。
2.1 基于簽名的檢測技術
傳統(tǒng)的基于簽名的檢測技術主要依托于手機軟件的簽名。重點介紹了基于特征碼的惡意應用檢測方法。國外著名的Android惡意應用檢測工具Androguard也是基于簽名的檢測方法。然而最新的研究顯示,通過簡單的程序陷阱便可使這種基于低級語義簽名的檢測技術失去其有效性。在此基礎上,F(xiàn)eng等人提出了Apposcopy檢測技術,該技術首先從控制流和數(shù)據(jù)流兩方面對某一惡意家族進行簽名,所謂控制流即用來顯示應用程序中函數(shù)的控制結構,通過控制流分析可得到應用程序可執(zhí)行的路徑。數(shù)據(jù)流可顯示出敏感信息的流向。
當檢測某一未知應用程序時,Apposcopy通過靜態(tài)分析技術獲得該應用的組件調用圖ICCG和數(shù)據(jù)流圖,通過與GoldDream家族簽名進行匹配得知此應用為GoldDream家族的惡意應用。使用該類檢測方法雖然對具有強制安裝特點的惡意應用的傳播起到了一定程度的限制作用,但該方法不能檢測未知惡意家族的應用。在當前零日攻擊越來越多、越來越普遍的情況下,研究可檢測未知惡意應用的方法變得非常重要。
2.2 基于行為的檢測技術
基于行為的檢測技術可分為基于源代碼分析的靜態(tài)檢測方法和基于行為模擬的動態(tài)檢測方法。(1)靜態(tài)方法主要研究使用反匯編反編譯技術或者在smali中間代碼上運用控制流和數(shù)據(jù)流分析技術來進行惡意應用檢測,優(yōu)點是代碼覆蓋率高。(2)動態(tài)方法是在系統(tǒng)運行過程中收集應用程序的一些行為信息,優(yōu)點是繞過了靜態(tài)方法遇到的代碼混淆和加密等方面的問題。
作者首先從谷歌應用市場收集到良性應用22500個,通過LDA,提取出每個應用的主題,如用map、traffic、route和position來描述航海應用,通過k-means算法進行良性應用的類別劃分,最終得到32種類別。對于每一種類別,CHABADA通過靜態(tài)分析技術提取出該種類別所使用的敏感API,組成特征向量集,而對于該種類別的惡意應用往往會調用一些相對異常的敏感API,如London Restaurants的惡意應用會調用TelephonyManager.getDeviceId(),TelephonyManageLgetLinelNumber等。
3 實驗成果
通過分析國內外研究現(xiàn)狀與主流檢測技術,本文采用了一種只基于良性樣本作為訓練集來實現(xiàn)對未知Android應用進行異常檢測的方法。該異常檢測方法首先收集大量良性應用數(shù)據(jù)集,然后通過靜態(tài)分析技術從權限、組件、代碼等方面提取能夠反映Android應用行為的6000多個特征,最后利用最近鄰(K-NN)機器學習算法建立良性應用行為模型,如果待檢測的應用行為與建立的良性行為模型之間的偏差超過一定閾值,則判斷該應用存在異常惡意行為。大量實驗結果表明K-NN算法在檢測準確率和執(zhí)行效率上都能取得很好的效果。
ROC曲線圖是一種衡量檢測結果的直觀圖,x軸為FPR即誤報率,Y軸為TPR即檢測率,通過ROC曲線圖可直觀反映出檢測率隨誤報率的變化情況。本文通過繪制ROC曲線圖進行算法實驗結果的直觀展示。從圖4可以看出,就檢測效果而言,K-NN算法在誤報率為6%時檢測率達到97%。
4 結語
本文通過分析國內外研究現(xiàn)狀,對惡意應用類型及主流檢測方法進行了深入分析與總結。文中提到的各種檢測方法均能達到一定的檢測效果,但隨著惡意應用的迅速發(fā)展,在零日攻擊越來越多、越來越普遍的情況下,研究可檢測未知惡意應用的方法變得非常重要。因此,在接下來的研究中應不斷進行算法的改進,使得對已知和未知惡意應用的檢測都能取得良好的實驗結果。同時本文基于當前的檢測技術,提出了僅將良性樣本作為訓練集來實現(xiàn)對未知Android應用進行異常檢測的方法,取得了良好的實驗結果,K-NN算法在誤報率6%的情況下能達到97%的檢測率。下一步工作中,將進一步分析不同類型良性應用的行為特征,通過改進算法進行不同類型良性應用的多分類研究。