張長(zhǎng)勝,周 洌,任小波,李 川
(昆明理工大學(xué) 信息工程與自動(dòng)化學(xué)院,云南 昆明650500)
在促進(jìn)業(yè)務(wù)信息化以及網(wǎng)絡(luò)化快速發(fā)展的同時(shí), 信息化技術(shù)給用戶的業(yè)務(wù)信息系統(tǒng)帶來了越來越多的安全問題,惡意代碼是其中一個(gè)倍受矚目的安全問題[1-2]。
針對(duì)Android[3]系統(tǒng)的惡意代碼檢測(cè)技術(shù)主要有動(dòng)態(tài)檢測(cè)和靜態(tài)檢測(cè)技術(shù)。其中,最經(jīng)典的是基于惡意代碼特征指令序列的靜態(tài)檢測(cè)方法, 其通過分析軟件的源代碼等信息,與已知的惡意代碼進(jìn)行匹配,檢測(cè)是否包含惡意代碼特征來確定,被廣泛應(yīng)用于各種殺毒軟件。N.Peiravian[4]使用純靜態(tài)分析,通過提取 APK 的權(quán)限與 API 調(diào)用,并構(gòu)建高維特征向量,使用機(jī)器學(xué)習(xí)的方法對(duì)數(shù)據(jù)集進(jìn)行判斷,來確認(rèn)軟件是否含有惡意代碼。董勝亞[5]提出基于 KNN 的 Android 平臺(tái)軟件異常監(jiān)測(cè)模型。傳統(tǒng)的靜態(tài)檢測(cè)方法因?yàn)樾杈S護(hù)樣本庫(kù)使得其應(yīng)用受到制約。但是隨著云計(jì)算技術(shù)的發(fā)展,有效解決了傳統(tǒng)靜態(tài)檢測(cè)技術(shù)中樣本庫(kù)內(nèi)容不斷增加的難題,使靜態(tài)檢測(cè)技術(shù)突破了樣本庫(kù)維護(hù)的瓶頸[6]。因此,本文采用基于粗糙集算法的方法,建立特征模型,提取權(quán)限特征、API特征,在機(jī)器學(xué)習(xí)算法的基礎(chǔ)之上,對(duì)安卓惡意代碼特征進(jìn)行分析檢測(cè)。
在粗糙集(RS)中,特征屬性叫做故障案例,由決策屬性、條件屬性組成。相似性由特征屬性決定。在計(jì)算特征相似度時(shí),不同特征屬性的權(quán)重也不相同[7]。到目前為止,確定屬性權(quán)重的方法分為3類:(1)基于Z.Pawlak屬性重要度的概念[8],通過代數(shù)的形式來算出屬性權(quán)重;(2)根據(jù)矩陣的方式來確定權(quán)重,在模糊矩陣中,屬性頻數(shù)就是該屬性權(quán)重重要程度;(3)使用信息熵來對(duì)屬性權(quán)重進(jìn)行計(jì)算。為了得出比較客觀的權(quán)重值以及特征之間的相似度,結(jié)合粗糙集理論來進(jìn)行權(quán)重、相似度的計(jì)算。
粗糙集算法基于其它算法有如下兩方面的優(yōu)點(diǎn):首先, RS是一個(gè)用數(shù)據(jù)來分析的工具,數(shù)據(jù)分析能力強(qiáng)??杀磉_(dá)和解決一些不確定、不完備、不精確的信息;可針對(duì)數(shù)據(jù)做出化簡(jiǎn)操作;可判別數(shù)據(jù)之間的相互依賴關(guān)系;可根據(jù)經(jīng)驗(yàn)數(shù)據(jù),獲取得到容易驗(yàn)證的規(guī)則知識(shí)信息[9];其次,RS運(yùn)用了數(shù)據(jù)自身所提供的數(shù)據(jù)信息,不要求有先驗(yàn)的知識(shí)[10]。
Decui Liang 等人提出了計(jì)算粒度的一般方法[11]。苗奪謙研究了如何對(duì)RS中粒度進(jìn)行劃分,并且提出了“粒度計(jì)算”模型來計(jì)算屬性權(quán)重[12]。
在RS中,把研究對(duì)象抽象成S=(U,C∪D,V,f),U代表的是論域(U不為空),屬性的子集為X?C,x?C代表屬性。則x對(duì)于X的屬性重要度用Sig(x)表示為[13]
(1)
在RS中,屬性權(quán)重計(jì)算是歐式相似度計(jì)算的前提,根據(jù)信息系統(tǒng)中信息表求出各個(gè)屬性的權(quán)重值。
基于RS的屬性權(quán)重計(jì)算過程如下:
輸入案例特征信息表S=(U,A,V,F),新案例集Ci=(ai1,ai2,…,ain)。
輸出客觀權(quán)重。
步驟1根據(jù)新案例特征屬性ai1~ain確定信息表;
步驟2將j初始化為1,n=|Ci|;
知識(shí)粒度RS和歐氏距離的特征匹配模型如圖1所示。
圖1 基于RS和歐氏距離模型
移動(dòng)終端手機(jī)故障按照一定的形式表現(xiàn)出來,如手機(jī)運(yùn)行狀態(tài)、手機(jī)型號(hào)、CPU處理器型號(hào)等等。云平臺(tái)收集移動(dòng)終端這些參數(shù)并且創(chuàng)建新的特征案例。
在RSCu={a01,a02,…,a0n}中,定義一般特征案例集為Ci=(ai1,ai2,…,ain),Ci代表案例庫(kù)中的案例集,ai1,ai2,…,ain代表特征屬性。用多維數(shù)組來表示新產(chǎn)生的案例,a01,a02,…,a0n表示Cu特征案例中的參數(shù)屬性值。云平臺(tái)利用知識(shí)粒度RS原理計(jì)算屬性的權(quán)重值。一般把計(jì)算出來的屬性權(quán)重值定義為I=(Ia1,Ia2,…,Ian),0≤Iai≤1。計(jì)算一般案例與新增案例的歐氏距離[12]
(2)
基于粗糙集和歐氏距離的相似度匹配算法過程如下:在收集新特征案例之后,云平臺(tái)首先從案例庫(kù)中檢索出有沒有與新案例一樣的特征案例,若存在,云平臺(tái)就直接返回特征案例的結(jié)果,若云平臺(tái)中不存在與案例庫(kù)匹配的特征案例,利用歐氏距離算法進(jìn)行特征匹配計(jì)算[15-16]。(1)提取終端特征,同時(shí)創(chuàng)建新故障案例; (2)根據(jù)提取的特征屬性案例,生成特征故障信息表; (3)基于RS計(jì)算屬性權(quán)重; (4)按照式(2)計(jì)算當(dāng)前特征案例與案例庫(kù)中條件屬性的歐氏距離。
針對(duì)本文中研究的安卓惡意代碼檢測(cè)模型,進(jìn)行多組實(shí)驗(yàn),包括:權(quán)限特征的特征選擇對(duì)比實(shí)驗(yàn)、系統(tǒng) API 特征的特征選擇對(duì)比實(shí)驗(yàn)。
(1)權(quán)限特征實(shí)驗(yàn)。 權(quán)限特征實(shí)驗(yàn)進(jìn)行 10組分類實(shí)驗(yàn),觀察準(zhǔn)確率、漏報(bào)率、誤報(bào)率評(píng)估指標(biāo)的變化;
(2)API 特征實(shí)驗(yàn)。 在 API 特征實(shí)驗(yàn)過程中,為 2 000 個(gè) API 分別設(shè)計(jì)了 10 組實(shí)驗(yàn),梯度是 200 ,觀察準(zhǔn)確率、漏報(bào)率、誤報(bào)率評(píng)估指標(biāo)的變化。
在機(jī)器學(xué)習(xí)算法的基礎(chǔ)之上,對(duì)安卓惡意代碼特征進(jìn)行分析檢測(cè),需要對(duì)實(shí)驗(yàn)數(shù)據(jù)集進(jìn)行劃分操作,劃分出測(cè)試樣本集合以及訓(xùn)練模型的訓(xùn)練樣本集合。在實(shí)驗(yàn)數(shù)據(jù)集劃分的過程中,對(duì)樣本采取均勻抽樣的方法來對(duì)樣本進(jìn)行提取,從而構(gòu)成訓(xùn)練數(shù)據(jù)集以及測(cè)試數(shù)據(jù)集。訓(xùn)練數(shù)據(jù)集樣本數(shù)量是3 140,測(cè)試數(shù)據(jù)集樣本數(shù)據(jù)是2 123。
本實(shí)驗(yàn)實(shí)施過程中,將安卓惡意應(yīng)用程序說明為正樣本,良性應(yīng)用程序說明為負(fù)樣本。為檢測(cè)本文方案的性能以及效果,需要計(jì)算Accuracy(準(zhǔn)確率),F(xiàn)PR(誤報(bào)率),F(xiàn)NR(漏報(bào)率) 指標(biāo)。TP 表示惡意樣本被正確分類為惡意樣本的數(shù)量; FN 表示惡意樣本被錯(cuò)誤分為良性樣本的數(shù)量;TN 表示良性樣本的數(shù)量;FP 表示良性樣本誤報(bào)為惡意樣本的數(shù)量。
準(zhǔn)確率的計(jì)算如式(3)所示
(3)
誤報(bào)率的計(jì)算如式(4)所示
(4)
漏報(bào)率的計(jì)算如式(5)所示
(5)
在進(jìn)行權(quán)限特征實(shí)驗(yàn)之前,需要對(duì)權(quán)限特征進(jìn)行分組,根據(jù)權(quán)限特征在相應(yīng)數(shù)據(jù)集上的排序,對(duì)權(quán)限特征進(jìn)行分組,梯度為10 個(gè)權(quán)限特征,一共分了13組,在數(shù)據(jù)集現(xiàn)有的情況下,使用粗糙集(RS)實(shí)驗(yàn)所采用的數(shù)據(jù)集合當(dāng)中良性安卓樣本和惡意安卓樣本數(shù)量都為500。針對(duì)權(quán)限特征在實(shí)驗(yàn)數(shù)據(jù)集上的準(zhǔn)確率、誤報(bào)率、漏報(bào)率進(jìn)行實(shí)驗(yàn)結(jié)果詳細(xì)統(tǒng)計(jì)。實(shí)驗(yàn)結(jié)果如表1所示,準(zhǔn)確率如圖 2所示,誤報(bào)率如圖 3 所示,漏報(bào)率如圖4 所示。
表1 基于RS權(quán)限特征
圖2 準(zhǔn)確率
圖3 誤報(bào)率
圖4 漏報(bào)率
從以上3幅圖中分析得到:對(duì)于維度不一樣的權(quán)限特征的選擇,以及不同的算法的選擇,當(dāng)特征維數(shù)達(dá)到 約60維時(shí),其準(zhǔn)確率、誤報(bào)率、漏報(bào)率所對(duì)應(yīng)的數(shù)值都接近收斂。所以,在建立基于權(quán)限特征的安卓惡意代碼檢測(cè)模塊的時(shí)候,選擇前60維的權(quán)限特征。
為了挖掘出較強(qiáng)分類能力的系統(tǒng) API 特征集,本實(shí)驗(yàn)獲取了系統(tǒng) API 排序中的前2000個(gè) API 來進(jìn)行實(shí)驗(yàn),并且分成 10 組,基于RS算法進(jìn)行實(shí)驗(yàn)。本實(shí)驗(yàn)采用的實(shí)驗(yàn)數(shù)據(jù)集正樣本數(shù)量和負(fù)樣本數(shù)量都是500。實(shí)驗(yàn)結(jié)果如表2所示,準(zhǔn)確率如圖5所示,誤報(bào)率如圖6所示,漏報(bào)率如圖7所示。
表2 基于RS 系統(tǒng)API特征
圖5 準(zhǔn)確率
從圖5中API特征準(zhǔn)確率分析得到,隨著 API特征維數(shù)的增加,準(zhǔn)確率在提高,但當(dāng)API 特征的維數(shù)超過 1 300時(shí),算法的準(zhǔn)確率開始趨向收斂,不會(huì)發(fā)生明顯變化。
圖6 誤報(bào)率
圖7 漏報(bào)率
由圖6和圖7可知,隨著特征維數(shù)的增加算法誤報(bào)率以及漏報(bào)率都會(huì)降低,當(dāng)系統(tǒng) API 特征維數(shù)增加到約1 300維,漏報(bào)率以及誤報(bào)率均趨收斂、平緩,有最低趨勢(shì)。所以訓(xùn)練時(shí),使用前1 300維的 API 特征。
從實(shí)驗(yàn)結(jié)果可知,實(shí)驗(yàn)的全部檢測(cè)準(zhǔn)確率都達(dá)到90%,說明了提取權(quán)限特征、API特征,并進(jìn)行惡意檢測(cè)的思路是可行的。但是,良性與惡意樣本的準(zhǔn)確率都沒有達(dá)到100%。良性樣本沒有達(dá)到100%主要原因是部分應(yīng)用特征的行為跟惡意程序的很相似,從而導(dǎo)致了檢測(cè)過程的誤報(bào)。而惡意樣本沒達(dá)到100%,主要原因是本實(shí)驗(yàn)對(duì)惡意軟件調(diào)用的API特征沒有進(jìn)行覆蓋完全,部分少量的惡意應(yīng)用行為沒有被全部檢測(cè)到。
[1] 徐小琳,云曉春,周勇林,等. 基于特征聚類的海量惡意代碼在線自動(dòng)分析模型[J]. 通信學(xué)報(bào), 2013(8):146-153.
[2] 韓曉光.惡意代碼檢測(cè)關(guān)鍵技術(shù)研究[D].北京:北京科技大學(xué),2015.
[3] 萬一,朱志祥,吳晨,等. 一種基于數(shù)據(jù)加密技術(shù)的安卓軟件保護(hù)方案[J]. 電子科技, 2016, 29(2):173-176.
[4] 董勝亞.基于Android 平臺(tái)的軟件異常行為檢測(cè)技術(shù)研究[D].北京:北京郵電大學(xué),2013.
[5] Peiravian N, Zhu X. Machine learning for android malware detection using permission and API calls[C].Houston: International Conference on TOOLS with Artificial Intelligence. IEEE, 2013.
[6] 卿斯?jié)h. Android安全研究進(jìn)展[J]. 軟件學(xué)報(bào),2016,27(1):45-71.
[7] 賈冀婷.基于PSOABC-SVM的軟件可靠性預(yù)測(cè)模型[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用,2014,23(7):161-164.
[8] 張銳,楊吉云.基于權(quán)限相關(guān)性的Android惡意軟件檢測(cè)[J].計(jì)算機(jī)應(yīng)用,2014, 34(5):1322-1325.
[9] 張文,嚴(yán)寒冰,文偉平.一種Android惡意程序檢測(cè)工具的實(shí)現(xiàn)[J].信息網(wǎng)絡(luò)安全, 2013(1):27-32.
[10] 徐尤華, 熊傳玉. Android應(yīng)用的反編譯[J]. 電腦與信息技術(shù), 2012, 20(1):50-51.
[11] Jia J T, Computer D O. Software Reliability Prediction Based on PSOABC-SVM Model[J]. Computer Systems & Applications, 2014(9):511-519.
[12] 于洪,王國(guó)胤,姚一豫,等. 決策粗糙集理論研究現(xiàn)狀與展望[J].計(jì)算機(jī)學(xué)報(bào), 2015(8):1628-1639.
[13] 王蕊,馮登國(guó),楊軼,等. 基于語義的惡意代碼行為特征提取及檢測(cè)方法[J].軟件學(xué)報(bào),2012, 23(2):378-393.
[14] 楊帆. 軟件安全性測(cè)試與分析的若干關(guān)鍵技術(shù)研究[D]. 武漢:武漢大學(xué), 2013.
[15] 張清華,王進(jìn),王國(guó)胤.粗糙模糊集的近似表示[J].計(jì)算機(jī)學(xué)報(bào),2015(7):1484-1496.
[16] Miao D Q,Xu F F,Yao Y Y,et al. Set-theoretic formulation of granular computing[J]. Chinese Journal of Computers, 2012, 35(2):351-363.