林中霖,時(shí)金橋,王美琪,王學(xué)賓,王雨燕
(1.北京郵電大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,北京 100876;2.中國(guó)科學(xué)院信息工程研究所,北京 100093;3.中國(guó)科學(xué)院大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,北京 100049)
Android 惡意應(yīng)用的變異是一個(gè)持續(xù)的過(guò)程。黑客通常會(huì)在下一次入侵行動(dòng)前改進(jìn)原本的惡意代碼,從而產(chǎn)生更隱蔽的惡意應(yīng)用變體,因此,每年都會(huì)有大量新的Android 惡意應(yīng)用被發(fā)現(xiàn)。根據(jù)V-Test 數(shù)據(jù)顯 示,2020 年新出現(xiàn)的Android 惡意應(yīng) 用總數(shù)達(dá)到881 萬(wàn)[1]。智能移動(dòng)設(shè)備的持續(xù)發(fā)展離不開(kāi)移動(dòng)安全研究的支撐,并且需要一個(gè)安全的移動(dòng)設(shè)備使用環(huán)境。因此,實(shí)現(xiàn)快速且準(zhǔn)確的Android 惡意應(yīng)用檢測(cè)是一項(xiàng)重要的工作。
惡意應(yīng)用是一種不安全的軟件或垃圾軟件,可能會(huì)竊取用戶的個(gè)人信息或損害用戶設(shè)備,被分為不同的類別,例如,廣告惡意軟件、風(fēng)險(xiǎn)軟件、短信惡意軟件、銀行木馬等。這些惡意應(yīng)用通過(guò)偽裝成正常的良性應(yīng)用誘使用戶安裝到移動(dòng)終端上,進(jìn)而控制用戶的個(gè)人終端設(shè)備,以實(shí)現(xiàn)其非法目的。
在目前的Android 惡意應(yīng)用檢測(cè)技術(shù)研究中,單維度應(yīng)用特征檢測(cè)技術(shù)存在易被對(duì)抗的問(wèn)題,而多維度應(yīng)用特征檢測(cè)技術(shù)存在對(duì)新樣本檢測(cè)準(zhǔn)確率低的問(wèn)題。同時(shí),基于用戶交互信息的應(yīng)用行為特征劃分方法被廣泛應(yīng)用在多維度應(yīng)用特征檢測(cè)技術(shù)上,能夠顯著提升對(duì)新惡意樣本的檢測(cè)準(zhǔn)確率。但是,已有的研究工作都是通過(guò)在UI 控件上的文本信息識(shí)別用戶有意識(shí)行為與應(yīng)用隱匿行為,但是該方法在面對(duì)簡(jiǎn)短文本信息時(shí)存在識(shí)別困難的問(wèn)題。
針對(duì)已有方法在利用用戶交互信息時(shí)存在的問(wèn)題,本文設(shè)計(jì)一種基于用戶交互信息的應(yīng)用行為劃分算法。通過(guò)從Java 層API 調(diào)用中提取用戶與應(yīng)用交互的時(shí)間信息并進(jìn)行應(yīng)用行為劃分,得到用戶有意識(shí)行為特征集與應(yīng)用隱匿行為特征集。針對(duì)傳統(tǒng)機(jī)器學(xué)習(xí)算法模型對(duì)時(shí)序特征的學(xué)習(xí)效果較差以及長(zhǎng)短時(shí)記憶(Long Short-Term Memory,LSTM)和時(shí)間卷積網(wǎng)絡(luò)(Temporal Convolutional Network,TCN)等深度學(xué)習(xí)模型為單通道模型的問(wèn)題,本文設(shè)計(jì)一種雙通道應(yīng)用分類模型2ch-LSTM-TCN,通過(guò)LSTM 模型對(duì)時(shí)序特征進(jìn)行提取優(yōu)化,通過(guò)TCN 模型從時(shí)序中提取序列排序特征。
Android 系統(tǒng)架構(gòu)可以劃分為5 層,從上到下依次是應(yīng)用層、應(yīng)用框架層、系統(tǒng)運(yùn)行庫(kù)層、硬件抽象層和Linux 內(nèi)核層。因?yàn)锳ndroid 系統(tǒng)具有以上多層結(jié)構(gòu),所以研究人員在選擇特征時(shí)可以有多個(gè)維度的應(yīng)用特征進(jìn)行選擇。
本節(jié)主要對(duì)單維度應(yīng)用特征與多維度應(yīng)用特征在Android 惡意應(yīng)用檢測(cè)領(lǐng)域的研究成果進(jìn)行介紹。
關(guān)于Android 應(yīng)用的檢測(cè)方法,早期的研究工作主要使用單維度應(yīng)用特征作為檢測(cè)對(duì)象,從靜態(tài)特征或動(dòng)態(tài)特征的角度,又可以將基于單維度應(yīng)用特征的惡意應(yīng)用檢測(cè)方法分為基于靜態(tài)單維度應(yīng)用特征的檢測(cè)方法和基于動(dòng)態(tài)單維度應(yīng)用特征的檢測(cè)方法。
1.1.1 基于靜態(tài)單維度應(yīng)用特征的檢測(cè)方法
基于靜態(tài)單維度應(yīng)用特征的檢測(cè)方法是通過(guò)從apk 文件的字符串信息、dex 字節(jié)碼、API 以及類名中的某一項(xiàng)特征進(jìn)行惡意應(yīng)用檢測(cè)。HE 等[2]模仿逆向工程分析惡意樣本過(guò)程,解析敏感API 周圍的代碼片段,由圖神經(jīng)網(wǎng)絡(luò)識(shí)別惡意的代碼片段。但是,該方法的人工操作部分占比較大,不利于流程自動(dòng)化,因此,無(wú)法適用于大規(guī)模的惡意應(yīng)用檢測(cè)。JERBI 等[3]通過(guò)靜態(tài)分析API 序列,根據(jù)一組明確定義的演化規(guī)則來(lái)演化API 調(diào)用序列,以證明應(yīng)用存在惡意行為。但是,由于僅利用Java 層API 作為輸入特征,而忽略了native 層API,因此惡意應(yīng)用可以通過(guò)native 層的代碼逃逸其檢測(cè)。文獻(xiàn)[4-5]利用從apk 文件中提取的字節(jié)碼進(jìn)行靜態(tài)解析并推理組件的行為,通過(guò)跟蹤應(yīng)用程序中存在敏感流的源點(diǎn)和匯點(diǎn),從而檢測(cè)惡意敏感信息泄露。但是,以上方法無(wú)法檢測(cè)到軟件加殼后的惡意字節(jié)碼,難以檢測(cè)APT 組織的高水平惡意樣本。
因此,靜態(tài)檢測(cè)方法往往具備檢測(cè)速度快和部署簡(jiǎn)單的特點(diǎn),但是其局限性在于難以對(duì)抗軟件加殼技術(shù)和代碼混淆技術(shù),無(wú)法正確解析惡意代碼。
1.1.2 基于動(dòng)態(tài)單維度應(yīng)用特征的檢測(cè)方法
基于動(dòng)態(tài)單維度應(yīng)用特征的檢測(cè)方法是指從Android 應(yīng)用的執(zhí)行環(huán)境中獲取底層執(zhí)行的硬件信息、指令信息以及API 調(diào)用序列中的某一項(xiàng)來(lái)進(jìn)行研究。TANG 等[6]從系統(tǒng)底層收集指令信息,利用指令的特征訓(xùn)練無(wú)監(jiān)督機(jī)器學(xué)習(xí)模型,進(jìn)而檢測(cè)被惡意軟件感染的程序在執(zhí)行過(guò)程中發(fā)生的偏差。但是,該系統(tǒng)的部署會(huì)造成系統(tǒng)永久性改變,在部署過(guò)程中還需要提權(quán),整體流程比較復(fù)雜。TAM 等[7]設(shè)計(jì)一個(gè)自動(dòng)基于VMI 的動(dòng)態(tài)分析系統(tǒng),通過(guò)觀察和剖析系統(tǒng)調(diào)用序列(重構(gòu)進(jìn)程間通信IPC 和遠(yuǎn)程過(guò)程調(diào)用RPC 交互)來(lái)重構(gòu)操作系統(tǒng)和Android 特定高層行為。由于重構(gòu)規(guī)則需要專家來(lái)更新,因此新Android 應(yīng)用功能或服務(wù)的研究需要花費(fèi)大量時(shí)間成本,無(wú)法識(shí)別新功能和新服務(wù),也就無(wú)法分類新的惡意Android 應(yīng)用。李舟軍等[8]構(gòu)建一種運(yùn)行在Library 層之上的沙盒,通過(guò)收集調(diào)用Java 框架層的API 調(diào)用信息并使用API 信息熵判別惡意應(yīng)用。但是,該方法無(wú)法對(duì)抗軟件加殼技術(shù),對(duì)加殼保護(hù)的惡意應(yīng)用沒(méi)有檢測(cè)能力。
在應(yīng)用運(yùn)行過(guò)程中,不同維度的動(dòng)態(tài)特征各有特點(diǎn),其代表的應(yīng)用信息也不同,同時(shí)具有一定的局限性。為此,若要獲得一個(gè)高效的基于動(dòng)態(tài)單維度應(yīng)用特征的惡意應(yīng)用檢測(cè)方法,研究人員必須考慮其局限性且備有應(yīng)對(duì)方法。
為提升檢測(cè)技術(shù)被對(duì)抗的難度以及更好地應(yīng)對(duì)新型的惡意樣本,研究人員開(kāi)始研究多維度應(yīng)用特征組合在惡意應(yīng)用檢測(cè)技術(shù)上的效果。文獻(xiàn)[9]表明利用多維度應(yīng)用特征能夠提高檢測(cè)Android 惡意樣本的效率,然而,不同維度的應(yīng)用行為特征可以反映Android 應(yīng)用程序上不同屬性的差異。目前,基于多維度應(yīng)用特征的惡意應(yīng)用檢測(cè)方法分為基于靜態(tài)多維度應(yīng)用特征的檢測(cè)、基于動(dòng)態(tài)多維度應(yīng)用特征的檢測(cè)、基于用戶交互信息與動(dòng)態(tài)多維度應(yīng)用特征的檢測(cè)。
1.2.1 基于靜態(tài)多維度應(yīng)用特征的檢測(cè)方法
基于靜態(tài)多維度應(yīng)用特征的檢測(cè)方法是指通過(guò)apk 文件的字符串信息、dex 字節(jié)碼、API、包類信息中等多種應(yīng)用特征進(jìn)行惡意應(yīng)用檢測(cè)。QIU 等[10]開(kāi)發(fā)一種新的多視圖特征智能框架,提取多視圖異構(gòu)特征,包括語(yǔ)義字符串特征、API 調(diào)用圖特征和smali操作碼序列特征,實(shí)驗(yàn)結(jié)果表明,其性能和效果均優(yōu)于經(jīng)典方法Drebin[11]。BAI 等[12]提出一種基于多種特征的惡意應(yīng)用檢測(cè)框架FAMD,從樣本中提取權(quán)限和Dalvik 操作碼序列來(lái)構(gòu)建原始特征集,實(shí)驗(yàn)結(jié)果表明,組合特征可以有效提高惡意軟件在Drebin數(shù)據(jù)集上的檢測(cè)準(zhǔn)確率,在惡意軟件家族分類上準(zhǔn)確率可達(dá)97.38%。文獻(xiàn)[13]設(shè)計(jì)的檢測(cè)模型TSDroid 將API Level 作為描述API 生命周期的時(shí)間特征,還將apk 文件大小、dex 文件大小以及系統(tǒng)API的數(shù)量作為空間特征,結(jié)合2 類特征集訓(xùn)練惡意應(yīng)用分類模型。ZHANG 等[14]提出利用N-gram 分析和特征哈希化,從應(yīng)用程序中提取多維度應(yīng)用特征,通過(guò)綜合每種維度應(yīng)用特征的分類結(jié)果來(lái)判斷應(yīng)用的惡意程度。
然而,已有工作對(duì)不同維度應(yīng)用特征組合效果相關(guān)的問(wèn)題缺少關(guān)注。因此,組合后多維度應(yīng)用特征的分類效果還需進(jìn)一步分析并驗(yàn)證。
1.2.2 基于動(dòng)態(tài)多維度應(yīng)用特征的檢測(cè)方法
基于動(dòng)態(tài)多維度應(yīng)用特征的檢測(cè)方法是指利用在應(yīng)用運(yùn)行過(guò)程中產(chǎn)生的字符串信息、指令序列、API 調(diào)用序列、數(shù)據(jù)流等多種維度的應(yīng)用特征進(jìn)行惡意應(yīng)用檢測(cè)。文獻(xiàn)[15]使用靜態(tài)多維度應(yīng)用特征訓(xùn)練出的惡意應(yīng)用識(shí)別準(zhǔn)確率達(dá)到97.12%,使用動(dòng)態(tài)多維度應(yīng)用特征訓(xùn)練出的準(zhǔn)確率為86.18%,然而動(dòng)靜態(tài)混合的多維度應(yīng)用特征訓(xùn)練出的識(shí)別準(zhǔn)確率為96.29%。文獻(xiàn)[15]選擇動(dòng)靜態(tài)混合的多維度應(yīng)用特征的分類效果相較于使用靜態(tài)的多維度應(yīng)用特征較差。其原因?yàn)檫x取的靜態(tài)特征和動(dòng)態(tài)特征并無(wú)關(guān)聯(lián)性,而動(dòng)態(tài)特征的檢測(cè)效果與靜態(tài)特征相比較差,因此,組合后混合特征的分類準(zhǔn)確率受動(dòng)態(tài)特征的影響而下降。因此,部分多維度應(yīng)用特征在組合后有可能會(huì)對(duì)算法產(chǎn)生負(fù)面效果,多維度應(yīng)用特征組合需要經(jīng)過(guò)分析后再利用。
1.2.3 基于用戶交互信息與動(dòng)態(tài)多維度應(yīng)用特征的檢測(cè)方法
Android 應(yīng)用是根據(jù)用戶的需求進(jìn)行設(shè)計(jì)與開(kāi)發(fā)的,通過(guò)用戶與應(yīng)用的交互信息也可以反向推測(cè)用戶與應(yīng)用的行為意圖。
研究人員從多維度應(yīng)用特征中抽象出用戶行為意圖和應(yīng)用行為意圖,以提升對(duì)Android 惡意應(yīng)用檢測(cè)的準(zhǔn)確率。文獻(xiàn)[16]根據(jù)疑似惡意應(yīng)用UI 控件的可疑度對(duì)應(yīng)用軟件進(jìn)行針對(duì)性動(dòng)態(tài)測(cè)試。UI 控件的可疑度是依據(jù)UI 控件上的文本信息來(lái)設(shè)置的,而基于UI 控件可疑度設(shè)計(jì)的動(dòng)態(tài)測(cè)試方法對(duì)惡意樣本檢測(cè)的漏報(bào)率為18.3%。文獻(xiàn)[17]對(duì)UI 控件所反映應(yīng)用意圖與應(yīng)用行為之間的關(guān)聯(lián)性進(jìn)行研究,實(shí)驗(yàn)結(jié)果表明,UI 控件所反映應(yīng)用意圖與應(yīng)用行為之間的差異用于區(qū)分惡意的Android 應(yīng)用。但是,在不同上下文中UI 控件的圖標(biāo)和文本可能出現(xiàn)類似的情況,例如,登出界面里的“確認(rèn)”鍵和文件發(fā)送界面的“確認(rèn)”鍵在圖標(biāo)和文本信息上存在相似的情況,導(dǎo)致語(yǔ)義解析結(jié)果相同。用戶交互信息有利于提高特征集的分類效果,但是基于UI 控件文字信息與動(dòng)態(tài)多維度應(yīng)用特征的檢測(cè)方法還存在待解決的問(wèn)題。
針對(duì)已有方法不能充分利用用戶交互信息的問(wèn)題,本文設(shè)計(jì)一種基于用戶交互信息的應(yīng)用行為劃分算法,通過(guò)捕獲應(yīng)用中發(fā)生的用戶與應(yīng)用交互行為,獲取交互行為發(fā)生的時(shí)間信息,并以此構(gòu)建反應(yīng)時(shí)長(zhǎng)序列,再通過(guò)反應(yīng)時(shí)長(zhǎng)序列對(duì)原始特征集進(jìn)行應(yīng)用行為劃分,劃分出用戶有意識(shí)行為特征集與應(yīng)用隱匿行為特征集。本文所提算法將存在用戶交互環(huán)境下的應(yīng)用行為特征與不存在交互環(huán)境下的應(yīng)用行為特征進(jìn)行分離,從而避免兩者在模型訓(xùn)練過(guò)程中相互干擾,達(dá)到提升特征集分類效果的目的。針對(duì)用戶有意識(shí)行為特征集與應(yīng)用隱匿行為特征集的算法學(xué)習(xí)問(wèn)題,本文還設(shè)計(jì)雙通道應(yīng)用分類模型2ch-LSTM-TCN,用于用戶有意識(shí)行為特征集與應(yīng)用隱匿行為特征集的訓(xùn)練,在保留特征向量中時(shí)序特性的同時(shí)充分利用2 組特征集生成深度學(xué)習(xí)網(wǎng)絡(luò),從而實(shí)現(xiàn)對(duì)惡意應(yīng)用的分類。本文基于以上研究?jī)?nèi)容實(shí)現(xiàn)Android 惡意應(yīng)用自動(dòng)化檢測(cè)原型系統(tǒng),實(shí)現(xiàn)對(duì)惡意應(yīng)用進(jìn)行檢測(cè)的目的。
關(guān)于本文設(shè)計(jì)的惡意應(yīng)用檢測(cè)系統(tǒng)運(yùn)行時(shí)的平臺(tái)搭建工作,本文利用Genymotion 模擬器啟動(dòng)一個(gè)Android 虛擬機(jī),并將其作為Android 樣本的運(yùn)行環(huán)境,虛擬機(jī)的設(shè)備類型選擇Android 9 系統(tǒng)下的Redmi Note 7。本文的實(shí)驗(yàn)平臺(tái)架構(gòu)如圖1所示。
圖1 實(shí)驗(yàn)平臺(tái)架構(gòu)Fig.1 The architecture of experimental platform
本文借助frida框架來(lái)收集應(yīng)用行為,frida是一個(gè)動(dòng)態(tài)代碼檢測(cè)工具包,將JavaScript 代碼片段或自定義的庫(kù)注入到Android 應(yīng)用程序中。本文基于frida的hook 框架編寫(xiě)了用于采集Android 應(yīng)用運(yùn)行時(shí)產(chǎn)生各類應(yīng)用行為的工具,利用frida 收集Android 應(yīng)用運(yùn)行時(shí)多層次的應(yīng)用行為信息。在數(shù)據(jù)采集開(kāi)始時(shí),本文通過(guò)frida 腳本聯(lián)系frida-server,并對(duì)剛完成安裝和啟動(dòng)的目標(biāo)應(yīng)用程序進(jìn)行動(dòng)態(tài)修改,hook 其內(nèi)部的目標(biāo)函數(shù)。隨后,通過(guò)frida-server 將自動(dòng)化點(diǎn)擊模塊的共享庫(kù)加載到應(yīng)用程序的內(nèi)存中,并主動(dòng)調(diào)用自動(dòng)化點(diǎn)擊模塊的功能函數(shù)設(shè)置定時(shí)任務(wù)。該過(guò)程具體步驟如下:1)等待20 s 后開(kāi)始第一次點(diǎn)擊;2)依據(jù)第一次點(diǎn)擊的時(shí)間延后10 s 進(jìn)行下一次點(diǎn)擊(其原因?yàn)閼?yīng)用程序在啟動(dòng)后需要一個(gè)初始化時(shí)間,在初始化過(guò)程中大概率會(huì)存在觸發(fā)點(diǎn)擊異常的情況);3)讓?xiě)?yīng)用程序在運(yùn)行180 s 后結(jié)束運(yùn)行并卸載;4)從原始數(shù)據(jù)(json 格式的應(yīng)用行為日志)提取應(yīng)用行為特征;5)將應(yīng)用行為特征進(jìn)行應(yīng)用行為劃分;6)將劃分后的特征集輸入到檢測(cè)模型中并得到結(jié)果。
本文通過(guò)用戶交互行為(活動(dòng)行為、用戶點(diǎn)擊行為、用戶輸入行為、剪貼板使用行為、權(quán)限請(qǐng)求行為等)對(duì)目標(biāo)應(yīng)用行為(網(wǎng)絡(luò)傳輸行為、文件訪問(wèn)行為、6 類系統(tǒng)調(diào)用行為)進(jìn)行劃分,將每10 s 內(nèi)的目標(biāo)應(yīng)用行為統(tǒng)計(jì)信息作為一個(gè)狀態(tài),代表該時(shí)段的應(yīng)用運(yùn)行狀態(tài)。最后,本文利用固定預(yù)訓(xùn)練迭代50 次得到的2ch-LSTM-TCN 模型對(duì)測(cè)試集進(jìn)行分類任務(wù),檢測(cè)框架如圖2 所示。
圖2 Android 惡意應(yīng)用自動(dòng)檢測(cè)框架Fig.2 Automation detection framework of Android malware application
本文設(shè)計(jì)的Android 惡意應(yīng)用檢測(cè)方法主要由特征選擇、自動(dòng)化點(diǎn)擊、應(yīng)用分類3 個(gè)階段完成。
在特征選擇過(guò)程中,本文需要完成3 項(xiàng)任務(wù):1)本文給出所使用的應(yīng)用行為特征定義;2)選取部分應(yīng)用行為特征作為模型的輸入特征;3)將應(yīng)用行為特征分為用戶有意識(shí)行為特征集和應(yīng)用隱匿行為特征集。
2.2.1 特征定義
本文將應(yīng)用行為定義為Android 應(yīng)用在運(yùn)行過(guò)程中觸發(fā)或響應(yīng)的執(zhí)行任務(wù)。在不同層中,應(yīng)用行為存在多維度,如在應(yīng)用層查看某個(gè)文件,而在應(yīng)用框架層則是打開(kāi)文件對(duì)象、獲取文件輸入流以及讀取文件。
由于Android 執(zhí)行體系存在5 層結(jié)構(gòu)(應(yīng)用層、應(yīng)用框架層、系統(tǒng)運(yùn)行庫(kù)、硬件抽象層以及Linux 內(nèi)核層),因此程序語(yǔ)義在執(zhí)行過(guò)程中存在多層次表達(dá),而惡意程序包含的惡意代碼也會(huì)在多個(gè)層次中出現(xiàn)惡意行為,并且越底層的惡意行為隱蔽性越高。多層次的應(yīng)用行為特征為Android 惡意應(yīng)用的檢測(cè)提供多維度特征選擇。從開(kāi)發(fā)者的角度分析,Android 執(zhí)行體系的5 層結(jié)構(gòu)是由Java 代碼、C 語(yǔ)言代碼以及機(jī)器指令來(lái)實(shí)現(xiàn)的。對(duì)于應(yīng)用的Java 代碼實(shí)現(xiàn)部分,一般稱為Java 層。對(duì)于應(yīng)用的C 語(yǔ)言代碼實(shí)現(xiàn)部分,一般稱為native 層。本文通過(guò)分析不同層次語(yǔ)義特點(diǎn),在不同層次中部署不同的API監(jiān)控,并利用多維度應(yīng)用行為描述Android 應(yīng)用程序執(zhí)行過(guò)程中的變化差異。不同維度應(yīng)用行為間的關(guān)系如圖3 所示。
圖3 不同維度應(yīng)用行為間的關(guān)系Fig.3 The relationship of application behavior in different dimensions
因此,在特征選擇階段,本文分析Android 系統(tǒng)中多個(gè)層次的應(yīng)用行為特征,分別是活動(dòng)行為、用戶點(diǎn)擊行為、用戶輸入行為、剪貼板使用行為、權(quán)限請(qǐng)求行為、網(wǎng)絡(luò)傳輸行為、文件訪問(wèn)行為、系統(tǒng)調(diào)用等。依據(jù)文獻(xiàn)[18]的工作可知,系統(tǒng)調(diào)用是直接使用應(yīng)用的系統(tǒng)調(diào)用序列或調(diào)用頻率作為特征進(jìn)行分類應(yīng)用,導(dǎo)致分類結(jié)果較差,并由此得出無(wú)法依據(jù)簡(jiǎn)單的系統(tǒng)調(diào)用序列信息進(jìn)行高效應(yīng)用分類的結(jié)論。其原因?yàn)樵谀壳癆ndroid 市場(chǎng)中上架的應(yīng)用程序往往具有屬于多個(gè)行為類的功能,導(dǎo)致其產(chǎn)生的應(yīng)用行為十分復(fù)雜,不同Android 應(yīng)用產(chǎn)生的系統(tǒng)調(diào)用序列可能十分相似。以微信為例,微信將即時(shí)通信功能與社交媒體共享結(jié)合在一起,同時(shí)還集成了語(yǔ)音聊天、購(gòu)買車票、轉(zhuǎn)賬付款、瀏覽視頻、在線購(gòu)物等功能。惡意的Android 應(yīng)用在實(shí)際入侵事件中大多偽裝成熱門應(yīng)用來(lái)誘惑用戶安裝使用,甚至部分惡意應(yīng)用為防止被檢測(cè)到,只是將小段的惡意代碼嵌入到正常代碼中,惡意代碼量占比極少,只需使用一個(gè)或多個(gè)系統(tǒng)調(diào)用即可達(dá)到目的。
為解決該問(wèn)題,本文在對(duì)選擇系統(tǒng)調(diào)用特征時(shí)先對(duì)系統(tǒng)調(diào)用進(jìn)行分類,再去除掉安全的或無(wú)法直接對(duì)用戶信息與設(shè)備造成危害的系統(tǒng)調(diào)用策略(如字符串處理、終端輸入輸出、內(nèi)存分配等函數(shù))。惡意應(yīng)用在實(shí)現(xiàn)對(duì)用戶終端設(shè)備進(jìn)行控制時(shí)需要依靠控制和管理類的系統(tǒng)調(diào)用。因此,這2 類系統(tǒng)調(diào)用屬于高危系統(tǒng)調(diào)用,共有119 個(gè)。本文選取所有的控制和管理類系統(tǒng)調(diào)用作為研究對(duì)象,并依據(jù)功能劃分類別,包括進(jìn)程控制類、文件系統(tǒng)控制類、系統(tǒng)控制類、內(nèi)存管理類、網(wǎng)絡(luò)管理類、用戶管理類、進(jìn)程間通信類。
應(yīng)用框架層的行為特征:應(yīng)用層負(fù)責(zé)與用戶進(jìn)行直接交互,而該部分的功能是由應(yīng)用框架層提供的API 實(shí)現(xiàn)。因此,分析應(yīng)用框架層的API 調(diào)用也可以知悉應(yīng)用層的用戶行為變化?;顒?dòng)切換、用戶點(diǎn)擊、用戶輸入、剪貼板使用、權(quán)限請(qǐng)求這5 種行為是由用戶的交互行為主動(dòng)產(chǎn)生的,因此能準(zhǔn)確反映用戶的行為意圖。
系統(tǒng)運(yùn)行庫(kù)的行為特征:任何Android 應(yīng)用運(yùn)行都離不開(kāi)信息傳輸,而信息傳輸方式分為網(wǎng)絡(luò)傳輸和本地文件讀寫(xiě)2 種。應(yīng)用框架層的網(wǎng)絡(luò)傳輸任務(wù)和文件讀寫(xiě)任務(wù)都是從系統(tǒng)運(yùn)行庫(kù)中導(dǎo)出的函數(shù)實(shí)現(xiàn)的,并且部分惡意應(yīng)用喜歡在native 層中實(shí)現(xiàn)網(wǎng)絡(luò)傳輸和文件訪問(wèn),在監(jiān)視系統(tǒng)運(yùn)行庫(kù)層中的網(wǎng)絡(luò)傳輸和文件訪問(wèn)相關(guān)API 可以避免漏報(bào)。根據(jù)YERIMA 等[19]的研究,其中有超過(guò)93%的惡意應(yīng)用程序需要網(wǎng)絡(luò)連接。因此,本文選擇在系統(tǒng)運(yùn)行庫(kù)層研究網(wǎng)絡(luò)傳輸行為和文件讀寫(xiě)行為。
Linux 內(nèi)核層的行為特征:在Android 系統(tǒng)中有250多個(gè)Linux 內(nèi)核的 系統(tǒng)調(diào) 用正在 被使用[20]。Android 的核心系統(tǒng)服務(wù)是基于Linux 內(nèi)核,系統(tǒng)的安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議棧、驅(qū)動(dòng)模型等都依賴于Linux 內(nèi)核,而Android 應(yīng)用獲取系統(tǒng)服務(wù)是通過(guò)系統(tǒng)調(diào)用實(shí)現(xiàn)的。因此,本文通過(guò)選擇進(jìn)程控制類、文件系統(tǒng)控制類、系統(tǒng)控制類、內(nèi)存管理類、網(wǎng)絡(luò)管理類、用戶管理類、進(jìn)程間通信類這7 類系統(tǒng)調(diào)用作為研究對(duì)象。
本文不考慮應(yīng)用層和硬件抽象層的內(nèi)容,其原因?yàn)閼?yīng)用層對(duì)于應(yīng)用程序執(zhí)行只是個(gè)抽象概念,不涉及程序自身任務(wù)的執(zhí)行過(guò)程,而硬件抽象層的接口往往受移動(dòng)設(shè)備硬件改變而變化,不利于實(shí)驗(yàn)結(jié)果的穩(wěn)定性。
2.2.2 特征篩選
本文從活動(dòng)切換、用戶點(diǎn)擊、用戶文字輸入、剪貼板的復(fù)制粘貼、權(quán)限申請(qǐng)、網(wǎng)絡(luò)傳輸、文件訪問(wèn),以及7 類系統(tǒng)調(diào)用(進(jìn)程控制類、文件系統(tǒng)控制類、系統(tǒng)控制類、內(nèi)存管理類、網(wǎng)絡(luò)管理類、用戶管理類、進(jìn)程間通信類)中篩選一部分特征作為后續(xù)分析的輸入特征。為此,本文從行為發(fā)生頻率的角度,通過(guò)實(shí)驗(yàn)對(duì)這些應(yīng)用行為進(jìn)行分析。
本文在API 層選取以Android 4 大組件和Intent Filter 作為API 特征(應(yīng)用框架層),在native 層選取文件讀寫(xiě)、網(wǎng)絡(luò)傳輸,以及7 類系統(tǒng)調(diào)用等作為API特征(系統(tǒng)運(yùn)行庫(kù)層和Linux 內(nèi)核層),并對(duì)API 層和native 層的API 特征進(jìn)行對(duì)比。關(guān)于實(shí)驗(yàn)采集對(duì)象,本文選取500 個(gè)惡意樣本與500 個(gè)良性樣本組成對(duì)照組,統(tǒng)計(jì)這2 組樣本在180 s 內(nèi)出現(xiàn)與Android 4 大組件相關(guān)API、Intent 對(duì)象調(diào)用、文件讀寫(xiě)事件、網(wǎng)絡(luò)傳輸事件,以及7 類系統(tǒng)調(diào)用的頻率,該實(shí)驗(yàn)記為實(shí)驗(yàn)1。為方便將2 組樣本的頻率特征一起表示,本文將分別取樣本組中各類行為頻率數(shù)值的平均值,并用于表示樣本組中各類行為的頻率特征情況。為了使數(shù)據(jù)更好的可視化,本文對(duì)該輪實(shí)驗(yàn)的頻率結(jié)果進(jìn)行對(duì)數(shù)變換,實(shí)驗(yàn)1 的結(jié)果分別如圖4 和圖5所示。
圖4 在Java 層中應(yīng)用行為頻率統(tǒng)計(jì)Fig.4 Application behavior frequency statistics in Java layer
圖5 在native 層中應(yīng)用行為頻率統(tǒng)計(jì)Fig.5 Application behavior frequency statistics in native layer
從圖4 和圖5 可以看出,Java 層組件發(fā)生的調(diào)用次數(shù)明顯少于native 層的調(diào)用特征。雖然Intent 相關(guān)API 調(diào)用頻率較高,但是與其他Java 層組件發(fā)生調(diào)用次數(shù)的差異較大。因此,Java 層的API 調(diào)用頻率與native 層的API 調(diào)用頻率差異較大,并且Java 層的各類調(diào)用頻率存在明顯差異,表現(xiàn)并不穩(wěn)定。native 層的應(yīng)用行為和Java 層應(yīng)用行為并不適合混合使用,而native 層的應(yīng)用行為比高層次的Java 層應(yīng)用行為更適合作為分類特征。
網(wǎng)絡(luò)管理類的系統(tǒng)調(diào)用在應(yīng)用中被使用的頻率較低,因此將其從特征向量中去除。因?yàn)榛顒?dòng)切換、用戶點(diǎn)擊、用戶文字輸入、剪貼板的復(fù)制粘貼、權(quán)限申請(qǐng)等行為是由用戶交互直接產(chǎn)生的,所以它們的調(diào)用頻率完全取決于人工操作的頻率。在本文檢測(cè)框架中所有的用戶交互行為均由自動(dòng)化點(diǎn)擊模塊生成的。因此,該類行為的發(fā)生頻率會(huì)根據(jù)應(yīng)用UI 布局設(shè)計(jì)的不同而不同。本文沒(méi)有將受UI 布局設(shè)計(jì)影響的活動(dòng)切換、用戶點(diǎn)擊、用戶文字輸入、剪貼板的復(fù)制粘貼、權(quán)限申請(qǐng)等行為特征作為輸入特征,而是將網(wǎng)絡(luò)上下載數(shù)據(jù)量、文件讀寫(xiě)頻次以及6 類系統(tǒng)調(diào)用頻次作為應(yīng)用分類的輸入特征。
2.2.3 特征劃分
在惡意應(yīng)用中,應(yīng)用行為意圖與用戶行為意圖相悖,該特點(diǎn)可以被利用到惡意應(yīng)用的檢測(cè)中。但是,應(yīng)用行為意圖無(wú)法直接獲得,需要分析應(yīng)用運(yùn)行過(guò)程中產(chǎn)生的應(yīng)用行為才能得到。
為獲取用戶與應(yīng)用交互的行為信息,本文收集活動(dòng)行為、用戶點(diǎn)擊行為、用戶輸入行為、剪貼板使用行為、權(quán)限請(qǐng)求行為等來(lái)自應(yīng)用框架層的應(yīng)用行為。在特征提取過(guò)程中,本文依據(jù)應(yīng)用響應(yīng)用戶的反應(yīng)時(shí)間(后續(xù)本文以“反應(yīng)時(shí)長(zhǎng)”代替)來(lái)劃分用戶有意識(shí)行為和應(yīng)用隱匿行為。反應(yīng)時(shí)長(zhǎng)代表用戶有意識(shí)地使用和控制應(yīng)用程序的時(shí)間,在該時(shí)間范圍內(nèi)應(yīng)用程序主要服務(wù)于用戶的意圖,而本文將該部分時(shí)間產(chǎn)生的行為定義為用戶有意識(shí)行為。除反應(yīng)時(shí)長(zhǎng)以外的時(shí)間,應(yīng)用在按開(kāi)發(fā)人員設(shè)計(jì)的程序邏輯自主執(zhí)行,而本文將在該段時(shí)間內(nèi)應(yīng)用產(chǎn)生的應(yīng)用行為定義為應(yīng)用隱匿行為。依據(jù)應(yīng)用程序服務(wù)于用戶的理念,本文認(rèn)為在用戶停止使用時(shí)(也就是除反應(yīng)時(shí)長(zhǎng)之外的時(shí)間),應(yīng)用程序的活動(dòng)頻率應(yīng)該是較少的,只存在用于維持連接的少量通信活動(dòng)和管理控制類行為。而依據(jù)反應(yīng)時(shí)長(zhǎng)劃分出的用戶交互時(shí)間段是由用戶與應(yīng)用交互頻率確定的。用戶在使用app 時(shí),app 上的界面發(fā)生改變、某個(gè)按鈕被點(diǎn)擊、某個(gè)輸入框被輸入文字、某段文字信息被剪貼板復(fù)制或粘貼等交互行為越頻繁,劃分出用戶交互的時(shí)間段就越多。在反應(yīng)時(shí)長(zhǎng)內(nèi),當(dāng)用戶交互頻繁時(shí),網(wǎng)絡(luò)通信、文件訪問(wèn)和管理控制類的應(yīng)用行為數(shù)量驟增,意味著應(yīng)用程序可能正在竊取用戶的敏感信息。
本文試圖通過(guò)劃分出的用戶有意識(shí)行為特征集和應(yīng)用隱匿行為特征集來(lái)研究惡意應(yīng)用與良性應(yīng)用的差異。雖然用戶在有意識(shí)行為和應(yīng)用隱匿行為中都可能存在惡意行為,但是劃分出的2 類特征集能夠?qū)υ刑卣骷M(jìn)行信息降噪,減弱2 類行為特征集在分析時(shí)相互干擾的影響。
反應(yīng)時(shí)長(zhǎng)數(shù)值的確定是應(yīng)用行為劃分的關(guān)鍵問(wèn)題。隨著硬件技術(shù)的進(jìn)步,應(yīng)用的執(zhí)行速率也越來(lái)越快,大部分應(yīng)用功能都可以在幾秒的時(shí)間區(qū)間內(nèi)做出響應(yīng)。因此,本文以ms 為單位設(shè)置反應(yīng)時(shí)長(zhǎng),按固定梯度增加反應(yīng)時(shí)長(zhǎng)并觀察劃分后特征集的分類效果,最后選取具有分類效果最佳的反應(yīng)時(shí)長(zhǎng)數(shù)值作為最終的確定數(shù)值。
最后,本文將收集到的活動(dòng)行為、用戶點(diǎn)擊、剪切板使用、輸入框輸入、權(quán)限請(qǐng)求等應(yīng)用框架層應(yīng)用行為的發(fā)生時(shí)間點(diǎn)加上nms 的反應(yīng)時(shí)長(zhǎng)后得到一個(gè)時(shí)間段,并將所有時(shí)段都加到一個(gè)集合中以得到應(yīng)用響應(yīng)時(shí)段集合。此外,本文在Android 應(yīng)用剛啟動(dòng)的前10 s 內(nèi),啟動(dòng)過(guò)程產(chǎn)生的應(yīng)用行為看作是由用戶啟動(dòng)app 產(chǎn)生的,實(shí)際上該過(guò)程以初始化操作為主,應(yīng)用主動(dòng)發(fā)起的初始化任務(wù)較多。因此,本文沒(méi)有將該時(shí)段內(nèi)的應(yīng)用行為分為用戶有意識(shí)行為。因?yàn)槟壳皯?yīng)用啟動(dòng)界面普遍默認(rèn)停留的時(shí)間為10 s 左右(用戶不點(diǎn)擊“跳過(guò)”按鈕時(shí)所停留的時(shí)間),所以本文從Android 應(yīng)用開(kāi)始運(yùn)行10 s 后啟動(dòng)自動(dòng)化點(diǎn)擊模塊,并依據(jù)反應(yīng)時(shí)長(zhǎng)分為用戶有意識(shí)行為和應(yīng)用隱匿行為,而前10 s 的應(yīng)用行為都屬于應(yīng)用隱匿行為。
算法1用戶有意識(shí)行為特征集和應(yīng)用隱匿行為特征集的劃分
本文設(shè)計(jì)原來(lái)表征每個(gè)Android 應(yīng)用的特征向量是一條由18 個(gè)應(yīng)用行為狀態(tài)段連接得到的序列,每個(gè)應(yīng)用行為狀態(tài)段用于表示在10 s 時(shí)間間隔內(nèi)應(yīng)用行為的執(zhí)行狀態(tài),而每個(gè)應(yīng)用行為狀態(tài)段用10 個(gè)字段表示,分別是網(wǎng)絡(luò)發(fā)送字節(jié)數(shù)、網(wǎng)絡(luò)接收字節(jié)數(shù)、文件讀取次數(shù)、文件寫(xiě)入次數(shù),以及6 類系統(tǒng)調(diào)用事件發(fā)生次數(shù)。本文將每10 s 的時(shí)間段看作一個(gè)應(yīng)用行為執(zhí)行狀態(tài),每個(gè)狀態(tài)由以上10 個(gè)字段來(lái)描述。最終,本文設(shè)計(jì)的特征向量是由18 個(gè)時(shí)間段表示的狀態(tài)按順序拼接在一起組成的應(yīng)用行為狀態(tài)序列,用于描述Android 應(yīng)用在180 s 內(nèi)的應(yīng)用行為執(zhí)行狀態(tài)變化。
在動(dòng)態(tài)收集特征的方法中,為確保在應(yīng)用行為收集過(guò)程中盡可能多地覆蓋應(yīng)用功能,并產(chǎn)生足夠用于分類模型訓(xùn)練的特征數(shù)量,研究人員在應(yīng)用運(yùn)行過(guò)程中使用如Monkey 自動(dòng)化工具模擬用戶點(diǎn)擊。但是,該類自動(dòng)化工具在使用前都需要編寫(xiě)定制化腳本,對(duì)于大規(guī)模的應(yīng)用測(cè)試實(shí)驗(yàn)十分不便。為了方便本文應(yīng)用行為采集工作,本文基于視圖樹(shù)設(shè)計(jì)與實(shí)現(xiàn)一個(gè)自動(dòng)化點(diǎn)擊模塊。
在Android 應(yīng)用程序中,View 是繪制在應(yīng)用頁(yè)面上能與用戶交互的視圖對(duì)象,所有的用戶界面元素都是由View 對(duì)象和ViewGroup 對(duì)象構(gòu)成的,如Button 按鈕類是由View 類繼承得到的。本文在應(yīng)用啟動(dòng)之初獲取應(yīng)用的Top Activity,之后獲取該Activity 中的視圖View。通過(guò)頂層視圖的View 對(duì)象來(lái)逐層向下遍歷,獲取子視圖View 對(duì)象。ViewGroup 對(duì)象是指代一個(gè)View 集合,而移動(dòng)應(yīng)用UI 布局的層次結(jié)構(gòu)就是一顆多叉樹(shù)。Android 應(yīng)用UI 布局的層次結(jié)構(gòu)如圖6 所示。為了將應(yīng)用中所有的視圖控件合并到一顆多叉樹(shù)中,本文將ViewGroup 看作一個(gè)特殊的View 視圖對(duì)象,并作為父節(jié)點(diǎn),結(jié)合其下的View 集合構(gòu)建一顆多叉樹(shù),即:ViewTree。因?yàn)橹挥锌牲c(diǎn)擊的控件才是用戶可交互的控件,而像TextView 等控件并不是本文想要的,所以本文依據(jù)該ViewTree 通過(guò)篩選具備可點(diǎn)擊屬性的控件構(gòu)建第2 棵ViewTree。
圖6 Android 應(yīng)用UI 布局的層次結(jié)構(gòu)Fig.6 Hierarchy structure of Android application UI layout
當(dāng)一個(gè)應(yīng)用接收到一個(gè)點(diǎn)擊事件時(shí),每個(gè)View都是通過(guò)performClick 函數(shù)進(jìn)行處理,因此,本文通過(guò)主動(dòng)調(diào)用一個(gè)控件的performClick 函數(shù),達(dá)到與用戶點(diǎn)擊該控件相同的效果。本文基于可點(diǎn)擊ViewTree,采用前序遍歷的方式遍歷每個(gè)可點(diǎn)擊的View 對(duì)象。由于父節(jié)點(diǎn)View 包含子節(jié)點(diǎn)View,因此先序遍歷符合View 節(jié)點(diǎn)間應(yīng)用功能邏輯上的先后關(guān)系。開(kāi)發(fā)人員通常將同一類別或相關(guān)功能放在同一ViewGroup 中,可以避免因誤觸功能相反的控件而產(chǎn)生異常情況。本文將自動(dòng)化點(diǎn)擊模塊的代碼編譯為一個(gè)共享庫(kù),隨腳本執(zhí)行而加載到目標(biāo)應(yīng)用進(jìn)程中,之后在開(kāi)啟所有監(jiān)聽(tīng)模塊后運(yùn)行自動(dòng)化點(diǎn)擊模塊。
算法2獲取可點(diǎn)擊控件的視圖樹(shù)
本文從360 手機(jī)助手的應(yīng)用市場(chǎng)中隨機(jī)抽取4 個(gè)Android 應(yīng)用作為分析對(duì)象,記錄其在無(wú)自動(dòng)化點(diǎn)擊模塊和加載自動(dòng)化點(diǎn)擊模塊下運(yùn)行產(chǎn)生的應(yīng)用行為數(shù)量,以評(píng)估本文設(shè)計(jì)自動(dòng)化點(diǎn)擊模塊的效果。本文將該實(shí)驗(yàn)記為實(shí)驗(yàn)2,實(shí)驗(yàn)結(jié)果如表1 所示。
表1 在原始狀態(tài)和運(yùn)行自動(dòng)化點(diǎn)擊模塊下點(diǎn)擊行為數(shù)量對(duì)比 Table 1 Comparison of the number of clicks behaviors in the original state and running automation click module 單位:個(gè)
為了防止頻繁點(diǎn)擊導(dǎo)致程序崩潰,在實(shí)驗(yàn)2 中設(shè)置每組應(yīng)用運(yùn)行3 min,自動(dòng)化點(diǎn)擊模塊每5 s 觸發(fā)一次點(diǎn)擊行為。從表1 可以看出,在加載自動(dòng)化點(diǎn)擊模塊后應(yīng)用產(chǎn)生的應(yīng)用行為數(shù)量顯著提高,相較于原來(lái)應(yīng)用行為數(shù)量平均提高640%。
本節(jié)將介紹應(yīng)用分類階段中的工作,該階段最重要的是設(shè)計(jì)并構(gòu)建Android 惡意應(yīng)用分類模型,即2ch-LSTM-TCN 雙通道應(yīng)用分類模型。
本文模型的構(gòu)建方案是使用2種類型的深度神經(jīng)網(wǎng)絡(luò):1)用于特征提取的LSTM 網(wǎng)絡(luò);2)用于特征分類的TCN。1997年由HOCHREITER 等[21]提 出LSTM。LSTM 網(wǎng)絡(luò)根據(jù)歷史信息有選擇性地記住重要的歷史信息,而典型的LSTM 單元由輸入門、遺忘門和輸出門組成。與循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)相比,LSTM 學(xué)習(xí)速度更快,并且解決了RNN 的長(zhǎng)期依賴問(wèn)題。BAI 等[22]提出TCN 模型,它是一種適用于所有任務(wù)的通用時(shí)間卷積網(wǎng)絡(luò)體系結(jié)構(gòu)。研究結(jié)果表明,TCN 模型比LSTM 和GRU 等規(guī)范循環(huán)網(wǎng)絡(luò)在處理序列特征時(shí)準(zhǔn)確率更精確。TCN 模型的特點(diǎn)主要有2 個(gè):1)在卷積網(wǎng)絡(luò)層之間是有因果關(guān)系的,說(shuō)明不會(huì)有丟失的歷史數(shù)據(jù)或出現(xiàn)未知數(shù)據(jù);2)體系結(jié)構(gòu)可以獲取任意長(zhǎng)度的序列,并將其映射到相同長(zhǎng)度的輸出序列中。與具有相同容量的循環(huán)體系結(jié)構(gòu)相比,TCN 具有更大的內(nèi)存。
為解決傳統(tǒng)機(jī)器學(xué)習(xí)算法模型對(duì)時(shí)序特征的學(xué)習(xí)效果較差以及LSTM、TCN 等深度學(xué)習(xí)模型為單通道模型的問(wèn)題,本文提出一種基于LSTM 和TCN的模型體系結(jié)構(gòu)2ch-LSTM-TCN。2ch-LSTM-TCN雙通道應(yīng)用分類模型的體系結(jié)構(gòu)具有2 個(gè)輸入通道。本文模型初始輸入的是應(yīng)用行為狀態(tài)序列,其本質(zhì)是一種時(shí)間序列數(shù)據(jù)。通過(guò)分析和提取上文提到的應(yīng)用行為執(zhí)行狀態(tài),得到網(wǎng)絡(luò)接收字節(jié)數(shù)、文件讀取次數(shù)、文件寫(xiě)入次數(shù)等多個(gè)屬性。雖然這些屬性是獨(dú)立的,但是它們共同反映了Android 應(yīng)用的執(zhí)行情況。由于LSTM 是具有增強(qiáng)記憶能力的特殊類型遞歸神經(jīng)網(wǎng)絡(luò),適用于具有長(zhǎng)期依賴關(guān)系的特征進(jìn)行建模,因此本文將LSTM 用于模型的特征提取流程中,對(duì)初始輸入的序列特征進(jìn)一步提取優(yōu)化。TCN 根據(jù)因果卷積和空洞卷積的思想,適合解決與序列建模相關(guān)的問(wèn)題,從時(shí)序序列中提取序列排序特征,并為特定任務(wù)構(gòu)建表示向量。
2ch-LSTM-TCN 模型使用全連接層收集并組合用戶有意識(shí)行為序列和應(yīng)用隱匿行為序列表示模型的輸出,將Sigmoid 函數(shù)作為Dense 層的激活函數(shù),將合并的序列分類到相應(yīng)的類別標(biāo)簽。為避免出現(xiàn)過(guò)擬合的情況,本文在最后一個(gè)Dense 層使用衰減機(jī)制[23]。LSTM 模型對(duì)時(shí)序特征進(jìn)行提取優(yōu)化,但是參數(shù)的收斂速度較慢。TCN 模型可以跨層傳遞信息,從而促進(jìn)各項(xiàng)參數(shù)快速收斂。因此,LSTM 模型結(jié)合TCN 模型可以促進(jìn)梯度下降的快速收斂。此外,TCN 具有序列特征提取能力,本文模型可以在沒(méi)有任何人工特征或元數(shù)據(jù)的情況下獲得優(yōu)異的結(jié)果。本文模型結(jié)構(gòu)如圖7 所示。
圖7 2ch-LSTM-TCN 模型結(jié)構(gòu)Fig.7 Structure of 2ch-LSTM-TCN model
本文所提模型2ch-LSTM-TCN 架構(gòu)主要由LSTM 網(wǎng)絡(luò)和TCN 網(wǎng)絡(luò)組成。用戶有意識(shí)行為模型和應(yīng)用隱匿行為模型共享相同的配置。為了盡可能地適應(yīng)大規(guī)模數(shù)據(jù)集,本文使用16 層堆棧,給模型中的每個(gè)卷積層設(shè)置11 個(gè)具有8 個(gè)核大小的濾波器。對(duì)于擴(kuò)展的因果卷積層,本文設(shè)置一個(gè)擴(kuò)展因子列表{12,4,8},這些層將根據(jù)該列表設(shè)置擴(kuò)展因子。在訓(xùn)練過(guò)程中,本文使用binary_crossentropy 函數(shù)作為損失函數(shù),并將Adam 算法[24]作為優(yōu)化器,學(xué)習(xí)率為0.001。
本文通過(guò)構(gòu)建一個(gè)自動(dòng)化數(shù)據(jù)采集與分析平臺(tái)系統(tǒng),對(duì)基于多種應(yīng)用行為分析的惡意軟件檢測(cè)方法的有效性進(jìn)行驗(yàn)證。
本文實(shí)驗(yàn)使用的Android 樣本集分為惡意樣本和良性樣本。惡意數(shù)據(jù)集來(lái)源于MAHDAVIFAR 等[25]提供的Android 惡意應(yīng)用數(shù)據(jù)集CICMalDroid 2020,該數(shù)據(jù)集包含2018 年以及以前的Android 惡意軟件樣本,總共有17 341 個(gè)Android 惡意軟件。此外,該數(shù)據(jù)集已經(jīng)對(duì)惡意樣本進(jìn)行了歸類,包括廣告惡意軟件、銀行木馬、短信惡意軟件、移動(dòng)風(fēng)險(xiǎn)軟件等類別的惡意應(yīng)用。廣告惡意軟件通常隱藏在被惡意軟件感染的合法應(yīng)用程序中的廣告材料。銀行木馬是一種專門的惡意軟件,旨在通過(guò)模仿原始銀行應(yīng)用程序或銀行Web 界面來(lái)訪問(wèn)用戶的網(wǎng)上銀行賬戶。短信惡意軟件利用短信服務(wù)作為其操作媒介來(lái)攔截短信有效負(fù)載以進(jìn)行攻擊。風(fēng)險(xiǎn)軟件是指合法程序如果被黑客利用,風(fēng)險(xiǎn)軟件可能會(huì)威脅到普通用戶的移動(dòng)終端設(shè)備安全。由于在該數(shù)據(jù)集中因部分樣本存在超時(shí)、無(wú)效apk 文件、內(nèi)存分配失敗等錯(cuò)誤而運(yùn)行失敗的問(wèn)題,因此本文實(shí)驗(yàn)只抽取CICMalDroid 2020 數(shù)據(jù)集中可以正常運(yùn)行的部分樣本作為實(shí)驗(yàn)對(duì)象。
此外,本文還從Github 上下載122 個(gè)2016 年—2019年流行的Android病毒軟件作為實(shí)驗(yàn)的補(bǔ)充樣本集,以確保實(shí)驗(yàn)樣本集足夠廣泛且更具有說(shuō)服力。對(duì)應(yīng)的樣本數(shù)量如表2 所示,各類惡意樣本共計(jì)1 268個(gè)。
表2 本文實(shí)驗(yàn)的惡意樣本數(shù)據(jù)集 Table 2 The malicious sample dataset of experiment in this paper 單位:個(gè)
關(guān)于良性樣本,本文收集了來(lái)自騰訊應(yīng)用寶和360 手機(jī)助手2 個(gè)網(wǎng)站上的應(yīng)用程序,如新聞閱讀、社交通信、生活工具、影視聽(tīng)說(shuō)等類別的良性應(yīng)用,共計(jì)658 個(gè)良性樣本程序,并使用VirusTotal 對(duì)所有良性程序進(jìn)行掃描驗(yàn)證。
為驗(yàn)證本文提出的Android 惡意應(yīng)用檢測(cè)方法的效果,本文使用10 折交叉驗(yàn)證法進(jìn)行評(píng)估。10 折交叉驗(yàn)證法是一個(gè)用于測(cè)試算法準(zhǔn)確性的評(píng)估方法,具體過(guò)程是將整個(gè)樣本集中所有的樣本隨機(jī)分為10 份,在每次實(shí)驗(yàn)時(shí)按序?qū)⑵渲幸环葑鳛闇y(cè)試集,而其余9 份作為訓(xùn)練集,然后對(duì)10 次實(shí)驗(yàn)得出的檢測(cè)結(jié)果取平均值。該驗(yàn)證方法可以對(duì)算法準(zhǔn)確性進(jìn)行衡量,避免因訓(xùn)練集和測(cè)試集劃分時(shí)的偶然因素對(duì)實(shí)驗(yàn)結(jié)果造成影響。
本文分別將惡意樣本集和良性樣本集中的樣本隨機(jī)均分為10 份,依次將惡意樣本和良性樣本組合得到10 份惡意和良性樣本的組合。在10 次驗(yàn)證過(guò)程中,每次驗(yàn)證過(guò)程逐一選取其中一份作為測(cè)試集,其余9 份樣本集作為訓(xùn)練集。
為衡量本文提出的惡意軟件檢測(cè)方法效果,本文采用準(zhǔn)確率、召回率、精確率、誤報(bào)率、F1 值作為評(píng)估指標(biāo)。準(zhǔn)確率表示本文模型預(yù)測(cè)正確結(jié)果所占的比例;召回率表示在所有正類別樣本中,被正確識(shí)別為正類別的比例;精確率表示被識(shí)別為正類別的樣本中確實(shí)為正類別的比例;誤報(bào)率表示負(fù)類別樣本被識(shí)別為正類別樣本占總預(yù)測(cè)錯(cuò)誤的比例。準(zhǔn)確率(A)、召回率(R)、精確率(P)、誤報(bào)率(FFPR)、F1 值(F)的計(jì)算式如下:
其中:TTP為真良性樣本例數(shù)量;TTN為真惡意樣本例數(shù)量;FFP為假良性樣本例數(shù)量;FFN為假惡意樣本例數(shù)量。
本文提出的惡意應(yīng)用檢測(cè)系統(tǒng)存在一個(gè)重要參數(shù)——反應(yīng)時(shí)長(zhǎng),通過(guò)實(shí)驗(yàn)分析該參數(shù)對(duì)結(jié)果的影響并選取一個(gè)合理的值。
為選取一個(gè)合理且有效的時(shí)間長(zhǎng)度,本文使用不同時(shí)間長(zhǎng)度作為反應(yīng)時(shí)間,對(duì)比用它們分割出的用戶有意識(shí)行為特征集和應(yīng)用隱匿行為特征集的分類效果,將該實(shí)驗(yàn)記為實(shí)驗(yàn)3。文獻(xiàn)[26]表明用戶在使用應(yīng)用程序時(shí)的可容忍等待時(shí)間,范圍從2 s 到數(shù)秒不等,而1 s 則被認(rèn)為是用戶思維活動(dòng)保持連續(xù)的極限。本文認(rèn)為用戶對(duì)UI 響應(yīng)時(shí)間更敏感,因此以500 ms 為起始點(diǎn),又以500 ms 為梯度,對(duì)使用不同反應(yīng)時(shí)長(zhǎng)劃分出的用戶有意識(shí)行為特征集和應(yīng)用隱匿行為特征集進(jìn)行訓(xùn)練,并觀察它們對(duì)應(yīng)的分類結(jié)果。不同反應(yīng)時(shí)長(zhǎng)的分類效果對(duì)比如表3 所示。
表3 不同反應(yīng)時(shí)長(zhǎng)的分類效果對(duì)比 Table 3 Classification effect comparison among different reaction times
從表3 可以看出,當(dāng)反應(yīng)時(shí)長(zhǎng)為1 500 ms 時(shí)各項(xiàng)指標(biāo)均最優(yōu)。本文最終選擇1 500 ms 作為分割用戶有意識(shí)行為和應(yīng)用隱匿行為的反應(yīng)時(shí)長(zhǎng)。
為分析單維度應(yīng)用行為特征、多維度應(yīng)用行為特征、不同維度應(yīng)用行為特征集的檢測(cè)效果,以及驗(yàn)證本文所提的基于應(yīng)用行為劃分的Android 惡意應(yīng)用檢測(cè)方法的有效性,本文設(shè)置6 組實(shí)驗(yàn)對(duì)照組進(jìn)行消融實(shí)驗(yàn),并將該實(shí)驗(yàn)記為實(shí)驗(yàn)4。6 組實(shí)驗(yàn)對(duì)照組均使用相同的模型2ch-LSTM-TCN 進(jìn)行訓(xùn)練,結(jié)果如表4 所示。在實(shí)驗(yàn)4 中,實(shí)驗(yàn)對(duì)照組1 使用6 類系統(tǒng)調(diào)用特征作為輸入特征,實(shí)驗(yàn)對(duì)照組2 使用6 類系統(tǒng)調(diào)用特征和網(wǎng)絡(luò)傳輸數(shù)據(jù)特征作為輸入特征,實(shí)驗(yàn)對(duì)照組3 使用6 類系統(tǒng)調(diào)用特征和文件訪問(wèn)行為特征作為輸入特征,實(shí)驗(yàn)對(duì)照組4 使用6 類系統(tǒng)調(diào)用、網(wǎng)絡(luò)傳輸數(shù)據(jù)特征以及文件訪問(wèn)行為特征作為輸入特征,實(shí)驗(yàn)對(duì)照組5 使用6 類系統(tǒng)調(diào)用、網(wǎng)絡(luò)傳輸數(shù)據(jù)特征、文件訪問(wèn)行為特征以及用戶點(diǎn)擊行為等特征作為輸入特征,實(shí)驗(yàn)對(duì)照組6 使用6 類系統(tǒng)調(diào)用、網(wǎng)絡(luò)傳輸數(shù)據(jù)特征以及文件訪問(wèn)行為特征(使用用戶有意識(shí)行為和應(yīng)用隱匿行為分割算法處理)作為輸入特征。
表4 不同實(shí)驗(yàn)對(duì)照組的分類效果對(duì)比 Table 4 Classification effect comparison among different experimental control groups %
從實(shí)驗(yàn)對(duì)照組1、實(shí)驗(yàn)對(duì)照組2 和實(shí)驗(yàn)對(duì)照組3的結(jié)果可以看出,相比僅用系統(tǒng)調(diào)用特征作為輸入特征,系統(tǒng)調(diào)用特征加上網(wǎng)絡(luò)傳輸數(shù)據(jù)特征后準(zhǔn)確率提高了6.8 個(gè)百分點(diǎn),誤報(bào)率分別下降了2.8 個(gè)百分點(diǎn),而添加文件訪問(wèn)行為特征后準(zhǔn)確率提升2.9 個(gè)百分點(diǎn),同時(shí),誤報(bào)率下降了1.5 個(gè)百分點(diǎn)。相比實(shí)驗(yàn)對(duì)照組2,實(shí)驗(yàn)對(duì)照組4 準(zhǔn)確率并未得到提高,但是誤報(bào)率出現(xiàn)下降,而召回率與F1 值均得到提升。從實(shí)驗(yàn)對(duì)照組4 和實(shí)驗(yàn)對(duì)照組5 的對(duì)比結(jié)果可以看出,用戶點(diǎn)擊行為等5 種Java 層應(yīng)用行為特征不適合與系統(tǒng)調(diào)用特征、網(wǎng)絡(luò)傳輸數(shù)據(jù)特征以及文件訪問(wèn)行為特征一起作為輸入特征被學(xué)習(xí)。從實(shí)驗(yàn)對(duì)照組4 和實(shí)驗(yàn)對(duì)照組6 的結(jié)果可以看出,在進(jìn)行劃分用戶有意識(shí)行為特征集與應(yīng)用隱匿行為特征集后,深度學(xué)習(xí)模型的各項(xiàng)指標(biāo)均得到明顯改善。因此,本文設(shè)計(jì)基于應(yīng)用行為劃分的Android 惡意應(yīng)用檢測(cè)方法具有一定的有效性。
為檢測(cè)本文所提檢測(cè)系統(tǒng)的有效性,本文將提出的檢測(cè)方法與近幾年相關(guān)方法進(jìn)行對(duì)比,具體對(duì)比情況如表5 所示。
文獻(xiàn)[27]提出一種基于馬爾可夫圖像和深度學(xué)習(xí)的字節(jié)級(jí)惡意軟件分類方法(MDMC),通過(guò)將dex 字節(jié)碼轉(zhuǎn)換為馬爾可夫圖,使用深度學(xué)習(xí)來(lái)分類應(yīng)用。MDMC 在Microsoft 惡意樣本數(shù)據(jù)集上的平均準(zhǔn)確率達(dá)到99.2%,但是,軟件加殼技術(shù)使得屬于惡意代碼部分的dex 字節(jié)碼被隱藏起來(lái),以致MDMC 難以將使用該技術(shù)的惡意樣本檢測(cè)出來(lái)。文獻(xiàn)[14]提出利用N-gram 分析和特征哈?;?,從應(yīng)用程序中提取多種特征輸入到分類器中,綜合每種特征分類結(jié)果判斷應(yīng)用的惡意程度。文獻(xiàn)[14]在5 375 個(gè)惡意樣本與5 000 個(gè)良性樣本的基準(zhǔn)數(shù)據(jù)集上實(shí)現(xiàn)了93%的準(zhǔn)確率,使用的惡意樣本數(shù)據(jù)集Drebin 包括2010 年—2012 年的惡意樣本,發(fā)布時(shí)間較久遠(yuǎn),并且其中惡意樣本使用的技術(shù)也過(guò)時(shí),因此難以代表近幾年的Android 安全態(tài)勢(shì)。本文使用的惡意樣本數(shù)據(jù)集發(fā)布于2020 年,良性樣本數(shù)據(jù)集發(fā)布于2022 年,在時(shí)間上較新,因而更具代表性。文獻(xiàn)[16]使用靜態(tài)分析技術(shù)獲取應(yīng)用API 的調(diào)用情況,判定其是否為疑似惡意應(yīng)用,根據(jù)疑似惡意應(yīng)用UI 控件的可疑度進(jìn)行針對(duì)性動(dòng)態(tài)測(cè)試,從而自動(dòng)確認(rèn)疑似惡意應(yīng)用中是否存在惡意行為。雖然文獻(xiàn)[16]所提的方法在統(tǒng)計(jì)2 類惡意吸費(fèi)短信應(yīng)用的場(chǎng)景下,誤報(bào)率為0,但是漏報(bào)率達(dá)到18.3%。本文實(shí)驗(yàn)的樣本集相較于文獻(xiàn)[16]所提方法的規(guī)模更大且時(shí)間更新,而本文方法統(tǒng)計(jì)4 類惡意應(yīng)用時(shí)的漏報(bào)率只有7.1%。
在數(shù)據(jù)特征方面,本文在使用應(yīng)用行為特征的同時(shí)考慮了用戶與應(yīng)用交互信息。實(shí)驗(yàn)4 的結(jié)果表明,使用本文應(yīng)用行為劃分后的特征集相較于原始特征集取得了更好的效果。在模型選擇方面,LSTM是具有增強(qiáng)記憶能力特殊類型的遞歸神經(jīng)網(wǎng)絡(luò),其設(shè)計(jì)允許學(xué)習(xí)數(shù)據(jù)中的長(zhǎng)期依賴關(guān)系。TCN 模型則根據(jù)因果卷積和空洞卷積的思想,更適合解決與序列建模相關(guān)的問(wèn)題。本文將LSTM 和TCN 這2 個(gè)模型相結(jié)合并應(yīng)用在時(shí)序性強(qiáng)的應(yīng)用行為數(shù)據(jù)上,以更完整地提取數(shù)據(jù)中的序列信息。因此,本文所提方法2ch-LSTM-TCN 模型的效果較單一的LSTM 網(wǎng)絡(luò)或TCN 網(wǎng)絡(luò)在具備時(shí)序依賴關(guān)系的特征向量上的訓(xùn)練效果要優(yōu)。
現(xiàn)有的動(dòng)態(tài)檢測(cè)技術(shù)忽略了對(duì)于不同種應(yīng)用特征間關(guān)聯(lián)效果的驗(yàn)證和分析,此外,用戶行為意圖和應(yīng)用行為意圖存在識(shí)別困難的問(wèn)題。本文提出一種基于應(yīng)用行為劃分的Android 惡意應(yīng)用檢測(cè)方法。該方法通過(guò)從多種應(yīng)用行為中劃分用戶有意識(shí)行為特征集和應(yīng)用隱匿行為特征集,實(shí)現(xiàn)有效檢測(cè)Android 應(yīng)用程序。從多維度應(yīng)用行為角度分析,基于特征頻率和惡意樣本分析經(jīng)驗(yàn)選取由有效的應(yīng)用行為特征組成的特征集,避免使用無(wú)效特征或者低效特征。本文基于用戶交互信息進(jìn)行應(yīng)用行為劃分,得到分類效果較原始特征集更優(yōu)的用戶有意識(shí)行為特征集與應(yīng)用隱匿行為特征集,在不增加時(shí)間及性能成本的情況下提升模型的各項(xiàng)指標(biāo)。在此基礎(chǔ)上,本文設(shè)計(jì)的2ch-LSTM-TCN 雙通道應(yīng)用分類模型能夠同時(shí)學(xué)習(xí)2 組特征集。實(shí)驗(yàn)結(jié)果表明,本文方法對(duì)Android 惡意應(yīng)用檢測(cè)的準(zhǔn)確率達(dá)到94.8%。后續(xù)將繼續(xù)擴(kuò)展和豐富樣本數(shù)據(jù)集,構(gòu)建一個(gè)對(duì)復(fù)雜Android 應(yīng)用市場(chǎng)具備代表性的樣本數(shù)據(jù)集。此外,細(xì)化和延長(zhǎng)反應(yīng)時(shí)長(zhǎng)對(duì)于分類效果的影響也是本文重點(diǎn)研究方向,并將繼續(xù)優(yōu)化2ch-LSTM-TCN 雙通道應(yīng)用分類模型,以構(gòu)建較優(yōu)的深度學(xué)習(xí)模型。