国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于支持向量機(jī)的安卓惡意軟件新型檢測(cè)方法

2018-10-24 08:34張超欽胡光武王振龍劉新宇
關(guān)鍵詞:特征向量調(diào)用應(yīng)用程序

張超欽 胡光武 王振龍 劉新宇

1(國(guó)家數(shù)字交換系統(tǒng)工程技術(shù)研究中心 河南 鄭州 450002)2(鄭州輕工業(yè)學(xué)院計(jì)算機(jī)與通信工程學(xué)院 河南 鄭州 450002)3(深圳信息職業(yè)技術(shù)學(xué)院計(jì)算機(jī)學(xué)院 廣東 深圳 518172)4(清華大學(xué)深圳研究生院 廣東 深圳 518055)5(深圳市金洲精工科技股份有限公司 廣東 深圳 518055)

0 引 言

近年來(lái),基于安卓操作系統(tǒng)(Android)的智能終端設(shè)備得到了極大普及,并成為大部分智能手機(jī)的操作系統(tǒng)。但由于Android平臺(tái)的開(kāi)放性,惡意軟件的制造者可以輕易地開(kāi)發(fā)出大量的惡意軟件,給用戶(hù)帶來(lái)了很大的危害[1]。隨著Android智能手機(jī)的用戶(hù)數(shù)量不斷增加及越來(lái)越多的Android應(yīng)用(App)不斷推出,檢測(cè)和防范Android惡意軟件的重要性日益突出[2]。

Android惡意軟件的檢測(cè)方法可以分為兩大類(lèi):靜態(tài)檢測(cè)和動(dòng)態(tài)檢測(cè)。靜態(tài)檢測(cè)不需要實(shí)際運(yùn)行程序,只需將程序源文件(APK)進(jìn)行解壓和反編譯,然后提取相應(yīng)的特征信息(如Permission、API等)、或者分析特征碼,就可以識(shí)別惡意App。因此靜態(tài)檢測(cè)過(guò)程比較簡(jiǎn)單,檢測(cè)速度較快,但缺點(diǎn)是只能檢測(cè)現(xiàn)有已知惡意程序[8]。而動(dòng)態(tài)檢測(cè)是指在程序運(yùn)行過(guò)程中跟蹤程序的運(yùn)行狀態(tài),通過(guò)分析程序的實(shí)際運(yùn)行行為來(lái)檢測(cè)惡意程序。包括跟蹤內(nèi)存進(jìn)程運(yùn)行狀態(tài)、網(wǎng)絡(luò)狀態(tài)、文件操作、CPU使用情況、用戶(hù)隱私數(shù)據(jù)的訪問(wèn)、系統(tǒng)調(diào)用等。因此,動(dòng)態(tài)檢測(cè)過(guò)程較為復(fù)雜,需要運(yùn)行程序才能判斷是否是惡意App,其效率較靜態(tài)檢測(cè)稍差,但可以檢測(cè)未知的惡意軟件。基于機(jī)器學(xué)習(xí)的動(dòng)態(tài)檢測(cè)方法的成功取決于:(1) 收集信息的有用性和充分性;(2) 機(jī)器學(xué)習(xí)方法是否使用得當(dāng)[3]。

系統(tǒng)調(diào)用是應(yīng)用程序與操作系統(tǒng)進(jìn)行交互最底層的接口,系統(tǒng)調(diào)用序列是對(duì)一個(gè)應(yīng)用程序所有行為的最根本的描述,包含了程序行為的所有信息,因此通過(guò)分析程序的系統(tǒng)調(diào)用序列來(lái)識(shí)別惡意App可以取得比較好的檢測(cè)效果[4]。機(jī)器學(xué)習(xí)算法在惡意軟件的檢測(cè)方面應(yīng)用非常廣泛,比如:樸素貝葉斯[3]、遺傳算法[5]、決策樹(shù)[6]、支持向量機(jī)(SVM)[7]、隨機(jī)森林[8]等。與其他方法相比,支持向量機(jī)可以在樣本比較少、特征維數(shù)比較高的情況下仍然擁有很好的泛化能力,而且可以避免“維度災(zāi)難”[9]。

