陳志剛+王青國
摘要:Android操作系統(tǒng)作為當(dāng)前最為流行的智能手機(jī)應(yīng)用平臺,但受到各種惡意軟件的攻擊。目前已有研究基于抽取的惡意軟件特征來構(gòu)建機(jī)器學(xué)習(xí)分類器完成惡意軟件檢測,但實際應(yīng)用中我們通常僅能獲取少量的標(biāo)記數(shù)據(jù)和大量的無標(biāo)記數(shù)據(jù),因此如何有效地利用少量的標(biāo)記數(shù)據(jù)集和大量的無標(biāo)記數(shù)據(jù)成為當(dāng)前研究一個挑戰(zhàn)。為此,該文提出了一種基于半監(jiān)督學(xué)習(xí)的惡意軟件檢測方法。首先,我們選取了一些特征表征隱藏在Android惡意軟件中的惡意代碼;然后,我們基于少量的標(biāo)記數(shù)據(jù)和大量的無標(biāo)記數(shù)據(jù)構(gòu)建半監(jiān)督分類模型,通過類EM迭代算法優(yōu)化樸素貝葉斯分類器;最后,通過公開數(shù)據(jù)集VirusShare驗證算法的有效性。
關(guān)鍵詞:混合類型惡意軟件攻擊;半監(jiān)督檢測器;EM迭代;惡意軟件檢測;VirusShare
中圖分類號:TP206+.3 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)34-0265-04
Abstract: Android, one of most popular open source mobile operating systems, is confronted with lots of malicious threats. Although many studies have been presented to malware detection, which do not agree with the fact that, in practice, we are often given only a few labeled but a majority of unlabeled data. How to effectively utilize a small number of labeled data sets and a large number of unlabeled data has become a challenge problem for android malware detection. In this paper, we propose a semi-supervised learning-based method to detect the android malware (SSAMD for short). Firstly, we select some features combination of permissions and resources. Secondly, a semi-supervised learning system is employed for the categorization of both labeled and unlabeled data. Extensive experiments on VirusShare datasets demonstrate the effective of our presented algorithm.
Key words: hybrid malware detection; semi-supervised detectors; EM iterative; malware detection; VirusShare
1 概述
Android操作系統(tǒng)是最常用的智能手機(jī)平臺,隨著該系統(tǒng)的不斷發(fā)展以及Android生態(tài)系統(tǒng)也在不斷增長,目前在市場上發(fā)布的應(yīng)用軟件達(dá)數(shù)百萬個,因此需要快速有效地機(jī)制對惡意軟件進(jìn)行分析和檢測[1]。通常這些惡意軟件是通過重新包裝流行的合法的具有相似惡意代碼的應(yīng)用程序,攻擊者通過注入其惡意代碼在良性應(yīng)用程序上,通過第三方平臺傳播這些惡意軟件,對用戶隱私信息構(gòu)成了巨大威脅。由于Android系統(tǒng)的開發(fā)門檻較低和Android系統(tǒng)源碼的開源性,Android系統(tǒng)的漏洞很容易受到病毒、特洛伊木馬和蠕蟲等各種惡意軟件威脅的影響[2]。此外,Enck等人[3]發(fā)現(xiàn)Android的內(nèi)置安全功能在很大程度上是不夠的,甚至是非惡意的程序可以(無意)公開機(jī)密信息。據(jù)MetaIntell 機(jī)構(gòu)2014研究報告報道,在Top-500個Android應(yīng)用程序中大概有460個應(yīng)用在下載到Android設(shè)備時存在安全或隱私風(fēng)險[4]。以目前被認(rèn)為最值得信賴的安全的Google Play商城為例,已有很多研究指出目前有大量的惡意軟件已經(jīng)繞過Google Play商城的安全檢測。由于惡意攻擊者想要影響大量的受眾,其多針對目前比較流行的應(yīng)用軟件如:Facebook、Twitter、微博等。借助在應(yīng)用軟件中的這些漏洞,惡意軟件可以在手機(jī)中實現(xiàn)各種惡意行為。智能手機(jī)上的惡意軟件可能會使手機(jī)部分或完全無法使用;造成不必要的花費;竊取私人信息(可能通過網(wǎng)絡(luò)釣魚和社會工程)或感染用戶電話簿中的每個用戶信息等[5,6]。
目前的針對惡意軟件檢測的研究主要集中于程序分析和機(jī)器學(xué)習(xí)檢測方法。首先通過提取程序中的語義特征(如:代碼片段、調(diào)用函數(shù)等)通過機(jī)器學(xué)習(xí)分類器來發(fā)現(xiàn)惡意代碼和行為模式[7-10]。同時,更高層的語義表達(dá)如調(diào)用圖(調(diào)用函數(shù)構(gòu)建的語義圖)、控制語句和數(shù)據(jù)流圖同樣用于惡意軟件檢測[11-12]。目前的基于機(jī)器學(xué)習(xí)的惡意軟件方法多集中于監(jiān)督和無監(jiān)督檢測方法,但實際應(yīng)用中我們通常僅能獲取少量的標(biāo)記數(shù)據(jù)和大量的無標(biāo)記數(shù)據(jù),因此如何有效地利用少量的標(biāo)記數(shù)據(jù)集和大量的無標(biāo)記數(shù)據(jù)成為當(dāng)前研究一個挑戰(zhàn)。
為此,本文提出了一種基于半監(jiān)督學(xué)習(xí)的惡意軟件檢測方法。首先,我們選取了一些特征表征隱藏在Android惡意軟件中的惡意代碼;然后,我們基于少量的標(biāo)記數(shù)據(jù)和大量的無標(biāo)記數(shù)據(jù)構(gòu)建半監(jiān)督分類模型,將數(shù)據(jù)分為正常軟件和惡意軟件兩個類別;最后,通過公開數(shù)據(jù)集驗證算法有效性。
2 相關(guān)工作
目前的手機(jī)虛假軟件檢測方法主要基于行為模式構(gòu)建機(jī)器學(xué)習(xí)分類器完成惡意軟件檢測。一些方法通過監(jiān)控每個軟件的電池耗費量,并捕捉反常消耗行為[13]。同時,也有些方法通過監(jiān)控系統(tǒng)調(diào)用和檢測異常系統(tǒng)調(diào)用模式[14]。此外,還有一些方法通過與比較著名的惡意軟件進(jìn)行比較[15]或啟發(fā)式算法實現(xiàn)惡意軟件檢測[16]。endprint
多數(shù)學(xué)者主要基于主機(jī)的入侵檢測系統(tǒng)(Host-based Intrusion Detection Systems, HIDS),即通過異常行為或基于規(guī)則的方法來抽取和分析一些表明惡意軟件的特征。Yap和Ewe提出了行為檢測器來檢測手機(jī)系統(tǒng)的惡意行為[17],其提出了一個概念證明方案來檢測諾基亞手機(jī)Symbian操作系統(tǒng)的惡意軟件行為,并檢測到了一個模擬的嘗試使用未經(jīng)授權(quán)的消息服務(wù)器的木馬軟件。由于需要預(yù)先定義特定的惡意行為模式,顯然該方法難以檢測不斷更新攻擊模式的惡意軟件行為。Narayanan等人基于比特字符串流通過在線學(xué)習(xí)方法實現(xiàn)引導(dǎo)扇區(qū)病毒軟件[7]。Schultz則比較了基于三種不同的特征集(DLL和系統(tǒng)調(diào)用、二進(jìn)制程序中的字符串以及二進(jìn)制的原始十六進(jìn)制表達(dá))訓(xùn)練了三種機(jī)器學(xué)習(xí)算法,并比較了三種算法的優(yōu)缺點[18]。由于人工標(biāo)記軟件是否是惡意軟件的成本比較高,上述機(jī)器學(xué)習(xí)方法忽視了我們一般只能獲取少量的標(biāo)記數(shù)據(jù),因此,本位提出了半監(jiān)督學(xué)習(xí)的惡意軟件檢測方法,并通過實驗驗證了我們方法能夠取得較好的準(zhǔn)確率和召回率。
3 半監(jiān)督學(xué)習(xí)檢測器設(shè)計
本文基于開源包Androguard 來訪問和抽取Android軟件的特征,Androguard提供了整套的界面用于分析和逆向工程Android應(yīng)用程序。由于Androguard提供了完整的權(quán)限和資源兩大類特征,我們基于該這兩類特征進(jìn)一步提出了半監(jiān)督學(xué)習(xí)的實現(xiàn)虛假軟件檢測,首先擴(kuò)展樸素貝葉斯分類器,并通過EM迭代將標(biāo)記數(shù)據(jù)和無標(biāo)記數(shù)據(jù)集成起來。
3.1 初始分類器構(gòu)建
將上述結(jié)果,我們可產(chǎn)生EM迭代過程。簡單來說,本節(jié)的半監(jiān)督迭代算法交替更新兩個過程:第一步為期望(E)步,利用當(dāng)前估計的參數(shù)來計算對數(shù)似然的期望值;第二步為最大化(M)步,重新尋找能使E步產(chǎn)生的似然期望最大化的參數(shù)值均值[μkl]和方差[σ2kl];然后新得到的參數(shù)重新被用于E步,直至收斂到局部最優(yōu)解。
4 實驗設(shè)計和結(jié)果分析
在本節(jié)中我們主要討論實驗數(shù)據(jù)、評估標(biāo)準(zhǔn)、比較對象,最后給出了結(jié)果表和分析。
4.1 實驗設(shè)計
數(shù)據(jù)集:實驗數(shù)據(jù)中的惡意軟件樣本來自于VirusShare,我們從該樣本庫中選取了4,129個惡意軟件,而正常軟件樣本選至我國的Android市場,并通過360和騰訊手機(jī)管家等反病毒軟件進(jìn)行驗證為正常軟件的樣本作為正常軟件,我們選取了4,200個正常軟件。
比較對象:為了評估我們提出的SSAMD模型的性能,我們選取了NavieBayes (NB)、C4.5和無監(jiān)督檢測器PCA與我們算法的進(jìn)行比較,其中NB和C4.5基于Weka軟件實現(xiàn),而PCA則基于MATLAB編程實現(xiàn),且假設(shè)惡意軟件個數(shù)已知。
其中TP表示發(fā)現(xiàn)的惡意軟數(shù)量,TN表示正常采樣數(shù)據(jù)被檢測為惡意軟件數(shù)量,F(xiàn)N則表示沒被檢測器發(fā)現(xiàn)的惡意軟件數(shù)量。通常P和R用于衡量檢測器的準(zhǔn)確性和完整性,而F則用于衡量總體性能。
4.2 實驗參數(shù)分析
我們第一組實驗主要用于探索參數(shù)無標(biāo)記權(quán)重λ的影響,實驗過程中采用五則交叉驗證的方法進(jìn)行。試驗中分別選取了權(quán)限(permission)、資源(resource)和權(quán)限+資源三種特征集進(jìn)行實驗,實驗選取F-Measure作為評判標(biāo)準(zhǔn),實驗結(jié)果如圖1所示。從圖1中我們可以看出當(dāng)無標(biāo)記權(quán)重λ=0.4時獲得最大值,我們后面的實驗將都以λ=0.4作為最終設(shè)置。
4.3 實驗比較
本小節(jié)中主要根據(jù)我們提出的SSAMD與NB、C4.5和PCA算法進(jìn)行比較來證明我們算法的有效性,分別選取了權(quán)限、資源和權(quán)限+資源三類特征集進(jìn)行實驗,實驗結(jié)果如表1所示。
從表1可以看出,我們的算法SSAMD取得了最好的檢測結(jié)果,在其他三類檢測器中C4.5取得了最好的結(jié)果,而無監(jiān)督檢測器PCA在檢測個數(shù)已知的情況下同樣取得了比NB更好的結(jié)果。從不同檢測指標(biāo)角度分析可以看出資源特征對所有的檢測器的波動都比較大,而基于權(quán)限的檢測指標(biāo)更為穩(wěn)定一些。將權(quán)限和資源兩類特征結(jié)合,各檢測器能夠取得更佳的效果。
5 結(jié)束語
傳統(tǒng)的Android惡意軟件檢測方法多是基于監(jiān)督和無監(jiān)督學(xué)習(xí)的惡意用戶檢測方法,這些方法忽視了我們僅能獲取商量的標(biāo)記數(shù)據(jù)集這一現(xiàn)實。本文提出了一種基于類EM的半監(jiān)督檢測器用于檢測Android惡意軟件,首先基于權(quán)限和資源特征構(gòu)建特征集,并采用半監(jiān)督檢測器提高檢測性能,通過實驗分析取得了較好的效果。實驗結(jié)果表明,本文提出的半監(jiān)督惡意軟件檢測方法在準(zhǔn)確度和效率方面優(yōu)于許多已有的機(jī)器學(xué)習(xí)檢測方法。因此,本文的方法是可行且高效的。
注釋:
1. http://www.cs.waikato.ac.nz/ml/weka/
參考文獻(xiàn):
[1] SUAREZ-TANGIL G, DASH S K, AHMADI M, et al. DroidSieve: Fast and accurate classification of obfuscated android malware[C]. Proceedings of the Seventh ACM on Conference on Data and Application Security and Privacy, New York, NY: ACM, 2017: 309-320.
[2] ZHANG M, YIN H. Semantics-Aware Android Malware Classification[M]. Android Application Security. Springer International Publishing, 2016: 19-43.endprint
[3] ENCK W, OCTEAU D, McDANIEL P, and et al. A Study of Android Application Security[C]. USENIX security symposium, New York, NY: ACL, 2011, 2: 2.
[4] MetaIntell Identifies Enterprise Security Risks, Privacy Risks and Data leakage in 92% of Top 500 Android Mobile Applications In businesswire [EB/OL], Jan 2014, http://wwwbusinesswire.com/
[5] MALIK J, KAUSHAL R. CREDROID: Android malware detection by network traffic analysis[C]. Proceedings of the 1st ACM Workshop on Privacy-Aware Mobile Computing New York, NY: ACM, 2016: 28-36.
[6] GRACE M, ZHOU Y, ZHANG Q, et al. Riskranker: scalable and accurate zero-day android malware detection[C]. Proceedings of the 10th international conference on Mobile systems, applications, and services New York, NY: ACM, 2012: 281-294.
[7] NARAYANAN A, YANG L, CHEN L, et al. Adaptive and scalable Android malware detection through online learning[C]. 2016 International Joint Conference on Neural Networks (IJCNN). New York, NY: IEEE, 2016: 2484-2491.
[8] WU S, WANG P, LI X, and et al. Effective detection of android malware Based on the usage of data flow APIs and machine learning[J]. Information and Software Technology, 2016, 75: 17-25.
[9] ALLIX K, BISSYANDE T F, JEROME Q, and et al. Empirical assessment of machine learning-based malware detectors for Android[J]. Empirical Software Engineering, 2016, 21(1):183-211.
[10] CHEN W, ASPINALL D, GORDON A D, and et al. More semantics more robust: Improving android malware classifiers[C]. Proceedings of the 9th ACM Conference on Security & Privacy in Wireless and Mobile Networks New York, NY: ACM, 2016: 147-158.
[11] ZHANG M, DUAN Y, YIN H, and et al. Semantics-aware android malware classification using weighted contextual api dependency graphs[C]. Proceedings of the 2014 ACM SIGSAC Conference on Computer and Communications Security New York, NY: ACM, 2014: 1105-1116.
[12] GASCON H, YAMAAGUCHI F, ARP D, and et al. Structural detection of android malware using embedded call graphs[C]. Proceedings of the 2013 ACM workshop on Artificial intelligence and security New York, NY: ACM, 2013: 45-54.
[13] KIM H, SMITH J, SHIN K G. Detecting energy-greedy anomalies and mobile malware variants[C]. Proceedings of the 6th international conference on Mobile systems, applications, and services New York, NY: ACM, 2008: 239-252.
[14] XIE L, ZHANG X, SEIFERT J P, and et al. pBMDS: a behavior-based malware detection system for cellphone devices[C]. Proceedings of the third ACM conference on Wireless network security, New York, NY: ACM, 2010: 37-48.endprint
[15] BOSE A, HU X, SHIN K G, and et al. Behavioral detection of malware on mobile handsets[C]. Proceedings of the 6th international conference on Mobile systems, applications, and services. New York, NY: ACM, 2008: 225-238.
[16] ZHOU Y, WANG Z, ZHOU W, and et al. Hey, you, get off of my market: detecting malicious apps in official and alternative android markets[J]. Network & Distributed System Security Symposium, 2012, 25(4):50-52.
[17] YAP T S, EWE H T. A mobile phone malicious software detection model with behavior checker[C]. International Conference Human Society & Internet, Springer Berlin Heidelberg, 2005: 57-65.
[18] SCHULTZ M G, ESKIN E, ZADOK F, and et al. Data mining methods for detection of new malicious executables[C]. Security and Privacy, 2001. S&P 2001. Proceedings. 2001 IEEE Symposium on. IEEE, 2001: 38-49.
[19] NIGAM K, McCALLUM A K, THRUM S, and et al. Text classification from labeled and unlabeled documents using EM[J]. Machine learning, 2000, 39(2):103-134.endprint