陳 穎 林雨衡 王志強(qiáng) 都迎迎 文 津
1(北京電子科技學(xué)院密碼科學(xué)與技術(shù)系 北京 100070) 2(北京電子科技學(xué)院網(wǎng)絡(luò)空間安全系 北京 100070)
隨著5G時(shí)代的到來(lái)和移動(dòng)終端設(shè)備的不斷革新與發(fā)展,安卓作為當(dāng)前市場(chǎng)份額最高的移動(dòng)操作系統(tǒng)被賦予了更加豐富的應(yīng)用場(chǎng)景.但安卓又因?yàn)槠涮赜械母唛_放性及終端的多樣性,導(dǎo)致其在實(shí)際應(yīng)用場(chǎng)景中存在諸多安全及隱私威脅.惡意軟件作為當(dāng)前安卓系統(tǒng)中最主要的安全威脅之一,不僅可能會(huì)導(dǎo)致隱私信息的泄露,甚至?xí)o國(guó)家和用戶帶來(lái)極大的財(cái)產(chǎn)及經(jīng)濟(jì)損失,嚴(yán)重侵害用戶合法權(quán)益.
因此,如何更加有效檢測(cè)在各種應(yīng)用場(chǎng)景中的安卓惡意軟件已經(jīng)成為網(wǎng)絡(luò)空間安全領(lǐng)域的一個(gè)熱門課題.國(guó)內(nèi)外許多學(xué)者對(duì)安卓惡意軟件檢測(cè)作了大量研究,其中基于特征和規(guī)則的檢測(cè)方法存在局限性,無(wú)法檢測(cè)出未知的惡意軟件,因而機(jī)器學(xué)習(xí)和深度學(xué)習(xí)算法得到廣泛應(yīng)用.其中將惡意軟件轉(zhuǎn)化為圖像進(jìn)行檢測(cè)的方法具有不需提取文件內(nèi)容、不需反編譯的優(yōu)點(diǎn),被廣泛使用.
本文對(duì)比了不同模型在惡意軟件轉(zhuǎn)灰度圖像和轉(zhuǎn)RGB圖像的準(zhǔn)確率,發(fā)現(xiàn)將惡意軟件轉(zhuǎn)RGB圖像后準(zhǔn)確率有一定的提高.然后在基于RGB圖像的基礎(chǔ)上,采用自然語(yǔ)言處理領(lǐng)域中表現(xiàn)出色的Transformer模型對(duì)惡意軟件進(jìn)行多分類,分類結(jié)果優(yōu)于CNN,MLP等模型.
隨著近年人工智能技術(shù)的不斷發(fā)展,研究者們提出通過機(jī)器學(xué)習(xí)等技術(shù)提高惡意軟件檢測(cè)的準(zhǔn)確率.其中將待檢測(cè)軟件轉(zhuǎn)化為可視化圖像,并利用計(jì)算機(jī)視覺領(lǐng)域相關(guān)研究建立和優(yōu)化惡意軟件檢測(cè)模型,是當(dāng)前常用的研究方法.
2011年,Nataraj等人[1]首次提出通過將惡意軟件二進(jìn)制文件可視化為灰度圖像,采用KNN算法通過利用圖像的紋理特征對(duì)惡意軟件進(jìn)行分類,首次將圖像分類方法正式引入解決惡意軟件檢測(cè)問題.2014年,Shaid等人[2]將惡意軟件代碼可視化為包含信息更多的彩色RGB圖像,并通過分析其生成圖像與各類惡意軟件的相似性對(duì)惡意軟件進(jìn)行分類.
2016年,Tobiyama等人[3]利用RNN算法對(duì)軟件日志文件數(shù)據(jù)進(jìn)行特征提取,并生成相應(yīng)的特征圖像,然后利用CNN算法對(duì)生成的特征圖像再次進(jìn)行特征提取,并對(duì)特征圖像進(jìn)行分類.2018年,Cui等人[4]使用CNN算法對(duì)由惡意代碼轉(zhuǎn)換的灰度圖像進(jìn)行分類,并提出了BAT算法以解決不同惡意軟件家族間存在的樣本比例失衡等問題.2020年,Vasan等人[5]提出了一種基于微調(diào)CNN架構(gòu)的IMCFN算法,并利用數(shù)據(jù)增強(qiáng)技術(shù)優(yōu)化算法性能,處理不平衡數(shù)據(jù)集.
安卓系統(tǒng)采用分層的設(shè)計(jì)模式,從下往上依次為L(zhǎng)inux內(nèi)核層、硬件抽象層、系統(tǒng)庫(kù)和安卓運(yùn)行時(shí)環(huán)境、Java框架層以及應(yīng)用層,其中每一層均包含大量的子模塊或子系統(tǒng),每一層的特點(diǎn)和功能如表1所示:
表1 安卓系統(tǒng)架構(gòu)
2017年,谷歌研究團(tuán)隊(duì)的Vaswani等人[6]提出了基于自注意力機(jī)制的Transformer模型,此架構(gòu)最早應(yīng)用于自然語(yǔ)言處理領(lǐng)域,其各方面性能遠(yuǎn)超之前常用的NLP模型,成為當(dāng)前較為熱門的主流NLP模型.在后續(xù)的各項(xiàng)研究中表明,Transformer模型在計(jì)算機(jī)視覺領(lǐng)域同樣取得了較好的性能,且因其可以規(guī)避CNN等模型存在的局限性,已經(jīng)廣泛應(yīng)用在計(jì)算機(jī)視覺領(lǐng)域的各項(xiàng)任務(wù)中.
Transformer模型結(jié)構(gòu)如圖1所示,完全基于自注意力機(jī)制,不包含任何CNN層及RNN層,主要可分為編碼器和解碼器2個(gè)部分.其中編碼器的主要作用是將輸入映射為隱藏層,解碼器是根據(jù)隱藏層的信息得到相應(yīng)的預(yù)測(cè)輸出.編碼器由N層組成,每層由多頭注意力機(jī)制和前饋神經(jīng)網(wǎng)絡(luò)2個(gè)子層組成,每個(gè)編碼器的輸入先經(jīng)過自注意力機(jī)制進(jìn)行計(jì)算后傳入全連接的前饋神經(jīng)網(wǎng)絡(luò),最頂層的編碼器的輸出將傳遞給每一個(gè)解碼器.解碼器同樣由N層組成,但解碼器每層中除了多頭注意力機(jī)制和前饋神經(jīng)網(wǎng)絡(luò)2個(gè)子層外,還插入了對(duì)編碼器堆棧的輸出執(zhí)行多頭注意力機(jī)制的子層.
圖1 Transformer模型結(jié)構(gòu)
近年來(lái),Transformer模型在計(jì)算機(jī)視覺領(lǐng)域取得了極大的發(fā)展.其中Dosovitskiy等人[7]在2020年提出的Vision Transformer模型,將原有的Transformer模型直接應(yīng)用于圖像,采取簡(jiǎn)單和可拓展的策略,盡可能減少對(duì)圖像分類流程的修改.在Vision Transformer模型中,首先將輸入的1張圖像拆分為若干個(gè)小圖像塊,將這些小圖像塊組合成1組線性嵌入序列并作為Transformer模型的輸入,采取自監(jiān)督學(xué)習(xí)的方式對(duì)圖像進(jìn)行分類,最終輸出預(yù)測(cè)結(jié)果.經(jīng)過實(shí)驗(yàn)表明,Vision Transformer模型在各個(gè)常用數(shù)據(jù)集中均能取得很好的性能.
APK(Android application package)是安卓操作系統(tǒng)使用的應(yīng)用程序包文件格式,包含了應(yīng)用程序在設(shè)備上正確安裝所需的所有元素,將其傳到安卓手機(jī)或模擬器中即可安裝.APK基于ZIP文件格式,解壓后可得到大量應(yīng)用程序相關(guān)信息,如:用于存放資源文件的res文件夾;記錄安卓版本號(hào)等信息的清單文件夾;記錄較大型資源文件的assets文件夾;編譯后的二進(jìn)制資源文件resources.arsc,classes.dex,META_INF文件夾.具體內(nèi)容如表2所示:
表2 APK文件內(nèi)容
其中classes.dex文件是在Dalvik虛擬機(jī)上可執(zhí)行的文件,包含安卓代碼的核心部分,故本文選擇將classes.dex文件轉(zhuǎn)化為圖像進(jìn)行檢測(cè).
常見的提取classes.dex文件的方法是先對(duì)APK文件進(jìn)行批量處理,將APK文件的后綴名“.apk”改為“.zip”,從而將其轉(zhuǎn)變?yōu)閆IP格式,再?gòu)腪IP文件里批量獲取classes.dex,并重命名DEX和XML,以APK文件的哈希值為文件名.本文使用ZipFile的read()函數(shù),直接讀取并提取APK文件中的classes.dex文件,不需要修改APK文件的后綴名.通過ZipFile遍歷文件夾中的APK,并讀取每一個(gè)APK中的內(nèi)容,若讀取的文件后綴名為dex則使用read()函數(shù)讀取該文件中的內(nèi)容,并存在外部與該APK文件同名的文件中.
計(jì)算機(jī)中任何文件都是以二進(jìn)制數(shù)存儲(chǔ)的,包括classes.dex文件.通過直接轉(zhuǎn)化惡意軟件的文件,不用對(duì)文件進(jìn)行分割,不用反編譯,保留了文件原有的特征.在此基礎(chǔ)上設(shè)計(jì)安卓軟件轉(zhuǎn)換為圖像的轉(zhuǎn)換算法,可將classes.dex文件轉(zhuǎn)換成灰度圖像和RGB圖像.
將dex文件轉(zhuǎn)換為灰度圖像方法如下:讀取dex文件的二進(jìn)制序列獲取文件數(shù)據(jù),并轉(zhuǎn)換為unit8格式,然后計(jì)算文件的大小,并將其轉(zhuǎn)換為矩陣,表示為范圍在0~255的無(wú)符號(hào)整型字節(jié)(0為黑色,255為白色),最后將2維數(shù)組導(dǎo)出為灰度圖像.
RGB圖像的像素點(diǎn)均有R,G,B這3個(gè)顏色通道,每個(gè)通道使用8b表示.將惡意軟件轉(zhuǎn)換為RGB圖像流程如圖2所示.讀取dex文件的二進(jìn)制序列獲取文件數(shù)據(jù)存入數(shù)組,將數(shù)組中的數(shù)按順序依次存入名為R,G,B的數(shù)組中,每8個(gè)二進(jìn)制數(shù)值組合成單個(gè)顏色通道.最后通過R,G,B這3個(gè)顏色通道構(gòu)建成RGB圖像里像素點(diǎn)的像素值,根據(jù)RGB像素值生成RGB圖像.
圖2 惡意軟件轉(zhuǎn)換為RGB圖像流程
本文選用2020年Google團(tuán)隊(duì)提出的將Transformer應(yīng)用在圖像分類的模型ViT(Vision Transformer),該模型簡(jiǎn)單、效果好、可擴(kuò)展性強(qiáng),當(dāng)擁有足夠多的數(shù)據(jù)進(jìn)行預(yù)訓(xùn)練時(shí),ViT的表現(xiàn)會(huì)超過CNN.
ViT模型結(jié)構(gòu)如圖3所示,由Embedding,Transformer Encoding,MLP Head(multi-layer perceptron head)這3個(gè)模塊組成.Embedding層將輸入的圖像分為多個(gè)圖像塊,再將每個(gè)圖像塊映射到1維向量中.由于自注意力是元素之間兩兩交互,不存在順序問題,該模塊也給圖像塊加上了位置編碼,最后將包含圖像信息和位置信息的token輸入Transformer編碼器模塊.
圖3 ViT模型結(jié)構(gòu)
Transformer編碼器由重復(fù)堆疊L次的Encoder塊組成,如圖4所示,包括Layer Norm(對(duì)每個(gè)token進(jìn)行歸一化處理)、Multi-Head Attention(多頭注意力機(jī)制,能聯(lián)合來(lái)自不同頭部分學(xué)習(xí)到的信息)、MLP Block(由全連接、GELU激活函數(shù)和Dropout組成)和Dropout層,用于訓(xùn)練.圖3中的MLP Head用于得到最終分類的結(jié)果,是一個(gè)通用的分類頭.
圖4 Transformer編碼器
本文采用的數(shù)據(jù)集來(lái)自DREBIN[8]和CICDataset[9],其中應(yīng)用最多的數(shù)據(jù)集是DREBIN,由5560個(gè)惡意軟件和123453個(gè)良性軟件構(gòu)成,包含20個(gè)惡意應(yīng)用程序家族.CICDataset是來(lái)自加拿大網(wǎng)絡(luò)安全研究所整理的數(shù)據(jù)集,包含426個(gè)惡意軟件和5065個(gè)良性軟件,數(shù)據(jù)集中的惡意軟件分為廣告軟件、勒索軟件、恐嚇軟件和短信惡意軟件4類.本文選取樣本數(shù)目不少于300個(gè)的惡意軟件家族進(jìn)行訓(xùn)練,共有6個(gè)家族、3494個(gè)惡意樣本,具體信息如表3所示:
表3 惡意軟件家族
實(shí)驗(yàn)環(huán)境采用Ubuntu 16.04.7 LTS系統(tǒng)和Win10系統(tǒng),使用GPU,CUDA 11.2加速神經(jīng)網(wǎng)絡(luò)訓(xùn)練速度,使用python語(yǔ)言實(shí)現(xiàn)模型各個(gè)部分,借助Tensorflow實(shí)現(xiàn)深度學(xué)習(xí)方法.
安卓惡意軟件檢測(cè)有4種結(jié)果:真陰率TN(true negative)、真陽(yáng)率TP(true positive)、假陰率FN(false negative)和假陽(yáng)率FP(false positive).其中,TN指良性樣本被預(yù)測(cè)為良性,TP指惡意樣本被預(yù)測(cè)為惡意,FN指惡意樣本被預(yù)測(cè)為良性,FP指良性樣本被預(yù)測(cè)為惡意.本文主要對(duì)比不同模型的準(zhǔn)確率,計(jì)算方式如式(1)所示:
(1)
經(jīng)過實(shí)驗(yàn)對(duì)比可知,使用RGB圖像由于紋理更為清晰,預(yù)測(cè)的結(jié)果比使用灰度圖像的預(yù)測(cè)結(jié)果好,如圖5所示,故本文惡意軟件檢測(cè)模型以dex文件轉(zhuǎn)化的RGB圖像為基礎(chǔ)進(jìn)行檢測(cè).
圖5 RGB圖像與灰度圖像檢測(cè)準(zhǔn)確率
經(jīng)過多次實(shí)驗(yàn)調(diào)整模型超參數(shù),優(yōu)化模型后,惡意軟件檢測(cè)模型準(zhǔn)確率如圖6所示,最高可達(dá)87.60%,而MLP模型檢測(cè)準(zhǔn)確率達(dá)85%,CNN模型檢測(cè)準(zhǔn)確率最高只達(dá)82.30%,VGG模型檢測(cè)準(zhǔn)確率不到70%.
圖6 本文惡意軟件檢測(cè)模型準(zhǔn)確率
經(jīng)過實(shí)驗(yàn)對(duì)比可以發(fā)現(xiàn),本文惡意軟件檢測(cè)模型相比其他模型準(zhǔn)確率更高,檢測(cè)結(jié)果更好.對(duì)比實(shí)驗(yàn)具體細(xì)節(jié)如表4所示:
表4 對(duì)比實(shí)驗(yàn)結(jié)果
本文基于4種不同的模型對(duì)惡意軟件轉(zhuǎn)化的灰度圖像和RGB圖像進(jìn)行檢測(cè),經(jīng)實(shí)驗(yàn)發(fā)現(xiàn),使用惡意軟件檢測(cè)的RGB圖像進(jìn)行檢測(cè)的準(zhǔn)確率更高.在上述實(shí)驗(yàn)的基礎(chǔ)上,本文設(shè)計(jì)了基于Vision Transformer的安卓惡意軟件檢測(cè)模型,與CNN,MLP,VGG模型相比,準(zhǔn)確率更高.下一步工作要繼續(xù)對(duì)惡意軟件檢測(cè)模型進(jìn)行優(yōu)化,提高檢測(cè)準(zhǔn)確率,并嘗試通過把從惡意軟件中提取的特征轉(zhuǎn)為圖像進(jìn)行檢測(cè)等方法,優(yōu)化數(shù)據(jù)處理方法,從而提高惡意軟件檢測(cè)準(zhǔn)確率.