楊益敏,陳鐵明
(浙江工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,浙江 杭州 310023)
基于字節(jié)碼圖像的Android惡意代碼家族分類(lèi)方法
楊益敏,陳鐵明
(浙江工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,浙江 杭州 310023)
面對(duì)Android惡意代碼高速增長(zhǎng)的趨勢(shì),提出基于字節(jié)碼圖像的Android惡意代碼家族分類(lèi)方法,通過(guò)將Android惡意應(yīng)用的字節(jié)碼轉(zhuǎn)化為256階灰度圖形式的字節(jié)碼圖像,利用GIST算法提取圖像的紋理特征,并結(jié)合隨機(jī)森林算法對(duì)特征進(jìn)行分類(lèi)。對(duì)常見(jiàn)的14種Android惡意代碼家族的樣本進(jìn)行了實(shí)驗(yàn)驗(yàn)證,并與DREBIN方法進(jìn)行比較,實(shí)驗(yàn)結(jié)果表明,該方法可有效進(jìn)行Android惡意代碼家族分類(lèi),具有檢測(cè)精度高且誤報(bào)率低的優(yōu)點(diǎn)。
安卓;惡意代碼家族;圖像紋理;字節(jié)碼
隨著移動(dòng)互聯(lián)網(wǎng)的蓬勃發(fā)展,移動(dòng)應(yīng)用的種類(lèi)與數(shù)量快速增長(zhǎng),同時(shí),移動(dòng)應(yīng)用的惡意代碼規(guī)模也呈現(xiàn)指數(shù)級(jí)增長(zhǎng)。阿里聚安全的2015移動(dòng)安全病毒年報(bào)指出,Android平臺(tái)約5.6臺(tái)設(shè)備中就有1臺(tái)染毒,設(shè)備感染率高達(dá)18%,約95%的應(yīng)用都存在病毒仿冒[1]。
雖然惡意代碼的數(shù)量每年都在增加,但大部分新的變種是在原有惡意代碼的基礎(chǔ)上經(jīng)過(guò)一些變換操作得到的[2]。惡意軟件編寫(xiě)者在生成惡意軟件的過(guò)程中,往往采用模塊重用或自動(dòng)化工具等手段來(lái)編寫(xiě)變種。這些同源的惡意代碼家族很大程度上共用祖先的大部分代碼,具有一定的內(nèi)在關(guān)聯(lián)性、相似性。因此,對(duì)惡意代碼的分類(lèi)研究尤為重要,是影響惡意代碼檢測(cè)效果的一個(gè)關(guān)鍵因素。
惡意代碼可視化方法在學(xué)術(shù)領(lǐng)域已經(jīng)有不少研究[3~5],該類(lèi)方法的基本思路是將惡意代碼的特征轉(zhuǎn)換為圖像層面的特征,通過(guò)分析圖像的特征來(lái)間接實(shí)現(xiàn)檢測(cè)惡意代碼或?qū)阂饧易暹M(jìn)行分類(lèi)的效果。
本文采用了一種惡意代碼可視化的方法對(duì)Android惡意代碼家族進(jìn)行分類(lèi),先將APK中的Dalvik字節(jié)碼轉(zhuǎn)換為一種灰度圖形式的字節(jié)碼圖像并用GIST算法提取圖像中的特征,最后結(jié)合機(jī)器學(xué)習(xí)算法對(duì)特征進(jìn)行分類(lèi)。
在PC平臺(tái),惡意代碼的可視化方法已有一定的研究。例如,2011年, Nataraj等[6]提出了一種將Windows平臺(tái)的惡意代碼轉(zhuǎn)化為紋理圖像的方法來(lái)進(jìn)行惡意代碼分類(lèi),該方法具有無(wú)需執(zhí)行代碼、無(wú)需反匯編等優(yōu)點(diǎn)。2012年,Wu等[7]提出一種點(diǎn)圖可視化方法并對(duì)惡意代碼進(jìn)行聚類(lèi)。2013年,Han等[8]將惡意代碼通過(guò)反匯編后提取出OpCode,并用散列函數(shù)將OpCode序列生成像素點(diǎn)的坐標(biāo)信息與RGB信息,最后,通過(guò)計(jì)算圖像的相似度對(duì)惡意代碼家族進(jìn)行分類(lèi)。2014年,Shaid等[9]用不同的色系表示不同的API調(diào)用風(fēng)險(xiǎn)程度,生成彩圖來(lái)可視化惡意代碼的行為,此方法對(duì)于識(shí)別惡意代碼的變種有較高的精準(zhǔn)度。國(guó)內(nèi)也有學(xué)者進(jìn)行了相關(guān)研究,韓曉光等[10]將惡意代碼映射為圖片,并用灰階共生矩陣算法提取圖片的紋理指紋特征作為惡意代碼的指紋,該方法對(duì)惡意代碼變種有較好的識(shí)別能力。目前,相對(duì)于PC平臺(tái),Android平臺(tái)利用可視化方法來(lái)檢測(cè)惡意代碼變種的相關(guān)研究尚屬空白。
2012年,北卡羅萊納州立大學(xué)Zhou等[11]第一次對(duì)Android惡意家族進(jìn)行了系統(tǒng)性的研究,他們的研究團(tuán)隊(duì)從2010年8月到2011年10月收集了Android平臺(tái)共計(jì)1 200個(gè)惡意樣本,并對(duì)Android惡意家族的特征與演化過(guò)程進(jìn)行了系統(tǒng)化的研究。2014年,Arp等[12]收集了5 560個(gè)惡意樣本,并提出DREBIN方法,該方法將申請(qǐng)的權(quán)限、可疑的API函數(shù)調(diào)用和網(wǎng)絡(luò)地址等作為靜態(tài)分析的特征,不僅能對(duì)Android惡意代碼與正常代碼進(jìn)行分類(lèi),也能對(duì)不同家族的Android惡意代碼進(jìn)行分類(lèi),該方法具有較高的檢測(cè)率,但誤報(bào)率較高。
綜上所述,本文首次將惡意代碼可視化的方法引入到Android平臺(tái),并根據(jù)Android平臺(tái)的特點(diǎn)提出一種可快速生成Dalvik字節(jié)碼圖像的方法,該方法與GIST算法、隨機(jī)森林算法相結(jié)合,用于分類(lèi)Android惡意代碼家族,具有精度高且誤報(bào)率低的特點(diǎn)。
3.1系統(tǒng)模型
本文的基本思路是將 Android惡意應(yīng)用的Dalvik字節(jié)碼轉(zhuǎn)化為一幅256階灰度圖;然后,用 GIST算法提取圖像的紋理特征;最后,再結(jié)合隨機(jī)森林算法對(duì)特征進(jìn)行分類(lèi)。
整個(gè)系統(tǒng)模型如圖1所示,將APK中的DEX文件提取出來(lái),該DEX文件包含Dalvik字節(jié)碼,可以被Dalvik虛擬機(jī)執(zhí)行;然后,將字節(jié)碼構(gòu)建成一個(gè)合適寬度的像素點(diǎn)矩陣,矩陣中的像素點(diǎn)為一個(gè)字節(jié),取值范圍為 0x00~0xFF,即有 256種取值,剛好對(duì)應(yīng)256階灰度,由像素矩陣可生成png格式的灰度圖;最后,利用GIST特征算法提取出灰度圖中的紋理特征,得到一個(gè)有 512維的特征向量,再用GIST特征結(jié)合隨機(jī)森林算法對(duì)Android惡意代碼家族進(jìn)行分類(lèi)。
圖1 系統(tǒng)模型
3.2字節(jié)碼圖像的原理
APK格式的文件通常都包含一個(gè)名為classes.dex的文件,該DEX(Dalvik executable)文件封裝了可被Dalvik虛擬機(jī)執(zhí)行的所有Dalvik字節(jié)碼。DEX文件的結(jié)構(gòu)由多個(gè)結(jié)構(gòu)體組合而成,包括 dex header、string_ids、type_ids、proto_ids、field_ids、method_ids、class_def、data等多個(gè)部分。DEX文件頭指定了DEX文件的一些屬性,并記錄了其他6部分?jǐn)?shù)據(jù)結(jié)構(gòu)在DEX文件中的物理偏移[13]。
若將 DEX文件的字節(jié)碼構(gòu)建成一個(gè)寬度固定的像素點(diǎn)矩陣,矩陣中的像素點(diǎn)為一個(gè)字節(jié),取值范圍為0x00~0xFF,剛好對(duì)應(yīng)256階灰度,能夠由像素矩陣生成一張灰度圖形式的字節(jié)碼圖像。圖2顯示了一個(gè)惡意代碼的DEX文件結(jié)構(gòu)與字節(jié)碼圖像的對(duì)應(yīng)關(guān)系,灰度圖的紋理特征是對(duì)字節(jié)碼數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)的綜合反映。
圖2 DEX文件結(jié)構(gòu)與字節(jié)碼圖像的對(duì)應(yīng)關(guān)系
由于同源惡意代碼家族很大程度上都共用了祖先的大部分代碼,具有內(nèi)在關(guān)聯(lián)性、相似性,因此,同一個(gè)家族惡意代碼的字節(jié)碼圖像的紋理也會(huì)表現(xiàn)出一定的相似性。如圖3所示,Android惡意家族 DroidKungFu、Plankton、Opfake、Kmin各有5個(gè)變種樣本,同一個(gè)家族的字節(jié)碼圖像的相似性要大于不同家族的字節(jié)碼圖像。另外,圖4給出了14個(gè)常見(jiàn)Android惡意家族較為典型的字節(jié)碼圖像,不難發(fā)現(xiàn),各家族的圖像具有各自的視覺(jué)特點(diǎn)。
3.3圖像特征的提取
常見(jiàn)的圖像紋理特征提取方法包括GLCM、邊界頻率法、GIST模型、Gabor濾波法等。本文采用GIST算法,該算法常用于圖像識(shí)別系統(tǒng),具體細(xì)節(jié)可參考文獻(xiàn)[14]。接下來(lái),簡(jiǎn)單介紹如何利用GIST算法提取字節(jié)碼圖像特征的流程。
1)按照原始圖像的像素點(diǎn)總數(shù),通過(guò)計(jì)算可得到一個(gè)高度與寬度等長(zhǎng)的像素點(diǎn)矩陣,該矩陣存放的仍是原始圖像的像素點(diǎn),并可利用矩陣生成一個(gè)正方形圖像。
2)將正方形圖像均勻劃分成4×4個(gè)互不重疊的子區(qū)域。
3)對(duì)每個(gè)子區(qū)域進(jìn)行8個(gè)方向與4個(gè)尺度的小波濾波來(lái)提取圖像的紋理特征信息。
4)每一幅圖像最終獲得一個(gè) 16×8×4=512維特征向量。
圖3 Android惡意家族DroidKungFu、Plankton、Opfake、Kmin的字節(jié)碼圖像
采用上述步驟對(duì)6個(gè)Android惡意代碼家族的部分樣本進(jìn)行了特征提取,并將得到的高維數(shù)據(jù)進(jìn)行降維與數(shù)據(jù)可視化[15]。結(jié)果如圖5所示,GIST特征有較好的分類(lèi)效果。
圖4 14個(gè)常見(jiàn)Android惡意家族的字節(jié)碼圖像
圖5 GIST特征的數(shù)據(jù)可視化
3.4隨機(jī)森林算法
隨機(jī)森林(random forest)是一種常見(jiàn)的機(jī)器學(xué)習(xí)分類(lèi)算法,利用多棵決策樹(shù)對(duì)樣本進(jìn)行訓(xùn)練并預(yù)測(cè)。在樣本訓(xùn)練階段,通過(guò)有放回抽樣的方式抽取子樣本集,對(duì)每組子樣本集進(jìn)行決策樹(shù)建模,由多棵決策樹(shù)構(gòu)成隨機(jī)森林。在樣本預(yù)測(cè)階段,先統(tǒng)計(jì)每棵決策樹(shù)的預(yù)測(cè)結(jié)果,再通過(guò)投票形式給出最終的分類(lèi)結(jié)果[16]。
隨機(jī)森林算法有許多優(yōu)點(diǎn),特別是在處理多種類(lèi)型數(shù)據(jù)時(shí)可以產(chǎn)生高準(zhǔn)確度,且對(duì)不平衡的數(shù)據(jù)集可以平衡誤差,非常適用于惡意家族數(shù)據(jù)集的分類(lèi),所以,本文實(shí)驗(yàn)選用隨機(jī)森林算法。
4.1實(shí)驗(yàn)數(shù)據(jù)
測(cè)試所采用的惡意樣本來(lái)源于德國(guó)哥廷根大學(xué)DREBIN項(xiàng)目的惡意樣本數(shù)據(jù)庫(kù)[17],在該樣本庫(kù)中選用了 14類(lèi)常見(jiàn)的惡意家族作為最終實(shí)驗(yàn)數(shù)據(jù),如表1所示。
表1 Android惡意家族與樣本數(shù)量
4.2惡意家族分類(lèi)實(shí)驗(yàn)
使用隨機(jī)森林算法對(duì)14類(lèi)常見(jiàn)惡意家族的3 962個(gè)樣本,按照10折交叉驗(yàn)證模式進(jìn)行測(cè)試,結(jié)果如表2所示,除了Gappusin家族由于樣本數(shù)量較少導(dǎo)致TPR值較低,其他家族的TPR值都不低于 0.8;總體上,平均檢測(cè)率要高于 90%,平均誤報(bào)率約為0.6%,表明該方法對(duì)惡意家族分類(lèi)有較好的效果。
圖6給出了本文方法與DREBIN方法在相同實(shí)驗(yàn)數(shù)據(jù)集上檢測(cè)率的對(duì)比情況,2種檢測(cè)方法在不同的檢測(cè)惡意家族的表現(xiàn)上互有優(yōu)劣,總體效果基本接近,雖然Gappusin家族一項(xiàng)的檢測(cè)率都不高,但本文方法略好于 DREBIN方法。DREBIN方法的平均誤報(bào)率為1%,而本文方法的平均誤報(bào)率為0.6%,要略?xún)?yōu)于DREBIN方法。
表2 惡意家族分類(lèi)效果
圖6 2種檢測(cè)方法的檢測(cè)率對(duì)比
本文研究了 DEX文件結(jié)構(gòu)與字節(jié)碼圖像紋理之間的對(duì)應(yīng)關(guān)系,提出了一種基于字節(jié)碼圖像的 Android惡意代碼家族分類(lèi)方法,通過(guò)將Android惡意應(yīng)用的Dalvik字節(jié)碼轉(zhuǎn)化為256階灰度圖形式的字節(jié)碼,利用 GIST算法提取圖像的紋理特征,并結(jié)合隨機(jī)森林算法對(duì)特征進(jìn)行分類(lèi)。本文對(duì)常見(jiàn)的14種Android惡意代碼家族的樣本數(shù)據(jù)進(jìn)行了實(shí)驗(yàn)驗(yàn)證,并與DREBIN方法進(jìn)行了比較,結(jié)果表明,該方法可有效進(jìn)行Android惡意代碼家族分類(lèi),檢測(cè)精度高且誤報(bào)率較低。下一步工作將改進(jìn)字節(jié)碼圖像紋理特征的提取方法,針對(duì)Android平臺(tái)的特性加入更多惡意代碼的可視化方法,以進(jìn)一步提高檢測(cè)精度、降低誤報(bào)率。
[1]阿里聚安全[EB/OL].http://jaq.alibaba.com/.2016. Ali poly security[EB/OL].http://jaq.alibaba.com/.2016.
[2]FOSSI M, EGAN G, HALEY K, et al. Symantec internet security threat report trends for 2010[R]. 2010.
[3]CONTI G, DEAN E, SINDA M, et al. Visual reverse engineering ofbinary and data files[J].Journal of General Physiology, 2008, 115(5):637.
[4]ANDERSON B, STORLIE C, LANE T. Improving malware classification: bridging the static/dynamic gap[C]//The 5th ACM Workshop on Security and Artificial Intelligence. c2012: 3-14.
[5]NATARAJ L, YEGNESWARAN V, PORRAS P, et al. A comparative assessment of malware classification using binary texture analysis and dynamic analysis[C]//The 4th ACM Workshop on Security and Artificial Intelligence. c2011: 21-30.
[6]NATARAJ L, KARTHIKEYAN S, JACOB G, et al. Malware images: visualization and automatic classification[C]//The 8th International Symposium on Visualization for Cyber Security, ACM. c2011: 4.
[7]WU Y, YAP R. Experiments with malware visualization[M]// Detection of Intrusions and Malware, and Vulnerability Assessment. Berlin Heidelberg: Springer, 2012: 123-133.
[8]HAN K, LIM J, IM E. Malware analysis method using visualization of binary files[C]//The 2013 Research in Adaptive and Convergent Systems, ACM. c2013: 317-321.
[9]SHAID M, ZAINUDEEN S, MAAROF M. Malware behavior image for malware variant identification[C]// 2014 International Symposium on Biometrics and Security Technologies (ISBAST),IEEE. c2014: 238-243.
[10]韓曉光, 曲武, 姚宣霞, 等. 基于紋理指紋的惡意代碼變種檢測(cè)方法研究[J]. 通信學(xué)報(bào), 2014, 35(8): 125-136. HAN X G, QU W, YAO X X, et al. Malicious code variants detection method based on texture fingerprint study [J]. Journal of Communications, 2014, 35(8): 125-136.
[11]ZHOU Y, JIANG X. Dissecting android malware: characterization and evolution[C]// 2012 IEEE Symposium on Security and Privacy (SP), IEEE. c2012: 95-109.
[12]ARP D, SPREITZENBARTH M, HUBNER M, et al. DREBIN:effective and explainable detection of android malware in your pocket[C]// Network and Distributed System Security Symposium (NDSS). c2014.
[13]ELENKOV N. Android security internals: an in-depth guide to android's security architecture[M]. No Starch Press, 2014.
[14]OLIVA A, TORRALBA A. Modeling the shape of the scene: a holistic representation of the spatial envelope[J]. International Journal of Computer Vision, 2001, 42(3):145-175.
[15]T-SNE[EB/OL]. http://lvdmaaten.github.io/tsne/. 2016.
[16]HAN J, KAMBER M, PEI J. Data mining[M]. San Francisco:Morgan Kaufmann, 2011.
[17]The drebin dataset[EB/OL].http://user.informatik.uni-goettingen. de/~darp/drebin/.2016.
Android malware family classification method based on the image of bytecode
YANG Yi-min, CHEN Tie-ming
(College of Computer Science and Technology, Zhejiang University of Technology, Hangzhou 310023, China)
An Android malware family classification method based on the image of bytecode was proposed according to the exponential growth of Android malware. A bytecode file of Android malware was converted to a 256-level grayscale image and texture features was extracted from the image by GIST. The random forest algorithm was applied to classify the extracted features. The method by the experimental data of 14 kinds of common Android malware families was verified and was compared against the DREBIN on the same dataset. The experimental results show that the proposed method has high detection precision and low false positive rate.
Android, malware family, image texture, bytecode
TP301
A
10.11959/j.issn.2096-109x.2016.00066
2016-04-18;
2016-05-23。通信作者:陳鐵明,tmchen@zjut.edu.cn
國(guó)家自然科學(xué)基金資助項(xiàng)目(No.U1509214);浙江省自然科學(xué)基金資助項(xiàng)目(No.LY16F020035)
Foundation Items: The National Natural Science Foundation of China (No.U1509214), The Natural Science Foundation of Zhejiang Province (No.LY16F020035)
楊益敏(1985-),男,浙江寧波人,浙江工業(yè)大學(xué)碩士生,主要研究方向?yàn)榫W(wǎng)絡(luò)與信息安全。
陳鐵明(1978-),男,博士,浙江工業(yè)大學(xué)教授,主要研究方向?yàn)榫W(wǎng)絡(luò)與信息安全。