中國人民解放軍63637部隊(duì) 劉曜碩 張曉楠 夏文君
智能手機(jī)的使用給人們學(xué)習(xí)、生活提供了便利的同時(shí),Android平臺(tái)惡意代碼會(huì)對(duì)系統(tǒng)正常運(yùn)行產(chǎn)生不利影響。目前使用的Android惡意代碼分析方法應(yīng)用范圍有限,實(shí)際效果并不是很好。為了改善這種情況,本文通過分析Android平臺(tái)的特點(diǎn),提出了基于惡意軟件基因的檢測(cè)框架和分類框架,從而改善檢測(cè)效果,為Android平臺(tái)安全提供可靠保障。
Android系統(tǒng)操作性比較強(qiáng),目前普遍應(yīng)用在移動(dòng)終端上,用戶可以獲得更好的體驗(yàn)。由于系統(tǒng)具有開放性,在網(wǎng)絡(luò)環(huán)境下容易受到惡意軟件的侵入,導(dǎo)致用戶隱私泄露,造成巨大經(jīng)濟(jì)損失。為了有效預(yù)防侵害,要注重Android惡意軟件檢測(cè)和分類的研究,并將其有效應(yīng)用到實(shí)際中去,不斷提升手機(jī)應(yīng)用安全性。
所謂軟件基因,是指軟件中攜帶功能信息的二進(jìn)制片段,其接近于生物體基因,可以將軟件體信息表達(dá)出來,研究軟件基因的重點(diǎn)要放在軟件的同源性和相似性分析上。惡意軟件中的二進(jìn)制片段具有功能信息,也就是惡意軟件基因,Android惡意軟件中的惡意基因非常多,對(duì)系統(tǒng)運(yùn)行構(gòu)成了嚴(yán)重威脅。
目前提取代碼段基因最常用的方式是對(duì)數(shù)據(jù)流進(jìn)行分析,為了便于更好的研究,需要轉(zhuǎn)化數(shù)據(jù)流的形式,使其變?yōu)閡se-def鏈,將軟件中的數(shù)據(jù)從使用到定義的流向準(zhǔn)確表現(xiàn)出來。研究中用Soot工具來分析代碼段,可以獲取usedef鏈。采用Jimple語言,這是一種三地扯語句,非常的方便,運(yùn)用下列算法可以獲取use-def鏈。
算法1
輸入:Android apk文件
1 遍歷 一個(gè)apk的所有基本塊的控制流圖:
2 遍歷 一個(gè)基本塊中的每一條語句:
3 獲取語句中的定義值和使用值:
......
......
......
在算法1中,我們進(jìn)行分析時(shí)采用Soot工具,之后會(huì)產(chǎn)生一種控制流圖,從基本塊控制流圖中將所有數(shù)據(jù)的定義值和使用值提取出來。對(duì)一個(gè)值定義時(shí)就產(chǎn)生了相應(yīng)的use-def鏈。為了深入的研究,要用形式化方式將use-def鏈表示出來,轉(zhuǎn)變?yōu)樾碌男问?。Jimple語句調(diào)用語句會(huì)產(chǎn)生方法的調(diào)用,可以獲取代碼段的軟件基因。
獲取Android軟件資源文件可以采用多種方法,運(yùn)用apktool工具進(jìn)行反編譯會(huì)產(chǎn)生文件夾,資源文件被有效保存。資源文件有多種形式,其中比較常見的是圖片文件和配置文件,要進(jìn)行提取基因的操作。采用圖像指紋方法處理圖片文件;同其他技術(shù)相比較,圖像指紋具有適用性強(qiáng)的特點(diǎn)。在實(shí)際處理過程中,為了獲得圖像指紋,在整個(gè)過程中要進(jìn)行有效處理,嚴(yán)格按照流程執(zhí)行,可以達(dá)到預(yù)期效果。
預(yù)備基因庫是指獲取軟件代碼段和資源段基因,惡意軟件的預(yù)備基因庫和其他預(yù)備基因庫不同,其最顯著特征是數(shù)據(jù)量大。語句序列的類型和調(diào)用方法為代碼段基因組成形式,而且沒有方法調(diào)用的語句序列存在重復(fù)率高的情況,這時(shí)會(huì)發(fā)現(xiàn)多種語句序列提取出的基因是相同的。有的基因沒有普遍性,存在于少數(shù)惡意樣本中,檢測(cè)、分類惡意代碼面臨更大難度。
區(qū)分惡意性樣本和非惡意性樣本,軟件基因庫構(gòu)建之前需要進(jìn)行相應(yīng)處理,這是關(guān)鍵的一個(gè)環(huán)節(jié)。預(yù)處理惡意代碼基因和非惡意代碼基因,結(jié)束之后再進(jìn)行綜合和去重,惡意軟件檢測(cè)基因庫就可以獲得。
提取出所有訓(xùn)練集樣本的基因,檢測(cè)模型分類器選擇支持向量機(jī),用惡意樣本訓(xùn)練集和非惡意樣本訓(xùn)練集訓(xùn)練支持向量集的參數(shù),在樣本測(cè)試集樣本中采用分類器。
處理訓(xùn)練集樣本時(shí),將每個(gè)測(cè)試集樣本中的軟件基因提取出來,進(jìn)而量化惡意軟件檢測(cè)基因庫。測(cè)試集樣本中包含惡意性標(biāo)簽,對(duì)本檢測(cè)模型的準(zhǔn)確性進(jìn)行驗(yàn)證,將檢測(cè)結(jié)果標(biāo)簽和參考標(biāo)簽相比較,檢驗(yàn)?zāi)P蜏?zhǔn)確性的指標(biāo)采用機(jī)器學(xué)習(xí)中常用的準(zhǔn)確率和召回率。準(zhǔn)確率和召回率分別是指惡意樣本中被正確判斷為惡意的比例和所有非惡意樣本中被正確檢測(cè)為非惡意樣本的比例。
研究軟件基因惡意代碼的目的是分析惡意代碼的同源性,對(duì)于家族特性將惡意軟件分類模型構(gòu)建出來,有效分類惡意代碼,并起到驗(yàn)證作用。
無法對(duì)惡意性與非惡意性樣本的基因進(jìn)行區(qū)分就稱之為惡意性特征的基因,需將這類基因刪除。非惡意性樣本在本次實(shí)驗(yàn)中總共有2000個(gè),惡意與非惡意軟件基因有重合部分,在刪除重合部分之前要先提取出惡意軟件基因,確保刪除的可靠性。各家族惡意軟件特性的反映僅靠惡意軟件基因庫的構(gòu)建是不行的。對(duì)惡意軟件研究之前要進(jìn)行分類處理,各家族惡意軟件分類的前提條件是篩選,刪除掉出現(xiàn)頻率較低的基因,就可以獲得各家族的基因庫。最后要綜合各家族基因庫,就形成了惡意代碼分類基因庫。
構(gòu)建惡意代碼分類基因庫時(shí)要分類已知惡意代碼的家族,但從實(shí)際情況來看,通常使用的惡意代碼沒有家族標(biāo)簽。在本文研究中對(duì)標(biāo)簽惡意代碼樣本有兩種方法。一種方法是在獲取家族標(biāo)簽時(shí)要采用AVClass,運(yùn)用反病毒引擎來命名惡意代碼,通過分析將各命名中表示家族名稱的關(guān)鍵字段提取出,再命名惡意代碼。另一種方法是以基因?yàn)橹行木垲悙阂獯a,根據(jù)惡意代碼基礎(chǔ)基因庫,從惡意代碼樣本中提取向量。
確定基于SVM的分類器為分類框架,以往SVM是一個(gè)二分分類器,應(yīng)用范圍有限,對(duì)一個(gè)集合的樣本進(jìn)行劃分,變?yōu)檎?fù)兩類。傳統(tǒng)模式存在一些問題,為了改善效果要采用“單對(duì)多”的方法,構(gòu)造出功能強(qiáng)大的SVM多分類器,對(duì)多個(gè)家族進(jìn)行區(qū)分。多分類支持向量機(jī)的訓(xùn)練和二分分類器的訓(xùn)練幾乎相同,對(duì)所有訓(xùn)練集惡意代碼要進(jìn)行抽象處理,樣本集合用于訓(xùn)練支持向量機(jī),可以獲得多分類器的所有參數(shù),為后期研究做好準(zhǔn)備。
基于惡意軟件分類基因庫,提出測(cè)試集樣本基因后轉(zhuǎn)變?yōu)楦呔S向量。準(zhǔn)確率數(shù)組、召回率數(shù)組等是分析分類結(jié)果的重要依據(jù),要將每個(gè)家族看作是正樣本,可以保證計(jì)算的正確性,其余的是負(fù)樣本,將每個(gè)家族的分類準(zhǔn)確率和召回率計(jì)算出來。
數(shù)據(jù)集準(zhǔn)備,本文中樣本集中的惡意樣本和非惡意樣本分別是19998個(gè)和2000個(gè),要進(jìn)行處理才可有效?;跇颖炯@取惡意樣本基因有4411條,非惡意樣本基因2082條,為了提升實(shí)驗(yàn)的準(zhǔn)確性,對(duì)惡意樣本和非惡意樣本采用隨意抽取方法;并對(duì)其進(jìn)行測(cè)試,發(fā)現(xiàn)準(zhǔn)確率要高于召回率。對(duì)檢測(cè)結(jié)果進(jìn)行分析,可以發(fā)現(xiàn)召回率高和對(duì)惡意代碼的惡意性檢測(cè)準(zhǔn)確性較高有著直接關(guān)系。這樣可以得到重要結(jié)論,基于惡意代碼基因的分析框架的關(guān)鍵是惡意代碼間的同源性,正常代碼處理時(shí)非常接近于原始代碼基因,非惡意代碼檢測(cè)錯(cuò)誤的情況容易出現(xiàn)。為了提升系統(tǒng)安全性,目前采用的防病毒引擎存在不足之處,會(huì)引發(fā)一系列問題。
在惡意代碼分類實(shí)驗(yàn)中,對(duì)樣本集中的惡意代碼進(jìn)行劃分,使其變?yōu)槎鄠€(gè)家族。由于很難實(shí)現(xiàn)全面研究,對(duì)所有惡意代碼家族進(jìn)行了選擇,排序依據(jù)為樣本容量?;陂L尾效應(yīng),這20個(gè)家族只保留了13567個(gè)惡意樣本。為了確保實(shí)驗(yàn)統(tǒng)一性,要控制變量,在實(shí)驗(yàn)中采用同樣數(shù)量的惡意樣本。在賦予標(biāo)簽中對(duì)樣本進(jìn)行分類。在兩個(gè)分類實(shí)驗(yàn)中要選擇不同家族。分析不同分類器的測(cè)試結(jié)果性能度量值,基于基因?qū)阂獯a的家族進(jìn)行研究具有重要意義。AVClass為參考標(biāo)簽,不適用于少數(shù)家族的惡意代碼分類。對(duì)反病毒引擎檢測(cè)結(jié)果進(jìn)行整理、分析,發(fā)現(xiàn)本實(shí)驗(yàn)中Android惡意代碼檢測(cè)率較高?;诨虻难芯糠椒ê鸵酝姆床《疽嬗兄黠@差別,從分類結(jié)果上來看,較高重合率對(duì)基因?qū)阂廛浖诸惙治隹梢云鸬酱龠M(jìn)作用?;诰垲惤Y(jié)果的參考標(biāo)簽和分類結(jié)果基本相同,對(duì)基于基因的分類可以基本契合聚類結(jié)果進(jìn)行驗(yàn)證。
結(jié)語:綜上所述,惡意軟件對(duì)Android系統(tǒng)會(huì)產(chǎn)生不利影響,造成一系列問題,為了有效應(yīng)對(duì),要加強(qiáng)惡意檢測(cè)軟件的開發(fā),為系統(tǒng)安全性提供可靠保障。本文從基因的角度出發(fā),對(duì)Android惡意軟件檢測(cè)與分類進(jìn)行分析,可以及時(shí)發(fā)現(xiàn)并處理惡意軟件,保證系統(tǒng)處于正常運(yùn)行狀態(tài)中,讓用戶獲得更佳使用體驗(yàn)。