管飛詩 徐夫田
摘 要:Android系統(tǒng)以開放開源為特色贏得了眾多的客戶的青睞。用戶數(shù)量突飛猛進。但Android系統(tǒng)的開放性也帶來了眾多的麻煩。Android系統(tǒng)惡意軟件呈現(xiàn)線性般的增長。本文對Android系統(tǒng)惡意軟件檢測提出了基于類別的svm的檢測研究。將Android系統(tǒng)應用程序(app)的類別關(guān)聯(lián)在一起,根據(jù)特定類別中特定特征表現(xiàn)與大部分良性app特征是否異常來預測該app為惡意app,惡意app在特定類別中的特征表現(xiàn)異常、罕見或者特征較多等特點進步斷定為該app為惡意app。本文對250個app樣本首先關(guān)聯(lián)分類,然后對權(quán)限特征進行訓練分類器,采用SVM機械學習算法建立分類模型。最后對訓練數(shù)據(jù)進行實驗,對實驗結(jié)果進行信息檢索學評估,得出基于類別的svm的檢測方案比普通的svm檢測方案高的結(jié)論。
關(guān)鍵詞:Android SVM 惡意軟件;Android安全
Android系統(tǒng)基于linux內(nèi)核,該系統(tǒng)與2007年11月5日有谷歌公司正式發(fā)布。字發(fā)布以來受到廣大用戶和廠商的青睞,因其開放性、自由性等特征使其得到快速的發(fā)展。經(jīng)過幾年的發(fā)展,Android系統(tǒng)已經(jīng)從單純的智能手機領(lǐng)域進入了教育、醫(yī)療、軍事、汽車、家居等行業(yè)。
開放性、自由性等特點也給負面帶來了很多的影響。從第一例Android系統(tǒng)惡意軟件出現(xiàn),到現(xiàn)在大面積的惡意app的出現(xiàn),對Android系統(tǒng)的各行各業(yè)帶來眾多影響。惡意app吸費扣費、惡意推廣、隱私販賣為目的的利益產(chǎn)業(yè)鏈。目前惡意app變種迅速、家族種類繁多,安全公司每天面臨著大量待測可疑的樣本,分析檢測工作量巨大。特征提取效率低下、導致靜態(tài)檢測的殺毒軟件效率低下。目前Android系統(tǒng)的“內(nèi)憂外患”惡化了Android安全形勢。
面對目前Android系統(tǒng)的安全形勢,本文做了一下工作:
一是,采集app數(shù)據(jù)集,并按關(guān)聯(lián)類別分類;
二是,對所采集的數(shù)據(jù)進行反編譯,提取權(quán)限特征進行訓練分類器,采用SVM機器學習算法建立分類模型。
三是,對分類模型進行信息檢索學評估。并提出基于類別SVM的Android系統(tǒng)惡意軟件檢測方法。
1 Android系統(tǒng)介紹
1.1 Android系統(tǒng)架構(gòu)
Android的系統(tǒng)構(gòu)架和其他的操作系統(tǒng)一樣,采用了分層的構(gòu)架,層次非常清晰。
Android分為4層,從高到低依次為應用程序?qū)樱ˋpplication)、應用程序框架層(Application Framework)、系統(tǒng)運行庫層(Libraries 和 Android Runtime)和linux內(nèi)核層(Linux Kernel)。
應用程序?qū)樱喊▓D1中的各項功能。所有的應用程序都是使用Java語言編寫。通過調(diào)用應用程序框架層所提供的API來完成。應用程序框架層:該層為開發(fā)人員提供了可以完全訪問核心程序所使用的API框架。系統(tǒng)運行庫層:包括程序庫和Android運行時庫。前者主要為c/c++庫。后者又分為核心庫和Dalvik虛擬機兩部分,核心庫提供Java語言核心庫的大多數(shù)功能,Dalvik虛擬機執(zhí)行.dex文件。內(nèi)核層:Android依賴于linux2.6版內(nèi)核提供的核心服務。
1.2 Android安全特點
Android的安全一保護用戶的數(shù)據(jù)和移動設(shè)備硬件、系統(tǒng)和軟件為目標。Android系統(tǒng)安全的主要基礎(chǔ)主要是下面幾點:依賴linux內(nèi)核,應用沙箱機制,應用簽名機制和應用程序定義和用戶授予權(quán)限機制等。Linux內(nèi)核通常被認可用于較高的安全敏感環(huán)境中。
由于開放環(huán)境,linux安全方面一直被安全專家、修補bug的開發(fā)者、尋找容易被利用點的攻擊者們鞏固提升。同時提供了從內(nèi)核中去除不必要的和不安全部分的能力。沙箱機制特點是用唯一的UID隔離應用程序的進程和數(shù)據(jù)與其他的應用程序。在內(nèi)核中,當應用程序安裝時,Android系統(tǒng)分配每個應用程序不同的用戶ID。換句話說,每個應用程序在整個生命周期中擁有一個唯一的UID。同一個應用程序可能在其他設(shè)備上有一個不同的UID,重要的是兩個不同的應用程序不能分配相同的UID。因為每個應用程序都有自己的UID,所以它們不能在同一進程中運行,而是需要在其UID下單獨運行。這樣能隔離正在運行的進程,以使應用程序彼此安全。
此外,任何應用程序的數(shù)據(jù)存儲在其UID下,其他應用程序無法訪問。應用程序的簽名機制,要求任何應用程序的.apk文件必須由開發(fā)人員的證書簽署,以識別應用程序的作者。這樣可以實現(xiàn)如果他們由相同的證書簽名,那么應用程序可以共享一個UID。它還允許系統(tǒng)授予或拒絕簽名級權(quán)限;如果系統(tǒng)使用聲明權(quán)限與其他應用程序的相同證書簽名,系統(tǒng)將向該申請權(quán)限的應用程序授予簽名級權(quán)限。
最后,Android采用的權(quán)限模型保護手機的資源和功能,使其只能通過授予相應權(quán)限的應用訪問。默認情況下,應用程序沒有處理手機硬件,軟件,功能和數(shù)據(jù)的權(quán)限。應用程序的開發(fā)人員需要聲明應用程序功能所需的權(quán)限。在安裝時,用戶需要授予請求的權(quán)限,否則系統(tǒng)會終止安裝。
1.3 Android惡意軟件
1.4 Android惡意軟件檢測技術(shù)
目前有很多的惡意軟件檢測技術(shù)用于商業(yè)和研究方面的惡意代碼檢測軟件。大部分的商業(yè)惡意軟件掃描工具依賴于靜態(tài)或者動態(tài)的技術(shù)去檢測惡意代碼。靜態(tài)分析掃面源代碼或者二進制代碼去對比已知的惡意特征碼。當惡意軟件制作者使用代碼混淆制作惡意軟件時,使用靜態(tài)分析惡意代碼往往變得力不從心。相對靜態(tài)檢測技術(shù),動態(tài)檢測技術(shù)在惡意代碼受控環(huán)境下分析并追蹤惡意軟件。動態(tài)檢測技術(shù)也被叫做基于行為的檢測技術(shù)。以前的大多數(shù)Android設(shè)備上的惡意軟件檢測技術(shù)都采用某種動態(tài)的檢測技術(shù)。
來自Zhou和Jiang的研究概述商業(yè)的掃面工具在Android設(shè)備檢測惡意軟件性能并不是很好,他們測試了四種商業(yè)掃描工具(AVG,Lookout,Norton,Trend Micro),將這四種工具用具檢測來自49個惡意軟件家族的1260個惡意應用程序。最好的移動惡意軟件掃描工具只識別出了收集的惡意應用程序的79.6%,最差的還不到20.2%。在上述的工作中,Google自己的惡意軟件檢測服務只檢測出1260惡意應用的15.32%
2 基于類別SVM檢測技術(shù)
2.1 檢測技術(shù)框架
整個方案的步驟大致為:收集Apps樣本,反編譯app樣本,提取特征集,用特征選擇算法選擇最佳的特征子集,建立分類模型。如圖1所示。
2.2 數(shù)據(jù)收集
該研究中我們對所有類別app建立樣本。首先對120個惡意app和50個良性app進行特征模型訓練,然后對社交app收集數(shù)據(jù),良性app為50個,惡意app為30個。并命名“所有組”、“社交組”。
2.3 反編譯數(shù)據(jù)
App中有個文件叫做“apk”,在特定的特征組app反編譯時,該文件被反編譯成相應的源碼文件。這個過程被一個叫做santoku的反編譯工具自動完成,因為特定為移動安全制定的linux系統(tǒng)機制,.apk文件將轉(zhuǎn)化為源碼中的AndroidMainfest.xml文件形式和.java文件。我們采用apktool工具進行反編譯。
2.4 特征提取
在該部分我們選取app中的權(quán)限為特征進行過濾提取。并提取其中排名前10的權(quán)限。權(quán)限是非常重要和常用的特征用于在Android系統(tǒng)中檢測惡意代碼。我們這里也會相應的考慮其他的靜態(tài)權(quán)限。在該領(lǐng)域許多研究通過建立權(quán)限模型,將相應的權(quán)限授予app驗證其能否使app可以有惡意行為。
在我們的研究中,將app請求的權(quán)限與我們上文提到的類別app訓練成的分類模型中一組共同的權(quán)限相關(guān)聯(lián)。顯然地,特定類別的功能需要一組權(quán)限,然而如果app出現(xiàn)需求的異常或者超級權(quán)限相對于良性app,則表明該app有惡意意圖。
2.5 分類模型
支持向量機(SVM)也稱作支持向量網(wǎng)絡(luò)(SVN),是一種有監(jiān)督的機器學習模型,它可以對數(shù)據(jù)進行分類分析、檢測和模式識別以及回歸分析。SVM是一種非概率的線性分類器,它將數(shù)據(jù)分配到一個或者多個類別中。它也可以使用Kernel Trick有效的用在非線性分類問題中。Kernel Trick是一類支持向量機算法,它可以簡易和經(jīng)濟的方式的將輸入特征映射到較高維的輸出空間中。
SVM將訓練數(shù)據(jù)視為一個空間的點,該空間的點基于它們的類別以群組形式聚集,這些群組被稱作超平面的清晰的間隙相隔離。在訓練階段,SVM從訓練數(shù)據(jù)中建立起模式模型,這些數(shù)據(jù)在分類階段是用在一個空間。
在分類階段,新的輸入點被映射到訓練空間中,并按照它們落在間隙的哪一側(cè)來分類。如圖4所示,直線分離了兩個類別,新的數(shù)據(jù)如果在直線以上則映射到類的空間中,否則映射其他類空間。
3 實驗與結(jié)論
在該部分我們主要對上節(jié)的方案進行實驗,比對實驗結(jié)果進行討論,最后得出結(jié)論。我的研究目標是通過提高從訓練分類器的特征選擇質(zhì)量進而提高分類模型的性能。每個類別有各自的功能,良性app在特定類別中有共同的一組特征,而惡意app的特征異常、罕見、或者比特定類別中的app更多的特征。為檢測到惡意代碼,我們將app的特征與特定功能類別中app特征相關(guān)聯(lián)。為達到這種目標,我們準備2組數(shù)據(jù)(“所有app”、“社交app”)包含良性和惡意二進制向量。在訓練階段,我們用支持向量機(SVM)建立2個分類模型,使用權(quán)限特征訓練分類器。實驗重復15次,每一輪實驗中三組數(shù)據(jù)集順序隨機打亂,70%的數(shù)據(jù)用于訓練,其余數(shù)據(jù)用于測試。
測試環(huán)境采用pc機,OS采用win7,數(shù)據(jù)挖掘工具采用weka。實驗結(jié)果采用求平均數(shù)的方法。最后得出結(jié)論,基于SVM的“所有app”精確度為0.901,基于類別SVM的“社交app”組精確度為0.958?;赟VM的“所有app”組的召回率為0.930,基于類別SVM的“社交app”組的召回率為0.971。綜合評價,基于類別的Android系統(tǒng)惡意軟件檢測技術(shù)精確度高于普通的SVM檢測技術(shù)。
參考文獻:
[1] 羅瑜.支持向量機在機器學習中的應用研究.西南交通大學博士學位論文,2007,7.
[2] 彭國軍,李晶雯,等.Android惡意軟件檢測研究與進展.武漢大學學報(理學版),2015年2月,第61卷 第1期.
[3] 龔炳江,唐宇敬.Android平臺下軟件安全漏洞挖掘方法研究.計算機應用于軟件,2014年1月,第31卷 第1期.
[4] Huda Ali Alatwi Android malware Detection Using Category-Based Machine Learing Classifiers Rochester Institute of Technology RIT Scholar Works,June 2016.
[5] 李駿驍.基于監(jiān)督型機器學習分類方法的Android惡意軟件檢測技術(shù)研究.南京大學研究生畢業(yè)論文,2014,5.
作者簡介:
管飛詩(1986-),山東德州夏津人,碩士研究生,研究方向:網(wǎng)絡(luò)模型及網(wǎng)絡(luò)環(huán)境下應用技術(shù)研究。
徐夫田(1965-),山東臨沂人,博士,研究員,碩士生研究生導師,研究方向:電子政務、數(shù)據(jù)庫。