移動(dòng)終端側(cè)的惡意軟件檢測(cè)概述
?一、發(fā)展背景及意義
Android系統(tǒng)是由Google公司于2007年發(fā)布的一種基于Linux內(nèi)核的操作系統(tǒng)。作為全球最受歡迎的移動(dòng)端操作系統(tǒng),Android擁有來(lái)自190多個(gè)國(guó)家超過(guò)25億的活躍用戶(hù),所占市場(chǎng)份額超過(guò)85%[1]。由于其高度的開(kāi)源性及自由性,許多開(kāi)發(fā)人員紛紛投身于應(yīng)用軟件開(kāi)發(fā)工作。截至2020年,Google Play商店中存在290萬(wàn)個(gè)應(yīng)用程序,下載次數(shù)高達(dá)1080億次[1]。但與此同時(shí),大量惡意軟件利用第三方應(yīng)用市場(chǎng)的審查漏洞趁虛而入,為智能手機(jī)用戶(hù)帶來(lái)了巨大的危害,包括隱私泄露、資費(fèi)消耗等。近年來(lái),惡意軟件檢測(cè)已經(jīng)成為熱門(mén)研究領(lǐng)域,各大安全廠商也開(kāi)發(fā)出了各自的安全檢測(cè)軟件,如AVG Antivirus、Norton Mobile Security等。但隨著Android版本的更新,惡意軟件的攻擊方法不斷升級(jí),現(xiàn)有的安全檢測(cè)軟件效果有待進(jìn)一步的提升。
二、Android系統(tǒng)安全機(jī)制
Android 系統(tǒng)是基于Linux 內(nèi)核實(shí)現(xiàn)的,同時(shí)在Linux 原有的安全機(jī)制基礎(chǔ)上結(jié)合移動(dòng)端的特性,設(shè)計(jì)了應(yīng)用程序簽名機(jī)制、權(quán)限機(jī)制、進(jìn)程沙箱隔離機(jī)制等安全機(jī)制,保證了應(yīng)用程序在發(fā)布、安裝和運(yùn)行過(guò)程中的安全[2]。
1. 應(yīng)用程序簽名機(jī)制
應(yīng)用程序簽名機(jī)制指的是在應(yīng)用程序發(fā)布時(shí),由開(kāi)發(fā)者采用私鑰進(jìn)行簽名,在安裝程序時(shí),Android系統(tǒng)使用公鑰對(duì)應(yīng)用程序進(jìn)行驗(yàn)證溯源,從而與開(kāi)發(fā)者間建立信任關(guān)系。通過(guò)數(shù)字簽名,系統(tǒng)一方面可以實(shí)現(xiàn)對(duì)程序的版本控制,另一方面也可以對(duì)應(yīng)用程序安裝包的完整性進(jìn)行驗(yàn)證,同時(shí)可以有效檢測(cè)重打包攻擊、應(yīng)用篡改等惡意行為,從而過(guò)濾惡意應(yīng)用。但攻擊者有時(shí)也會(huì)偽造第三方應(yīng)用簽名,逃過(guò)系統(tǒng)檢測(cè)。簽名機(jī)制按照簽名對(duì)象可以分為兩類(lèi):對(duì)程序安裝包解壓后的非目錄和非過(guò)濾文件進(jìn)行簽名驗(yàn)證,以及對(duì)壓縮安裝包整體進(jìn)行簽名驗(yàn)證。
2. 權(quán)限機(jī)制
權(quán)限機(jī)制指的是應(yīng)用程序在安裝時(shí)和運(yùn)行過(guò)程中,向系統(tǒng)申請(qǐng)所需服務(wù)的權(quán)限,并根據(jù)獲取的權(quán)限運(yùn)行相應(yīng)服務(wù),其定義信息包括包名、標(biāo)簽、描述和保護(hù)級(jí)別等[3]。
3. 進(jìn)程沙箱隔離機(jī)制
圖1
進(jìn)程沙箱隔離機(jī)制指的是應(yīng)用程序始終運(yùn)行于系統(tǒng)為其開(kāi)辟的獨(dú)立Dalvik虛擬機(jī)中,擁有獨(dú)立的運(yùn)行空間和系統(tǒng)資源空間,從而保證應(yīng)用程序間的獨(dú)立,限制不可信程序的權(quán)限。具體來(lái)說(shuō),每個(gè)應(yīng)用程序在安裝時(shí)都被系統(tǒng)賦予了唯一的UID,在程序運(yùn)行期間,系統(tǒng)隔離非同一UID的應(yīng)用程序及資源,使其互不干擾,進(jìn)而使各個(gè)應(yīng)用程序的資源都得到安全保護(hù)。
三、常見(jiàn)的惡意軟件攻擊方法
1. 重打包攻擊
重打包攻擊指的是攻擊者對(duì)原始應(yīng)用程序進(jìn)行反編譯,將惡意代碼植入應(yīng)用程序中,然后通過(guò)偽造應(yīng)用簽名通過(guò)系統(tǒng)檢測(cè),重新打包為第三方應(yīng)用進(jìn)行發(fā)布。
2. 提權(quán)攻擊
提權(quán)攻擊是指攻擊者利用Android系統(tǒng)漏洞或第三方代理軟件等,提升普通應(yīng)用程序的系統(tǒng)服務(wù)權(quán)限,從而獲得其所需權(quán)限。一旦惡意應(yīng)用擁有較高的系統(tǒng)權(quán)限,就會(huì)對(duì)系統(tǒng)造成巨大的安全威脅。
3. 其他攻擊
隨著Android系統(tǒng)的更新與發(fā)展,市場(chǎng)上出現(xiàn)了許多其他的惡意軟件攻擊方法。比如利用剪切板功能簡(jiǎn)單且無(wú)需申請(qǐng)額外權(quán)限的特點(diǎn),惡意篡改剪切板內(nèi)容,危害系統(tǒng)安全;植入抓取代碼,竊取用戶(hù)隱私信息,進(jìn)行電子詐騙;利用調(diào)試接口傳播惡意軟件等。
四、惡意軟件檢測(cè)的基本方法
惡意軟件檢測(cè)問(wèn)題本質(zhì)上是一個(gè)分類(lèi)問(wèn)題,對(duì)給定的應(yīng)用程序,判斷其為惡意軟件還是正常軟件。根據(jù)解決分類(lèi)問(wèn)題的一般性方法,惡意軟件檢測(cè)的大致流程如圖2所示。
圖2
首先獲取谷歌應(yīng)用市場(chǎng)和第三方應(yīng)用市場(chǎng)中的正常軟件程序包,以及惡意軟件程序包,構(gòu)成數(shù)據(jù)集;然后從中抽取特征信息,并進(jìn)行特征預(yù)處理;最后根據(jù)特征值信息,基于規(guī)則或分類(lèi)算法完成分類(lèi)任務(wù)。
Android應(yīng)用程序安裝包是一個(gè)后綴為.apk的壓縮文件,解壓后可得如下文件:
表1
常見(jiàn)的惡意軟件檢測(cè)方法,主要是基于AndroidManifest.xml文件和classes.dex文件進(jìn)行特征抽取。
AndroidManifest.xml文件是Android應(yīng)用程序的全局配置文件,提供了在程序運(yùn)行前系統(tǒng)所需的各種必要信息,包括應(yīng)用的包名、版本號(hào)、權(quán)限信息、硬件信息等。
classes.dex文件是應(yīng)用程序的二進(jìn)制可執(zhí)行文件,java代碼首先會(huì)被編譯為.class文件,得到的類(lèi)文件被翻譯成Dalvik字節(jié)碼,最終合并為一個(gè)或多個(gè)可執(zhí)行dex文件[4]。在惡意軟件檢測(cè)方法中,有的研究者會(huì)首先對(duì)其進(jìn)行反編譯,然后再抽取特征,有的研究者則會(huì)直接利用原始字節(jié)碼序列或?qū)ζ溥M(jìn)行截取、處理。
五、Android惡意軟件檢測(cè)方法
1. 按照不同的特征抽取方法,可以分為靜態(tài)檢測(cè)、動(dòng)態(tài)檢測(cè)和混合檢測(cè)[5]。
(1)靜態(tài)檢測(cè)方法
靜態(tài)檢測(cè)方法是指在應(yīng)用程序不運(yùn)行的情況下,基于應(yīng)用程序特征進(jìn)行系統(tǒng)檢測(cè)分析[6-7]。其常用的特征包括應(yīng)用權(quán)限、Java代碼、網(wǎng)絡(luò)地址、硬件組件等。靜態(tài)檢測(cè)方法優(yōu)點(diǎn)是檢測(cè)速度快,缺點(diǎn)是無(wú)法有效識(shí)別利用了靜態(tài)檢測(cè)對(duì)抗技術(shù)(如代碼混淆)的惡意應(yīng)用程序。常見(jiàn)的靜態(tài)檢測(cè)方法包括基于應(yīng)用程序安裝包文件特征的檢測(cè)、基于應(yīng)用程序代碼分析的檢測(cè)、基于應(yīng)用布局特征的檢測(cè)等。
基于應(yīng)用程序安裝包文件特征的檢測(cè)方法,關(guān)注表1所示的簽名文件、清單文件、資源文件及代碼文件等,從中抽取特征表示,通過(guò)相似性比較或模型訓(xùn)練的方法完成惡意應(yīng)用檢測(cè)。比如Zhou等[8]提出DroidMoss模型抽取應(yīng)用的代碼特征,采用模糊哈希的方法生成應(yīng)用程序特定的指紋信息,然后進(jìn)行相似度比較,從而判斷是否為惡意應(yīng)用程序,但該方法無(wú)法有效應(yīng)對(duì)代碼混淆等對(duì)抗攻擊。Nicheporuk等[9]基于API方法調(diào)用和權(quán)限信息,采用卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型完成分類(lèi)。
基于應(yīng)用程序代碼分析的檢測(cè)方法,更加關(guān)注代碼文件,將應(yīng)用程序代碼抽象為控制流圖、API函數(shù)圖或程序依賴(lài)圖,然后再進(jìn)行相似性比較。比如Crussell等[10]提出DNADroid模型基于應(yīng)用程序依賴(lài)圖完成相似性計(jì)算,有效應(yīng)對(duì)重打包攻擊。為了提升對(duì)重打包應(yīng)用的檢測(cè)效率,同時(shí)有效對(duì)抗代碼混淆攻擊,汪潤(rùn)等[11]提出可以進(jìn)行粗細(xì)兩個(gè)粒度的檢測(cè)并抽取代碼的深層語(yǔ)義信息。該模型首先進(jìn)行粗粒度檢測(cè),將應(yīng)用程序依賴(lài)圖抽象為程序語(yǔ)義特征,計(jì)算程序語(yǔ)義特征間相似性,實(shí)現(xiàn)快速檢測(cè);對(duì)于細(xì)粒度檢測(cè),則是將程序依賴(lài)圖作為特征,實(shí)現(xiàn)更為準(zhǔn)確的惡意應(yīng)用檢測(cè)。
基于應(yīng)用布局特征的檢測(cè)方法,關(guān)注應(yīng)用程序的UI界面,從中抽取特征信息作為分類(lèi)依據(jù)。比如Zhang等[12] 提出可以根據(jù)應(yīng)用界面生成界面圖,然后計(jì)算圖間的相似性。該方法檢測(cè)速度快,但檢測(cè)精度有限,因此可以將其與代碼特征相結(jié)合,兼顧檢測(cè)速度與精度。
(2)動(dòng)態(tài)檢測(cè)方法
動(dòng)態(tài)檢測(cè)方法是在沙盒環(huán)境中運(yùn)行程序,并跟蹤程序的API調(diào)用序列、系統(tǒng)調(diào)用、網(wǎng)絡(luò)流量和CPU數(shù)據(jù),以監(jiān)視程序運(yùn)行期間的數(shù)據(jù)流[5],獲取程序運(yùn)行過(guò)程中的動(dòng)態(tài)特征。動(dòng)態(tài)檢測(cè)方法的關(guān)鍵點(diǎn)在于如何對(duì)程序的全部功能進(jìn)行檢測(cè),如何保證測(cè)試用例的真實(shí)性及全面性。該方法在實(shí)際應(yīng)用中通常需要占用一定的系統(tǒng)資源且檢測(cè)速度較慢,但對(duì)于未知惡意軟件的檢測(cè)通常具有較好的表現(xiàn)。常見(jiàn)的動(dòng)態(tài)檢測(cè)方法分為兩類(lèi):基于應(yīng)用行為分析的檢測(cè)和基于污點(diǎn)跟蹤的檢測(cè)。
對(duì)應(yīng)用行為的分析目標(biāo),可以選擇應(yīng)用程序?qū)ο到y(tǒng)服務(wù)的調(diào)用信息,也可以選擇非系統(tǒng)調(diào)用信息,如實(shí)時(shí)交互信息或應(yīng)用運(yùn)行信息等。Tam等[13]設(shè)計(jì)了CopperDroid模型,結(jié)合系統(tǒng)調(diào)用和Binder通信行為數(shù)據(jù),重構(gòu)了惡意應(yīng)用程序的高級(jí)語(yǔ)義信息,最終輸出惡意行為,包括系統(tǒng)相關(guān)行為和Android相關(guān)行為兩種。該方法可以有效抵抗代碼混淆攻擊,且無(wú)需修改系統(tǒng)源碼,部署方便。Gianazza等[14] 提出PuppetDroid模型,基于用戶(hù)與應(yīng)用程序的實(shí)時(shí)交互行為獲取特征信息,進(jìn)行惡意應(yīng)用檢測(cè),與普通的自動(dòng)UI方法相比達(dá)到了更高的代碼覆蓋率。
基于應(yīng)用行為數(shù)據(jù)獲取的特征表示,忽視了數(shù)據(jù)間的關(guān)聯(lián)性信息,且無(wú)法刻畫(huà)程序的全流程行為。為解決該問(wèn)題,Enck等[15]提出基于污點(diǎn)跟蹤的惡意軟件檢測(cè)方法——TaintDroid。該方法從污染源標(biāo)記敏感信息,動(dòng)態(tài)追蹤數(shù)據(jù)流和系統(tǒng)調(diào)用,實(shí)現(xiàn)了變量級(jí)、信息級(jí)、方法級(jí)和文件級(jí)的污點(diǎn)跟蹤。
(3)混合檢測(cè)方法
無(wú)論是靜態(tài)檢測(cè)方法還是動(dòng)態(tài)檢測(cè)方法,都具有一定的局限性。靜態(tài)檢測(cè)無(wú)法捕獲應(yīng)用程序在運(yùn)行時(shí)的行為信息,而動(dòng)態(tài)檢測(cè)無(wú)法實(shí)現(xiàn)完整的代碼覆蓋范圍。因此,有研究者提出混合檢測(cè)方法,即靜態(tài)和動(dòng)態(tài)分析組合的方法,可以使Android惡意軟件檢測(cè)更加準(zhǔn)確和高效。Onwuzurike等[16]在靜態(tài)檢測(cè)和動(dòng)態(tài)檢測(cè)中使用了相同的建模方法,都基于API調(diào)用序列構(gòu)建馬爾科夫鏈,最終比較兩種方法的檢測(cè)性能。結(jié)果表明,混合檢測(cè)的方法具有更好的性能表現(xiàn)。
參考文獻(xiàn)
[1] Android Statistics (2022) https://www.businessofapps.com/data/android-statistics/
[2] Google Inc. Android security[EB/OL]. (2013-06-26)[2019-10-07]. https://source.android.com/tech/security/.
[3] 王思遠(yuǎn), 張仰森, 曾健榮, 等. Android 惡意軟件檢測(cè)方法綜述[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2021, 38: 9.
[4] 李佳琳, 王雅哲, 羅呂根, 等. 面向安卓惡意軟件檢測(cè)的對(duì)抗攻擊技術(shù)綜述[J]. 信息安全學(xué)報(bào), 2021, 6(4): 28-43.
[5] Meijin L, Zhiyang F, Junfeng W, et al. A Systematic Overview of Android Malware Detection[J]. Applied Artificial Intelligence, 2022, 36(1): 2007327.
[6] 孫偉,孫雅杰,夏孟友. 一種靜態(tài)Android 重打包惡意應(yīng)用檢測(cè)方法[J]. 信息安全研究, 2017,3( 8) : 692 - 700.
[7] 蔣煦,張長(zhǎng)勝,戴大蒙,等. Android 平臺(tái)惡意應(yīng)用程序靜態(tài)檢測(cè)方法[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用, 2016, 25( 4) : 1 - 7.
[8] Zhou W, Zhou Y, Jiang X, et al. Detecting repackaged smartphone applications in third-party android marketplaces[C]//Proceedings of the second ACM conference on Data and Application Security and Privacy. 2012: 317-326.
[9] Nicheporuk A, Savenko O, Nicheporuk A, et al. An Android Malware Detection Method Based on CNN Mixed-Data Model[C]//ICTERI Workshops. 2020: 198-213.
[10] Crussell J, Gibler C, Chen H. Attack of the clones: Detecting cloned applications on android markets[C]//European Symposium on Research in Computer Security. Springer, Berlin, Heidelberg, 2012: 37-54.
[11] 汪潤(rùn), 唐奔宵, 王麗娜. DroidFAR: 一種基于程序語(yǔ)義的 Android 重打包應(yīng)用抗混淆檢測(cè)方法[J]. 武漢大學(xué)學(xué)報(bào): 理學(xué)版, 2018, 64(5): 407-414.
[12] Zhang F, Huang H, Zhu S, et al. ViewDroid: Towards obfuscation-resilient mobile application repackaging detection[C]//Proceedings of the 2014 ACM conference on Security and privacy in wireless & mobile networks. 2014: 25-36.
[13] Tam K, Fattori A, Khan S, et al. Copperdroid: Automatic reconstruction of android malware behaviors[C]//NDSS Symposium 2015. 2015: 1-15.
[14] Gianazza A, Maggi F, Fattori A, et al. Puppetdroid: A user-centric ui exerciser for automatic dynamic analysis of similar android applications[J]. arXiv preprint arXiv:1402.4826, 2014.
[15] Enck W, Gilbert P, Han S, et al. Taintdroid: an information-flow tracking system for realtime privacy monitoring on smartphones[J]. ACM Transactions on Computer Systems (TOCS), 2014, 32(2): 1-29.
[16] Onwuzurike L, Almeida M, Mariconti E, et al. A family of droids-Android malware detection via behavioral modeling: Static vs dynamic analysis[C]//2018 16th Annual Conference on Privacy, Security and Trust (PST). IEEE, 2018: 1-10.?