考慮到以上系統(tǒng)調(diào)用序列和支持向量機(jī)的特性,本文提出Android平臺(tái)基于系統(tǒng)調(diào)用序列的SVM檢測(cè)惡意軟件的方法。不同于現(xiàn)有的SVM方法[3,6-8,10-11]直接分析調(diào)用序列,本文采用了馬爾可夫鏈(Markov Chain)提取系統(tǒng)調(diào)用序列的特征,即把一個(gè)系統(tǒng)調(diào)用當(dāng)作一個(gè)Markov鏈狀態(tài),而一個(gè)應(yīng)用程序在一段時(shí)間內(nèi)調(diào)用的系統(tǒng)調(diào)用序列可以當(dāng)作一個(gè)離散時(shí)間Markov鏈[12]。緊接著,我們利用序列里相鄰系統(tǒng)調(diào)用對(duì)出現(xiàn)的頻率計(jì)算對(duì)應(yīng)狀態(tài)的轉(zhuǎn)移概率,并在轉(zhuǎn)移概率矩陣的支持下,將其轉(zhuǎn)化成特征向量。另一方面,我們利用已有標(biāo)簽(已判定為惡意或正常的App)的特征向量訓(xùn)練SVM,使得訓(xùn)練后的SVM可接受未知App的特征向量,計(jì)算該App所屬類(lèi)別標(biāo)簽(正?;驉阂?,從而判斷出該App的性質(zhì),實(shí)現(xiàn)判定未知App是否屬于惡意軟件的目的。通過(guò)在1 189個(gè)正常軟件和1 227個(gè)惡意軟件上進(jìn)行的實(shí)驗(yàn)結(jié)果表明,本文所提方法顯著優(yōu)于現(xiàn)有的其他SVM檢測(cè)方法。

本文主要貢獻(xiàn)如下:(1) 總結(jié)了現(xiàn)有的使用SVM檢測(cè)Android惡意軟件的方法;(2) 首次提出基于系統(tǒng)調(diào)用序列的SVM檢測(cè)方法;(3) 利用Markov鏈提取系統(tǒng)調(diào)用序列的特征,更好地刻畫(huà)了App的動(dòng)態(tài)行為;(4) 使用動(dòng)態(tài)檢測(cè)方法檢測(cè)未知的惡意軟件,并具有較高的準(zhǔn)確率。

1 背景知識(shí)

1.1 離散時(shí)間Markov鏈

定義1一個(gè)隨機(jī)過(guò)程{ξn,n≥1}具有狀態(tài)空間S={s1,s2,…,sn},如果對(duì)所有的n≥1,j∈S和sm∈S(1≤m≤n),有:

Pr(ξn+1=j|ξn=sn,ξn-1=sn-1,…,ξ1=s1)=

Pr(ξn+1=j|ξn=sn)

(1)

則稱(chēng)該過(guò)程為離散時(shí)間Markov鏈DTMC(Discrete-Time Markov Chain)。

定義2一個(gè)離散時(shí)間Markov鏈{ξn,n≥1},如果它對(duì)所有的i∈S和j∈S,條件概率Pr(ξn+1=j|ξn=i)與n無(wú)關(guān),則稱(chēng)這個(gè)DTMC{ξn,n≥1}是時(shí)間齊次的。

對(duì)于時(shí)間齊次的DTMC{ξn,n≥1},一步狀態(tài)轉(zhuǎn)移概率記作pij=Pr(ξn+1=j|ξn=i),由一步狀態(tài)轉(zhuǎn)移概率pij構(gòu)成的矩陣P=[pij]稱(chēng)作(一步)狀態(tài)轉(zhuǎn)移概率矩陣。ti=Pr(ξ1=i)稱(chēng)作狀態(tài)i的初始出現(xiàn)概率。行向量T=(ti)i∈S稱(chēng)作初始概率分布,它由狀態(tài)的初始出現(xiàn)概率構(gòu)成[12]。

定理1初始概率分布T和狀態(tài)轉(zhuǎn)移概率矩陣P可以完全刻畫(huà)時(shí)間齊次的DTMC{ξn,n≥1},即:

Pr(ξ1=s1,…,ξn-1=sn-1,ξn=sn)=

ts1ps1,s2…psn-1,sn

(2)

1.2 系統(tǒng)調(diào)用

操作系統(tǒng)的主要功能是硬件資源管理,為應(yīng)用程序開(kāi)發(fā)人員提供良好的環(huán)境,使應(yīng)用程序具有更好的兼容性。為了達(dá)到這個(gè)目的,系統(tǒng)內(nèi)核提供一系列具備預(yù)定功能的多內(nèi)核函數(shù),通過(guò)一組稱(chēng)為系統(tǒng)調(diào)用的接口呈現(xiàn)給用戶(hù)。系統(tǒng)調(diào)用把應(yīng)用程序的請(qǐng)求傳給內(nèi)核,并調(diào)用相應(yīng)的內(nèi)核函數(shù)完成所需的處理,最終將處理結(jié)果返回給應(yīng)用程序。和其他操作系統(tǒng)一樣,Android操作系統(tǒng)的架構(gòu)也采用了分層的形式,從上層到底層分別是應(yīng)用層、應(yīng)用程序架構(gòu)層、系統(tǒng)運(yùn)行庫(kù)層和Linux內(nèi)核層。本文所定義的系統(tǒng)調(diào)用是指在系統(tǒng)運(yùn)行庫(kù)和Linux內(nèi)核之間的接口。本文使用的Android版本是4.0.4,一共有196個(gè)不同的系統(tǒng)調(diào)用。

系統(tǒng)調(diào)用是應(yīng)用程序與操作系統(tǒng)進(jìn)行交互的最底層的接口,程序?qū)τ布Y源的請(qǐng)求最后都要通過(guò)調(diào)用系統(tǒng)調(diào)用來(lái)執(zhí)行(包括API調(diào)用的執(zhí)行)。較其他特征,系統(tǒng)調(diào)用序列更能刻畫(huà)一個(gè)應(yīng)用程序行為,所以本方法擬通過(guò)程序的系統(tǒng)調(diào)用序列提取特征來(lái)進(jìn)行惡意程序的檢測(cè)。同時(shí),系統(tǒng)調(diào)用頻率只能描述事件出現(xiàn)的次數(shù),并不能刻畫(huà)事件之間的關(guān)聯(lián)性。而離散時(shí)間Markov 鏈可以很好地挖掘出相鄰事件的關(guān)聯(lián)關(guān)系,因此本文將利用Markov 鏈來(lái)提取系統(tǒng)調(diào)用序列中的關(guān)聯(lián)特征。

