本發(fā)明涉及軟件檢測領(lǐng)域,尤指一種基于混合特征的android惡意軟件檢測方法及系統(tǒng)。
背景技術(shù):
智能終端和云計(jì)算運(yùn)用加速推進(jìn)信息技術(shù)和通信技術(shù)的融合,促進(jìn)了移動(dòng)互聯(lián)網(wǎng)高速發(fā)展。隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,移動(dòng)終端用戶群體日益龐大。在經(jīng)濟(jì)利益的驅(qū)使下,近幾年移動(dòng)惡意軟件的數(shù)量呈爆炸式增長,各種移動(dòng)惡意軟件家族更是千變?nèi)f化,嚴(yán)重威脅著移動(dòng)互聯(lián)網(wǎng)的健康發(fā)展,給用戶和智能終端帶來了不可忽視的危害。然而,由于我國目前尚無針對移動(dòng)應(yīng)用商店安全的要求準(zhǔn)則出臺(tái),這使得一些應(yīng)用程序商店安全門檻過低,大量的惡意應(yīng)用軟件可以很輕易進(jìn)駐應(yīng)用商店并提供下載,移動(dòng)互聯(lián)網(wǎng)安全已經(jīng)成為制約移動(dòng)互聯(lián)網(wǎng)發(fā)展的瓶頸。移動(dòng)惡意軟件是指所有能夠在智能手機(jī)或者平板計(jì)算機(jī)上執(zhí)行惡意操作的應(yīng)用程序,會(huì)導(dǎo)致系統(tǒng)崩潰、用戶機(jī)密信息的損失或泄漏。
目前,很多安全公司都已經(jīng)開發(fā)出移動(dòng)惡意軟件鑒別的技術(shù)。例如,kaspersky,mcafee,奇虎360、騰訊等都在推出安全軟件。kaspersky實(shí)驗(yàn)室推出了卡巴斯基手機(jī)安全軟件,該軟件結(jié)合了傳統(tǒng)的特征碼技術(shù)和主動(dòng)的啟發(fā)式分析技術(shù),并提供云安全掃描的實(shí)時(shí)保護(hù),確保智能手機(jī)不受惡意軟件的的侵害。mcafee通過掃描文件、內(nèi)存卡、應(yīng)用程序、internet下載項(xiàng)、文本消息和附件并清除其中的惡意軟件來保護(hù)移動(dòng)設(shè)備。360手機(jī)衛(wèi)士采用本地和云查殺的方法,本地查殺調(diào)用手機(jī)衛(wèi)士內(nèi)置的殺毒功能,本地掃描已安裝軟件的信息(包括包名、uid、版本號以及軟件證書等),根據(jù)軟件的包名,uid,版本號和證書,以及特征碼,與病毒庫進(jìn)行比對,判斷軟件的安全性,以便完成查殺。騰訊手機(jī)管家采用多引擎查殺,具備雙引擎的本地查殺功能和云查殺功能。本地查殺引擎使用qq手機(jī)管家查殺病毒引擎和卡巴斯基查殺病毒引擎,在無需聯(lián)網(wǎng)的情況下,可以快速的對本地已安裝軟件和即將安裝軟件進(jìn)行病毒查殺。云查殺引擎在用戶允許的前提下,終端會(huì)聯(lián)網(wǎng)將本地的軟件信息及行為特征上傳到云端服務(wù)器,服務(wù)器根據(jù)所上傳的信息進(jìn)行精準(zhǔn)的病毒掃描,將最終精確的查殺結(jié)果返回給終端。
另外,有很多學(xué)者提出了android惡意軟件檢測的技術(shù),包括動(dòng)態(tài)分析和靜態(tài)分析。動(dòng)態(tài)分析是指在安裝程序執(zhí)行的過程中,對軟件行為進(jìn)行分析,靜態(tài)分析是指在安裝程序執(zhí)行之前,抽取程序的特征,如api和權(quán)限特征。靜態(tài)行為檢測通過逆向工程手段,與動(dòng)態(tài)行為檢測相比,因無須使用沙盒、虛擬機(jī),靜態(tài)行為檢測能耗更低,風(fēng)險(xiǎn)更小,對實(shí)時(shí)性要求更低。但是,目前android惡意軟件的靜態(tài)分析主要對api與權(quán)限特征的分類,分類精度不高。
綜上來看,由于移動(dòng)惡意軟件的數(shù)量呈爆炸式增長,變種層出不窮,給用戶和智能終端帶來了不可忽視的危害,android平臺(tái)由于其開放性成為了攻擊者首選的攻擊對象,需要一種有效的技術(shù)以檢測惡意軟件。
技術(shù)實(shí)現(xiàn)要素:
針對分類精度問題,本發(fā)明采用靜態(tài)分析技術(shù),通過混合特征對android惡意軟件進(jìn)行鑒別。具體來講,是通過android惡意軟件的多種特征,包括dalvik,api與權(quán)限特征,分別采用極限學(xué)習(xí)機(jī)進(jìn)行分類,然后使用線性組合方法鑒別惡意軟件,相較現(xiàn)有技術(shù)可以提高鑒別精度,降低誤報(bào)率。
為達(dá)到上述目的,本發(fā)明提出了一種基于混合特征的android惡意軟件檢測方法,包括:獲取dalvik特征數(shù)據(jù)、api特征數(shù)據(jù)、權(quán)限特征數(shù)據(jù);利用dalvik指令分類器、api分類器、權(quán)限分類器,分別對dalvik特征數(shù)據(jù)、api特征數(shù)據(jù)、權(quán)限特征數(shù)據(jù)采用極限學(xué)習(xí)機(jī)的算法進(jìn)行分類,建立分類模型,并根據(jù)該分類模型計(jì)算獲得預(yù)測標(biāo)簽;基于預(yù)測標(biāo)簽及dalvik指令分類器、api分類器、權(quán)限分類器的分類精度,利用線性組合方式進(jìn)行融合,計(jì)算獲得預(yù)測值,根據(jù)該預(yù)測值進(jìn)行惡意軟件的判斷。
為達(dá)到上述目的,本發(fā)明還提出了一種基于混合特征的android惡意軟件檢測系統(tǒng),包括:數(shù)據(jù)提取模塊,用于獲取dalvik特征數(shù)據(jù)、api特征數(shù)據(jù)、權(quán)限特征數(shù)據(jù);分類模塊,用于通過dalvik指令分類器、api分類器、權(quán)限分類器,分別對dalvik特征數(shù)據(jù)、api特征數(shù)據(jù)、權(quán)限特征數(shù)據(jù)采用極限學(xué)習(xí)機(jī)的算法進(jìn)行分類,建立分類模型,并根據(jù)該分類模型計(jì)算獲得預(yù)測標(biāo)簽;預(yù)測值計(jì)算模塊,用于基于預(yù)測標(biāo)簽及dalvik指令分類器、api分類器、權(quán)限分類器的分類精度,利用線性組合方式進(jìn)行融合,計(jì)算獲得預(yù)測值,根據(jù)該預(yù)測值進(jìn)行惡意軟件的判斷。
本發(fā)明提出的基于混合特征的android惡意軟件檢測方法及系統(tǒng),采用包括dalvik指令、api與權(quán)限的混合特征進(jìn)行android惡意軟件鑒別,可以有效提高分類精度,降低誤報(bào)率。并且還采用了極限學(xué)習(xí)機(jī)算法進(jìn)行分類,該方法無需進(jìn)行迭代,訓(xùn)練速度快,可以快速建立分類模型。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,并不構(gòu)成對本發(fā)明的限定。在附圖中:
圖1為本發(fā)明一實(shí)施例的基于混合特征的android惡意軟件檢測方法流程圖。
圖2為本發(fā)明一實(shí)施例的基于混合特征的android惡意軟件檢測系統(tǒng)結(jié)構(gòu)示意圖。
圖3為本發(fā)明一實(shí)施例的數(shù)據(jù)提取模塊結(jié)構(gòu)示意圖。
圖4為本發(fā)明一實(shí)施例的分類模塊結(jié)構(gòu)示意圖。
圖5為為本發(fā)明一實(shí)施例的預(yù)測值計(jì)算模塊結(jié)構(gòu)示意圖。
具體實(shí)施方式
以下配合圖示及本發(fā)明的較佳實(shí)施例,進(jìn)一步闡述本發(fā)明為達(dá)成預(yù)定發(fā)明目的所采取的技術(shù)手段。
圖1為本發(fā)明一實(shí)施例的基于混合特征的android惡意軟件檢測方法流程圖。如圖1所示,該方法包括:
步驟s101,獲取dalvik特征數(shù)據(jù)、api特征數(shù)據(jù)、權(quán)限特征數(shù)據(jù)。
具體的,提取dalvik特征數(shù)據(jù)是利用baksmali工具,通過反編譯dex文件,輸出dalvik匯編文件,提取dalvik特征數(shù)據(jù),使用特征向量表示android應(yīng)用軟件;如果出現(xiàn)了dalvik特征數(shù)據(jù),設(shè)置為1,否則設(shè)置為0。
提取api特征數(shù)據(jù)是利用dedexer工具,通過操作指令“java-jardedexer.jar-d<directory><dexfile>”將classes.dex文件反編譯成smali文件,在smali文件中提取該應(yīng)用軟件的api特征數(shù)據(jù);如果smali中出現(xiàn)了該api特征,設(shè)置為1,否則設(shè)置為0。
權(quán)限特征數(shù)據(jù)是通過解析androidmanifest.xml文件提取,并通過權(quán)限特征向量來表示;若該軟件申請了權(quán)限,設(shè)置為1;未申請?jiān)摍?quán)限,則設(shè)置為0。
步驟s102,利用dalvik指令分類器、api分類器、權(quán)限分類器,分別對dalvik特征數(shù)據(jù)、api特征數(shù)據(jù)、權(quán)限特征數(shù)據(jù)采用極限學(xué)習(xí)機(jī)的算法進(jìn)行分類,建立分類模型,并根據(jù)該分類模型計(jì)算獲得預(yù)測標(biāo)簽。
其中,具體步驟如下:
步驟s1021,在訓(xùn)練階段,隨機(jī)給已知樣本分配輸入權(quán)值與偏差,計(jì)算隱藏層節(jié)點(diǎn)的輸出,方法如下:
hij=g(wjxi+bj);i=1,2,…,n;j=1,2,…,k;(1)
其中,hij是第j個(gè)隱藏層節(jié)點(diǎn)的輸出,wj是連接第j個(gè)隱藏節(jié)點(diǎn)與輸入數(shù)據(jù)的權(quán)值,wj=[wj1,wj2,…,wjn]t,n為樣本的特征維度,t為在利用dalvik指令分類器對dalvik特征數(shù)據(jù)訓(xùn)練時(shí)、利用api分類器對api特征數(shù)據(jù)訓(xùn)練時(shí)或利用權(quán)限分類器對權(quán)限特征數(shù)據(jù)訓(xùn)練時(shí)對應(yīng)的已知樣本的分類標(biāo)簽,xi為第i個(gè)輸入樣本,bj是第j個(gè)隱藏層節(jié)點(diǎn)偏差,n是樣本數(shù)量,k是隱藏層節(jié)點(diǎn)數(shù)量,g是激活函數(shù)。
步驟s1022,根據(jù)隱藏層節(jié)點(diǎn)的輸出,隱藏層輸出矩陣記為h={hij}。
步驟s1023,連接隱藏層與輸出層節(jié)點(diǎn)的權(quán)值向量記為
其中,
步驟s1024,在測試階段,對于未知樣本,利用公式1計(jì)算未知樣本的隱藏層節(jié)點(diǎn)輸出h',然后分別計(jì)算獲得未知樣本的預(yù)測標(biāo)簽,計(jì)算方法為:
其中,t'為在利用dalvik指令分類器、api分類器或權(quán)限分類器測試時(shí)對應(yīng)的未知樣本的預(yù)測標(biāo)簽。其中,在利用dalvik指令分類器測試時(shí)對應(yīng)的未知樣本的預(yù)測標(biāo)簽為t'1,在利用api分類器測試時(shí)對應(yīng)的未知樣本的預(yù)測標(biāo)簽為t'2,為在利用權(quán)限分類器測試時(shí)對應(yīng)的未知樣本的預(yù)測標(biāo)簽為t'3。
步驟s103,基于預(yù)測標(biāo)簽及dalvik指令分類器、api分類器、權(quán)限分類器的分類精度,利用線性組合方式進(jìn)行融合,計(jì)算獲得預(yù)測值,根據(jù)該預(yù)測值進(jìn)行惡意軟件的判斷。
其中,具體步驟如下:
步驟s1031,將訓(xùn)練數(shù)據(jù)輸入至dalvik指令分類器、api分類器或權(quán)限分類器,獲得訓(xùn)練數(shù)據(jù)中每一樣本的樣本預(yù)測標(biāo)簽、樣本實(shí)際標(biāo)簽。
步驟s1032,對樣本預(yù)測標(biāo)簽、樣本實(shí)際標(biāo)簽進(jìn)行對比后獲得正確分類的惡意軟件的數(shù)量tp、正確分類的正常軟件的數(shù)量tn、將正常軟件誤認(rèn)為惡意軟件的數(shù)量fp、將惡意軟件誤認(rèn)為正常軟件的數(shù)量fn。
步驟s1033,計(jì)算獲得分類精度
步驟s1034,基于預(yù)測標(biāo)簽及dalvik指令分類器、api分類器、權(quán)限分類器的分類精度
其中,
步驟s1035,利用線性組合方式進(jìn)行融合,計(jì)算獲得預(yù)測值,方法如下:
f(x)=w1t'1+w2t'2+w3t'3;(7)
其中,f(x)為預(yù)測值,t'1為在利用dalvik指令分類器測試時(shí)對應(yīng)的未知樣本的預(yù)測標(biāo)簽,t'2為在利用api分類器測試時(shí)對應(yīng)的未知樣本的預(yù)測標(biāo)簽,t'3為在利用權(quán)限分類器測試時(shí)對應(yīng)的未知樣本的預(yù)測標(biāo)簽。
步驟s1036,根據(jù)該預(yù)測值進(jìn)行惡意軟件的判斷,當(dāng)f(x)≥0.5時(shí),判定為惡意軟件,否則為正常軟件。
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種基于混合特征的android惡意軟件檢測系統(tǒng),如下面的實(shí)施例所述。由于該系統(tǒng)解決問題的原理與上述方法相似,因此該系統(tǒng)的實(shí)施可以參見上述方法的實(shí)施,重復(fù)之處不再贅述。以下所使用的術(shù)語“模塊”可以實(shí)現(xiàn)預(yù)定功能的軟件和/或硬件的組合。盡管以下實(shí)施例所描述的裝置較佳地以軟件來實(shí)現(xiàn),但是硬件,或者軟件和硬件的組合的實(shí)現(xiàn)也是可能并被構(gòu)想的。
圖2為本發(fā)明一實(shí)施例的基于混合特征的android惡意軟件檢測系統(tǒng)結(jié)構(gòu)示意圖。如圖2所示,該系統(tǒng)包括:
數(shù)據(jù)提取模塊100,用于獲取dalvik特征數(shù)據(jù)、api特征數(shù)據(jù)、權(quán)限特征數(shù)據(jù);
分類模塊200,用于通過dalvik指令分類器、api分類器、權(quán)限分類器,分別對dalvik特征數(shù)據(jù)、api特征數(shù)據(jù)、權(quán)限特征數(shù)據(jù)采用極限學(xué)習(xí)機(jī)的算法進(jìn)行分類,建立分類模型,并根據(jù)該分類模型計(jì)算獲得預(yù)測標(biāo)簽;
預(yù)測值計(jì)算模塊300,用于基于預(yù)測標(biāo)簽及dalvik指令分類器、api分類器、權(quán)限分類器的分類精度,利用線性組合方式進(jìn)行融合,計(jì)算獲得預(yù)測值,根據(jù)該預(yù)測值進(jìn)行惡意軟件的判斷。
進(jìn)一步的,圖3為本發(fā)明一實(shí)施例的數(shù)據(jù)提取模塊結(jié)構(gòu)示意圖。如圖3所示,數(shù)據(jù)提取模塊100包括:
dalvik特征數(shù)據(jù)提取單元110,用于利用baksmali工具獲取android應(yīng)用軟件的dalvik特征數(shù)據(jù),通過反編譯dex文件,輸出dalvik匯編文件,提取dalvik特征數(shù)據(jù),并使用特征向量表示該應(yīng)用軟件。
api特征數(shù)據(jù)提取單元120,用于利用dedexer工具獲取api特征數(shù)據(jù),通過操作指令將classes.dex文件反編譯成smali文件,在smali文件中提取該應(yīng)用軟件的api特征數(shù)據(jù)。
權(quán)限特征數(shù)據(jù)獲取單元130,用于通過解析androidmanifest.xml文件獲取權(quán)限特征數(shù)據(jù),并通過權(quán)限特征向量來表示該應(yīng)用軟件。
進(jìn)一步的,圖4為本發(fā)明一實(shí)施例的分類模塊結(jié)構(gòu)示意圖。如圖4所示,分類模塊200包括:
訓(xùn)練單元210,用于在訓(xùn)練階段,隨機(jī)給已知樣本分配輸入權(quán)值與偏差,計(jì)算隱藏層節(jié)點(diǎn)的輸出,方法如下:
hij=g(wjxi+bj);i=1,2,…,n;j=1,2,…,k;(1)
其中,hij是第j個(gè)隱藏層節(jié)點(diǎn)的輸出,wj是連接第j個(gè)隱藏節(jié)點(diǎn)與輸入數(shù)據(jù)的權(quán)值,wj=[wj1,wj2,…,wjn]t,n為樣本的特征維度,t為在利用dalvik指令分類器對dalvik特征數(shù)據(jù)訓(xùn)練時(shí)、利用api分類器對api特征數(shù)據(jù)訓(xùn)練時(shí)或利用權(quán)限分類器對權(quán)限特征數(shù)據(jù)訓(xùn)練時(shí)對應(yīng)的已知樣本的分類標(biāo)簽,xi為第i個(gè)輸入樣本,bj是第j個(gè)隱藏層節(jié)點(diǎn)偏差,n是樣本數(shù)量,k是隱藏層節(jié)點(diǎn)數(shù)量,g是激活函數(shù);
根據(jù)隱藏層節(jié)點(diǎn)的輸出,隱藏層輸出矩陣記為h={hij};
連接隱藏層與輸出層節(jié)點(diǎn)的權(quán)值向量記為
其中,
測試單元220,用于在測試階段,對于未知樣本,利用公式1計(jì)算未知樣本的隱藏層節(jié)點(diǎn)輸出h',然后分別計(jì)算獲得未知樣本的預(yù)測標(biāo)簽,計(jì)算方法為:
其中,t'為在利用dalvik指令分類器、api分類器或權(quán)限分類器測試時(shí)對應(yīng)的未知樣本的預(yù)測標(biāo)簽。
進(jìn)一步的,圖5為本發(fā)明一實(shí)施例的預(yù)測值計(jì)算模塊結(jié)構(gòu)示意圖。如圖5所示,預(yù)測值計(jì)算模塊300包括:
權(quán)重計(jì)算單元310,基于預(yù)測標(biāo)簽及dalvik指令分類器、api分類器、權(quán)限分類器的分類精度
其中,
融合單元320,用于利用線性組合方式進(jìn)行融合,計(jì)算獲得預(yù)測值,方法如下:
f(x)=w1t'1+w2t'2+w3t'3;(7)
其中,f(x)為預(yù)測值,t'1為在利用dalvik指令分類器測試時(shí)對應(yīng)的未知樣本的預(yù)測標(biāo)簽,t'2為在利用api分類器測試時(shí)對應(yīng)的未知樣本的預(yù)測標(biāo)簽,t'3為在利用權(quán)限分類器測試時(shí)對應(yīng)的未知樣本的預(yù)測標(biāo)簽;
判斷單元330,用于根據(jù)該預(yù)測值進(jìn)行惡意軟件的判斷,當(dāng)f(x)≥0.5時(shí),判定為惡意軟件,否則為正常軟件。
再結(jié)合圖5來看,預(yù)測值計(jì)算模塊300還包括:
樣本標(biāo)簽獲取單元340,用于將訓(xùn)練數(shù)據(jù)輸入至dalvik指令分類器、api分類器或權(quán)限分類器,獲得訓(xùn)練數(shù)據(jù)中每一樣本的樣本預(yù)測標(biāo)簽、樣本實(shí)際標(biāo)簽;
對比單元350,用于對樣本預(yù)測標(biāo)簽、樣本實(shí)際標(biāo)簽進(jìn)行對比后獲得正確分類的惡意軟件的數(shù)量tp、正確分類的正常軟件的數(shù)量tn、將正常軟件誤認(rèn)為惡意軟件的數(shù)量fp、將惡意軟件誤認(rèn)為正常軟件的數(shù)量fn;
分類精度計(jì)算單元360,用于計(jì)算獲得分類精度
本發(fā)明提出的基于混合特征的android惡意軟件檢測方法及系統(tǒng),采用包括dalvik指令、api與權(quán)限的混合特征進(jìn)行android惡意軟件鑒別,可以有效提高分類精度,降低誤報(bào)率。并且還采用了極限學(xué)習(xí)機(jī)算法進(jìn)行分類,該方法無需進(jìn)行迭代,訓(xùn)練速度快,可以快速建立分類模型。
以上所述的具體實(shí)施例,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。