本發(fā)明涉及軟件安全技術(shù)領(lǐng)域,特別涉及一種基于改進(jìn)森林算法的android惡意軟件檢測方法。
背景技術(shù):
android系統(tǒng)是一款基于linux內(nèi)核的開源操作系統(tǒng),已經(jīng)成為目前市場占有量最大的移動設(shè)備終端平臺,然而它的開放性也使它成為惡意軟件最大的發(fā)展平臺;針對應(yīng)用市場上海量的移動應(yīng)用軟件,單純依靠人來進(jìn)行檢測分類早已過時(shí),機(jī)器學(xué)習(xí)已經(jīng)成為主流。
目前機(jī)器學(xué)習(xí)中的很多分類算法被應(yīng)用于android惡意軟件檢測中。張怡婷等人提出一種基于樸素貝葉斯(
然而,上述研究只針對android應(yīng)用的權(quán)限信息進(jìn)行檢測分析,檢測范圍不夠全面。liw等利用危險(xiǎn)api調(diào)用和權(quán)限組合創(chuàng)建了svm分類器,從而自動的將惡意軟件分辨出來。feizollaha等應(yīng)用k均值(k-means)算法和微小批處理k均值算法(minibatchk-means)兩種聚類算法實(shí)現(xiàn)對惡意軟件的分類。上述兩人的研究雖然實(shí)現(xiàn)了對android惡意軟件的檢測,但是檢測精度都不夠高。
yuanz等利用深度學(xué)習(xí)算法實(shí)現(xiàn)了一個(gè)在線惡意軟件檢測工具droiddetector,實(shí)現(xiàn)了android應(yīng)用的在線檢測分析,但是其算法復(fù)雜度較高,對計(jì)算機(jī)內(nèi)存消耗較大。文偉平等提出了基于手機(jī)端和服務(wù)器端的協(xié)作惡意代碼檢測方案,杭?xì)g等設(shè)計(jì)了一種三層混合系綜算法(thea)綜合評判android應(yīng)用的惡意行為,但這兩個(gè)方法在技術(shù)實(shí)現(xiàn)方面相對比較復(fù)雜。
綜上所述,目前采用機(jī)器學(xué)習(xí)算法的檢測研究成果已經(jīng)比較成熟,但是在檢測精度和檢測效率、實(shí)現(xiàn)復(fù)雜度等方面還存在諸多不足,而這些問題的解決必然需要對檢測算法進(jìn)行研究和改進(jìn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種基于改進(jìn)森林算法的android惡意軟件檢測方法。
為此,本發(fā)明技術(shù)方案如下:
一種基于改進(jìn)森林算法的android惡意軟件檢測方法,包括按順序進(jìn)行的下列步驟:
1)獲取數(shù)據(jù)集的s01階段:從應(yīng)用商店、其他網(wǎng)絡(luò)論壇或者研究機(jī)構(gòu)中獲取良性軟件和惡意軟件的安裝包文件,然后進(jìn)入s02階段;
2)逆向處理的s02階段:將步驟1)中獲得的每一個(gè)安裝包文件分別反編譯得到一個(gè)含androidmanifest.xml文件的反編譯文件夾,并使用python語言中的xml.dom模塊和io模塊對androidmanifest.xml文件進(jìn)行解析,得到permission標(biāo)簽和intent標(biāo)簽的屬性,然后進(jìn)入s03階段;
3)提取特征向量的s03階段:統(tǒng)計(jì)所有安裝包文件中每個(gè)屬性出現(xiàn)的次數(shù),并選取出現(xiàn)次數(shù)大于安裝包文件總數(shù)20%的屬性組成特征屬性集;利用匹配算法,判斷每一個(gè)安裝包文件是否含有特征屬性集對應(yīng)的元素,根據(jù)判斷結(jié)果生成對應(yīng)每一個(gè)安裝包文件的特征向量,并將所有的特征向量形成特征向量集合,然后進(jìn)入s04階段;
4)對特征向量進(jìn)行優(yōu)化的s04階段:采用特征選擇算法對特征向量集合中的特征屬性進(jìn)行優(yōu)化排序,并根據(jù)排序結(jié)果重新組合形成優(yōu)化特征向量,并將此優(yōu)化特征向量隨機(jī)抽取10%作為測試集,剩余的90%作為訓(xùn)練集合,然后進(jìn)入s05階段;
5)生成決策樹集的s05階段:對步驟4)中生成的訓(xùn)練集合采用bagging方法進(jìn)行抽樣,將抽取到的樣本作為待訓(xùn)練子集,未被抽到的樣本形成oob數(shù)據(jù)集,訓(xùn)練待訓(xùn)練子集按照決策樹生成算法生成k棵決策樹,k棵決策樹形成決策樹集合,然后進(jìn)入s06階段;
6)計(jì)算決策樹權(quán)重的s06階段:將oob數(shù)據(jù)集輸入決策樹集合中得出每棵決策樹的分類正確率,以此作為每棵決策樹的權(quán)重,然后進(jìn)入s07階段;
7)生成最終分類結(jié)果的s07階段:將步驟4)中得到的測試集輸入決策樹集合中生成分類結(jié)果,并利用決策樹權(quán)重對分類結(jié)果進(jìn)行加權(quán)投票,形成得出最終分類結(jié)果,然后進(jìn)入s08階段;
8)對分類結(jié)果進(jìn)行評估的s08階段:從真正率、假正率、分類精度對分類結(jié)果進(jìn)行評估,判斷該基于改進(jìn)森林算法的用于生成android惡意軟件檢測模型是否符合檢測要求。
所述的步驟2)中在反編譯生成的每個(gè)文件夾下新建permission.txt、action.txt和category.txt文檔,用于存儲該安裝包文件的屬性值。
所述的步驟3)中對所有安裝包文件的特征向量取并集得到特征向量集合。
所述的步驟3)中每一個(gè)特征向量末位均為安裝文件包類別標(biāo)志位。
所述的步驟4)中的特征向量選擇算法為信息增益算法或relieff算法。
所述的步驟5)中bagging方法進(jìn)行抽樣時(shí)采用有放回的抽樣方式。
所述的步驟5)利用決策樹生成過程中選擇最優(yōu)屬性進(jìn)行節(jié)點(diǎn)分裂,分裂過程完全分裂不進(jìn)行剪枝。
與現(xiàn)有技術(shù)相比,該基于改進(jìn)森林算法的android惡意軟件檢測方法與傳統(tǒng)的檢測方法相比具有更高的分類精度,提高了惡意軟件檢測的正確率,降低了由于檢測錯(cuò)誤而導(dǎo)致android系統(tǒng)遭受攻擊的概率。
附圖說明
圖1為本發(fā)明提供的基于改進(jìn)森林算法的android惡意軟件檢測方法流程圖。
具體實(shí)施方式
下面結(jié)合附圖及具體實(shí)施例對本發(fā)明做進(jìn)一步的說明,但下述實(shí)施例絕非對本發(fā)明有任何限制。
如圖1所示,該基于改進(jìn)森林算法的android惡意軟件檢測方法,包括按順序進(jìn)行的下列步驟:
1)獲取數(shù)據(jù)集的s01階段:從應(yīng)用商店、其他網(wǎng)絡(luò)論壇或者研究機(jī)構(gòu)中獲取良性軟件和惡意軟件的安裝包文件,然后進(jìn)入s02階段;
2)逆向處理的s02階段:將步驟1)中獲得的每一個(gè)安裝包文件分別反編譯得到一個(gè)含androidmanifest.xml文件的反編譯文件夾,并使用python語言中的xml.dom模塊和io模塊對androidmanifest.xml文件進(jìn)行解析,得到permission標(biāo)簽和intent標(biāo)簽的屬性,然后進(jìn)入s03階段;
3)提取特征向量的s03階段:統(tǒng)計(jì)所有安裝包文件中每個(gè)屬性出現(xiàn)的次數(shù),并選取出現(xiàn)次數(shù)大于安裝包文件總數(shù)20%的屬性組成特征屬性集;利用匹配算法,判斷每一個(gè)安裝包文件是否含有特征屬性集對應(yīng)的元素,根據(jù)判斷結(jié)果生成對應(yīng)每一個(gè)安裝包文件的特征向量,并將所有的特征向量形成特征向量集合,然后進(jìn)入s04階段;
4)對特征向量進(jìn)行優(yōu)化的s04階段:采用特征選擇算法對特征向量集合中的特征屬性進(jìn)行優(yōu)化排序,并根據(jù)排序結(jié)果重新組合形成優(yōu)化特征向量,并將此優(yōu)化特征向量隨機(jī)抽取10%作為測試集,剩余的90%作為訓(xùn)練集合,然后進(jìn)入s05階段;
5)生成決策樹集的s05階段:對步驟4)中生成的訓(xùn)練集合采用bagging方法進(jìn)行抽樣,將抽取到的樣本作為待訓(xùn)練子集,未被抽到的樣本形成oob數(shù)據(jù)集,訓(xùn)練待訓(xùn)練子集按照決策樹生成算法生成k棵決策樹,k棵決策樹形成決策樹集合,然后進(jìn)入s06階段;
6)計(jì)算決策樹權(quán)重的s06階段:將oob數(shù)據(jù)集輸入決策樹集合中得出每棵決策樹的分類正確率,以此作為每棵決策樹的權(quán)重,然后進(jìn)入s07階段;
7)生成最終分類結(jié)果的s07階段:將步驟4)中得到的測試集輸入決策樹集合中生成分類結(jié)果,并利用決策樹權(quán)重對分類結(jié)果進(jìn)行加權(quán)投票,得出最終分類結(jié)果,然后進(jìn)入s08階段;
8)對分類結(jié)果進(jìn)行評估的s08階段:從真正率、假正率、分類精度對分類結(jié)果進(jìn)行評估,判斷該基于改進(jìn)森林算法的用于生成android惡意軟件檢測模型是否符合檢測要求。
所述的步驟2)中在反編譯生成的每個(gè)文件夾下新建permission.txt、action.txt和category.txt文檔,用于存儲該安裝包文件的屬性值。
所述的步驟3)中對所有安裝包文件的特征向量取并集得到特征向量集合。
所述的步驟3)中每一個(gè)特征向量末位均為安裝文件包類別標(biāo)志位。
所述的步驟4)中的特征向量選擇算法為信息增益算法或relieff算法。
所述的步驟5)中bagging方法進(jìn)行抽樣時(shí)采用有放回的抽樣方式。
所述的步驟5)利用決策樹生成過程中選擇最優(yōu)屬性進(jìn)行節(jié)點(diǎn)分裂,分裂過程完全分裂不進(jìn)行剪枝。
本發(fā)明提供的基于改進(jìn)森林算法的android惡意軟件檢測方法的實(shí)施過程如下:
首先,從應(yīng)用商店、其他網(wǎng)絡(luò)論壇或者研究機(jī)構(gòu)中獲取良性軟件和惡意軟件的安裝包文件,并將獲得的每一個(gè)安裝包文件反分別編譯得到一個(gè)含有androidmanifest.xml文件的反編譯文件夾,并在反編譯文件夾新建permission.txt、action.txt和category.txt文檔,用于存儲該安裝包文件的屬性值,使用python語言中的xml.dom模塊和io模塊對androidmanifest.xml文件進(jìn)行解析,得到permission標(biāo)簽屬性permission及intent標(biāo)簽屬性action和category;并將得到的permission、action和category屬性分別存儲到permission.txt、action.txt和category.txt文檔中;
其次,統(tǒng)計(jì)所有安裝包文件中permission、action和category屬性出現(xiàn)的次數(shù),并選取出現(xiàn)次數(shù)大于安裝包文件總數(shù)20%的屬性組成特征屬性集,利用匹配算法,判斷每一個(gè)安裝包文件是否含有特征屬性集對應(yīng)的元素,根據(jù)判斷結(jié)果生成對應(yīng)每一個(gè)安裝包文件的特征向量,特征向量中的元素可以取值“1”或“0”,“1”表示該安裝包文件含有對應(yīng)屬性,“0”則表示該安裝包文件不含有對應(yīng)屬性,與此同時(shí),在特征向量末尾添加一標(biāo)志位,標(biāo)志位可以取值“ben”或“mal”,“ben”表示該應(yīng)用為良性軟件,“mal”表示該apk應(yīng)用為惡意軟件;且將所有的特征向量形成特征向量集合;
再次,采用信息增益算法或relieff算法對特征向量集合中的特征屬性進(jìn)行優(yōu)化排序,并根據(jù)優(yōu)化排序結(jié)果重新組合形成優(yōu)化特征向量,并將此優(yōu)化特征向量隨機(jī)抽取10%作為測試集,剩余的90%形成訓(xùn)練集;
然后,對上述生成的訓(xùn)練集合采用bagging方法進(jìn)行有放回地抽樣,將抽取到的樣本作為待訓(xùn)練子集,未被抽到的樣本形成oob數(shù)據(jù)集;訓(xùn)練待訓(xùn)練子集并按照c4.5決策樹生成算法或cart決策樹生成算法選擇最優(yōu)屬性進(jìn)行節(jié)點(diǎn)分裂,分裂過程完全分裂不進(jìn)行剪枝,從而生成一棵決策樹,重復(fù)上面的決策樹生成步驟k次,生成k棵決策樹,k棵決策樹形成決策樹集合;
接著,將oob數(shù)據(jù)集輸入決策樹集合中得出每棵決策樹的分類正確率,以此作為每棵決策樹的權(quán)重;
緊接著,將從優(yōu)化特征向量中抽取得到的測試集輸入決策樹集合中生成分類結(jié)果,并利用決策樹權(quán)重對分類結(jié)果進(jìn)行加權(quán)投票,得出最終分類結(jié)果;
最后,從真正率、假正率、分類精度對分類結(jié)果進(jìn)行評估,判斷該基于改進(jìn)森林算法是否符合檢測要求;其中,真正性(truepositive,tp)指的是實(shí)際為惡意軟件,被識別為惡意軟件;假正性(falsepositive,fp)指的是實(shí)際為良性軟件,被識別為惡意軟件;真負(fù)性(truenegative,tn)指的是實(shí)際為良性軟件,被識別為良性軟件;假負(fù)性(falsenegative,fn)指的是實(shí)際為惡意軟件,被識別為良性軟件;真正率(truepositiverate,tpr)=tp/(tp+fn),表示識別出的惡意軟件占實(shí)際惡意軟件的比例;假正率(falsepositiverate,fpr)=fp/(fp+tn),表示所識別出的惡意軟件占實(shí)際良性軟件的比例;分類精度(accuracy,acc)=(tp+tn)/(tp+tn+fp+fn),用來衡量總體分類精度,該值越高則分類效果越好。
表1為不同分類算法的分類效果對比表;從表1中可以看出,本發(fā)明提出的改進(jìn)森林算法的分類精度高達(dá)98%,優(yōu)于傳統(tǒng)森林算法,并且分類精度明顯高于其他幾類分類算法;表2為不同分類算法的建模時(shí)間對比表,從表2中可以看出在建模時(shí)間上,改進(jìn)的森林算法的處理時(shí)間與其他幾類算法相比時(shí)間較長;理由是:首先,森林算法本身是一種集成學(xué)習(xí)算法,與單個(gè)分類器相比,具有更好的分類效果;其次,改進(jìn)的森林算法對森林算法的投票原則進(jìn)行了改進(jìn),對強(qiáng)分類器賦予較高的權(quán)重值,而對弱分類器賦予較低的權(quán)重值,導(dǎo)致分類效果提高,但建模時(shí)間相對增加。
表1
表2