1.3 支持向量機(jī)

下面以二分類(lèi)問(wèn)題為例介紹線性支持向量機(jī)SVM的原理。

給定樣本訓(xùn)練集(xi,di),i=1,2,…,N,xi∈Rn,di∈{±1},SVM的原理是試圖尋找一個(gè)超平面(w·x)+b=0,x,w∈Rn,b∈R,使該超平面滿足分類(lèi)要求,即尋找權(quán)值向量w和偏置b的最優(yōu)值,使?jié)M足公式:

di(wTxi+b)≥1-ξii=1,2,…,N

(3)

式中:松馳變量ξi≥0,i=1,2,…,N。

α=(α1,α2,…,αN)T

(4)

F(x)= sgn{(w0·x)+b0}=

(5)

對(duì)于線性不可分的輸入數(shù)據(jù),支持向量機(jī)可以通過(guò)核方法利用以上原理,建立線性的特征空間像的最優(yōu)分類(lèi)面。此時(shí)的最優(yōu)分類(lèi)函數(shù)為:

(6)

式中:K(xi,x)是核函數(shù)。

2 SVM在惡意軟件檢測(cè)中的應(yīng)用

SVM是一種建立在統(tǒng)計(jì)學(xué)習(xí)理論基礎(chǔ)之上的、應(yīng)用最廣泛的機(jī)器學(xué)習(xí)算法。與傳統(tǒng)的分類(lèi)方法相比,SVM在訓(xùn)練樣本比較少,特征維數(shù)比較高的情況下仍然能夠顯示出很強(qiáng)的分類(lèi)能力[9]。所以它廣泛應(yīng)用于人臉識(shí)別、文本分類(lèi)和人工智能等領(lǐng)域?,F(xiàn)有使用SVM檢測(cè)Android惡意軟件的方法主要分為兩步,即提取特征和利用SVM進(jìn)行分類(lèi)。不同文獻(xiàn)方法之間的主要區(qū)別體現(xiàn)在提取了不同的特征。現(xiàn)有方法提取特征一般為:Permission、API調(diào)用以及內(nèi)存使用情況、CPU使用信息、進(jìn)程信息和電池信息等。

