苗發(fā)彪 王晴
[摘要]隨著Android系統(tǒng)的流行與普及,Android軟件的種類和數(shù)目激增,但是其中存在著不少竊取用戶隱私、惡意扣費(fèi)的軟件。因此,Android惡意軟件的檢測技術(shù)一直是人們關(guān)注和研究的熱點(diǎn)。論文在介紹支持向量機(jī)以及Android惡意軟件檢測后,將二者有效地結(jié)合,構(gòu)建由權(quán)限、監(jiān)聽的系統(tǒng)事件、敏感API以及權(quán)限率組成的特征向量,并且建立了基于支持向量機(jī)的Android惡意軟件靜態(tài)檢測模型。最后,論文通過模型的測試驗(yàn)證了該方法的有效性。
[關(guān)鍵詞]Android;惡意軟件;支持向量機(jī);靜態(tài)檢測
1 引言
Android惡意軟件由于直接危害人們的日常生活,所以一直是工業(yè)界和學(xué)術(shù)界的研究熱點(diǎn)。Android惡意軟件的檢測技術(shù)大致分為動(dòng)態(tài)檢測技術(shù)和靜態(tài)檢測技術(shù)。動(dòng)態(tài)檢測技術(shù)將軟件運(yùn)行在一個(gè)模擬的封閉環(huán)境,通過共享庫注入和hook技術(shù)獲取軟件運(yùn)行時(shí)調(diào)用的函數(shù),從而進(jìn)行行為分析。其正確率高,但是檢測過程相對(duì)復(fù)雜,消耗資源較多,而且在自動(dòng)化測試軟件時(shí)很難激活所有的軟件的行為。靜態(tài)檢測技術(shù)是在不運(yùn)行軟件的前提下,對(duì)給定軟件所申請(qǐng)的權(quán)限以及反編譯得到的Dalvik字節(jié)碼的語法和語義進(jìn)行分析。其正確率同樣較高,速度快,自動(dòng)化程度高。但是靜態(tài)檢測技術(shù)對(duì)未知軟件進(jìn)行檢測時(shí)準(zhǔn)確率較低,即惡意軟件特征的普適性較差。
2 Android惡意軟件檢測與支持向量機(jī)
Android惡意軟件本質(zhì)是一個(gè)分類問題,而機(jī)器學(xué)習(xí)來解決分類問題是當(dāng)前社會(huì)的熱點(diǎn)。用機(jī)器學(xué)習(xí)來實(shí)現(xiàn)Android惡意軟件的檢測,需要將Android軟件抽象為一個(gè)特征向量,選取合適的算法和訓(xùn)練數(shù)據(jù)建立模型,進(jìn)而對(duì)未知的軟件進(jìn)行惡意檢測。這樣,Android惡意軟件檢測的正確率很大程度上取決于訓(xùn)練數(shù)據(jù)的數(shù)量、算法的合適度與參數(shù)、以及特征向量的構(gòu)建。在眾多的機(jī)器學(xué)習(xí)算法中,支持向量機(jī)可以較好地實(shí)現(xiàn)高維數(shù)據(jù)分析,滿足惡意軟件特征向量維度較高的特性。
支持向量機(jī)(support Vector Machine,SVM)是源于統(tǒng)計(jì)學(xué)習(xí)理論,常用于回歸分析和統(tǒng)計(jì)分類,已經(jīng)成功運(yùn)用于很多生產(chǎn)與實(shí)驗(yàn)環(huán)境中。其思想就是根據(jù)樣本的分布尋找最佳分類器。在眾多可以將樣本分開的分類器中,只有一個(gè)分類器與每個(gè)類別中最近的樣本的距離最大,稱之為最大間隔超平面。
3 模型的框架與樣本收集及預(yù)處理
3.1 模型的框架
該模型的框架如圖1所示。
3,2 樣本收集及預(yù)處理
本文實(shí)驗(yàn)中正常軟件的樣本來源為安卓市場和機(jī)鋒市場,惡意軟件的來源為http://virusshare.com/。該網(wǎng)站是國外的一個(gè)專門用于研究的病毒樣本庫,正常軟件和惡意軟件的比例為1:1,均是1068個(gè)。然后使用apktool.jar反編譯所有的APK,正常軟件和惡意軟件各選取700個(gè)作為研究對(duì)象進(jìn)行統(tǒng)計(jì)分析,構(gòu)成訓(xùn)練集。正常軟件和惡意軟件各自剩余的368個(gè)APK構(gòu)成測試集。
4 特征向量的確定
4.1 權(quán)限
Android權(quán)限機(jī)制是指當(dāng)一個(gè)應(yīng)用需要訪問某些文件、數(shù)據(jù)和資源時(shí),必須要在相應(yīng)的文件中申請(qǐng),遵循“最小特權(quán)”原則。Android惡意軟件也不例外,比如惡意軟件要在用戶未知的情況下秘密的發(fā)送消息,它必須申請(qǐng)權(quán)限SEND SMS,因此分析一個(gè)軟件的權(quán)限是惡意軟件檢測過程中的重要組成部分。
但是,權(quán)限的提取如果僅僅側(cè)重于發(fā)送短信、讀寫操作等權(quán)限,不能很好的反應(yīng)Android惡意軟件的特征,例如,正常軟件中同樣也存在著發(fā)送短信和讀寫操作的權(quán)限。因此,本文統(tǒng)計(jì)了700個(gè)正常軟件和700個(gè)惡意軟件中申請(qǐng)的所有權(quán)限,計(jì)算某個(gè)權(quán)限在700惡意軟件中出現(xiàn)的次數(shù)和在700個(gè)正常軟件中出現(xiàn)的次數(shù)的比值,由高到低列出大于1的權(quán)限,共提取WRITE、UPDATE DEVICE STATS等9個(gè)權(quán)限。
4.2 監(jiān)聽的系統(tǒng)事件
Android廣播機(jī)制是指每當(dāng)系統(tǒng)事件發(fā)生時(shí)會(huì)產(chǎn)生廣播,通過定義廣播接受者即可接受廣播進(jìn)而采取相應(yīng)的活動(dòng)。Android惡意軟件的觸發(fā)常常是監(jiān)聽系統(tǒng)事件,如系統(tǒng)開機(jī)BOOT COMPLETED。
同理,監(jiān)聽的系統(tǒng)事件如果僅僅側(cè)重于開關(guān)機(jī)、電池狀態(tài)改變等事件,不能很好地反應(yīng)Android惡意軟件的特征,因此本文統(tǒng)計(jì)了700個(gè)正常軟件和700惡意軟件中所有監(jiān)聽的系統(tǒng)事件,計(jì)算某個(gè)監(jiān)聽的系統(tǒng)事件在700惡意軟件中出現(xiàn)的次數(shù)和在700個(gè)正常軟件中出現(xiàn)的次數(shù)的比值。由高到低列出大于1的監(jiān)聽的系統(tǒng)事件,共提取DATA SMS RECEIVED、AIRPLANE MODE等5個(gè)監(jiān)聽的系統(tǒng)事件。此外,監(jiān)聽電池狀態(tài)改變事件在惡意軟件中出現(xiàn)6次,而在正常軟件中從未出現(xiàn),因此本文將BATTERY CHANGED ACTION也作為特征向量的組成部分。
4.3 敏感API
對(duì)于給定的一個(gè)APK。利用相關(guān)工具如apktool可以得到其反編譯的smali文件。每個(gè)smali文件都由若干條語句組成。通過分析smali文件,可以清楚的知道該APK定義的類、函數(shù),進(jìn)而分析其代碼的邏輯搞清楚Android軟件的行為。敏感API的提取可以從smali文件中獲取。本文從短信操作、系統(tǒng)信息、聯(lián)系人操作這三個(gè)用戶十分關(guān)心的方面人手,在反編譯的APK文件中,對(duì)侵害用戶隱私的API進(jìn)行搜索提取,共提取sendTextMessage()、getSubscriberId()等12個(gè)敏感API。
4.4 權(quán)限率
本文指的權(quán)限率定義如下:pr=pn/ss,其中pr為定義的權(quán)限率,pn為該APK申請(qǐng)的權(quán)限數(shù)目,ss為該APK經(jīng)過反編譯后smali文件夾的大小(單位為MB)。權(quán)限率的提出是基于這樣的假設(shè),惡意軟件存在權(quán)限濫用的機(jī)制,而且從一定程度上來看,一個(gè)正常的軟件申請(qǐng)的權(quán)限越多,相應(yīng)的功能也就越多,反編譯后smali文件夾也就越大。因此。整體來說。惡意軟件的權(quán)限率要比正常軟件的權(quán)限率大,所有一個(gè)軟件的權(quán)限率也可以成為一個(gè)惡意軟件的檢測特征。
5 模型的建立與檢驗(yàn)
本文在確定特征向量的格式后,對(duì)700個(gè)正常軟件和700個(gè)惡意軟件的反編譯后的文件進(jìn)行搜索,存在上述特征的,該維度即為1,不存在的即為0,再計(jì)算每個(gè)APK的權(quán)限率,將每個(gè)APK抽取出一個(gè)28維度的特征向量,共計(jì)1400個(gè)特征向量。使用Java語言和libsvm.jar庫建立模型,對(duì)剩下的736個(gè)樣本采用同樣的方法組成測試集,進(jìn)行模型驗(yàn)證,得到模型檢測的正確率為86%,具有一定的有效性。
6 結(jié)束語
本文介紹了支持向量機(jī)原理和Android系統(tǒng)的若干機(jī)制,構(gòu)造由權(quán)限、監(jiān)聽的系統(tǒng)事件、敏感API以及權(quán)限率組成的特征向量,建立了基于支持向量機(jī)的惡意軟件靜態(tài)檢測模型,并進(jìn)行測試驗(yàn)證了其有效性,為Android惡意軟件的檢測提供了一種解決方案。