劉 瑋 李蜀瑜
1(重慶師范大學(xué)涉外商貿(mào)學(xué)院數(shù)學(xué)與計(jì)算機(jī)學(xué)院 重慶 410520)2(陜西師范大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 陜西 西安 710062)
隨著互聯(lián)網(wǎng)與智能手機(jī)技術(shù)的飛速發(fā)展,各類手機(jī)應(yīng)用應(yīng)運(yùn)而生,深刻地影響著人們的生活。安卓系統(tǒng)由于其開放、自由的特性,得到了開放手機(jī)聯(lián)盟的大力支持,已成為全球智能移動(dòng)設(shè)備中市場占有率最高的操作系統(tǒng)。
Android是基于Linux內(nèi)核的操作系統(tǒng),安卓平臺(tái)的開放性降低了安卓應(yīng)用開發(fā)的難度,任何對安卓開發(fā)感興趣的人員都可通過簡單的注冊成為安卓市場的一員,并自由發(fā)布自己的應(yīng)用,這導(dǎo)致安卓應(yīng)用的安全性大大降低。近年來,關(guān)于Android應(yīng)用的安全性問題層出不窮,受到人們的廣泛關(guān)注。許多學(xué)者分別從應(yīng)用程序靜態(tài)代碼檢測、應(yīng)用程序執(zhí)行流程及應(yīng)用機(jī)器學(xué)習(xí)的自動(dòng)化檢測等方法對此問題進(jìn)行了研究[1]。本文基于這三種方法,提出了一種基于機(jī)器學(xué)習(xí)的Android檢測方法框架,可為Android應(yīng)用的安全性檢測提供參考。
靜態(tài)分析是在不執(zhí)行Android應(yīng)用的情況下檢測出應(yīng)用程序中惡意特征的方法。現(xiàn)有的靜態(tài)分析方法主要集中在對不同類型惡意軟件進(jìn)行分類和檢測上。文獻(xiàn)[2]提出了一種基于特征樹的靜態(tài)分析方法,該方法通過將Android應(yīng)用調(diào)用API信息構(gòu)造成特征樹,并設(shè)計(jì)一種比較算法對樹的相似度進(jìn)行分析,以此實(shí)現(xiàn)對Android應(yīng)用的分類并檢測惡意應(yīng)用。文獻(xiàn)[3]提出了一種基于貝葉斯分類的惡意軟件檢測方法,該方法采用逆向工程對Android應(yīng)用進(jìn)行靜態(tài)分析。文獻(xiàn)[4]提出一種執(zhí)行靜態(tài)污染分析的方法,通過解析移動(dòng)應(yīng)用程序并構(gòu)造控制流圖(CFG)分析源自敏感源的路徑,應(yīng)用數(shù)據(jù)流分析器檢查從源程序發(fā)送到遠(yuǎn)程服務(wù)器的任何敏感數(shù)據(jù),而不通知用戶。文獻(xiàn)[5]使用反編譯程序從Android應(yīng)用程序的安裝程序生成Java源代碼,并應(yīng)用靜態(tài)代碼分析套件評估恢復(fù)的源代碼,但此方法僅適用于使用相對較少數(shù)量的權(quán)限和API調(diào)用的應(yīng)用程序。由于開發(fā)人員在應(yīng)用市場上傳應(yīng)用時(shí),需要簽署證書,并分配給其序列號(hào),因此可通過搜索序列號(hào)來追蹤應(yīng)用的包裝和修改。這是最簡單的一種Android應(yīng)用靜態(tài)檢測方法。
綜上所述,靜態(tài)分析是一種簡單、快速的惡意應(yīng)用檢測方法。但大多數(shù)靜態(tài)檢測技術(shù)很難檢測代碼執(zhí)行過程中的惡意行為,例如,應(yīng)用程序在運(yùn)行后的代碼自動(dòng)修改及由移動(dòng)僵尸網(wǎng)絡(luò)或病毒引起的入侵。
動(dòng)態(tài)分析是通過執(zhí)行應(yīng)用程序來檢測漏洞的。動(dòng)態(tài)分析檢測技術(shù)的核心是通過監(jiān)視應(yīng)用程序的動(dòng)態(tài)行為,對污染源或系統(tǒng)調(diào)用進(jìn)行跟蹤和觀察。與靜態(tài)分析相比,動(dòng)態(tài)分析更為復(fù)雜。
文獻(xiàn)[6]提出了應(yīng)用程序動(dòng)態(tài)污點(diǎn)跟蹤的方法,即應(yīng)用程序調(diào)用Dalvik虛擬機(jī)執(zhí)行四種類別污點(diǎn)粒度的污染傳播:變量、方法、消息和文件,但這種方法只關(guān)注數(shù)據(jù)流,很難保證網(wǎng)絡(luò)訪問的安全。
文獻(xiàn)[7]提出了一種基于前向執(zhí)行能力動(dòng)態(tài)跟蹤分析系統(tǒng)DroidTrace,但該系統(tǒng)需要將智能終端與計(jì)算機(jī)連接起來,并使用Linux命令來收集惡意檢測數(shù)據(jù),操作較復(fù)雜。
文獻(xiàn)[8]提出了一種增強(qiáng)的物理架構(gòu)CARDODL,用于執(zhí)行在線惡意軟件檢測,這種方法是一種硬件解決方案,但檢測服務(wù)的部署實(shí)施缺乏靈活性。
文獻(xiàn)[9]提出了從API調(diào)用、本機(jī)代碼動(dòng)態(tài)執(zhí)行和系統(tǒng)調(diào)用提取敏感行為特征的檢測框架,但由于行為數(shù)據(jù)的監(jiān)測和收集要消耗大量的計(jì)算能力,所以這種方法會(huì)增加額外開銷。
靜態(tài)或動(dòng)態(tài)分析方法檢測應(yīng)用的安全性各有優(yōu)缺點(diǎn),靜態(tài)檢測方法花費(fèi)時(shí)間較長,且無法檢測應(yīng)用的交互行為和網(wǎng)絡(luò)通信安全,而動(dòng)態(tài)檢測方法通常需消耗較多的計(jì)算資源,可能導(dǎo)致應(yīng)用運(yùn)行變慢,因此需要平衡系統(tǒng)檢測開銷與安全檢測性能。大多數(shù)學(xué)者更傾向于使用二者相混合的移動(dòng)應(yīng)用惡意軟件檢測方法。即首先通過靜態(tài)分析來檢測應(yīng)用,進(jìn)一步通過執(zhí)行應(yīng)用來進(jìn)行動(dòng)態(tài)分析,混合分析方法可以實(shí)現(xiàn)更高的檢測敏感度,如文獻(xiàn)[10]提出的移動(dòng)沙箱Mobile-Sandbox法。
盡管應(yīng)用靜態(tài)與動(dòng)態(tài)相結(jié)合的惡意軟件檢測方法可以抵抗惡意軟件的反檢測技術(shù),并且此類方法已經(jīng)大大改善了Android應(yīng)用檢測的效率和準(zhǔn)確性,但依然缺乏惡意應(yīng)用的自動(dòng)分析和識(shí)別能力。如何根據(jù)已有的Android應(yīng)用特征信息高效可靠地識(shí)別惡意應(yīng)用是目前Android檢測急需解決的問題。
機(jī)器學(xué)習(xí)的概念是讓算法自己從數(shù)據(jù)中學(xué)習(xí)所需的參數(shù),以便做出最好的預(yù)測。目前已有多種機(jī)器學(xué)習(xí)方法用于數(shù)據(jù)安全性和惡意應(yīng)用的檢測。文獻(xiàn)[11]提出了一種新的機(jī)器學(xué)習(xí)框架,該方法首先從應(yīng)用中提取一些特征,將這些特征在離線模式下進(jìn)行訓(xùn)練,進(jìn)而用于惡意應(yīng)用的檢測。Andromaly[12]是一種基于行為學(xué)習(xí)的惡意軟件檢測方法。該方法監(jiān)視應(yīng)用軟件在移動(dòng)設(shè)備上運(yùn)行時(shí)的特征和事件,然后應(yīng)用分類器來檢測惡意應(yīng)用程序。Drebin[13]通過大量收集Android應(yīng)用的特征,并且將這些特征存儲(chǔ)用于模式識(shí)別,然后基于這些模式對合法應(yīng)用和非法惡意應(yīng)用進(jìn)行判定。文獻(xiàn)[14]提出了基于權(quán)限的惡意軟件檢測方法,該方法首先收集來自應(yīng)用程序的各種權(quán)限和動(dòng)作,然后將分類器應(yīng)用于所有收集的特征。PMDS(Permission based Malware Detection System)[15]是另一種基于機(jī)器學(xué)習(xí)的惡意軟件檢測方法,通過從Android應(yīng)用程序中挖掘權(quán)限,基于權(quán)限特征進(jìn)行機(jī)器學(xué)習(xí),分類識(shí)別未知的惡意軟件,這種方法的識(shí)別準(zhǔn)確率已經(jīng)達(dá)到94%。
由于Android是一個(gè)開源的、可擴(kuò)展的平臺(tái),因此盡可能多地提取Android應(yīng)用特征,將會(huì)極大地豐富檢測功能。且基于機(jī)器學(xué)習(xí)的惡意軟件檢測方法不僅算法穩(wěn)定、具有可擴(kuò)展性,還可大大降低檢測過程中的資源消耗。
基于機(jī)器學(xué)習(xí)的Android惡意應(yīng)用檢測方法關(guān)鍵在于獲取應(yīng)用特征信息,并建立機(jī)器學(xué)習(xí)模型,根據(jù)模型判定應(yīng)用的安全性。本文提出一種新的基于機(jī)器學(xué)習(xí)的Android應(yīng)用檢測框架,該框架混合了靜態(tài)檢測技術(shù)和動(dòng)態(tài)檢測技術(shù)的優(yōu)點(diǎn),可將所有的惡意應(yīng)用在安裝之前檢測出來。該框架如圖1所示,首先,從Android應(yīng)用的APK文件以及清單文件(manifest.xml)中提取特征信息(如字符串常量、意圖、權(quán)限以及進(jìn)程信息等),將提取的特征信息和惡意應(yīng)用進(jìn)行相似性比較,利用機(jī)器學(xué)習(xí)模型將其分類為合法應(yīng)用或惡意應(yīng)用,最后對合法或惡意應(yīng)用進(jìn)行標(biāo)記,輸出結(jié)果。
圖1 基于機(jī)器學(xué)習(xí)的Android應(yīng)用檢測模型框架
為建立有效的Android惡意軟件檢測模型,需要收集應(yīng)用程序具有代表性的特征:如字符串常量、API調(diào)用、系統(tǒng)調(diào)用、權(quán)限、意圖、過濾器、廣播接收器、內(nèi)容提供者、進(jìn)程名等。這些特征信息可通過逆向工程反匯編應(yīng)用程序的APK文件,解析應(yīng)用的二進(jìn)制文件及清單文件(manifest.xml)進(jìn)行提取。利用這些特征信息創(chuàng)建(合法應(yīng)用和惡意應(yīng)用)特征信息數(shù)據(jù)庫。
字符串常量以及清單文件中的關(guān)鍵字提取后,可將這些特征信息和惡意程序或者合法程序進(jìn)行對比,以此對應(yīng)用的安全性進(jìn)行檢測。如果Android應(yīng)用信息被修改并重新包裝或者非法用戶越權(quán)訪問那么此應(yīng)用就是危險(xiǎn)的。
為獲得準(zhǔn)確的比較結(jié)果,在特征信息數(shù)據(jù)庫的基礎(chǔ)上構(gòu)建用于檢測惡意樣本的數(shù)據(jù)結(jié)構(gòu)-分類器,以權(quán)限和意圖為例,表1-表2分別給出了Android應(yīng)用最常用的10種權(quán)限特征與意圖特征。將提取的關(guān)鍵字信息與合法或惡意應(yīng)用的特征信息進(jìn)行對比,通過調(diào)整閾值或應(yīng)用不同的算法計(jì)算惡意應(yīng)用的估分,以此評估惡意軟件的危險(xiǎn)性。
表1 Android應(yīng)用常用權(quán)限特征
表2 Android應(yīng)用常用意圖特征
本文僅建立了部分用于檢測Android應(yīng)用安全性的權(quán)限特征與意圖特征,為了提高檢測的準(zhǔn)確性,需獲取盡可能多的權(quán)限與意圖特征用于模型建立。同時(shí),為了提高惡意軟件判別的準(zhǔn)確度,還可對特征信息的范圍進(jìn)行擴(kuò)展,如加入字符串常量、進(jìn)程名、廣播發(fā)送者及接受者等信息,通過對特征信息的機(jī)器學(xué)習(xí),提高檢測準(zhǔn)確度。
通過機(jī)器學(xué)習(xí)將所有提取的特征融合并組成單個(gè)特征向量,應(yīng)用數(shù)理統(tǒng)計(jì)算法對惡意軟件檢測模型進(jìn)行完善。如使用K-means聚類算法按照功能類型對應(yīng)用程序分組,然后對屬于同一功能類型的所有應(yīng)用程序提取其權(quán)限特征,并以權(quán)限特征為研究對象,使用KNN算法進(jìn)行Android惡意軟件的分類檢測[16];通過支持向量機(jī)對惡意軟件基因進(jìn)行學(xué)習(xí)[17];應(yīng)用統(tǒng)計(jì)學(xué)方法訓(xùn)練數(shù)據(jù)集,結(jié)合聚類算法建立模型以進(jìn)行應(yīng)用的安全性檢測[18]。
此外,還可加入自動(dòng)采樣強(qiáng)化訓(xùn)練,并進(jìn)行交叉驗(yàn)證及重復(fù)性測試等。通過算子設(shè)置自動(dòng)調(diào)整閾值,得出適合檢測模型的閾值。在此基礎(chǔ)上進(jìn)行樣本訓(xùn)練,然后測試所獲得的檢測模型。一般地,學(xué)習(xí)的數(shù)據(jù)特征越多,基于算法評斷的精確度越高。
本文研究了基于靜態(tài)和動(dòng)態(tài)的惡意軟件檢測方法,提出了一種新的基于機(jī)器學(xué)習(xí)的Android惡意應(yīng)用檢測框架。此方法可以彌補(bǔ)靜態(tài)分析和動(dòng)態(tài)分析技術(shù)的不足,具有較高的精確性。
該框架首先從各種Android應(yīng)用(合法和惡意應(yīng)用)提取特征信息(如用戶權(quán)限、意圖、應(yīng)用程序敏感字符串等),將特征信息作為機(jī)器學(xué)習(xí)的分類器輸入,然后利用應(yīng)用程序清單文件的關(guān)鍵字等特征來檢測惡意軟件,最后將所有提取的特征融合并組成單個(gè)特征向量,以提高檢測的準(zhǔn)確性。
該機(jī)器學(xué)習(xí)檢測框架具有較高的檢測精度和運(yùn)行效率,同時(shí)該框架可根據(jù)惡意關(guān)鍵字設(shè)計(jì)不同檢測計(jì)算模型,具有擴(kuò)展性。