• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Android惡意應(yīng)用的靜態(tài)檢測(cè)方法綜述

      2023-08-15 02:54:10潘建文崔展齊林高毅鄭麗偉
      關(guān)鍵詞:調(diào)用靜態(tài)特征

      潘建文 崔展齊 林高毅 陳 翔 鄭麗偉

      1 (北京信息科技大學(xué)計(jì)算機(jī)學(xué)院 北京 100101)

      2 (南通大學(xué)信息科學(xué)技術(shù)學(xué)院 江蘇南通 226019)(panjianwen@bistu.edu.cn)

      近年來(lái),隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,社交通信、金融證券、游戲娛樂(lè)和電子商務(wù)等應(yīng)用全面地從PC轉(zhuǎn)向移動(dòng)互聯(lián)網(wǎng),移動(dòng)互聯(lián)網(wǎng)用戶和設(shè)備數(shù)量呈指數(shù)級(jí)增長(zhǎng).據(jù)2021年中國(guó)互聯(lián)網(wǎng)網(wǎng)絡(luò)安全報(bào)告[1]顯示,截至2021年12月,我國(guó)手機(jī)用戶規(guī)模達(dá)10.32億,我國(guó)使用手機(jī)上網(wǎng)的用戶比例達(dá)99.7%.根據(jù)國(guó)際數(shù)據(jù)公司(IDC)調(diào)查報(bào)告[2]顯示,2021年Android手機(jī)的市場(chǎng)份額占84%,并不斷增長(zhǎng).開(kāi)源的Android系統(tǒng)和多樣的應(yīng)用分發(fā)平臺(tái)在帶來(lái)巨大的市場(chǎng)份額的同時(shí),也使其成為了惡意應(yīng)用滋生的溫床和傳播的主要平臺(tái).國(guó)家互聯(lián)網(wǎng)應(yīng)急中心捕獲和通過(guò)廠商交換獲得的移動(dòng)惡意應(yīng)用也主要集中在Android平臺(tái),僅在2020年就多達(dá)303萬(wàn)個(gè)[3].部分Android惡意應(yīng)用的廣泛傳播造成了嚴(yán)重后果.例如,2019年出現(xiàn)的零日漏洞Bad Binder被Android惡意應(yīng)用利用以控制用戶設(shè)備[4],影響到Android 9及之前的版本,給大量用戶帶來(lái)了巨大經(jīng)濟(jì)損失.

      因此,如何有效檢測(cè)Android惡意應(yīng)用受到了研究人員的廣泛關(guān)注.根據(jù)其是否運(yùn)行應(yīng)用程序,將現(xiàn)有的檢測(cè)技術(shù)分為動(dòng)態(tài)檢測(cè)和靜態(tài)檢測(cè)2類(lèi),其中,動(dòng)態(tài)檢測(cè)[5-6]是在真實(shí)設(shè)備或者模擬器中運(yùn)行應(yīng)用,使用測(cè)試腳本模擬用戶操作,記錄應(yīng)用的運(yùn)行情況,通過(guò)分析應(yīng)用行為特征,如應(yīng)用程序編程接口(application programming interface,API)調(diào)用、網(wǎng)絡(luò)流量等特征來(lái)檢測(cè)惡意應(yīng)用.動(dòng)態(tài)檢測(cè)的優(yōu)點(diǎn)是可以克服代碼加密、混淆和動(dòng)態(tài)代碼加載的障礙,其缺點(diǎn)是在真實(shí)設(shè)備或模擬器中運(yùn)行測(cè)試腳本時(shí)間開(kāi)銷(xiāo)大、難以覆蓋應(yīng)用全部功能,且耗時(shí)較長(zhǎng).靜態(tài)檢測(cè)則是通過(guò)反編譯應(yīng)用提取權(quán)限、API和操作碼等特征,采用機(jī)器學(xué)習(xí)算法構(gòu)造分類(lèi)器以檢測(cè)Android惡意應(yīng)用.靜態(tài)檢測(cè)不依賴運(yùn)行環(huán)境、代碼覆蓋率較高,檢測(cè)效率高于動(dòng)態(tài)檢測(cè)方法,例如,Drebin[7]檢測(cè)工具在學(xué)術(shù)界和工業(yè)屆受到了廣泛應(yīng)用和高度重視.本文重點(diǎn)對(duì)Android惡意應(yīng)用靜態(tài)檢測(cè)方法的已有研究成果進(jìn)行綜述.

      本文搜集了2013年至今發(fā)表過(guò)的關(guān)于Android惡意應(yīng)用靜態(tài)檢測(cè)相關(guān)論文并進(jìn)行了梳理.首先,使用“Android(安卓)”組合“malware/malicious(惡意應(yīng)用)”、“detection(檢測(cè))”和“classification(分類(lèi))”等關(guān)鍵字,在國(guó)內(nèi)外重要的論文數(shù)據(jù)庫(kù)(例如IEEE,ACM,Springer,Elsevier,CNKI)中檢索相關(guān)論文.由于中國(guó)計(jì)算機(jī)學(xué)會(huì)(CCF)推薦的期刊和會(huì)議影響力較大,具有一定的權(quán)威性,我們通過(guò)人工篩選的方式,檢索出發(fā)表在CCF評(píng)級(jí)為A,B類(lèi)的國(guó)際會(huì)議或國(guó)際期刊,以及《軟件學(xué)報(bào)》《計(jì)算機(jī)學(xué)報(bào)》《計(jì)算機(jī)研究與發(fā)展》等權(quán)威中文期刊上的論文.然后,分析論文的標(biāo)題和摘要,去除與本綜述關(guān)注問(wèn)題無(wú)關(guān)的論文.最終,選擇出與本研究問(wèn)題直接相關(guān)的高質(zhì)量論文89篇,包括國(guó)際期刊77篇、中文期刊12篇.其中,TIFS8篇、TDSC6篇、CCS2篇、Computers & Security25篇、《軟件學(xué)報(bào)》3篇、《計(jì)算機(jī)學(xué)報(bào)》1篇、《計(jì)算機(jī)研究與發(fā)展》3篇.檢索到的論文在不同年份的數(shù)量分布如圖1所示,可以看出相關(guān)論文發(fā)表數(shù)量持續(xù)增長(zhǎng),這表明Android惡意應(yīng)用檢測(cè)是近年來(lái)的熱點(diǎn)研究問(wèn)題.發(fā)表于CCF的A,B類(lèi)國(guó)際期刊和國(guó)際會(huì)議的論文在不同領(lǐng)域的分布情況如圖2所示,本研究問(wèn)題的論文大多數(shù)分布在網(wǎng)絡(luò)與信息安全領(lǐng)域(46篇).

      Fig.2 Field distribution of papers published in international journals and conferences ranked as CCF A and B圖2 發(fā)表于CCF A,B類(lèi)國(guó)際期刊和會(huì)議的論文領(lǐng)域分布

      目前,在Android惡意應(yīng)用靜態(tài)檢測(cè)的綜述中,已有的工作包括:Samra等人[8]在2019年對(duì)Android惡意應(yīng)用靜態(tài)檢測(cè)進(jìn)行綜述,但是僅介紹了基于權(quán)限和基于簽名的檢測(cè)方法,對(duì)于其他靜態(tài)特征方法內(nèi)容略為缺失;Bayazit等人[9]在2020年對(duì)傳統(tǒng)的機(jī)器學(xué)習(xí)檢測(cè)Android惡意應(yīng)用進(jìn)行了綜述,他們考慮的是惡意應(yīng)用分類(lèi),并對(duì)動(dòng)態(tài)和靜態(tài)檢測(cè)方法進(jìn)行了介紹;在此之后,有41篇重要論文發(fā)表,尤其是基于深度學(xué)習(xí)的Android惡意應(yīng)用檢測(cè)技術(shù)取得進(jìn)一步的發(fā)展.

      本文主要關(guān)注Android惡意應(yīng)用靜態(tài)檢測(cè)方法,首先,介紹了Android應(yīng)用的靜態(tài)特征;然后,分別對(duì)基于權(quán)限、API、基于操作碼和其他靜態(tài)特征的檢測(cè)方法進(jìn)行分析和總結(jié),并論述數(shù)據(jù)集和評(píng)價(jià)指標(biāo);最后,對(duì)現(xiàn)有的研究工作總結(jié),并對(duì)未來(lái)的研究方向進(jìn)行了展望.

      1 Android應(yīng)用靜態(tài)特征

      APK(Android application package)是一種Android操作系統(tǒng)使用的應(yīng)用程序包文件格式,用于應(yīng)用分發(fā)和系統(tǒng)安裝.Android靜態(tài)特征提取是根據(jù)對(duì)Android隱私安全和開(kāi)發(fā)過(guò)程的了解,在不運(yùn)行應(yīng)用程序情況下分析APK中的文件內(nèi)容,從中收集和提取各類(lèi)特征.基于所提取到的靜態(tài)特征,可采用不同的算法應(yīng)用于Android惡意應(yīng)用檢測(cè).

      常見(jiàn)的提取特征方法包括:采用Androguard[10]等逆向工具直接提取權(quán)限、API等部分特征;使用Apktool[11]等工具進(jìn)行反編譯分析,這種提取特征方法所提取到的特征更為全面.如圖3所示,Apktool反編譯后的文件結(jié)構(gòu)包括Android系統(tǒng)可執(zhí)行(Dalvik executable,DEX)文件、AndroidManifest.xml文件、res文件夾、META-INF文件夾和lib文件夾.DEX文件是Dalvik[12]和ART虛擬機(jī)可執(zhí)行的字節(jié)碼文件,可被反編譯為Smali或Java文件集合.Smali文件中包含應(yīng)用程序的全部操作指令以及運(yùn)行時(shí)數(shù)據(jù),每個(gè)Smali文件包含類(lèi),類(lèi)中包含多個(gè)方法,可在其中提取API調(diào)用以及由操作碼(opcode)和操作數(shù)所組成的指令.AndroidManifest.xml是清單配置文件,其包含了Android系統(tǒng)為運(yùn)行應(yīng)用程序所需要的參數(shù),如權(quán)限、軟件包名稱、應(yīng)用組件、應(yīng)用所需要的硬件和軟件功能等信息.res文件夾用于存放資源文件,包括應(yīng)用執(zhí)行所需的布局、圖像、動(dòng)畫(huà)、顏色和界面字符串等.META-INF目錄下存放的是簽名信息,用來(lái)保證APK包的完整性和系統(tǒng)的安全,Android系統(tǒng)要求所有APK必須先使用證書(shū)進(jìn)行數(shù)字簽名,然后才能安裝、更新和分發(fā).lib目錄存放應(yīng)用程序依賴庫(kù)的so文件.so文件是在Android系統(tǒng)上直接運(yùn)行的二進(jìn)制代碼,可在應(yīng)用運(yùn)行時(shí)訪問(wèn)設(shè)備實(shí)體組件,例如傳感器和觸摸輸入等,是Android的動(dòng)態(tài)鏈接庫(kù).

      Fig.3 Decompiling structure of APK圖3 APK反編譯結(jié)構(gòu)

      APK文件中的內(nèi)容可被提取作為靜態(tài)特征.根據(jù)所使用靜態(tài)特征類(lèi)型的不同,衍生出不同的檢測(cè)方法,本文中將其分為基于權(quán)限特征、基于API特征、基于操作碼特征和基于其他特征4類(lèi)Android惡意應(yīng)用檢測(cè)方法.本文將在第2~5節(jié)中分別對(duì)這4類(lèi)靜態(tài)檢測(cè)方法進(jìn)行詳細(xì)介紹.

      2 基于權(quán)限的Android惡意應(yīng)用檢測(cè)方法

      2.1 簡(jiǎn) 述

      權(quán)限機(jī)制用于限制Android應(yīng)用程序訪問(wèn)文件、數(shù)據(jù)和資源等安全敏感項(xiàng).為保護(hù)用戶隱私數(shù)據(jù),Google為Android 10版本設(shè)置了155個(gè)權(quán)限,開(kāi)發(fā)人員可根據(jù)應(yīng)用功能的需要向用戶申請(qǐng)權(quán)限.然而,調(diào)查數(shù)據(jù)表明,大多數(shù)用戶不夠了解應(yīng)用所需的權(quán)限,導(dǎo)致過(guò)度授權(quán)的情況頻發(fā)[13].一旦惡意應(yīng)用申請(qǐng)的敏感權(quán)限獲得通過(guò),將可能導(dǎo)致用戶遭受隱私泄露、惡意扣費(fèi)和資費(fèi)消耗等嚴(yán)重后果,侵害用戶利益.良性應(yīng)用和惡意應(yīng)用所申請(qǐng)的權(quán)限在數(shù)量、類(lèi)別和關(guān)系上存在一定的差異,這使得基于權(quán)限分析檢測(cè)Android惡意應(yīng)用具有可行性.基于權(quán)限的Android惡意應(yīng)用檢測(cè)方法通過(guò)清單配置文件AndroidMenifest.xml提取權(quán)限特征,然后分析其使用情況或挖掘權(quán)限間相關(guān)性,以檢測(cè)惡意應(yīng)用.由于權(quán)限特征數(shù)量較少且提取便捷,使得此類(lèi)方法出現(xiàn)較早,根據(jù)使用權(quán)限特征的方式不同,本節(jié)將其分為基于權(quán)限使用情況和基于權(quán)限相關(guān)性挖掘的Android惡意應(yīng)用檢測(cè)方法.

      2.2 已有工作分析

      2.2.1 基于權(quán)限使用情況分析的方法

      基于權(quán)限使用情況分析的方法先提取權(quán)限特征,然后將機(jī)器學(xué)習(xí)方法用于檢測(cè)Android惡意應(yīng)用.例如,Sanz等人[14]提出基于權(quán)限的方法來(lái)檢測(cè)Android惡意應(yīng)用,Ilham等人[15]在此基礎(chǔ)上采用信息增益、信息增益率和皮爾遜相關(guān)系數(shù)等方法選擇出權(quán)限的特征子集,然后分別構(gòu)建隨機(jī)森林(random forest)、支持向量機(jī)(support vector machine, SVM)和決策樹(shù)(decision tree)模型檢測(cè)Android惡意應(yīng)用.

      Intent[16]是包含目標(biāo)組件地址和數(shù)據(jù)的消息對(duì)象,主要用于Android應(yīng)用程序內(nèi)和應(yīng)用程序間通信,可通過(guò)發(fā)送Intent消息對(duì)象請(qǐng)求應(yīng)用內(nèi)的組件或其他應(yīng)用執(zhí)行特定操作,還可在操作結(jié)束后接收返回的數(shù)據(jù).Intent與權(quán)限相比語(yǔ)義信息更豐富,因此除單獨(dú)分析權(quán)限使用情況外,研究人員還對(duì)權(quán)限結(jié)合Intent檢測(cè)Android惡意應(yīng)用的方法進(jìn)行了研究.其中,楊宏宇等人[17]采用加權(quán)投票方法改進(jìn)隨機(jī)森林算法,使用權(quán)限和Intent作為特征值檢測(cè)Android惡意應(yīng)用.AndroDialysis[18]首先采用Intent作為特征,取得較好的檢測(cè)效果,然后將權(quán)限與Intent特征結(jié)合,并使用貝葉斯網(wǎng)絡(luò)來(lái)檢測(cè)Android惡意應(yīng)用,進(jìn)一步提升了檢測(cè)性能.Idrees等人[19]提出結(jié)合權(quán)限和Intent的集成學(xué)習(xí)方法PIndroid,構(gòu)造了決策表、多層感知機(jī)(multilayer perceptron,MLP)和決策樹(shù)等6種基分類(lèi)器,并用Boosting,Bagging,Stacking集成學(xué)習(xí)方法檢測(cè)Android惡意應(yīng)用,取得99.8%的準(zhǔn)確率.Zhang等人[20]提出基于N-Gram分析和在線增量分類(lèi)器結(jié)合的方法,提取權(quán)限、Intent等多種特征用于N-Gram分析,采用被動(dòng)攻擊(passive-aggressive)算法進(jìn)行增量學(xué)習(xí),該框架不僅可以檢測(cè)惡意應(yīng)用,還可對(duì)惡意應(yīng)用所屬家族進(jìn)行分類(lèi).

      2.2.2 基于權(quán)限相關(guān)性挖掘的方法

      Android有多個(gè)權(quán)限組,每個(gè)權(quán)限組中含有若干個(gè)權(quán)限.Android惡意應(yīng)用進(jìn)行惡意行為時(shí),通常需要多個(gè)權(quán)限的協(xié)作和配合,因此可挖掘權(quán)限組間和權(quán)限組內(nèi)的權(quán)限相關(guān)性,并將其用來(lái)檢測(cè)惡意應(yīng)用.例如,為修改接收到的短信,惡意應(yīng)用需要使用權(quán)限組合:接收短信(RECEIVE_SMS)、讀取短信(READ_SMS)和寫(xiě)入短信(WRITE_SMS).2014年,Wang等人[21]通過(guò)挖掘單個(gè)權(quán)限或一組協(xié)作權(quán)限風(fēng)險(xiǎn)的方式來(lái)檢測(cè)惡意應(yīng)用.該方法首先采用互信息、皮爾遜相關(guān)系數(shù)和T檢驗(yàn)3種特征排序算法對(duì)權(quán)限進(jìn)行風(fēng)險(xiǎn)排序;然后使用序列前向選擇(sequential forward selection)方法和主成分分析(principal component analysis)方法選擇權(quán)限子集,挖掘出多個(gè)權(quán)限間協(xié)作的風(fēng)險(xiǎn);最后構(gòu)造支持向量機(jī)、決策樹(shù)以及隨機(jī)森林模型檢測(cè)惡意應(yīng)用.

      以往大多數(shù)研究工作主要關(guān)注權(quán)限使用情況,而忽視了挖掘權(quán)限之間的關(guān)系,楊歡等人[22]提出了基于頻繁模式挖掘算法PApriori,挖掘惡意應(yīng)用家族中權(quán)限使用的相互依賴關(guān)系,通過(guò)匹配待檢測(cè)應(yīng)用的權(quán)限特征來(lái)檢測(cè)Android惡意應(yīng)用.相似地,Arora等人[23]提出了基于權(quán)限對(duì)的Android惡意應(yīng)用檢測(cè)方法PermPair,首先分別提取惡意應(yīng)用集和良性應(yīng)用集的權(quán)限對(duì),構(gòu)建惡意應(yīng)用權(quán)限對(duì)圖(Malicious-Graph)和良性應(yīng)用權(quán)限對(duì)圖(Normal-Graph),并根據(jù)權(quán)限對(duì)在不同應(yīng)用集中出現(xiàn)的頻率,對(duì)圖中每條邊分配權(quán)重,然后通過(guò)比較待檢測(cè)應(yīng)用權(quán)限對(duì)在Malicious-Graph和Normal-Graph中的權(quán)重和,確定其是否為惡意應(yīng)用.該方法在權(quán)重計(jì)算過(guò)程中采用了圖邊緣優(yōu)化算法,刪除不重要的權(quán)限對(duì),有效減少了檢測(cè)惡意應(yīng)用的時(shí)間消耗.

      2.3 已有工作對(duì)比和點(diǎn)評(píng)

      表1對(duì)基于權(quán)限的方法進(jìn)行了對(duì)比.其中,數(shù)據(jù)集來(lái)源和數(shù)量列采用來(lái)源(數(shù)量)的形式給出了論文使用的良性和惡意應(yīng)用來(lái)源和數(shù)量,例如,良性:Google Play(674)表示使用了Google Play數(shù)據(jù)集中的674個(gè)良性應(yīng)用.從表1可以看出,基于權(quán)限相關(guān)性挖掘的Android惡意應(yīng)用檢測(cè)方法的準(zhǔn)確率整體低于基于權(quán)限使用情況分析的方法,這主要是由于Android應(yīng)用中過(guò)度和隨意申請(qǐng)敏感權(quán)限現(xiàn)象極為常見(jiàn),使得噪聲更多,增加了挖掘權(quán)限相關(guān)性的難度.

      Table 1 Comparison of Android Malware Detection Methods Based on Permission表1 基于權(quán)限的Android惡意應(yīng)用檢測(cè)方法對(duì)比

      基于權(quán)限的Android惡意應(yīng)用檢測(cè)方法的優(yōu)點(diǎn)是權(quán)限特征提取方式簡(jiǎn)單快捷、特征數(shù)量較少、檢測(cè)效率較高,其缺點(diǎn)是惡意應(yīng)用容易申請(qǐng)和良性應(yīng)用相同的權(quán)限,以偽裝成良性應(yīng)用,導(dǎo)致檢測(cè)準(zhǔn)確率較低、誤報(bào)率較高.常見(jiàn)的改進(jìn)方法是將權(quán)限特征和其他靜態(tài)特征結(jié)合,以提高Android惡意應(yīng)用檢測(cè)的精度.

      3 基于API的Android惡意應(yīng)用檢測(cè)方法

      3.1 簡(jiǎn) 述

      Android API[24]是Android系統(tǒng)提供的函數(shù)接口,惡意應(yīng)用在獲得敏感權(quán)限后,可能通過(guò)API調(diào)用訪問(wèn)和獲取手機(jī)中的短信、通訊錄、定位、相機(jī)和相冊(cè)等敏感數(shù)據(jù),也可能通過(guò)惡意操作執(zhí)行系統(tǒng)破壞、遠(yuǎn)程控制和誘騙欺詐等惡意行為,導(dǎo)致用戶的隱私和經(jīng)濟(jì)安全受到侵害.良性應(yīng)用和惡意應(yīng)用在API使用和調(diào)用模式上存在差異,因此可通過(guò)分析API特征的方式來(lái)檢測(cè)惡意應(yīng)用.權(quán)限特征設(shè)置粒度較粗,導(dǎo)致基于權(quán)限的Android惡意應(yīng)用檢測(cè)方法存在較大的不確定性,而分析API調(diào)用情況能更全面細(xì)致地理解應(yīng)用特征.因此,相較于基于權(quán)限的方法,基于API的Android惡意應(yīng)用檢測(cè)方法取得了更高的準(zhǔn)確性和魯棒性,是目前使用最廣泛的一類(lèi)方法.此類(lèi)方法通過(guò)分析反編譯后的Smali文件,提取API調(diào)用序列或API調(diào)用圖,以檢測(cè)惡意應(yīng)用.根據(jù)所使用API信息和方式的不同,本節(jié)將其分為基于API使用情況、基于API調(diào)用依賴圖和基于API與其他特征結(jié)合3類(lèi)Android惡意應(yīng)用檢測(cè)方法.

      3.2 已有工作分析

      3.2.1 基于API使用情況的方法

      API使用情況能在一定程度反映應(yīng)用的特點(diǎn).基于API使用情況的方法通過(guò)提取和分析應(yīng)用的API調(diào)用序列和關(guān)系,并使用各類(lèi)機(jī)器學(xué)習(xí)算法檢測(cè)惡意應(yīng)用,這類(lèi)方法取得了較好效果.例如,Scalas等人[25]針對(duì)勒索應(yīng)用對(duì)Android用戶的威脅,提出基于API檢測(cè)策略的方法R-PackDroid,該方法可用于檢測(cè)具有勒索行為的惡意應(yīng)用和其他類(lèi)別的惡意應(yīng)用.由于勒索應(yīng)用攻擊嚴(yán)重依賴特定的API來(lái)執(zhí)行其操作,可通過(guò)包、類(lèi)和函數(shù)3類(lèi)粒度的API特征信息進(jìn)行檢測(cè),實(shí)驗(yàn)結(jié)果表明,基于函數(shù)粒度特征的檢測(cè)方法相比其他2種有更高的準(zhǔn)確率.

      隱私竊取是惡意應(yīng)用的典型行為之一,常使用數(shù)據(jù)流分析和污點(diǎn)分析來(lái)檢測(cè)這類(lèi)惡意行為.其中,數(shù)據(jù)流分析方法記錄和跟蹤敏感數(shù)據(jù)流路徑,包括源點(diǎn)、數(shù)據(jù)傳播路徑和交匯點(diǎn),并分析API在數(shù)據(jù)流路徑上的調(diào)用序列,以檢測(cè)隱私數(shù)據(jù)是否被泄露.Wu等人[26]提取與數(shù)據(jù)流相關(guān)的API,并根據(jù)每個(gè)API在惡意應(yīng)用中的使用情況計(jì)算其惡意權(quán)重值,在計(jì)算出惡意權(quán)重值的基礎(chǔ)上,使用改進(jìn)的馬氏距離(Mahalanobis distance)方法計(jì)算K最鄰近(K-nearest neighbor, KNN)分類(lèi)算法中相鄰節(jié)點(diǎn)的距離,以提高敏感數(shù)據(jù)分析的效率和模型的檢測(cè)精度.隨著惡意應(yīng)用的不斷演化,其收集敏感數(shù)據(jù)的行為更加復(fù)雜,僅由源點(diǎn)和交匯點(diǎn)構(gòu)成的簡(jiǎn)單信息流難以捕獲此類(lèi)行為.為此,Shen等人[27]通過(guò)提取由簡(jiǎn)單信息流集合所組成的復(fù)雜信息流路徑上的API序列,使用N-Gram模型生成不同長(zhǎng)度的API特征向量,然后使用SVM算法構(gòu)造模型以檢測(cè)惡意應(yīng)用.此外,Dexteroid[28]從Android生命周期函數(shù)調(diào)用中提取組件的行為特征、事件調(diào)用和狀態(tài)轉(zhuǎn)換,以檢測(cè)存在信息泄露和發(fā)送惡意短信隱患的惡意應(yīng)用.

      污點(diǎn)分析方法能夠追蹤應(yīng)用程序中的隱私數(shù)據(jù)從獲取到泄露的整個(gè)傳播過(guò)程.Feng等人[29]提出基于API語(yǔ)義的方法Apposcopy,該方法將靜態(tài)污點(diǎn)分析和組件間調(diào)用圖相結(jié)合,以檢測(cè)具有控制流和數(shù)據(jù)流屬性的惡意應(yīng)用.為提高污點(diǎn)分析效率,張捷等人[30]提出基于污染變量關(guān)系圖的污點(diǎn)分析方法FastDroid.除了關(guān)注污點(diǎn)分析效率外,大量惡意應(yīng)用采用代碼保護(hù)技術(shù),導(dǎo)致污點(diǎn)分析技術(shù)存在誤報(bào)率較高的問(wèn)題.為此,繆小川等人[31]使用敏感路徑識(shí)別方法分析Android應(yīng)用的安全性,該方法首先提取組件間函數(shù)調(diào)用關(guān)系圖,在圖中尋找由敏感行為以及觸發(fā)該行為的API組成的敏感路徑,然后對(duì)敏感路徑進(jìn)行特征抽象化,以使用決策樹(shù)模型檢測(cè)惡意應(yīng)用.王蕾等人[32]提出面向Android應(yīng)用隱私泄露檢測(cè)的多源污點(diǎn)分析技術(shù)可有效區(qū)分出分支互斥路徑,提升了檢測(cè)效率,并且降低了多源污點(diǎn)問(wèn)題計(jì)算開(kāi)銷(xiāo).

      也有研究工作關(guān)注到用戶輸入和行為等敏感操作與API調(diào)用序列之間存在一定關(guān)聯(lián)關(guān)系.2015年,Elish等人[33]使用TriggerMetric元組來(lái)表示用戶輸入和行為觸發(fā)的敏感API調(diào)用特征,TriggerMetric元組包括用戶操作、觸發(fā)器、依賴路徑和API調(diào)用,可根據(jù)應(yīng)用操作行為的不同區(qū)分良性應(yīng)用和惡意應(yīng)用.Alam等人[34]提出了基于優(yōu)勢(shì)樹(shù)(dominance tree)的API調(diào)用序列挖掘方法DroidDomTree,改進(jìn)TF-IDF方法為優(yōu)勢(shì)樹(shù)中的節(jié)點(diǎn)分配權(quán)重,根據(jù)權(quán)重選擇重要的API特征,從而提高了檢測(cè)效率.

      3.2.2 基于API調(diào)用依賴圖的方法

      隨著Android版本的升級(jí),以及惡意應(yīng)用的演化,常使用升級(jí)后的API實(shí)現(xiàn)相似的惡意功能,導(dǎo)致惡意應(yīng)用檢測(cè)模型逐漸老化.面對(duì)新出現(xiàn)的惡意應(yīng)用時(shí)檢測(cè)準(zhǔn)確率不斷下降,需要定期重新收集數(shù)據(jù)集再次訓(xùn)練,構(gòu)建API調(diào)用關(guān)系圖是減緩模型老化的有效方法.為此,Mariconti等人[35]提出了基于行為模型馬爾可夫鏈(Markov chain)的惡意應(yīng)用檢測(cè)方法MaMa-Droid,將API調(diào)用圖抽象成包和類(lèi)序列以構(gòu)建馬爾可夫鏈形式的行為模型,以從中提取特征檢測(cè)惡意應(yīng)用.實(shí)驗(yàn)結(jié)果表明,將使用舊數(shù)據(jù)集訓(xùn)練的模型用于檢測(cè)1年和2年后出現(xiàn)的新惡意應(yīng)用時(shí),F(xiàn)1值分別達(dá)到了86%和75%.為進(jìn)一步緩解模型老化問(wèn)題,Zhang等人[36]提出了APIGraph框架,通過(guò)構(gòu)建API關(guān)系圖分析API升級(jí)前后的語(yǔ)義相似性,以減緩模型老化.首先,采用NLP語(yǔ)義解析不同版本的Android API文檔,從中提取API、權(quán)限等實(shí)體并構(gòu)建API關(guān)系圖;然后使用圖嵌入方法將圖中的實(shí)體編碼為向量,通過(guò)向量之間的差異表示實(shí)體間的語(yǔ)義相似性,以將語(yǔ)義相似的實(shí)體聚類(lèi)到不同簇中;最后使用實(shí)體簇訓(xùn)練模型以緩解Drebin和MaMaDroid等Android惡意應(yīng)用檢測(cè)工具老化速度.相似地,Xu等人[37]提出了SDAC方法,根據(jù)現(xiàn)有API的貢獻(xiàn)來(lái)評(píng)估新增API對(duì)惡意應(yīng)用檢測(cè)模型的貢獻(xiàn),具體為根據(jù)API的語(yǔ)義距離對(duì)所有API進(jìn)行聚類(lèi),在訓(xùn)練階段創(chuàng)建一個(gè)可擴(kuò)展的特征集,以通過(guò)添加檢測(cè)階段新增API特征的方式來(lái)適應(yīng)Android版本差異所帶來(lái)的API變化,實(shí)驗(yàn)結(jié)果表明,SDAC的性能相較MaMaDroid取得了明顯提升.

      為提升檢測(cè)效率,相關(guān)研究使用社交網(wǎng)絡(luò)分析技術(shù)檢測(cè)Android惡意應(yīng)用.例如,Wu等人[38]提出了基于圖的輕量級(jí)檢測(cè)方法MalScan,將函數(shù)調(diào)用圖視為社交網(wǎng)絡(luò),采用社交網(wǎng)絡(luò)中心性分析獲取圖的語(yǔ)義特征,相比Drebin和MaMaDroid大幅度提升了檢測(cè)速度.但是當(dāng)惡意應(yīng)用行為與良性應(yīng)用行為相似時(shí),MalScan會(huì)出現(xiàn)漏報(bào),為此Zou等人[39]提出了IntDroid,在社交網(wǎng)絡(luò)中心性分析的基礎(chǔ)上,通過(guò)計(jì)算社交網(wǎng)絡(luò)中敏感API和中心節(jié)點(diǎn)的平均親密度來(lái)表示圖的語(yǔ)義特征,以適當(dāng)降低擴(kuò)展性為代價(jià)取得了比MalScan更高的準(zhǔn)確率.Wu等人[40]將函數(shù)調(diào)用圖中的惡意部分節(jié)點(diǎn)僅占一小部分的惡意應(yīng)用稱為隱蔽惡意應(yīng)用.隱蔽惡意應(yīng)用的函數(shù)調(diào)用圖中良性部分和惡意部分具有強(qiáng)相關(guān)性且所占比例較小,導(dǎo)致IntDroid面對(duì)隱蔽惡意應(yīng)用時(shí)檢測(cè)性能下降.為此,他們提出了基于社交網(wǎng)絡(luò)同質(zhì)性分析的方法HomDroid檢測(cè)隱蔽Android惡意應(yīng)用,實(shí)驗(yàn)結(jié)果表明HomDroid檢測(cè)隱蔽惡意應(yīng)用性能優(yōu)于Drebin,MaMaDroid,IntDroid等方法.隨著對(duì)Android應(yīng)用研究的深入,惡意應(yīng)用檢測(cè)方法取得較大進(jìn)展,基于API調(diào)用依賴圖的方法取得了較好的檢測(cè)性能.然而,研究發(fā)現(xiàn)通過(guò)擾亂特征向量等方法可生成成功繞過(guò)檢測(cè)的惡意應(yīng)用.例如,Zhao等人[41]提出了Android惡意應(yīng)用對(duì)抗性攻擊的方法,使用強(qiáng)化學(xué)習(xí)修改對(duì)函數(shù)調(diào)用依賴圖,通過(guò)插入節(jié)點(diǎn)、刪除節(jié)點(diǎn)、添加邊和重寫(xiě)的方式適應(yīng)程序的操作(插入方法、刪除方法、添加調(diào)用關(guān)系和重寫(xiě)),提高對(duì)抗性攻擊的有效性.針對(duì)精心設(shè)計(jì)的對(duì)抗性攻擊可能會(huì)繞過(guò)惡意應(yīng)用檢測(cè)模型的問(wèn)題,Demontis等人[42]提出了對(duì)抗規(guī)避攻擊的惡意應(yīng)用檢測(cè)方法,通過(guò)對(duì)不同特征分配不同權(quán)重的方式來(lái)提高模型的魯棒性.

      隨著深度學(xué)習(xí)技術(shù)在各個(gè)領(lǐng)域取得良好成績(jī),研究人員也開(kāi)始嘗試使用深度學(xué)習(xí)檢測(cè)Android惡意應(yīng)用[43-44].卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)僅能處理歐氏空間數(shù)據(jù)如圖像、文本等,不支持非歐空間數(shù)據(jù),如圖數(shù)據(jù)[45].而圖數(shù)據(jù)能夠更準(zhǔn)確地表達(dá)Android應(yīng)用和API之間調(diào)用關(guān)系,Gao等人[46]提出使用圖卷積神經(jīng)網(wǎng)絡(luò)(graph convolutional network,GCN)檢測(cè)Android惡意應(yīng)用的方法GDroid,將應(yīng)用和API映射為異構(gòu)圖,惡意應(yīng)用檢測(cè)任務(wù)轉(zhuǎn)換為節(jié)點(diǎn)分類(lèi)任務(wù),該方法以應(yīng)用(APP)、API間的調(diào)用關(guān)系和API的使用模式構(gòu)建APP-API和API-API為邊的異構(gòu)圖,并將異構(gòu)圖輸入圖卷積網(wǎng)絡(luò)模型以檢測(cè)惡意應(yīng)用.相似地,Li等人[47]也提出使用圖卷積網(wǎng)絡(luò)檢測(cè)惡意應(yīng)用的方法,該方法首先提取API調(diào)用序列生成有向循環(huán)圖,然后使用馬爾可夫鏈和主成分分析法提取圖的特征,并基于圖卷積網(wǎng)絡(luò)檢測(cè)惡意應(yīng)用.除此之外,AMalNet[48]還采用GCN結(jié)合獨(dú)立循環(huán)網(wǎng)絡(luò)(independently recurrent neural network,IndRNN)的方式檢測(cè)Android惡意應(yīng)用.

      為了減少對(duì)圖的分析,提升檢測(cè)效率,研究人員將API調(diào)用圖化分為多個(gè)子圖集合.S3Feature[49]在函數(shù)調(diào)用圖中標(biāo)記敏感節(jié)點(diǎn)形成敏感函數(shù)調(diào)用圖,然后從中挖掘出敏感子圖(SSG)及其相鄰子圖(NSG),最后將SSG和NSG去重后編碼為特征向量用于惡意應(yīng)用檢測(cè).Fan等人[50]提出了基于頻繁子圖的Android惡意應(yīng)用檢測(cè)方法FalDroid,通過(guò)構(gòu)建同一家族代表性應(yīng)用的頻繁子圖的方式,將敏感API調(diào)用關(guān)系圖劃分為子圖集合,以減少圖分析復(fù)雜度,提升檢測(cè)惡意應(yīng)用效率.類(lèi)似地,Lu等人[51]在提取函數(shù)調(diào)用圖后,從圖中刪除敏感API節(jié)點(diǎn)距離大于3的節(jié)點(diǎn)以簡(jiǎn)化函數(shù)調(diào)用圖,構(gòu)建去噪圖卷積神經(jīng)網(wǎng)絡(luò)(denoising graph convolutional neural network),提升了惡意應(yīng)用檢測(cè)性能.

      除了文獻(xiàn)[49-51]構(gòu)建API調(diào)用關(guān)系圖的方法外,研究人員[52]還使用API調(diào)用上下文信息來(lái)提高檢測(cè)精度.Allen等人[53]對(duì)API調(diào)用上下文信息的有效性進(jìn)行了全面研究,發(fā)現(xiàn)API調(diào)用的入口點(diǎn)對(duì)分類(lèi)正確性影響較大,并提出了輕量級(jí)上下文感知系統(tǒng)PIKADROID,以用于檢測(cè)惡意應(yīng)用.Zhang等人[54]提出基于API語(yǔ)義依賴圖的方法來(lái)檢測(cè)Android惡意應(yīng)用,并實(shí)現(xiàn)了原型系統(tǒng)DroidSIFT,該方法首先提取上下文加權(quán)API依賴圖作為程序語(yǔ)義來(lái)構(gòu)造特征集合,然后根據(jù)圖相似性來(lái)檢測(cè)惡意應(yīng)用.另外,MKLDroid[55]從應(yīng)用程序的依賴圖中捕獲結(jié)構(gòu)和上下文信息,以在依賴圖中定位細(xì)粒度的惡意代碼.

      同一家族應(yīng)用程序具有類(lèi)似的功能,可通過(guò)分析它們共同特征的相似性檢測(cè)惡意應(yīng)用.受推薦系統(tǒng)的啟發(fā),F(xiàn)renklach等人[56]提出了利用應(yīng)用程序相似性圖來(lái)檢測(cè)Android惡意應(yīng)用的方法,在該方法中,應(yīng)用程序?qū)?yīng)被推薦的項(xiàng)目,功能對(duì)應(yīng)用戶.該方法首先提取并處理API調(diào)用圖,從應(yīng)用程序和功能的二分網(wǎng)絡(luò)中生成應(yīng)用相似性圖(APP similarity graph,ASG);然后采用Node2Vec圖嵌入方法將ASG轉(zhuǎn)為特征向量,以使用隨機(jī)森林模型檢測(cè)惡意應(yīng)用.具有共同特征的惡意應(yīng)用可能屬于同一個(gè)惡意應(yīng)用家族,Karbab等人[57]據(jù)此在Cypider[58]的基礎(chǔ)上提出基于應(yīng)用程序相似性網(wǎng)絡(luò)的檢測(cè)方法,該方法首先構(gòu)建應(yīng)用程序的相似性網(wǎng)絡(luò),從相似性網(wǎng)絡(luò)中提取具有高連通性的子圖作為社區(qū),然后為每個(gè)社區(qū)生成單個(gè)社區(qū)指紋,最后使用SVM對(duì)社區(qū)指紋進(jìn)行分類(lèi),以將惡意應(yīng)用歸類(lèi)為不同家族.

      3.2.3 基于API與其他特征相結(jié)合的方法

      研究人員還采用API與其他特征相結(jié)合的方式,進(jìn)一步提升檢測(cè)Android惡意應(yīng)用的性能.典型工作如Arp等人[7]提出的Drebin在API的基礎(chǔ)上,結(jié)合了權(quán)限、Intent、各類(lèi)組件、硬件組件和網(wǎng)絡(luò)地址等特征以檢測(cè)惡意應(yīng)用,該項(xiàng)工作還共享了惡意應(yīng)用數(shù)據(jù)集,Drebin方法成為了后續(xù)工作的常用比較對(duì)象.2019年,Badhani等人[59]提出CENDroid方法,該方法首先提取API和權(quán)限特征;然后分別創(chuàng)建API、權(quán)限及API和權(quán)限的3組特征集;其次采用決策樹(shù)、極限學(xué)習(xí)機(jī)(extreme learning machine,ELM)、邏輯回歸(logistic regression,LR)、RIPPER和SVM這5種分類(lèi)器分別使用3組特征集進(jìn)行惡意應(yīng)用檢測(cè),實(shí)驗(yàn)結(jié)果表明API與權(quán)限組合的特征有更高的檢測(cè)性能;最后,通過(guò)集成學(xué)習(xí)將5種分類(lèi)器結(jié)合,其各項(xiàng)評(píng)估指標(biāo)均優(yōu)于單個(gè)的分類(lèi)器,提高了檢測(cè)Android惡意應(yīng)用的性能.HybriDroid[60]同樣使用多數(shù)投票等集成學(xué)習(xí)方法結(jié)合徑向基函數(shù)(radical basis function network,RBF)網(wǎng)絡(luò)、人工神經(jīng)網(wǎng)絡(luò)(artificial neural network, ANN)和邏輯回歸等多個(gè)分類(lèi)器,并結(jié)合API、權(quán)限和元數(shù)據(jù)等特征,使得檢測(cè)Android惡意應(yīng)用準(zhǔn)確率達(dá)到了98.8%.針對(duì)如何學(xué)習(xí)有效的特征表示,Zhu等人[61]通過(guò)無(wú)監(jiān)督特征學(xué)習(xí)算法從數(shù)據(jù)集中學(xué)習(xí)有效的特征,以降低對(duì)Android先驗(yàn)知識(shí)和人工選擇特征的依賴.

      由于API和其他特征結(jié)合后會(huì)導(dǎo)致特征數(shù)量增多,樣本在特征空間分布更加稀疏,容易造成過(guò)擬合等問(wèn)題,影響模型的檢測(cè)時(shí)間和精度,因此,研究人員嘗試通過(guò)特征選擇方法優(yōu)化模型性能.Cen等人[62]將API與權(quán)限相結(jié)合作為特征,采用信息增益(information gain,IG)和卡方檢驗(yàn)(chi-square test,CHI)進(jìn)行特征選擇,采用基于正則化Logistic回歸的概率判別模型來(lái)檢測(cè)Android惡意應(yīng)用.Peynirci等人[63]提出基于IDF值的特征選擇算法以檢測(cè)惡意應(yīng)用,該方法首先提取權(quán)限、API和字符串3種特征,根據(jù)惡意應(yīng)用出現(xiàn)最多和良性應(yīng)用出現(xiàn)最少的特征,計(jì)算特征IDF差值并選擇前5%或10%的特征,然后使用KNN、SVM、Native Bayes、J48、隨機(jī)森林等模型檢測(cè)Android惡意應(yīng)用.Kong等人[64]將孿生卷積神經(jīng)網(wǎng)絡(luò)(siamese convolutional neural network,SCNN)用于檢測(cè)惡意應(yīng)用,該方法首先使用特征分組(feature grouping)策略對(duì)API和權(quán)限進(jìn)行特征選擇,然后構(gòu)建和訓(xùn)練SCNN模型,通過(guò)相似度距離方法計(jì)算出良性應(yīng)用和惡意應(yīng)用的均值并將其作為中心點(diǎn),最后計(jì)算待檢測(cè)應(yīng)用與2個(gè)中心點(diǎn)的距離以確定應(yīng)用類(lèi)別.注意到現(xiàn)有部分工作忽視了特征間的重要性差異,Cai等人[65]提出了基于特征加權(quán)聯(lián)合優(yōu)化的Android惡意應(yīng)用檢測(cè)方法JOWMDroid,該方法提取系統(tǒng)資源、權(quán)限、組件、Intent、受限API、敏感API、權(quán)限調(diào)用API和敏感Shell命令8類(lèi)特征,然后使用IG對(duì)其進(jìn)行特征選擇,并使用5種權(quán)重映射函數(shù)計(jì)算特征權(quán)重,最后通過(guò)集成學(xué)習(xí)結(jié)合SVM,LR,MLP這3類(lèi)模型提升惡意應(yīng)用檢測(cè)精度.文獻(xiàn)[62-65]采用了特征選擇的方法,避免了特征“維度爆炸”,在減少模型訓(xùn)練時(shí)間和檢測(cè)時(shí)間的同時(shí),提高了模型準(zhǔn)確率.

      除此之外,F(xiàn)eng等人[66]提出了MobiTive檢測(cè)系統(tǒng),該方法結(jié)合了API、權(quán)限、Intent和硬件特征,并比較了CNN、長(zhǎng)短期記憶(long short-term memory,LSTM)和門(mén)控循環(huán)單元(gated recurrent unit,GRU)這3種模型的準(zhǔn)確率,其中GRU模型取得了最好效果,MobiTive還可對(duì)Android惡意應(yīng)用家族進(jìn)行歸類(lèi).類(lèi)似地,Garcia等人[67]提出了RevealDroid方法,該方法提取API、反射特征和Native代碼作為特征,不僅提升了檢測(cè)Android惡意應(yīng)用的準(zhǔn)確性和效率,還可適用于經(jīng)過(guò)代碼混淆處理的應(yīng)用.另外,Hei等人[68]提出了快速檢測(cè)新應(yīng)用的框架HAWK,將實(shí)體(包含API、權(quán)限、類(lèi)、接口和so文件等)和行為關(guān)系建模為異構(gòu)信息網(wǎng)絡(luò),并結(jié)合改進(jìn)的圖注意力網(wǎng)絡(luò)模型檢測(cè)新應(yīng)用.

      3.3 已有工作的對(duì)比和點(diǎn)評(píng)

      表2對(duì)部分具有代表性的基于API的惡意應(yīng)用檢測(cè)方法進(jìn)行了對(duì)比.從表2的分析可以看出,基于API使用情況的方法假設(shè)各特征間相互獨(dú)立,或僅考慮數(shù)據(jù)流在API之間的傳播路徑,不考慮API間復(fù)雜的相關(guān)性,雖然具有方便快捷的優(yōu)點(diǎn),但是大量冗余的API特征會(huì)增加算法時(shí)間消耗.

      Table 2 Comparison of Android Malware Detection Methods Based on API表2 基于API的Android惡意應(yīng)用檢測(cè)方法對(duì)比

      通過(guò)API調(diào)用依賴圖來(lái)抽象API之間的調(diào)用關(guān)系,可利用圖結(jié)構(gòu)進(jìn)行分析以識(shí)別惡意應(yīng)用,但構(gòu)建API調(diào)用圖存在較大挑戰(zhàn).首先,API調(diào)用基于事件監(jiān)聽(tīng)與回調(diào),可能無(wú)法正確表示調(diào)用方法的順序;然后,應(yīng)用的不同部分通過(guò)組件間通信來(lái)進(jìn)行交互,這部分行為在代碼層面沒(méi)有直接調(diào)用關(guān)系,因此構(gòu)建的應(yīng)用API調(diào)用依賴圖可能不夠完整;最后,API調(diào)用依賴關(guān)系的復(fù)雜性導(dǎo)致所生成的圖較為復(fù)雜,使得基于圖分類(lèi)的方法時(shí)間消耗較多.

      API與其他特征結(jié)合的方法通過(guò)結(jié)合多種特征提升了惡意應(yīng)用檢測(cè)精度,但通常需要使用有效的特征選擇算法以選取更有代表性的特征子集.

      4 基于操作碼的Android惡意應(yīng)用檢測(cè)方法

      4.1 簡(jiǎn) 述

      研究發(fā)現(xiàn),部分惡意應(yīng)用采用代碼混淆技術(shù)以規(guī)避檢測(cè),降低了基于權(quán)限和API檢測(cè)Android惡意應(yīng)用方法的有效性[69].代碼混淆技術(shù)在一定程度上改變了應(yīng)用的程序結(jié)構(gòu),會(huì)引起程序的信息流等變化,但應(yīng)用的核心操作邏輯通常不會(huì)發(fā)生較大變化.作為程序執(zhí)行過(guò)程中的指令,操作碼可表征應(yīng)用的行為特征,針對(duì)方法名、變量名、字符串和權(quán)限的混淆技術(shù)對(duì)操作碼特性影響較小.因此,可將操作碼信息作為特征來(lái)檢測(cè)惡意應(yīng)用.基于操作碼的Android惡意應(yīng)用檢測(cè)方法首先通過(guò)反編譯提取Smali文件中的操作碼序列,然后對(duì)操作碼序列進(jìn)行分析處理,以檢測(cè)惡意應(yīng)用.根據(jù)所使用操作碼信息的方式不同,本節(jié)將介紹基于操作碼使用情況、基于操作碼序列轉(zhuǎn)化圖像、基于操作碼和其他特征的3類(lèi)Android惡意應(yīng)用檢測(cè)方法.

      4.2 已有工作分析

      4.2.1 基于操作碼使用情況的方法

      操作碼可用于表征應(yīng)用程序的行為模式,很多研究工作在提取操作碼序列后,使用統(tǒng)計(jì)模型或機(jī)器學(xué)習(xí)方法來(lái)檢測(cè)Android惡意應(yīng)用.例如,陳鐵明等人[70]提出了基于N-Gram模型的Android惡意應(yīng)用靜態(tài)檢測(cè)方法Maldetect,該方法首先使用逆向工程提取操作碼指令并將其抽象為指令符號(hào),然后使用NGram模型將指令符號(hào)序列編碼為特征,最后構(gòu)造隨機(jī)森林、SVM、KNN、Naive Bayes模型來(lái)檢測(cè)惡意應(yīng)用.基于N-Gram模型的方法對(duì)操作碼數(shù)量較為敏感,如果N-Gram模型中操作碼較少,無(wú)法涵蓋足夠信息來(lái)檢測(cè)惡意應(yīng)用;而如果N-Gram模型中操作碼較多,特征維度過(guò)大,則會(huì)引入過(guò)多噪聲,導(dǎo)致更高的訓(xùn)練時(shí)間成本.與統(tǒng)計(jì)模型相比,深度學(xué)習(xí)方法可自動(dòng)提取特征并組織特征之間的關(guān)系.例如,McLaughlin等人[71]提取由218個(gè)操作碼組成的多個(gè)序列作為文本集,采用自然語(yǔ)言處理的方法,構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)模型檢測(cè)惡意應(yīng)用,并和基于N-Gram模型的方法進(jìn)行比較,實(shí)驗(yàn)結(jié)果表明,卷積神經(jīng)網(wǎng)絡(luò)模型在效率和性能均優(yōu)于基于N-Gram的檢測(cè)方法.

      李挺等人[72]提出了基于Dalvik指令的Android惡意代碼檢測(cè)方法,該方法首先對(duì)惡意應(yīng)用中操作碼指令集進(jìn)行精簡(jiǎn)以保留反映程序語(yǔ)義的指令,并對(duì)其進(jìn)行形式化描述以建立惡意特征庫(kù),然后使用軟件相似度度量算法(MOSS)和閔可夫斯基距離算法(Minkowski distance)計(jì)算待檢測(cè)應(yīng)用惡意應(yīng)用特征庫(kù)的相似度結(jié)果來(lái)判定其是否為惡意應(yīng)用.

      機(jī)器學(xué)習(xí)方法通常需要類(lèi)別較為平衡的訓(xùn)練樣本集才能生成性能較好的檢測(cè)模型.然而在真實(shí)場(chǎng)景下樣本類(lèi)別存在嚴(yán)重不平衡,導(dǎo)致模型檢測(cè)性能較低.為此,Mercaldo等人[73]采用進(jìn)程代數(shù)模型表示Android應(yīng)用,將字節(jié)碼轉(zhuǎn)換為進(jìn)程,并通過(guò)等價(jià)性檢驗(yàn)(equivalence checking)來(lái)分析所生成進(jìn)程代數(shù)模型之間的關(guān)系,該方法不需要樣本標(biāo)簽,即可檢測(cè)惡意應(yīng)用及其所屬家族,從而解決樣本類(lèi)別不平衡的問(wèn)題.

      鑒于Windows平臺(tái)上的應(yīng)用同樣由操作碼序列組成,有研究人員將Windows平臺(tái)基于操作碼序列檢測(cè)惡意應(yīng)用的方法移植到Android平臺(tái)上.例如,Canfora等人[74]評(píng)估了使用基于操作碼特征的隱馬爾可夫模型(hidden Markov model,HMM)和結(jié)構(gòu)熵2種方法檢測(cè)Android惡意應(yīng)用的性能.該研究表明基于HMM的方法可有效檢測(cè)Android惡意應(yīng)用,而基于結(jié)構(gòu)熵的方法更適合對(duì)Android惡意應(yīng)用家族分類(lèi).

      4.2.2 基于操作碼序列轉(zhuǎn)化圖像的方法

      大多數(shù)惡意應(yīng)用的變種往往通過(guò)自動(dòng)化技術(shù)重用攜帶惡意代碼模塊的方法生成,因此它們之間的操作碼序列具有一定的相似性.部分研究人員將操作碼序列轉(zhuǎn)化為圖像使其可視化,然后采用圖像識(shí)別的方法以識(shí)別原始樣本的變體來(lái)檢測(cè)Android惡意應(yīng)用.典型工作為Xiao等人[75]將Dalvik操作碼和操作數(shù)組成的字節(jié)碼文件轉(zhuǎn)換為RGB圖像,該方法首先以十六進(jìn)制格式讀取字節(jié)碼,然后將3個(gè)連續(xù)的十六進(jìn)制數(shù)分別轉(zhuǎn)換為RGB通道的3個(gè)值,將字節(jié)碼序列轉(zhuǎn)換為顏色矩陣,形成圖像文件,最后將圖像輸入CNN模型進(jìn)行分析,檢測(cè)是否為惡意應(yīng)用.在此工作基礎(chǔ)上,Yadav等人[76]對(duì)多種CNN模型進(jìn)行測(cè)試,結(jié)果表明采用EfficientNetB4結(jié)構(gòu)的CNN模型優(yōu)于MobileNetV2和ResNet50等結(jié)構(gòu)的模型.

      代碼混淆技術(shù)會(huì)繞過(guò)部分Android惡意應(yīng)用檢測(cè)系統(tǒng),降低現(xiàn)有方法的有效性.為此,Tang等人[69]提出了基于多粒度操作碼特征的Android惡意應(yīng)用檢測(cè)方法MGOPDroid,首先針對(duì)不同的混淆技術(shù)提取不同粒度的操作碼特征,通過(guò)TF-IDF方法和混淆前后操作碼特征的差異計(jì)算特征權(quán)重,以選擇有效的抗混淆操作碼特征,然后將操作碼序列特征轉(zhuǎn)為灰度圖像,作為ResNet模型的輸入,最后把訓(xùn)練好的模型,通過(guò)TensorFlow Lite部署在移動(dòng)設(shè)備,實(shí)現(xiàn)本地檢測(cè).

      注意到已有基于深度學(xué)習(xí)的惡意應(yīng)用檢測(cè)方法缺乏可解釋性,Iadarola等人[77]對(duì)檢測(cè)惡意應(yīng)用的CNN模型進(jìn)行了可解釋性分析.首先,應(yīng)用反編譯,并將DEX字節(jié)碼轉(zhuǎn)換為灰度圖,以訓(xùn)練CNN模型;然后,使用Grad-CAM生成熱圖,對(duì)CNN模型的輸出進(jìn)行解釋?zhuān)磹阂鈶?yīng)用家族分類(lèi)熱圖,以生成代表家族特性的累積熱圖.

      部分研究工作借鑒了檢測(cè)Windows平臺(tái)惡意應(yīng)用的方法來(lái)檢測(cè)Android應(yīng)用,并取得了良好的效果.例如,Yuan等人[78]提出了基于馬爾可夫圖像(Markov image)和深度學(xué)習(xí)的方法MDMC,將提取的字節(jié)碼經(jīng)概率轉(zhuǎn)移矩陣轉(zhuǎn)換成Markov圖像,通過(guò)深度卷積神經(jīng)網(wǎng)絡(luò)的方法對(duì)圖像進(jìn)行惡意應(yīng)用檢測(cè).該方法不僅適用于檢測(cè)Android惡意應(yīng)用,也適用于檢測(cè)Windows平臺(tái)惡意應(yīng)用.

      4.2.3 基于操作碼和其他特征相結(jié)合的方法

      為進(jìn)一步提升Android惡意應(yīng)用檢測(cè)性能,研究人員還結(jié)合了操作碼、權(quán)限和API等多種特征來(lái)檢測(cè)惡意應(yīng)用.張炳等人[79]提出了面向概念漂移的可解釋性Android惡意應(yīng)用檢測(cè)方法InterDroid,首先根據(jù)Android惡意應(yīng)用報(bào)告分析和提取了API、權(quán)限、Intent和字節(jié)碼,然后使用自動(dòng)化機(jī)器學(xué)習(xí)算法TPOT(tree-based tipeline optimization tool)篩選最佳分類(lèi)模型集合,并使用集合中的模型和特征構(gòu)建特征解釋器,最后基于聯(lián)合分布適配算法提高檢測(cè)準(zhǔn)確率.Qiu等人[80]提出的多視圖特征智能檢測(cè)框架MFI,從已知惡意應(yīng)用家族中學(xué)習(xí)功能表示,以識(shí)別具有相同功能的新惡意應(yīng)用.具體而言,提取權(quán)限、API調(diào)用圖和操作碼等異構(gòu)特征,通過(guò)特征分析、選擇、聚合和編碼等過(guò)程,構(gòu)建深度神經(jīng)網(wǎng)絡(luò)(deep neural network,DNN)檢測(cè)模型檢測(cè)惡意應(yīng)用.實(shí)驗(yàn)結(jié)果表明,MFI優(yōu)于Drebin和MaMaDroid等方法.陳波等人[81]提出基于多層SimHash的相似度檢測(cè)方法,首先從APK文件中提取的AndroidManifest.xml、Smali代碼集、操作碼指令集、Java代碼集、Java指令集5類(lèi)特征表征應(yīng)用,然后采用SimHash算法進(jìn)行相似度分析,并分別用于構(gòu)建一層數(shù)據(jù)模型,在檢測(cè)過(guò)程中使用投票感知器(voted perceptron)算法,為每層分別賦予信任權(quán)重值,最后將每層結(jié)果結(jié)合權(quán)重進(jìn)行投票,根據(jù)投票結(jié)果判斷是否為惡意應(yīng)用.實(shí)驗(yàn)結(jié)果表明該方法有較好的檢測(cè)效果.Kim等人[82]提出多模態(tài)深度學(xué)習(xí)方法檢測(cè)惡意應(yīng)用,通過(guò)提取操作碼、API、權(quán)限、組件、字符串、共享庫(kù)函數(shù)和環(huán)境7類(lèi)特征,以構(gòu)建深度神經(jīng)網(wǎng)絡(luò)DNN模型檢測(cè)惡意應(yīng)用.

      Lu等人[83]設(shè)計(jì)了DLAMD框架,使用預(yù)檢測(cè)和深度檢測(cè)2個(gè)階段檢測(cè)Android惡意應(yīng)用,預(yù)檢測(cè)階段提取權(quán)限特征并使用BP神經(jīng)網(wǎng)絡(luò)模型初步篩選具有明顯特征的惡意應(yīng)用,以降低檢測(cè)時(shí)間和計(jì)算成本,提高整個(gè)框架的檢測(cè)效率.深度檢測(cè)階段提取應(yīng)用的操作碼結(jié)合CNN和LSTM模型,以進(jìn)一步檢測(cè)疑似惡意應(yīng)用,提升檢測(cè)準(zhǔn)確性.

      4.3 已有工作對(duì)比和點(diǎn)評(píng)

      表3將部分基于操作碼的代表性方法進(jìn)行了對(duì)比.其中,基于操作碼使用情況方法的優(yōu)點(diǎn)是可以有效避免因代碼混淆而提取不到重要特征的問(wèn)題,也無(wú)需人工選擇具體特征.基于操作碼轉(zhuǎn)化圖像的方法將Android惡意應(yīng)用檢測(cè)的問(wèn)題轉(zhuǎn)為圖像分類(lèi)問(wèn)題,可利用已有的圖像分類(lèi)算法,由于其缺點(diǎn)是可解釋性較差,且對(duì)計(jì)算機(jī)硬件和算力要求較高;基于操作碼和其他特征結(jié)合的方法結(jié)合多種特征,提升了惡意應(yīng)用檢測(cè)精度,其缺點(diǎn)是模型設(shè)計(jì)較為復(fù)雜且檢測(cè)時(shí)間較長(zhǎng).

      Table 3 Comparison of Android Malware Detection Methods Based on Opcode表3 基于操作碼的Android惡意應(yīng)用檢測(cè)方法對(duì)比

      5 基于其他特征的Android惡意應(yīng)用檢測(cè)方法

      5.1 簡(jiǎn) 述

      除了上述權(quán)限、API和操作碼等常用的靜態(tài)特征方法外,為應(yīng)對(duì)代碼混淆、惡意代碼注入所帶來(lái)的挑戰(zhàn),有研究通過(guò)結(jié)合動(dòng)靜態(tài)特征和相似代碼片段等方法來(lái)檢測(cè)Android惡意應(yīng)用.

      5.2 已有工作分析

      5.2.1 基于動(dòng)靜態(tài)特征結(jié)合的方法

      Android惡意應(yīng)用動(dòng)態(tài)檢測(cè)指分析Android應(yīng)用是在嚴(yán)格控制的環(huán)境(真實(shí)設(shè)備或模擬器)中利用自動(dòng)化腳本模擬用戶操作,執(zhí)行如API調(diào)用、網(wǎng)絡(luò)通信、資源訪問(wèn)、進(jìn)程控制等操作,并通過(guò)對(duì)應(yīng)用行為分析來(lái)判斷其是否存在隱私竊取、惡意扣費(fèi)、遠(yuǎn)程控制等惡意行為.由于Android應(yīng)用是通過(guò)事件交互驅(qū)動(dòng)的,惡意應(yīng)用行為往往與交互方式相關(guān),在動(dòng)態(tài)檢測(cè)中如果沒(méi)有發(fā)現(xiàn)惡意行為,并不能確保之后不會(huì)發(fā)生,而靜態(tài)分析可以分析更多的可執(zhí)行路徑,但難以應(yīng)對(duì)代碼混淆加密的問(wèn)題.因此,有研究工作通過(guò)將動(dòng)態(tài)特征與靜態(tài)特征相結(jié)合的方式來(lái)解決上述問(wèn)題.

      楊歡等人[84]提出了靜動(dòng)態(tài)結(jié)合的方法Androdect,其使用的靜態(tài)特征包括權(quán)限、各類(lèi)組件、API信息和Native代碼,在模擬器中使用Monkey[85]模擬用戶行為,以收集動(dòng)態(tài)特征,并設(shè)計(jì)了3層混合系綜算法(triple hybrid ensemble algorithm,THEA),使用決策樹(shù)、樸素貝葉斯和KNN等多種機(jī)器學(xué)習(xí)模型的最優(yōu)分類(lèi)器來(lái)檢測(cè)惡意應(yīng)用.

      Alzaylaee等人[86]提出了基于深度學(xué)習(xí)的惡意應(yīng)用檢測(cè)方法DL-Droid,可適用于真實(shí)設(shè)備.DL-Droid使用權(quán)限、API和Intent等靜態(tài)特征和運(yùn)行日志等動(dòng)態(tài)特征來(lái)訓(xùn)練檢測(cè)惡意應(yīng)用的深度學(xué)習(xí)模型,并與SVM,SVM RBF,NB,LR,PART,RF,J48等主流算法進(jìn)行比較,實(shí)驗(yàn)結(jié)果表明DL-Droid具有更好的性能.

      網(wǎng)絡(luò)流量特征可用于檢測(cè)具有惡意代碼更新功能和泄露隱私的應(yīng)用,可與靜態(tài)特征相結(jié)合檢測(cè)惡意應(yīng)用.Arora等人[87]提出了基于權(quán)限特征和網(wǎng)絡(luò)流量特征的Android惡意應(yīng)用檢測(cè)方法,該方法將KNN算法和K-Medoids算法相結(jié)合,實(shí)驗(yàn)結(jié)果表明,該方法優(yōu)于僅使用動(dòng)態(tài)流量特征或靜態(tài)權(quán)限特征的檢測(cè)方法.大多數(shù)惡意應(yīng)用竊取隱私數(shù)據(jù)后將其發(fā)送到服務(wù)端,Tong等人[88]先通過(guò)動(dòng)態(tài)運(yùn)行應(yīng)用提取文件調(diào)用和網(wǎng)絡(luò)訪問(wèn)相關(guān)的特征,分別構(gòu)建良性應(yīng)用和惡意應(yīng)用模式集,以基于模式匹配檢測(cè)惡意應(yīng)用.Wang等人[89]通過(guò)挖掘應(yīng)用訪問(wèn)的URL以檢測(cè)惡意應(yīng)用,首先將收集到的應(yīng)用在模擬器中運(yùn)行,并收集應(yīng)用的網(wǎng)絡(luò)訪問(wèn)數(shù)據(jù),然后提取其中的URL信息并將其向量化,以訓(xùn)練用于檢測(cè)惡意應(yīng)用的神經(jīng)網(wǎng)絡(luò)模型.

      此外,權(quán)限、組件和API調(diào)用等靜態(tài)特征也可以和動(dòng)態(tài)行為特征組合以檢測(cè)惡意應(yīng)用[90-92].例如,李鵬偉等人[93]對(duì)APK進(jìn)行脫殼重打包后提取動(dòng)靜態(tài)特征,其中靜態(tài)特征包括應(yīng)用的結(jié)構(gòu)信息、權(quán)限信息、加固情況、反射、Native代碼、權(quán)限和類(lèi)信息,動(dòng)態(tài)特征為通過(guò)插裝獲取的行為序列.Costa等人[94]提出了污點(diǎn)分析和動(dòng)態(tài)特征結(jié)合的檢測(cè)方法,主要對(duì)敏感API調(diào)用特征進(jìn)行分析.另外,Yuan等人[95]提出了深度學(xué)習(xí)檢測(cè)的方法Droid-Sec,該方法提取靜動(dòng)態(tài)特征采用深度置信網(wǎng)絡(luò)檢測(cè)惡意應(yīng)用.在動(dòng)態(tài)運(yùn)行過(guò)程中,Android應(yīng)用在調(diào)用分配內(nèi)存、訪問(wèn)文件等API函數(shù)時(shí),會(huì)轉(zhuǎn)換為相應(yīng)的系統(tǒng)調(diào)用,Amer等人[96]通過(guò)結(jié)合API調(diào)用、系統(tǒng)調(diào)用和權(quán)限序列特征,構(gòu)建LSTM模型,捕獲應(yīng)用運(yùn)行時(shí)API調(diào)用和系統(tǒng)調(diào)用間的依賴關(guān)系,以檢測(cè)惡意應(yīng)用.

      5.2.2 基于相似代碼片段的方法

      為規(guī)避檢測(cè),Android惡意應(yīng)用開(kāi)發(fā)人員可對(duì)良性應(yīng)用反編譯,注入惡意組件(例如存在惡意代碼的第三方庫(kù)),修改控制流以確保其正常運(yùn)行后,再重新打包上架至第三方應(yīng)用市場(chǎng).通過(guò)這種方式構(gòu)造的惡意應(yīng)用與其對(duì)應(yīng)的良性應(yīng)用行為相似,難以檢測(cè).由于這些惡意應(yīng)用中注入的惡意代碼存在相似性,有研究通過(guò)基于相似代碼片段的方法檢測(cè)Android惡意應(yīng)用.

      重打包檢測(cè)方法主要通過(guò)各種相似度度量指標(biāo)找到高度相似的應(yīng)用.例如,為消除第三方庫(kù)帶來(lái)的影響,Zhang等人[97]在特征提取階段根據(jù)應(yīng)用白名單移除通用第三方庫(kù)后,采用Jaccard指數(shù)分析應(yīng)用剩余部分的代碼相似度,然后根據(jù)代碼相似度、應(yīng)用程序的元數(shù)據(jù)和商業(yè)防病毒軟件提供的標(biāo)簽3類(lèi)異構(gòu)信息構(gòu)建網(wǎng)絡(luò)表示學(xué)習(xí)以對(duì)弱標(biāo)簽惡意應(yīng)用聚類(lèi)劃分為已知和未知的家族,最后構(gòu)建3層DNN來(lái)進(jìn)一步分類(lèi)已知家族的應(yīng)用.Tian等人[98]提出了代碼重打包檢測(cè)方法DR-Droid,該方法將應(yīng)用代碼的結(jié)構(gòu)根據(jù)其行為依賴關(guān)系劃分為多個(gè)代碼子集,在不同的代碼子集中提取了粗粒度的類(lèi)級(jí)依賴圖和細(xì)粒度的方法調(diào)用圖來(lái)生成應(yīng)用的特征向量.除常見(jiàn)的Java庫(kù)隱藏惡意代碼外,部分惡意應(yīng)用將惡意行為隱藏在Native代碼中,因此,Alam等人[99]提出了DroidNative以檢測(cè)字節(jié)碼或Native代碼中的惡意行為.Zhan等人[100]對(duì)Android第三方庫(kù)的檢測(cè)工具進(jìn)行了實(shí)證研究,從惡意應(yīng)用的檢測(cè)性能、檢測(cè)效率、代碼混淆恢復(fù)能力和易用性4方面分析和評(píng)估了現(xiàn)有的檢測(cè)工具.結(jié)果表明,LibScout[101]有更好的檢測(cè)性能,LibRadar[102]時(shí)間消耗少且更易用,Libeccio[103]抗代碼混淆效果最好.

      He等人[104]提出了基于惡意代碼片段識(shí)別的檢測(cè)方法MsDroid,使用GNN檢測(cè)Android惡意應(yīng)用.MsDroid使用調(diào)用圖、操作碼和權(quán)限信息,把Android應(yīng)用中的敏感行為建模為行為子圖集(behavior subgraph set),通過(guò)查找相似惡意應(yīng)用代碼片段檢測(cè)惡意應(yīng)用.Chen等人[105]使用克隆代碼檢測(cè)Android惡意應(yīng)用,該方法分為簽名生成和簽名匹配2個(gè)階段.簽名生成階段使用代碼檢測(cè)工具NiCad[106]查找惡意應(yīng)用集中的克隆類(lèi),通過(guò)基于相似子集的方法將不同的惡意應(yīng)用聚類(lèi)成不同的集合,并取每個(gè)克隆類(lèi)的代表性示例作為這個(gè)類(lèi)的簽名,構(gòu)成簽名集合.簽名匹配階段以增量模式使用NiCad在簽名集合中匹配良性應(yīng)用和惡意應(yīng)用克隆示例.Meng等人[107]提出了基于確定性符號(hào)自動(dòng)機(jī)的檢測(cè)模型,通過(guò)總結(jié)惡意應(yīng)用家族的代表性行為特征來(lái)檢測(cè)惡意應(yīng)用的變種.

      5.2.3 其他靜態(tài)檢測(cè)方法

      此外,還有一些利用簽名、Intent、APK文件等其他靜態(tài)特征的Android惡意應(yīng)用檢測(cè)方法.

      應(yīng)用簽名相當(dāng)于程序的唯一標(biāo)識(shí),用于應(yīng)用編譯打包后的身份驗(yàn)證,劉新宇等人[108]提出了基于APK簽名信息反饋的檢測(cè)方法,根據(jù)對(duì)APK簽名的驗(yàn)證和篩選來(lái)檢測(cè)惡意應(yīng)用.現(xiàn)有部分方法捕獲應(yīng)用程序和Android系統(tǒng)的交互,而Xu等人[109]關(guān)注應(yīng)用程序內(nèi)部或應(yīng)用程序間的通信,提出Intent組件檢測(cè)方法ICCDetector.

      研究人員除了將操作碼序列轉(zhuǎn)圖像外,還可將Android可執(zhí)行文件APK轉(zhuǎn)為圖像進(jìn)行檢測(cè),Pinhero等人[110]提出了基于惡意應(yīng)用可視化和深度學(xué)習(xí)的惡意應(yīng)用檢測(cè)方法,將APK轉(zhuǎn)為灰度、RGB和Markov Image,然后使用Gabor濾波器進(jìn)行紋理分析,最后將圖像作為輸入提供給12個(gè)不同的神經(jīng)網(wǎng)絡(luò)進(jìn)行檢測(cè).

      5.3 已有工作對(duì)比和點(diǎn)評(píng)

      表4對(duì)部分具有代表性的基于其他特征的Android惡意應(yīng)用檢測(cè)方法進(jìn)行了對(duì)比.由于部分論文未提供數(shù)據(jù)集來(lái)源,在數(shù)據(jù)集來(lái)源和數(shù)量列僅給出了應(yīng)用數(shù)量.動(dòng)靜態(tài)結(jié)合方法的優(yōu)點(diǎn)是可檢測(cè)代碼混淆加密等代碼保護(hù)技術(shù)和代碼熱更新技術(shù)的惡意應(yīng)用,提升了檢測(cè)性能;缺點(diǎn)是由于應(yīng)用在模擬器或真實(shí)設(shè)備中運(yùn)行以收集動(dòng)態(tài)特征,導(dǎo)致時(shí)間消耗增大且魯棒性較差.基于相似代碼片段檢測(cè)的方法可用于識(shí)別重復(fù)和相似的代碼,優(yōu)點(diǎn)是可識(shí)別具有相似惡意代碼模塊的應(yīng)用,可有效對(duì)惡意應(yīng)用所屬家族進(jìn)行歸類(lèi),缺點(diǎn)是檢測(cè)未知類(lèi)型的惡意應(yīng)用誤報(bào)率較高.

      Table 4 Comparison of Android Malware Detection Methods Based on Other Features表4 基于其他特征的Android惡意應(yīng)用檢測(cè)方法對(duì)比

      6 數(shù)據(jù)集與評(píng)價(jià)指標(biāo)

      在評(píng)估Android惡意應(yīng)用檢測(cè)方法的有效性時(shí),需要采用合理評(píng)價(jià)指標(biāo),并使用有代表性的Android應(yīng)用數(shù)據(jù)集.本節(jié)從2方面出發(fā),總結(jié)常用的Android應(yīng)用數(shù)據(jù)集和評(píng)價(jià)指標(biāo).

      6.1 數(shù)據(jù)集

      Android惡意應(yīng)用檢測(cè)研究離不開(kāi)有效的數(shù)據(jù)集支撐.在表1~4給出了此前研究中常用的良性應(yīng)用和惡意應(yīng)用數(shù)據(jù)集.其中,大多數(shù)研究人員使用的良性應(yīng)用數(shù)據(jù)集來(lái)自Google Play應(yīng)用商店.Google Play中的應(yīng)用在上架發(fā)布前會(huì)經(jīng)過(guò)Google Play Protect的安全檢測(cè),雖然可能仍會(huì)含有惡意應(yīng)用,但是數(shù)量極少,通??烧J(rèn)為是良性應(yīng)用.由于Google Play應(yīng)用商店的應(yīng)用無(wú)法直接下載,爬取也較為困難,Androzoo[111]平臺(tái)收集了大量的應(yīng)用,包括Google Play應(yīng)用商店的應(yīng)用,可作為良性應(yīng)用數(shù)據(jù)集備選方案.

      早期對(duì)Android惡意應(yīng)用的研究主要通過(guò)研究人員自行收集數(shù)據(jù)集,以對(duì)所提出方法的有效性進(jìn)行評(píng)估.Genome,Drebin,AMD是Android惡意應(yīng)用檢測(cè)問(wèn)題研究中使用最多的惡意數(shù)據(jù)集.Zhou等人[112]最早共享出Genome數(shù)據(jù)集,Genome里面包含49個(gè)家族,共1 260個(gè)惡意應(yīng)用,應(yīng)用分布年份在2010—2011年間.Arp等人[7]收集了Drebin數(shù)據(jù)集,該數(shù)據(jù)集包含179個(gè)家族,共5 560個(gè)惡意應(yīng)用.Wei等人[113]共享了AMD (Android malware dataset)數(shù)據(jù)集,AMD數(shù)據(jù)集包含24 650個(gè)惡意應(yīng)用.Kadir等人[114]針對(duì)Android僵尸網(wǎng)絡(luò)的研究工作收集了數(shù)據(jù)集Botnet,其共包括1 929個(gè)僵尸網(wǎng)絡(luò)惡意應(yīng)用.Wang等人[115]根據(jù)McAfee,F(xiàn)ireEye,Kaspersky等10家安全公司發(fā)布的移動(dòng)安全報(bào)告,收集創(chuàng)建了包含148個(gè)惡意應(yīng)用家族,共4 534個(gè)惡意應(yīng)用的數(shù)據(jù)集MalRadar,并從分發(fā)渠道、安裝方法、激活方法、惡意行為和反分析技術(shù)等方面進(jìn)行了描述.關(guān)注到近年來(lái)COVID-19相關(guān)的惡意應(yīng)用較為泛濫的問(wèn)題,Wang等人[116]系統(tǒng)地對(duì)COVID-19相關(guān)的應(yīng)用進(jìn)行分析,構(gòu)建了含有4 322個(gè)應(yīng)用的COVID-19相關(guān)應(yīng)用數(shù)據(jù)集,其中611個(gè)為惡意應(yīng)用.這些惡意應(yīng)用數(shù)據(jù)集有力推動(dòng)了Android惡意應(yīng)用檢測(cè)技術(shù)的發(fā)展.

      隨后出現(xiàn)的惡意應(yīng)用共享平臺(tái),收集了用戶提交的大量惡意應(yīng)用,可供研究人員下載使用.例如OmniDroid[117],Koodous,Contagio,Pwnzen,VirusShare等.表5給出了常用的惡意應(yīng)用數(shù)據(jù)集和惡意應(yīng)用共享平臺(tái),其中,應(yīng)用分布年份代表該數(shù)據(jù)集所收集應(yīng)用的年份.從表5中可以看出Koodous,MalRadar,Androzoo提供了一些近年來(lái)出現(xiàn)的惡意應(yīng)用.

      Table 5 Datasets of Malware Application表5 惡意應(yīng)用數(shù)據(jù)集

      6.2 評(píng)價(jià)指標(biāo)

      在Android惡意應(yīng)用檢測(cè)過(guò)程中,研究人員最常使用的評(píng)估分類(lèi)模型指標(biāo)有準(zhǔn)確率(Accuracy)、誤報(bào)率(ErrorRate) 、精確率(Precision)、召回率(Recall)、F1值、ROC曲線和AUC值等.在表1~4展示了各參考文獻(xiàn)中采用的評(píng)價(jià)指標(biāo)及最優(yōu)性能.除ROC曲線外,其余評(píng)價(jià)指標(biāo)都需要通過(guò)混淆矩陣計(jì)算,Android惡意應(yīng)用檢測(cè)的混淆矩陣如表6所示.

      Table 6 Confusion Matrix表6 混淆矩陣

      Accuracy是系統(tǒng)對(duì)整個(gè)樣本的檢測(cè)能力,即將惡意應(yīng)用檢測(cè)為惡意應(yīng)用,將良性應(yīng)用檢測(cè)為良性應(yīng)用的能力,計(jì)算為

      ErrorRate與Accuracy相反,表示預(yù)測(cè)錯(cuò)誤的樣本(FP和FN)在所有樣本中占的比例,計(jì)算為

      Precision是實(shí)際為惡意應(yīng)用的個(gè)數(shù)占檢測(cè)為惡意應(yīng)用的個(gè)數(shù)之比,計(jì)算為

      Recall是被正確識(shí)別出來(lái)的惡意應(yīng)用個(gè)數(shù)與測(cè)試集中所有惡意應(yīng)用個(gè)數(shù)的比值,計(jì)算為

      F1值(F1-Measure)是Precision和Recall的調(diào)和平均值,計(jì)算為

      受試者工作特征曲線(receiver operating characteristic, ROC),ROC曲線橫坐標(biāo)為假正率(false positive rate, FPR),縱坐標(biāo)為真正率(true positive rate, TPR).根據(jù)ROC曲線面積(area under the curve, AUC)值判斷分類(lèi)器的優(yōu)劣,AUC取值范圍是0~1,越靠近1,性能越好.

      7 結(jié)束語(yǔ)

      本文對(duì)Android惡意應(yīng)用靜態(tài)檢測(cè)方法的最新研究技術(shù)成果進(jìn)行了回顧和總結(jié).首先,對(duì)Android應(yīng)用靜態(tài)特征進(jìn)行了分析;然后,將現(xiàn)有惡意Android檢測(cè)靜態(tài)方法分為基于權(quán)限的方法、基于API的方法、基于操作碼的方法、基于其他靜態(tài)特征的方法4類(lèi),分別對(duì)各類(lèi)方法進(jìn)行了歸納總結(jié),并比較了不同方法的優(yōu)缺點(diǎn);最后,介紹了在Android惡意應(yīng)用檢測(cè)研究中常用的數(shù)據(jù)集和評(píng)價(jià)指標(biāo),以方便對(duì)后續(xù)提出的檢測(cè)方法進(jìn)行全面地評(píng)估.雖然研究人員針對(duì)Android惡意應(yīng)用靜態(tài)檢測(cè)方法取得了大量研究成果,但是還存在缺少統(tǒng)一的Android實(shí)驗(yàn)數(shù)據(jù)集,難以提取經(jīng)加殼、混淆等處理后應(yīng)用的靜態(tài)特征,未能充分利用多類(lèi)特征的互補(bǔ)性提升檢測(cè)精度和檢測(cè)新類(lèi)型的惡意應(yīng)用能力較弱等局限性.基于上述分析,本文提出Android惡意應(yīng)用靜態(tài)檢測(cè)4個(gè)值得進(jìn)一步研究的方向:

      1)構(gòu)建持續(xù)更新的Android應(yīng)用開(kāi)放數(shù)據(jù)集.Android應(yīng)用數(shù)據(jù)集對(duì)實(shí)驗(yàn)結(jié)果有著至關(guān)重要的影響,盡管研究人員已共享了大量Android惡意應(yīng)用數(shù)據(jù)集,其中一些惡意應(yīng)用數(shù)據(jù)集[7,112-113]被使用的次數(shù)也較多,但是其中存在部分發(fā)布時(shí)間較久的惡意應(yīng)用,可能影響方法評(píng)估的有效性,且缺少代表性強(qiáng)、認(rèn)可度高的開(kāi)放數(shù)據(jù)集.另外,Android惡意應(yīng)用的更新?lián)Q代較為頻繁,需要提供開(kāi)放接口以面向用戶收集最新出現(xiàn)的惡意應(yīng)用.構(gòu)建持續(xù)更新的Android應(yīng)用開(kāi)放數(shù)據(jù)集有助于將研究人員更公平和全面地評(píng)估所提出的惡意應(yīng)用檢測(cè)方法.

      2)提升自動(dòng)化提取特殊Android應(yīng)用靜態(tài)特征能力.Android惡意應(yīng)用靜態(tài)檢測(cè)方法中使用了權(quán)限、API和操作碼等多種特征,快速準(zhǔn)確地提取特征是決定惡意應(yīng)用檢測(cè)性能的關(guān)鍵環(huán)節(jié).研究人員在實(shí)驗(yàn)中所使用的Android惡意應(yīng)用數(shù)據(jù)集通常經(jīng)過(guò)篩選和預(yù)處理,確保能夠從中提取靜態(tài)特征.然而,在真實(shí)場(chǎng)景下,Android惡意應(yīng)用常會(huì)使用代碼混淆、加密、加殼和反編譯對(duì)抗等代碼保護(hù)技術(shù),以及代碼熱更新的方法,導(dǎo)致直接提取靜態(tài)特征失敗,而人工脫殼反匯編提取特征則效率較低.為提升自動(dòng)化提取特殊Android應(yīng)用靜態(tài)特征能力,需研制更為成熟有效的Android應(yīng)用反編譯脫殼等工具.

      3)融合多類(lèi)特征綜合提升Android惡意應(yīng)用檢測(cè)性能.權(quán)限、API和操作碼等不同類(lèi)型的信息可從不同角度表征Android應(yīng)用的行為,可通過(guò)融合多類(lèi)特征以提升Android惡意應(yīng)用檢測(cè)的性能.例如,可針對(duì)每種靜態(tài)特征類(lèi)型分別搭建惡意應(yīng)用檢測(cè)模型,再通過(guò)集成學(xué)習(xí)結(jié)合多類(lèi)模型,以提高檢測(cè)準(zhǔn)確率.除靜態(tài)特征外,還可嘗試加入資源申請(qǐng)、交互行為等動(dòng)態(tài)特征以進(jìn)一步提升Android惡意應(yīng)用檢測(cè)性能.

      4)提供有效的自適應(yīng)方法檢測(cè)新增Android惡意應(yīng)用.隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的發(fā)展,Android系統(tǒng)版本不斷升級(jí),惡意應(yīng)用出現(xiàn)的場(chǎng)景也在不斷變化,例如,在人們焦慮COVID-19的時(shí)候,部分惡意應(yīng)用偽造COVID-19疫苗預(yù)約和注冊(cè)的功能來(lái)進(jìn)行網(wǎng)絡(luò)釣魚(yú)和詐騙[116].由于靜態(tài)特征和新業(yè)務(wù)場(chǎng)景變化,導(dǎo)致基于已有惡意應(yīng)用構(gòu)建的模型在檢測(cè)新出現(xiàn)的惡意應(yīng)用時(shí)面臨著檢測(cè)模型退化、檢測(cè)準(zhǔn)確率下降等問(wèn)題[36],這通常需要收集新數(shù)據(jù)集再次進(jìn)行模型訓(xùn)練,并且增加了時(shí)間和經(jīng)濟(jì)成本.未來(lái)可使用增量學(xué)習(xí)方法構(gòu)建可持續(xù)更新的Android惡意應(yīng)用檢測(cè)模型,有效學(xué)習(xí)新增Android應(yīng)用樣本特征,避免重新訓(xùn)練模型帶來(lái)的開(kāi)銷(xiāo),并保持相對(duì)較高的準(zhǔn)確率,以更好地適用于移動(dòng)應(yīng)用市場(chǎng)等需要處理大量新增待檢測(cè)應(yīng)用的場(chǎng)景.

      作者貢獻(xiàn)聲明:潘建文負(fù)責(zé)文獻(xiàn)資料的整理和分析、論文主體撰寫(xiě)及修訂等工作;崔展齊指導(dǎo)論文選題、論文整體思路框架設(shè)計(jì)并修改論文;林高毅整理資料并修改論文;陳翔和鄭麗偉提出指導(dǎo)意見(jiàn)并修改論文.

      猜你喜歡
      調(diào)用靜態(tài)特征
      靜態(tài)隨機(jī)存儲(chǔ)器在軌自檢算法
      如何表達(dá)“特征”
      核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
      不忠誠(chéng)的四個(gè)特征
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      抓住特征巧觀察
      基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
      機(jī)床靜態(tài)及動(dòng)態(tài)分析
      具7μA靜態(tài)電流的2A、70V SEPIC/升壓型DC/DC轉(zhuǎn)換器
      線性代數(shù)的應(yīng)用特征
      河南科技(2014年23期)2014-02-27 14:19:15
      兰考县| 安岳县| 乌苏市| 涟水县| 山西省| 甘肃省| 澄城县| 阿合奇县| 五大连池市| 武山县| 民权县| 阿勒泰市| 巴青县| 启东市| 金湖县| 定兴县| 遂川县| 长沙县| 凤庆县| 江阴市| 通城县| 洛南县| 印江| 吉木萨尔县| 永寿县| 白朗县| 永善县| 托克逊县| 祁阳县| 灵宝市| 景洪市| 徐汇区| 井研县| 崇州市| 巩留县| 马鞍山市| 漠河县| 和政县| 旺苍县| 荣成市| 沽源县|