文獻(xiàn)[7]提出了基于Permission的檢測(cè)惡意程序的方法。先把程序的APK文件進(jìn)行解壓和反編譯,提取出每個(gè)程序的Permission作為原始特征,然后通過(guò)主成分分析方法(PCA)降維得到新特征,作為SVM的輸入進(jìn)行訓(xùn)練和測(cè)試。單純的Permission不能提供足夠的信息證明一個(gè)程序是否惡意,該方法只能達(dá)到最高90.08%的準(zhǔn)確率。與此類(lèi)似,文獻(xiàn)[6]也先進(jìn)行解壓和反編譯,提取出Permission和API調(diào)用,然后分別使用三種特征提取算法(Chi-Square、Relief和Information Gain)進(jìn)行特征提取,最后利用SVM進(jìn)行分類(lèi)。文獻(xiàn)[11]的前面處理方式與文獻(xiàn)[6-7]一樣,提取的特征包括細(xì)粒度化的Permission(Requested Permissions、Used Permissions)、細(xì)粒度化的API(Restricted API calls、Suspicious API calls)以及程序組件和網(wǎng)絡(luò)地址(IP、URL、主機(jī)名)等。

由于以上這些方法沒(méi)有運(yùn)行程序,因此都屬于靜態(tài)分析。它們只是從源代碼中提取特征,這樣提取的程序信息不夠充分,不足以判斷一個(gè)程序是否惡意。如通過(guò)Java反射機(jī)制可以改變或隱藏API的名字,從而逃避API特征的提取。動(dòng)態(tài)分析方法則可以實(shí)時(shí)跟蹤和監(jiān)控應(yīng)用程序的運(yùn)行行為,根據(jù)程序的運(yùn)行狀態(tài)提取特征信息進(jìn)行識(shí)別。與靜態(tài)分析相比,這種方法能夠獲取更多的信息[3]。

文獻(xiàn)[13-14]構(gòu)建了一個(gè)檢測(cè)系統(tǒng),通過(guò)監(jiān)控應(yīng)用程序的網(wǎng)絡(luò)、電話、短信息、CPU以及電池、進(jìn)程、內(nèi)存的信息,并從這些信息中挑出32個(gè)特征,然后利用Linear-SVM來(lái)檢測(cè)惡意軟件。文獻(xiàn)[14]的整個(gè)檢測(cè)系統(tǒng)分為兩部分:mobile agent和analysis server。其中mobile agent負(fù)責(zé)監(jiān)控和記錄應(yīng)用程序的運(yùn)行狀態(tài),而analysis server主要負(fù)責(zé)對(duì)獲得的運(yùn)行信息進(jìn)行分析。雖然以上文獻(xiàn)監(jiān)控了應(yīng)用程序的相關(guān)運(yùn)行信息,但是這些信息并不全面,因此無(wú)法完全刻畫(huà)程序的行為,并引起一定的誤判,致使檢測(cè)效果不是很理想。例如:在手機(jī)上運(yùn)行游戲程序時(shí),CPU的使用率和內(nèi)存的使用率突然變高,就可能導(dǎo)致誤判。文獻(xiàn)[3]使用APIMonitor和APE_BOX分別記錄應(yīng)用程序的API調(diào)用和活動(dòng)(activity),統(tǒng)計(jì)特定的25個(gè)API和13種活動(dòng)單獨(dú)出現(xiàn)的次數(shù),以及由這些組成的2-gram和3-gram的出現(xiàn)次數(shù),接著拼接成一個(gè)56 354維的向量并進(jìn)行歸一化,最后輸入到LIBSVM中進(jìn)行檢測(cè)。但該方法僅依靠API調(diào)用和活動(dòng)的頻率識(shí)別。

3 基于Markov鏈的惡意軟件檢測(cè)方法

如圖1所示,除樣本準(zhǔn)備階段外本文提出的安卓惡意軟件檢測(cè)方法主要有三個(gè)步驟:預(yù)處理、特征提取和分類(lèi)階段。

