一種基于Dalvik指令和權(quán)限組合的安卓惡意軟件檢測方法
【專利摘要】本發(fā)明公開了一種基于Dalvik指令和權(quán)限組合的安卓惡意軟件檢測方法,所述方法包括:S1、使用解壓縮工具打開安卓應(yīng)用軟件包,得到classes.dex文件和AndroidManifest.xml文件;S2、反編譯classes.dex文件構(gòu)建Dalvik指令的頻率特征,然后采用檢測模型對安卓應(yīng)用軟件包進(jìn)行正常軟件和惡意軟件的檢測;S3、反編譯AndroidManifest.xml文件提取權(quán)限特征,并構(gòu)建權(quán)限特征向量,由分類算法建立分類器,進(jìn)行正常軟件和惡意軟件的檢測。本發(fā)明能夠有效對抗混淆加密等技術(shù),基于Dalvik指令的檢測方法是一種輕量級的檢測方法,結(jié)合權(quán)限組合的檢測機(jī)制,在保證檢測的準(zhǔn)確率的同時,減小了計算量。
【專利說明】-種基于Dal vik指令和權(quán)限組合的安卓惡意軟件檢測方 法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及惡意軟件檢測及網(wǎng)絡(luò)安全【技術(shù)領(lǐng)域】,尤其涉及一種基于Dalvik指令 和權(quán)限組合的安卓惡意軟件檢測方法。
【背景技術(shù)】
[0002] 移動惡意軟件,是指在用戶不知情或未授權(quán)的情況下,在用戶手上安裝、運(yùn)行,已 達(dá)到不正當(dāng)?shù)哪康?,或具有違反國家相關(guān)法律法規(guī)行為的手機(jī)軟件。根據(jù)中國互聯(lián)網(wǎng)協(xié)會 和中國反病毒聯(lián)盟聯(lián)合編寫的《移動互聯(lián)網(wǎng)惡意代碼描述規(guī)范》,安卓惡意軟件主要分為八 種惡意類型:惡意扣費(fèi)、隱私竊取、遠(yuǎn)程控制、惡意傳播、資費(fèi)消耗、系統(tǒng)破壞、誘騙欺詐、流 氓行為。不斷增長的移動惡意軟件不僅給用戶帶來了嚴(yán)重的經(jīng)濟(jì)損失,而且威脅到用戶的 個人信息安全。
[0003] 目前主流的惡意軟件檢測方案主要分為靜態(tài)檢測和動態(tài)檢測。動態(tài)分析主要是分 析程序運(yùn)行時的特征,包括系統(tǒng)調(diào)用序列和數(shù)據(jù)流等。這些方法需要修改安卓系統(tǒng)的內(nèi)核, 而且?guī)砹舜罅康膶?shí)時計算。靜態(tài)檢測方法通過分析應(yīng)用程序的源代碼,并不運(yùn)行應(yīng)用程 序。安卓平臺惡意軟件常見的靜態(tài)特征有:APK申請的權(quán)限、API、APK簽名信息等。Zhou等 人分析了惡意軟件與正常軟件權(quán)限之間的不同:惡意軟件更傾向于申請短信相關(guān)的權(quán)限和 自啟動權(quán)限。童振飛抽取了 classes, dex文件中類與API調(diào)用信息作為特征,運(yùn)用機(jī)器學(xué) 習(xí)算法,構(gòu)建分類模型,檢測安卓惡意軟件。房鑫鑫發(fā)展了童振飛的工作,通過對比應(yīng)用程 序中的AndroidManifest. xml文件的簽名信息,判斷應(yīng)用程序是否被惡意篡改。Peiravian 等人分析了惡意軟件與正常軟件申請權(quán)限以及API的不同,綜合了權(quán)限和API特征,構(gòu)建不 同的分類器。Aafer等人結(jié)合了高危的API及其參數(shù)特征,來構(gòu)建分類模型。目前的靜態(tài)檢 測方法主要依賴于分析安卓應(yīng)用軟件申請的權(quán)限和API特征,而權(quán)限特征已經(jīng)被大量的應(yīng) 用軟件所濫用,API特征難以對抗混淆加密技術(shù)。
[0004] Kang等人利用了 Dalvik指令頻率特征對安卓惡意軟件的家族進(jìn)行分類,Kang等 人提取并反編譯APK軟件包中的classes, dex文件,得到安卓匯編語言smali文件,然后統(tǒng) 計smali文件中每個Dalvik指令出現(xiàn)的絕對頻率,構(gòu)建特征向量來表示該安卓應(yīng)用軟件。 特征向量的第一維表示惡意軟件的家族,其余維表示Dalivk指令的絕對頻率特征。最后運(yùn) 用隨機(jī)森林算法構(gòu)建分類器,對惡意軟件的家族之間進(jìn)行分類。
[0005] 現(xiàn)有流行的安卓惡意軟件檢測技術(shù)高度依賴于權(quán)限特征和API特征,而權(quán)限被大 量的應(yīng)用軟件所濫用,API及其參數(shù)是比較有效的檢測手段,但這種方法計算量較大,而且 API的參數(shù)也是千變?nèi)f化。
[0006] 因此,針對上述技術(shù)問題,有必要提供一種基于Dalvik指令和權(quán)限組合的安卓惡 意軟件檢測方法。
【發(fā)明內(nèi)容】
[0007] 有鑒于此,本發(fā)明的目的在于提供一種基于Dalvik指令和權(quán)限組合的安卓惡意 軟件檢測方法,以解決當(dāng)前鑒別安卓惡意軟件的主要問題,包括:(1)特征單一,依賴于權(quán) 限和API特征;(2)計算量大。
[0008] 為了達(dá)到上述目的,本發(fā)明實(shí)施例提供的技術(shù)方案如下:
[0009] 一種基于Dalvik指令和權(quán)限組合的安卓惡意軟件檢測方法,所述方法包括:
[0010] S1、使用解壓縮工具打開安卓應(yīng)用軟件包,得到classes, dex文件和 AndroidManifest. xml 文件;
[0011] S2、反編譯classes, dex文件構(gòu)建Dalvik指令的頻率特征,然后采用檢測模型對 安卓應(yīng)用軟件包進(jìn)行正常軟件和惡意軟件的檢測;
[0012] S3、反編譯AndroidManifest. xml文件提取權(quán)限特征,并構(gòu)建權(quán)限特征向量,由分 類算法建立分類器,進(jìn)行正常軟件和惡意軟件的檢測。
[0013] 作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟S2中檢測模型的構(gòu)建方法為:
[0014] Dalvik指令的頻率特征為:
[0015] absoluteFreqi = (Ci, freq(i;1), freq(i;2), --?, freq(i;J) | I ^ j ^ n},
[0016] 其中當(dāng)且僅當(dāng)Ci = I時該軟件為惡意軟件,當(dāng)且僅當(dāng)Ci = 0時該軟件為正常軟 件,n為Dalvik指令的個數(shù),freqaj)表示第i個應(yīng)用軟件中出現(xiàn)第j個指令的絕對頻率; [0017] 將正常軟件與惡意軟件的樣本集合集制成一個特征矩陣FM,得到檢測模型。
[0018] 作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟S2還包括:
[0019] 將Dalvik指令的絕對頻率轉(zhuǎn)化為相對頻率TelativeFreqi :
[0020] re!atiVeFre^ JcZet^ jre^ 1K sum{\) sum{i) smn(i) j
[0021] 其中畫(0= &細(xì)(i-j)表示第i個軟件包所有Dalvik指令出現(xiàn)的次數(shù)總和。
[0022] 作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟S2還包括:
[0023] 根據(jù)特征矩陣FM和閥值tp,提取有效區(qū)分正常軟件與惡意軟件的特征子集FS。
[0024] 作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟S2具體包括:
[0025] 若Dalvik指令的頻率特征中Ci = 0,將該絕對頻率freq(i,j)加入freq(i)b中;
[0026] 若Dalvik指令的頻率特征中Ci = 1,將該絕對頻率freq(i,j)加入freq(i)m中;
[0027] 定義 diff = benignMeanFreq/malwareMeanFreq,其中:
[0028] (numh IUimh Itmnli J | numm numm mimm J
[0029] 若diff (j)>閥值tp,則將該指令加入到特征子集FS中。
[0030] 作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟S3中的分類算法包括支持向量機(jī)算法、K最 臨近算法、隨機(jī)森林算法、神經(jīng)網(wǎng)絡(luò)算法。
[0031] 本發(fā)明具有以下有益效果:
[0032] 區(qū)別于現(xiàn)有技術(shù)中基于權(quán)限和API的靜態(tài)檢測方式,基于Dalvik指令的檢測方法 能夠有效對抗混淆加密等技術(shù);
[0033] 基于Dalvik指令的檢測方法是一種輕量級的檢測方法,結(jié)合權(quán)限組合的檢測機(jī) 制,在保證檢測的準(zhǔn)確率的同時,減小了計算量。
【專利附圖】
【附圖說明】
[0034] 為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明中記載的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下, 還可以根據(jù)這些附圖獲得其他的附圖。
[0035] 圖1為本發(fā)明一種基于Dalvik指令和權(quán)限組合的安卓惡意軟件檢測方法的流程 示意圖。
[0036] 圖2為本發(fā)明一【具體實(shí)施方式】中Dalvik指令相對頻率的量化過程示意圖。
[0037] 圖3為本發(fā)明一【具體實(shí)施方式】中基于權(quán)限特征的檢測流程示意圖。
[0038] 圖4為本發(fā)明一【具體實(shí)施方式】中的敏感權(quán)限分類圖。
【具體實(shí)施方式】
[0039] 為了使本【技術(shù)領(lǐng)域】的人員更好地理解本發(fā)明中的技術(shù)方案,下面將結(jié)合本發(fā)明實(shí) 施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施 例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通 技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù) 的范圍。
[0040] 本發(fā)明的主要內(nèi)容包括提取Dalvik指令的相對頻率特征,并結(jié)合傳統(tǒng)的權(quán)限特 征,構(gòu)建多種不同的分類器進(jìn)行檢測。詳細(xì)內(nèi)容如下:
[0041] (一)提出了一種基于安卓Dalvik指令相對頻率的惡意軟件檢測特征,構(gòu)建分類 器來檢測惡意軟件;
[0042](二)提出了一種有效的特征選擇方法,選擇了有效區(qū)分惡意軟件和正常軟件的 Dalvik指令子集,提高了檢測效率;
[0043](三)引入權(quán)限組合的檢測機(jī)制,突出軟件可能具備的惡意行為。
[0044] 參圖1所示,本發(fā)明的一種基于Dalvik指令和權(quán)限組合的安卓惡意軟件檢測方 法,包括:
[0045] S1、使用解壓縮工具打開安卓應(yīng)用軟件包,得到classes, dex文件和 AndroidManifest. xml 文件;
[0046] S2、反編譯classes, dex文件構(gòu)建Dalvik指令的頻率特征,然后采用檢測模型對 安卓應(yīng)用軟件包進(jìn)行正常軟件和惡意軟件的檢測;
[0047] S3、反編譯AndroidManifest. xml文件提取權(quán)限特征,并構(gòu)建權(quán)限特征向量,由分 類算法建立分類器,進(jìn)行正常軟件和惡意軟件的檢測。
[0048] 每個安卓應(yīng)用軟件包都是以壓縮包的形式存在的,可以使用解壓縮工具打開軟件 包,每個軟件包中都存在classes, dex文件和AndroidManifest. xml文件,classes, dex 文件可以在安卓Dalvik虛擬機(jī)上直接運(yùn)行,AndroidManifest. xml文件則是用來配置軟 件運(yùn)行時所需要的權(quán)限、運(yùn)行環(huán)境以及相關(guān)組件等信息。我們使用classes, dex文件構(gòu)建 Dalvik指令頻率特征,使用AndroidManifest. xml文件構(gòu)建權(quán)限特征。下面介紹詳細(xì)細(xì)節(jié):
[0049] (一)基于Dalvik指令頻率的檢測方法:
[0050] I、Dalvik指令特征提取與表示
[0051] 惡意代碼在功能十分相似,即使通過混淆加密技術(shù),也不能改變其惡意行為,而惡 意行為表現(xiàn)在指令的頻率上。本專利利用Dalvik指令頻率特征,通過訓(xùn)練正常軟件與惡意 軟件的指令頻率,建立檢測模型,達(dá)到檢測未知軟件的功能。
[0052] 參圖2所示為本發(fā)明一【具體實(shí)施方式】中Dalvik指令相對頻率的量化過程示意圖, 按照指令集列表,歸納出230個安卓Dalvik指令。解壓縮.apk文件,并反編譯classes, dex文件,用freq aj)表示第i個應(yīng)用軟件中出現(xiàn)第j個指令的絕對頻率,absoluteFreqi 表示第i個應(yīng)用軟件的所有指令的頻率特征,absoluteFreq i= ICiJreqai), freq(i,2),… ,freq(i,I I < j < n},其中Ci = 1當(dāng)且僅當(dāng)該軟件為惡意軟件,Ci = 0當(dāng)且僅當(dāng)該軟件為正 常軟件,n = 230。
[0053] 但是,不同大小的應(yīng)用程序會導(dǎo)致相同指令的絕對頻率差距過大。為了避免軟件 大小的差異所帶來的影響,本實(shí)施方式中提出了使用指令的相對頻率relativeFreqi來量 化應(yīng)用軟件, 其中W = 表示第i個 i=i 軟件包所有指令出現(xiàn)的次數(shù)總和。
[0054] 根據(jù)以上的方法,可以將正常軟件與惡意軟件的樣本集合集制成一個特征矩陣, 用于訓(xùn)練模型和預(yù)測。
[0055] 2、基于Dalvik指令特征的選擇方法
[0056] 本實(shí)施方式提出了一種基于Dalvik指令的特征選擇算法,用來提取有效區(qū)分正 常軟件與惡意軟件的特征子集。包括:
[0057] 若Dalvik指令的頻率特征中Ci = 0,將該絕對頻率freq(i,j)加入freq(i)b中;
[0058] 若Dalvik指令的頻率特征中Ci = 1,將該絕對頻率freq(i,j)加入freq(i)m中;
[0059] 定義 diff = benignMeanFreq/malwareMeanFreq,其中: 「00601
【權(quán)利要求】
1. 一種基于Dalvik指令和權(quán)限組合的安卓惡意軟件檢測方法,其特征在于,所述方法 包括: 51、 使用解壓縮工具打開安卓應(yīng)用軟件包,得到classes, dex文件和 AndroidManifest. xml 文件; 52、 反編譯classes, dex文件構(gòu)建Dalvik指令的頻率特征,然后采用檢測模型對安卓 應(yīng)用軟件包進(jìn)行正常軟件和惡意軟件的檢測; 53、 反編譯AndroidManifest. xml文件提取權(quán)限特征,并構(gòu)建權(quán)限特征向量,由分類算 法建立分類器,進(jìn)行正常軟件和惡意軟件的檢測。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟S2中檢測模型的構(gòu)建方法為: Dalvik指令的頻率特征為: absoluteFreqi = (Ci, freq(i;1), freq(i;2), ···, freq(i;J) | I ^ j ^ η}, 其中當(dāng)且僅當(dāng)Ci = I時該軟件為惡意軟件,當(dāng)且僅當(dāng)Ci = 0時該軟件為正常軟件,η 為Dalvik指令的個數(shù),freqaj)表示第i個應(yīng)用軟件中出現(xiàn)第j個指令的絕對頻率; 將正常軟件與惡意軟件的樣本集合集制成一個特征矩陣FM,得到檢測模型。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟S2還包括: 將Dalvik指令的絕對頻率轉(zhuǎn)化為相對頻率relatIiveFreqi :
其中_仍=Σ >?λ+Μ)表示第i個軟件包所有Dalvik指令出現(xiàn)的次數(shù)總和。 j-i
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述步驟S2還包括: 根據(jù)特征矩陣FM和閥值tp,提取有效區(qū)分正常軟件與惡意軟件的特征子集FS。
5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟S2具體包括: 若Dalvik指令的頻率特征中Ci = 0,將該絕對頻率freq(i;j)加入freq(i)b中; 若Dalvik指令的頻率特征中Ci = 1,將該絕對頻率freq(i;j)加入freq(i)m中; 定義 diff = benignMeanFreq/malwareMeanFreq,其中:
若diff (j) >閥值tp,則將該指令加入到特征子集FS中。
6. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟S3中的分類算法包括支持向量 機(jī)算法、K最臨近算法、隨機(jī)森林算法、神經(jīng)網(wǎng)絡(luò)算法。
【文檔編號】G06F21/56GK104376262SQ201410746314
【公開日】2015年2月25日 申請日期:2014年12月8日 優(yōu)先權(quán)日:2014年12月8日
【發(fā)明者】張凱, 姜青山 申請人:中國科學(xué)院深圳先進(jìn)技術(shù)研究院