一种基于改进森林算法的Android恶意软件检测方法与流程

文档序号:11458822阅读:159来源:国知局

本发明涉及软件安全技术领域,特别涉及一种基于改进森林算法的android恶意软件检测方法。



背景技术:

android系统是一款基于linux内核的开源操作系统,已经成为目前市场占有量最大的移动设备终端平台,然而它的开放性也使它成为恶意软件最大的发展平台;针对应用市场上海量的移动应用软件,单纯依靠人来进行检测分类早已过时,机器学习已经成为主流。

目前机器学习中的很多分类算法被应用于android恶意软件检测中。张怡婷等人提出一种基于朴素贝叶斯(bayes,nb)的android应用恶意行为识别方法,抽取软件是否申请过多权限、是否存在敏感权限组合等作为分类属性,通过对android安全框架的扩展,实现了对恶意行为的实时分析和处理;张锐和杨吉云利用android权限间、android权限和软件恶意倾向间的相关性,通过改进贝叶斯算法实现了恶意软件的检测;许艳萍等使用android权限信息作为特征并采用信息增益(ig,informationgain)算法对其进行优化选择,再利用拉普拉斯校准和乘数取自然对数对nb算法进行改进,从而对android恶意应用进行分析检测。

然而,上述研究只针对android应用的权限信息进行检测分析,检测范围不够全面。liw等利用危险api调用和权限组合创建了svm分类器,从而自动的将恶意软件分辨出来。feizollaha等应用k均值(k-means)算法和微小批处理k均值算法(minibatchk-means)两种聚类算法实现对恶意软件的分类。上述两人的研究虽然实现了对android恶意软件的检测,但是检测精度都不够高。

yuanz等利用深度学习算法实现了一个在线恶意软件检测工具droiddetector,实现了android应用的在线检测分析,但是其算法复杂度较高,对计算机内存消耗较大。文伟平等提出了基于手机端和服务器端的协作恶意代码检测方案,杭欢等设计了一种三层混合系综算法(thea)综合评判android应用的恶意行为,但这两个方法在技术实现方面相对比较复杂。

综上所述,目前采用机器学习算法的检测研究成果已经比较成熟,但是在检测精度和检测效率、实现复杂度等方面还存在诸多不足,而这些问题的解决必然需要对检测算法进行研究和改进。



技术实现要素:

本发明的目的是提供一种基于改进森林算法的android恶意软件检测方法。

为此,本发明技术方案如下:

一种基于改进森林算法的android恶意软件检测方法,包括按顺序进行的下列步骤:

1)获取数据集的s01阶段:从应用商店、其他网络论坛或者研究机构中获取良性软件和恶意软件的安装包文件,然后进入s02阶段;

2)逆向处理的s02阶段:将步骤1)中获得的每一个安装包文件分别反编译得到一个含androidmanifest.xml文件的反编译文件夹,并使用python语言中的xml.dom模块和io模块对androidmanifest.xml文件进行解析,得到permission标签和intent标签的属性,然后进入s03阶段;

3)提取特征向量的s03阶段:统计所有安装包文件中每个属性出现的次数,并选取出现次数大于安装包文件总数20%的属性组成特征属性集;利用匹配算法,判断每一个安装包文件是否含有特征属性集对应的元素,根据判断结果生成对应每一个安装包文件的特征向量,并将所有的特征向量形成特征向量集合,然后进入s04阶段;

4)对特征向量进行优化的s04阶段:采用特征选择算法对特征向量集合中的特征属性进行优化排序,并根据排序结果重新组合形成优化特征向量,并将此优化特征向量随机抽取10%作为测试集,剩余的90%作为训练集合,然后进入s05阶段;

5)生成决策树集的s05阶段:对步骤4)中生成的训练集合采用bagging方法进行抽样,将抽取到的样本作为待训练子集,未被抽到的样本形成oob数据集,训练待训练子集按照决策树生成算法生成k棵决策树,k棵决策树形成决策树集合,然后进入s06阶段;