圖1 安卓惡意App檢測(cè)方法步驟

其中預(yù)處理包括系統(tǒng)調(diào)用序列的獲取、編號(hào),并得到一個(gè)系統(tǒng)調(diào)用數(shù)列;特征提取包括計(jì)算狀態(tài)轉(zhuǎn)移概率矩陣和將矩陣轉(zhuǎn)換成特征向量;分類(lèi)部分包括對(duì)SVM的訓(xùn)練和利用SVM進(jìn)行檢測(cè)。SVM的訓(xùn)練過(guò)程是一個(gè)典型的有監(jiān)督學(xué)習(xí)的過(guò)程,它可以對(duì)線性可分和線性不可分的樣本集進(jìn)行分類(lèi)。對(duì)于線性不可分的情況,SVM通過(guò)使用非線性映射算法(核方法)將低維輸入空間線性不可分的樣本轉(zhuǎn)化為高維特征空間的線性可分樣本,然后在高維空間采用線性算法進(jìn)行分析。

3.1 預(yù)處理階段

預(yù)處理階段包括記錄系統(tǒng)調(diào)用序列和編號(hào)兩部分。我們通過(guò)strace、monkey命令來(lái)記錄一個(gè)應(yīng)用程序發(fā)起的系統(tǒng)調(diào)用。strace 命令可以跟蹤到一個(gè)進(jìn)程產(chǎn)生的系統(tǒng)調(diào)用,包括參數(shù)、返回值、執(zhí)行消耗的時(shí)間。monkey是Android中的一個(gè)命令行工具,它能夠向系統(tǒng)發(fā)送偽隨機(jī)的用戶(hù)事件流(如按鍵輸入、觸摸屏輸入、手勢(shì)輸入等)。在這里,我們通過(guò)monkey工具來(lái)模擬用戶(hù)的使用行為。

在用strace跟蹤程序的系統(tǒng)調(diào)用的輸出文件中,會(huì)出現(xiàn)極少數(shù)的亂碼,我們通過(guò)去噪把這些亂碼刪除。然后把系統(tǒng)調(diào)用的時(shí)間、參數(shù)等都過(guò)濾掉,經(jīng)過(guò)簡(jiǎn)化,我們得到了只包含系統(tǒng)調(diào)用名稱(chēng)的按時(shí)間順序排列的系統(tǒng)調(diào)用序列。為了方便后繼處理,我們用1,2,…,196,這196個(gè)數(shù)對(duì)Android4.0.4中的196個(gè)系統(tǒng)調(diào)用進(jìn)行編號(hào)。經(jīng)過(guò)這些操作后,系統(tǒng)調(diào)用序列轉(zhuǎn)化成了系統(tǒng)調(diào)用數(shù)列。

3.2 特征提取階段

提取特征的過(guò)程包括兩步,即計(jì)算狀態(tài)轉(zhuǎn)移概率矩陣和將矩陣轉(zhuǎn)換成特征向量。每個(gè)應(yīng)用程序的系統(tǒng)調(diào)用序列當(dāng)作一個(gè)離散時(shí)間Markov鏈,其中一個(gè)系統(tǒng)調(diào)用對(duì)應(yīng)一個(gè)狀態(tài),Android4.0.4共有196個(gè)系統(tǒng)調(diào)用,所以狀態(tài)轉(zhuǎn)移概率矩陣的維數(shù)是196×196。設(shè)經(jīng)過(guò)預(yù)處理后的系統(tǒng)調(diào)用數(shù)列為s1,s2,…,sr,r為其長(zhǎng)度,N為系統(tǒng)調(diào)用總個(gè)數(shù)(在我們的方法中N=196),計(jì)算狀態(tài)轉(zhuǎn)移矩陣P的偽代碼如下:

1P=(pij)N×N:=0;C=(cij)N×N:=0;k:=1;

2i:=sk,j:=sk+1;cij:=cij+1;

3k:=k+1;

4 IF (k≤r-1) Goto STEP 2;

6 For (1≤i,j≤N)pij:=cij/di;

