一种在Spark框架下的基于改进随机森林的Android恶意软件检测方法
2019-05-24张勇敢李海霞
张勇敢 李海霞
摘要:随着Android恶意软件的数量越来越多,寻求有效的恶意软件检测方法显得越来越重要。针对Android手机恶意软件检测的现状,文章根据Android平台的特点,结合Spark框架技术和随机森林算法,构建一种在Spark框架下的基于改进随机森林的Android恶意软件检测方法,方法的使用效地提高恶意软件检测的性能和效率,同时也为恶意软件检测技术提供一个思路。
关键词:Android ;Spark框架;随机森林算法;恶意软件检测
中图分类号:TP309 文献标识码:A 文章编号:1009-3044(2019)03-0192-03
Abstract:With the increasing number of Android malware, it is more and more important to find an effective malware detection method.Aiming at the current situation of Android mobile malware detection, according to the characteristics of Android platform, combined with Spark framework technology and random forest algorithm, this paper constructs an Android malware detection method based on improved random forest under the Spark framework. The method can effectively improve the performance and efficiency of malware detection, and at the same time, it also improves the efficiency of malware detection. It also provides a train of thought for malware detection technology.
Key words:Android;Spark framework;random forest algorithm;malware detection
如今智能手機上的功能是越来越多,各种APP软件的大量使用让我们的生活工作越来越便利,但在享受智能手机带来便利的同时,也给我们自身信息带来的潜在安全风险。手机上存在很多非常重要的个人信息,比如个人身份信息、银行卡信息、家人信息、朋友信息等等 ,如果这些信息一旦被一些非法之徒获取,将可能给手机用户造成个人财产上的损失、个人隐私信息的泄露及工作上的不便等[1]。如何保障手机安全是一个非常重要的问题,除了手机用户要有安全风险意识和平时要养成良好的使用习惯外,研究如何有效地对恶意软件的检测也是非常重要的,如果手机在安装APP软件前能够自动进行安全检测,自动将一些恶意软件排除在手机之外,那将为手机安全提供一个非常有力的保障。Android系统平台虽然也提供一些安全机制[2],但由于其是一个开源操作系统,开放性的同时也很容易被恶意软件感染。针对这一问题,根据Android系统平台的特点,结合Spark框架技术,文章提出一种在Spark框架下的基于改进随机森林的Android恶意软件检测方法,方法的使用有效提高检测的性能和效率,同时也为Android平台恶意软件检测技术[3]提供一个思路。
1 随机森林算法
在对恶意软件进行判别的方法中,用得最多的就是机器学习分类算法[4],通过机器学习分类算法对恶意软件进行识别,很多机器学习分类算法在安全领域的入侵检测中得到了广泛的应用,但单模型分类算法在精度上不高,而且容易产生过拟合问题。而随机森林算法[5]是一种组合分类器算法,结合了Bagging方法和CART算法的优点,是一个由多个Decision Tree(决策树)分类器组成的集成学习分类算法,每棵决策树的创建是根据随机采样的方法生成,随机森林能够结合多个决策树分类器的分类结果,相比单个决策树分类器具有更好的分类效果和泛化能力,同时多个决策树分类器的生成过程又是相互独立的,故非常适合采用并行化处理,方便在Spark框架下使用。随机森林算法的框架图如图1。
2 改进随机森林算法
随机森林算法在最终决定样本类别时采用的是简单投票原则,每个决策树的权重相同,没有区别强决策树与弱决策树,从而降低了整体分类性能。针对这个问题,文章提出一种改进的方法,通过添加权重控制来有效区分决策树的强弱,进一步提升分类的性能。
随机森林在样本采样时采用的是bagging方法[6],是一种随机有放回抽样的方法,bagging方法能有效提升机器学习算法的稳定性和准确性,可以减少模型的方差,从而避免过度适应的现象。在这种抽样方法中,总会有一些没有被抽到的训练样本,这些样本称为out-of-bag(OOB)[6],样本没有抽到的概率为p=(1-1/N)N,其中N为样本总数,当N趋近无穷大时,p的值约为0.368,这说明在bagging抽样中,有接近37%的样本没有被抽取到。利用OOB样本对生成的决策树进行分类测试,由于OOB中的样本类别是已知的而且是未参与机器学习的样本,所以不用担心过分适应的问题,那就可以根据决策树的分类准确情况来区分决策树的分类性能,准确度越高的分类决策树越优秀,分类效果越好。分类正确率CRt=Otr/Ot,其中Ot为OOB的样本数,Otr为正确样本数。直接使用对OOB样本的分类准确率作为分类决策树的权重。经过加权控制后,样本x通过随机森林分类器进行分类检测并加权统计,属于c类别的总得票数记为Sc,最后选出得票最多的Cx=Argmax(Sc)作为样本的最终类别。
3 Spark框架下Android恶意软件检测
随着Android应用程序数量越来越多,在对应用程序进行检测时,对APK文件的反编译[7]、对特征值提取过程都很耗时,所以非常有必要引入并行化处理方式,采用并行化处理方式可以有效提高运行速度,同时在森林算法的建模中,多个决策树分类器的生成过程之间都是相互独立的,故也非常适合采用并行化处理方法。Spark框架[8]就是一個基于内存计算的分布式计算框架,提供了一个用于分布式数据处理的API,Spark框架非常适合对大规模数据进行并行化有效处理。Spark框架下Android恶意软件检测示意图如图2。
整体检测过程在Spark框架下完成,主要包括三个模式:特征向量集合生成模块、决策树分类器生成模块、决策树分类检测模块。下面分别介绍这三个模块的步骤。
3.1 特征向量集合生成模块
特征向量提取模块主要功能是在Spark框架下高效提取最具代表性的特征属性,并生成特征向量集合。步骤如下:
3.2决策树分类器生成模块
决策树分类器生成模块主要功能是根据前面生成的特征向量集,产生决策树分类器,并对决策树进行加权处理。步骤如下:
3.3决策树分类器检测模块
决策树分类检测模块主要功能是根据前面产生的决策树分类器对测试样本进行分类测试,并将测试结果输出。
4 实验测试与结果分析
在实验测试样本中,其中良性软件为413个,恶意软件为780个。选取信息增益(IG)算法作为特征优化算法,在Spark框架并行环境下进行。实验结果如表1所示。
通过实验数据分析可知,通过对随机森林算法的简单投票原则进行加权控制改进,有效地区分强决策树和弱决策树,在分类的准确性上有一定的提高,当然由于多了一道权重计算程序,在建模的时间上会更长一些。
5 结束语
针对Android恶意软件的大量出现,全文提出了一种在Spark框架下的基于改进随机森林的Android恶意软件检测方法,通过对随机森林算法的投票原则进行加权改进,进一步提高恶意软件检测的准确度,同时将整个决策树的生成过程放在Spark框架下运行,通过并行分布式处理,缩短决策树的生成时间,有效提高运行效率。通过实验分析,改进随机森林算法分类的准确度接近94%,具有良好的分类精度和分类效率。不足之处:1)在特征向量的选择上,只提取了Manifest文件中的Permisson和Intent信息作为特征属性,在特征属性的选择上相对较少,还可以考虑加入API特征处理;2)由于实验条件的限制,实验中样本数据量相对较少,还缺乏一定的说服力。
参考文献:
[1]王雪芬,郭黎黎.“互联网+”时代智能手机网络安全问题探析[J].电子技术与软件工程,2018(1):222-223.
[2] 樊郁徽,徐宁.Andriod平台的恶意软件行为分析[J].重庆文理学院学报:社会科学版,2014, 33(5):144-147.
[3]李江华,邱晨.Android 恶意软件检测方法研究综述[J].2019,36(1).
[4]王奕森,夏树涛.集成学习之随机森林算法综述[J].信息通信技术,2018(1):49-55.
[5]Leo Breiman, Adele Cutler.Random forest[J].Machine Learning,2001,5(1):5-32.
[6]杨宏宇,徐晋.基于改进随机森林算法的Android恶意软件检测[J].通信学报,2017,38(4):8-16.
[7]丰生强.Android软件安全与逆向分析[M].人民邮电出版社,2013.
[8]曹博,倪建成.基于Spark的并行频繁模式挖掘算法[J].计算机工程与应用,2016,52(20):86-91.
【通联编辑:唐一东】