6)计算决策树权重的s06阶段:将oob数据集输入决策树集合中得出每棵决策树的分类正确率,以此作为每棵决策树的权重,然后进入s07阶段;

7)生成最终分类结果的s07阶段:将步骤4)中得到的测试集输入决策树集合中生成分类结果,并利用决策树权重对分类结果进行加权投票,形成得出最终分类结果,然后进入s08阶段;

8)对分类结果进行评估的s08阶段:从真正率、假正率、分类精度对分类结果进行评估,判断该基于改进森林算法的用于生成android恶意软件检测模型是否符合检测要求。

所述的步骤2)中在反编译生成的每个文件夹下新建permission.txt、action.txt和category.txt文档,用于存储该安装包文件的属性值。

所述的步骤3)中对所有安装包文件的特征向量取并集得到特征向量集合。

所述的步骤3)中每一个特征向量末位均为安装文件包类别标志位。

所述的步骤4)中的特征向量选择算法为信息增益算法或relieff算法。

所述的步骤5)中bagging方法进行抽样时采用有放回的抽样方式。

所述的步骤5)利用决策树生成过程中选择最优属性进行节点分裂,分裂过程完全分裂不进行剪枝。

与现有技术相比,该基于改进森林算法的android恶意软件检测方法与传统的检测方法相比具有更高的分类精度,提高了恶意软件检测的正确率,降低了由于检测错误而导致android系统遭受攻击的概率。

附图说明

图1为本发明提供的基于改进森林算法的android恶意软件检测方法流程图。

具体实施方式

下面结合附图及具体实施例对本发明做进一步的说明,但下述实施例绝非对本发明有任何限制。

如图1所示,该基于改进森林算法的android恶意软件检测方法,包括按顺序进行的下列步骤:

1)获取数据集的s01阶段:从应用商店、其他网络论坛或者研究机构中获取良性软件和恶意软件的安装包文件,然后进入s02阶段;

2)逆向处理的s02阶段:将步骤1)中获得的每一个安装包文件分别反编译得到一个含androidmanifest.xml文件的反编译文件夹,并使用python语言中的xml.dom模块和io模块对androidmanifest.xml文件进行解析,得到permission标签和intent标签的属性,然后进入s03阶段;

3)提取特征向量的s03阶段:统计所有安装包文件中每个属性出现的次数,并选取出现次数大于安装包文件总数20%的属性组成特征属性集;利用匹配算法,判断每一个安装包文件是否含有特征属性集对应的元素,根据判断结果生成对应每一个安装包文件的特征向量,并将所有的特征向量形成特征向量集合,然后进入s04阶段;

4)对特征向量进行优化的s04阶段:采用特征选择算法对特征向量集合中的特征属性进行优化排序,并根据排序结果重新组合形成优化特征向量,并将此优化特征向量随机抽取10%作为测试集,剩余的90%作为训练集合,然后进入s05阶段;

5)生成决策树集的s05阶段:对步骤4)中生成的训练集合采用bagging方法进行抽样,将抽取到的样本作为待训练子集,未被抽到的样本形成oob数据集,训练待训练子集按照决策树生成算法生成k棵决策树,k棵决策树形成决策树集合,然后进入s06阶段;

6)计算决策树权重的s06阶段:将oob数据集输入决策树集合中得出每棵决策树的分类正确率,以此作为每棵决策树的权重,然后进入s07阶段;

7)生成最终分类结果的s07阶段:将步骤4)中得到的测试集输入决策树集合中生成分类结果,并利用决策树权重对分类结果进行加权投票,得出最终分类结果,然后进入s08阶段;

8)对分类结果进行评估的s08阶段:从真正率、假正率、分类精度对分类结果进行评估,判断该基于改进森林算法的用于生成android恶意软件检测模型是否符合检测要求。

所述的步骤2)中在反编译生成的每个文件夹下新建permission.txt、action.txt和category.txt文档,用于存储该安装包文件的属性值。

所述的步骤3)中对所有安装包文件的特征向量取并集得到特征向量集合。

所述的步骤3)中每一个特征向量末位均为安装文件包类别标志位。