假設(shè)一個(gè)系統(tǒng)只有6個(gè)不同的系統(tǒng)調(diào)用1、2、3、4、5、6,經(jīng)過(guò)預(yù)處理后的系統(tǒng)調(diào)用序列假定為:2,1,6,4,1,3,5,4,6,3,2,5,1,4,5,3,4,2,1,4,6,2,5,3,6,4從系統(tǒng)調(diào)用i轉(zhuǎn)移到系統(tǒng)調(diào)用j的個(gè)數(shù)記為cij,從系統(tǒng)調(diào)用i轉(zhuǎn)移到任意系統(tǒng)調(diào)用的個(gè)數(shù)記為di,根據(jù)以上的系統(tǒng)調(diào)用序列有c11=0,c12=0,c13=1,c14=2,c15=0,c16=1,d1=4,……進(jìn)而我們可以求出所有cij和di:

若系統(tǒng)調(diào)用i轉(zhuǎn)移到系統(tǒng)調(diào)用j的概率記為pij,根據(jù)概率論中的大數(shù)定理,我們可以定義:

(7)

最后,我們可以求得狀態(tài)轉(zhuǎn)移概率矩陣:

因?yàn)橹С窒蛄繖C(jī)的輸入為向量,所以在得到狀態(tài)轉(zhuǎn)移概率矩陣后,需要將矩陣轉(zhuǎn)換成(特征)向量,才能作為支持向量機(jī)的輸入。具體的轉(zhuǎn)換方法是將矩陣的每一行按行號(hào)從小到大把每行元素首尾相接連在一起構(gòu)成一個(gè)(特征)向量。如以上的矩陣轉(zhuǎn)化后的特征向量是(0,0,1/4,1/2,0,1/4,1/2,0,0,0,1/2,0,0,1/4,0,1/4,1/4,1/4,1/5,1/5,0,0,1/5,2/5,1/4,0,1/2,1/4,0,0,0,1/4,1/4,1/2,0,0)。在我們的方法中,轉(zhuǎn)移概率矩陣的維數(shù)為196×196,所以轉(zhuǎn)換后的特征向量維數(shù)為38 416。

3.3 分類(lèi)階段

本文的分類(lèi)過(guò)程包括支持向量機(jī)的訓(xùn)練過(guò)程和檢測(cè)過(guò)程兩部分。在我們的樣本集中有1 227個(gè)惡意軟件和1 189個(gè)正常軟件,取其中614個(gè)惡意軟件和595個(gè)正常軟件作為訓(xùn)練樣本,剩下的613個(gè)惡意軟件和594個(gè)正常軟件作為測(cè)試樣本。每個(gè)軟件的系統(tǒng)調(diào)用序列經(jīng)過(guò)預(yù)處理4.1和提取特征4.2的處理后得到了一個(gè)38 416維的特征向量。記惡意軟件得到的特征向量為xi∈R38 416,i=1,2,…,1 227;正常軟件得到的特征向量為yi∈R38 416,i=1,2,…,1 189。SVM的訓(xùn)練過(guò)程是一個(gè)有監(jiān)督的學(xué)習(xí)過(guò)程,其輸入為特征向量和其對(duì)應(yīng)的標(biāo)簽。具體在我們的方法中,SVM的訓(xùn)練數(shù)據(jù)為38 417維的向量,即(xi,+1),i=1,2,…,614,和(yi,-1),i=1,2,…,595。其中“+1”是惡意軟件的標(biāo)簽,“-1”是正常軟件的標(biāo)簽。通過(guò)以上帶有標(biāo)簽的數(shù)據(jù)的訓(xùn)練,SVM求得最優(yōu)權(quán)值向量w0,最優(yōu)偏置b0和最優(yōu)分類(lèi)函數(shù)F(x),這樣就獲得了分類(lèi)的知識(shí),可以為無(wú)標(biāo)簽數(shù)據(jù)計(jì)算標(biāo)簽。