所述的步骤4)中的特征向量选择算法为信息增益算法或relieff算法。

所述的步骤5)中bagging方法进行抽样时采用有放回的抽样方式。

所述的步骤5)利用决策树生成过程中选择最优属性进行节点分裂,分裂过程完全分裂不进行剪枝。

本发明提供的基于改进森林算法的android恶意软件检测方法的实施过程如下:

首先,从应用商店、其他网络论坛或者研究机构中获取良性软件和恶意软件的安装包文件,并将获得的每一个安装包文件反分别编译得到一个含有androidmanifest.xml文件的反编译文件夹,并在反编译文件夹新建permission.txt、action.txt和category.txt文档,用于存储该安装包文件的属性值,使用python语言中的xml.dom模块和io模块对androidmanifest.xml文件进行解析,得到permission标签属性permission及intent标签属性action和category;并将得到的permission、action和category属性分别存储到permission.txt、action.txt和category.txt文档中;

其次,统计所有安装包文件中permission、action和category属性出现的次数,并选取出现次数大于安装包文件总数20%的属性组成特征属性集,利用匹配算法,判断每一个安装包文件是否含有特征属性集对应的元素,根据判断结果生成对应每一个安装包文件的特征向量,特征向量中的元素可以取值“1”或“0”,“1”表示该安装包文件含有对应属性,“0”则表示该安装包文件不含有对应属性,与此同时,在特征向量末尾添加一标志位,标志位可以取值“ben”或“mal”,“ben”表示该应用为良性软件,“mal”表示该apk应用为恶意软件;且将所有的特征向量形成特征向量集合;

再次,采用信息增益算法或relieff算法对特征向量集合中的特征属性进行优化排序,并根据优化排序结果重新组合形成优化特征向量,并将此优化特征向量随机抽取10%作为测试集,剩余的90%形成训练集;

然后,对上述生成的训练集合采用bagging方法进行有放回地抽样,将抽取到的样本作为待训练子集,未被抽到的样本形成oob数据集;训练待训练子集并按照c4.5决策树生成算法或cart决策树生成算法选择最优属性进行节点分裂,分裂过程完全分裂不进行剪枝,从而生成一棵决策树,重复上面的决策树生成步骤k次,生成k棵决策树,k棵决策树形成决策树集合;

接着,将oob数据集输入决策树集合中得出每棵决策树的分类正确率,以此作为每棵决策树的权重;

紧接着,将从优化特征向量中抽取得到的测试集输入决策树集合中生成分类结果,并利用决策树权重对分类结果进行加权投票,得出最终分类结果;

最后,从真正率、假正率、分类精度对分类结果进行评估,判断该基于改进森林算法是否符合检测要求;其中,真正性(truepositive,tp)指的是实际为恶意软件,被识别为恶意软件;假正性(falsepositive,fp)指的是实际为良性软件,被识别为恶意软件;真负性(truenegative,tn)指的是实际为良性软件,被识别为良性软件;假负性(falsenegative,fn)指的是实际为恶意软件,被识别为良性软件;真正率(truepositiverate,tpr)=tp/(tp+fn),表示识别出的恶意软件占实际恶意软件的比例;假正率(falsepositiverate,fpr)=fp/(fp+tn),表示所识别出的恶意软件占实际良性软件的比例;分类精度(accuracy,acc)=(tp+tn)/(tp+tn+fp+fn),用来衡量总体分类精度,该值越高则分类效果越好。

表1为不同分类算法的分类效果对比表;从表1中可以看出,本发明提出的改进森林算法的分类精度高达98%,优于传统森林算法,并且分类精度明显高于其他几类分类算法;表2为不同分类算法的建模时间对比表,从表2中可以看出在建模时间上,改进的森林算法的处理时间与其他几类算法相比时间较长;理由是:首先,森林算法本身是一种集成学习算法,与单个分类器相比,具有更好的分类效果;其次,改进的森林算法对森林算法的投票原则进行了改进,对强分类器赋予较高的权重值,而对弱分类器赋予较低的权重值,导致分类效果提高,但建模时间相对增加。

表1

表2

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1