檢測(cè)過(guò)程是對(duì)未知的惡意軟件進(jìn)行檢測(cè),SVM的輸入不需要標(biāo)簽,所以只是38 416維的特征向量。訓(xùn)練好的SVM通過(guò)式(6)中的最優(yōu)分類(lèi)函數(shù)F(x)為每個(gè)輸入特征向量計(jì)算出一個(gè)新的標(biāo)簽(1或-1)。具體在我們的方法中,對(duì)于每個(gè)測(cè)試樣本,訓(xùn)練好后的SVM的輸入數(shù)據(jù)為其系統(tǒng)調(diào)用轉(zhuǎn)移概率矩陣轉(zhuǎn)化的特征向量xi(i=615,…,1 227),或yi(i=596,…,1 189);SVM的輸出數(shù)據(jù)為SVM通過(guò)式(6)計(jì)算出的該向量對(duì)應(yīng)的標(biāo)簽,如果標(biāo)簽為“+1”,則該軟件被判為惡意,否則該軟件被判為正常。我們統(tǒng)計(jì)xi(i=615,…,1 227)作為SVM的輸入時(shí),SVM輸出的標(biāo)簽為“+1”的樣本總個(gè)數(shù)為T(mén)P(True Positive),輸出的標(biāo)簽為“-1”的樣本總個(gè)數(shù)為FN(False Negative);yi(i=596,…,1 189)作為SVM的輸入時(shí),SVM輸出標(biāo)簽為“+1”的樣本總個(gè)數(shù)為FP(False Positive),輸出標(biāo)簽為“-1”的樣本總個(gè)數(shù)為T(mén)N(True Negative)。這些數(shù)量可用于評(píng)估我們的方法。

4 實(shí)驗(yàn)結(jié)果和分析

4.1 數(shù)據(jù)集和評(píng)判指標(biāo)

本文的實(shí)驗(yàn)數(shù)據(jù)集中的正常軟件來(lái)自于Android市場(chǎng)的官方網(wǎng)站。我們通過(guò)修改Chrome瀏覽器的插件,從中一共批量下載了1 189個(gè)App當(dāng)作正常軟件。實(shí)驗(yàn)數(shù)據(jù)集中的惡意軟件來(lái)自文獻(xiàn)[15],一共有1 227個(gè)惡意App,其中包括49個(gè)病毒家族。我們?cè)贛ATLAB R2013b 中采用5個(gè)不同的核函數(shù)進(jìn)行訓(xùn)練和測(cè)試。

評(píng)判一個(gè)檢測(cè)系統(tǒng)好壞的常用指標(biāo)有TPR(True Positive Rate)、FPR(False Positive Rate)、Precision和F-Score。記TP為惡意軟件被判定為惡意軟件的個(gè)數(shù),F(xiàn)N為惡意軟件被判定為正常軟件的個(gè)數(shù),TN為正常軟件被判定為正常軟件的個(gè)數(shù),F(xiàn)P為正常軟件被判定為惡意軟件的個(gè)數(shù),則TPR定義為:

(8)

FPR定義為:

(9)

Precision定義為:

(10)

F-Score定義為:

(11)

TPR相等時(shí),F(xiàn)PR越小,檢測(cè)效果越好;反之FPR相等時(shí),TPR越大,檢測(cè)效果越好。Precision越大說(shuō)明檢測(cè)系統(tǒng)的準(zhǔn)確度越高。F-Score是Precision和TPR的加權(quán)調(diào)和平均,是評(píng)判一個(gè)檢測(cè)系統(tǒng)綜合好壞的最重要的指標(biāo)。

4.2 實(shí)驗(yàn)結(jié)果

表1給出了我們的方法在不同核函數(shù)下的實(shí)驗(yàn)結(jié)果。其中l(wèi)inear是線性核函數(shù),quadratic是二次的核函數(shù),polynomial是3次的多項(xiàng)式核函數(shù),RBF是寬度為1的高斯徑向基函數(shù),MLP是權(quán)重為1偏置為-1的多層感知器核函數(shù)。由表1可知,新方法利用線性SVM取得最好的檢測(cè)準(zhǔn)確度:TPR為0.956 0,F(xiàn)PR為0.010 1,Precision為0.989 9,F(xiàn)-Score為0.972 6。其中613個(gè)惡意軟件的測(cè)試樣本中只有27個(gè)被誤判為正常軟件,594個(gè)正常軟件的測(cè)試樣本中只有6個(gè)被誤判為惡意軟件。

表1 本方案利用不同核函數(shù)對(duì)惡意軟件的判定結(jié)果

4.3 比較與分析

現(xiàn)有文獻(xiàn)[3,6-8,10-11]分別提出了6種不同的使用SVM檢測(cè)惡意軟件的方法。表2列出了本文方法(線性核)與以上6種方法的檢測(cè)結(jié)果的比較。從表中可以看出本文方法在Precision和F-Score值明顯優(yōu)于其他SVM檢測(cè)方法。

表2 本方案與其他方法的比較

文獻(xiàn)[6-7,11]是靜態(tài)分析的Android惡意軟件檢測(cè)方法。文獻(xiàn)[6]只考慮了應(yīng)用程序的Permission特征,單純的Permission提供的信息非常有限。文獻(xiàn)[7,11]從Permission和API調(diào)用兩個(gè)方面提取特征。這些方法都是從靜態(tài)的源代碼中提取特征,這樣提取的程序信息不夠充分,不能描述程序的實(shí)際動(dòng)態(tài)行為,所以它們的檢測(cè)結(jié)果比較差。

文獻(xiàn)[3,8,10]使用的是動(dòng)態(tài)分析的檢測(cè)方法。文獻(xiàn)[8,10]從應(yīng)用程序運(yùn)行時(shí)的電話、短信息、網(wǎng)絡(luò)、CPU、電池以及進(jìn)程、內(nèi)存的信息中提取特征。由于這些相關(guān)運(yùn)行信息并不夠全面,不能完全刻畫(huà)程序的所有行為,所以會(huì)引起一定誤判,檢測(cè)效果不是很理想。文獻(xiàn)[3]依靠API調(diào)用和活動(dòng)的頻率來(lái)判別惡意程序。API調(diào)用是應(yīng)用程序接口,底層都是通過(guò)調(diào)用系統(tǒng)的系統(tǒng)調(diào)用來(lái)執(zhí)行的。系統(tǒng)調(diào)用相對(duì)于API調(diào)用更能細(xì)粒度地刻畫(huà)程序行為,而且頻率僅能體現(xiàn)事件次數(shù),不能體現(xiàn)事件的內(nèi)部聯(lián)系。Markov鏈描述了事件的前后聯(lián)系,所以利用Markov鏈提取系統(tǒng)調(diào)用特征的方法比文獻(xiàn)[3]方法的檢測(cè)結(jié)果好。

圖2直觀地反映了表2的結(jié)果,從該圖我們看可以出,本文提出的方案要優(yōu)于靜態(tài)檢測(cè)方案6及動(dòng)態(tài)檢測(cè)方案10,同時(shí)也明顯優(yōu)于其他方案。

圖2 本方案與其他方案對(duì)比

5 結(jié) 語(yǔ)

本文提出了一種基于SVM分類(lèi)器的Android惡意軟件檢測(cè)新型方法。該方法為系統(tǒng)調(diào)用序列建立了Markov模型,把Markov鏈的狀態(tài)轉(zhuǎn)移概率矩陣作為SVM的輸入來(lái)判別惡意軟件。實(shí)驗(yàn)表明本方法的檢測(cè)效果優(yōu)于現(xiàn)有的其他基于SVM的檢測(cè)方法。一方面是由于系統(tǒng)調(diào)用是一個(gè)應(yīng)用程序具體行為的最根本的體現(xiàn),另一方面是由于離散時(shí)間Markov鏈可以挖掘出隱藏在系統(tǒng)調(diào)用系列里的事件之間的聯(lián)系。但是本文中還有一些工作可以進(jìn)一步的研究。建立Markov模型,計(jì)算狀態(tài)轉(zhuǎn)移概率矩陣只是從系統(tǒng)調(diào)用序列中提取信息的一種方法,是否存在更好的數(shù)學(xué)模型來(lái)提取特征值得我們將進(jìn)一步研究和探討。

猜你喜歡
特征向量調(diào)用應(yīng)用程序
二年制職教本科線性代數(shù)課程的幾何化教學(xué)設(shè)計(jì)——以特征值和特征向量為例
克羅內(nèi)克積的特征向量
核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
刪除Win10中自帶的應(yīng)用程序
系統(tǒng)虛擬化環(huán)境下客戶(hù)機(jī)系統(tǒng)調(diào)用信息捕獲與分析①
谷歌禁止加密貨幣應(yīng)用程序
三個(gè)高階微分方程的解法研究
利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
三星電子將開(kāi)設(shè)應(yīng)用程序下載商店
微軟軟件商店開(kāi)始接受應(yīng)用程序