孙 磊 韩静丹
(信息工程大学三院 河南 郑州 450000)
基于BHNB的细粒度的Android恶意应用检测模型
孙 磊 韩静丹
(信息工程大学三院 河南 郑州 450000)
为进一步提高Android恶意应用的检测效率,提出一种基于BHNB(Bagging Hierarchical Naïve Bayesian)的细粒度Android恶意应用检测模型。该模型首先对样本库中的应用进行类别划分,并分别对其进行动态分析,提取各个应用程序的行为信息作为特征;然后,采用层次朴素贝叶斯HNB(Hierarchical Naïve Bayesian)分类算法对各类应用特征集合进行分别训练,从而构建出多个层次朴素贝叶斯分类器;最后,采用Bagging集成学习方法对构建出的多个层次朴素贝叶斯分类器进行集成学习,构建出基于层次朴素贝叶斯的Bagging集成学习分类器BHNB。实验结果表明,该模型能够有效检测出Android恶意应用,且检测效率较高。
Android 动态分析 层次朴素贝叶斯 集成学习 恶意应用检测
随着Android操作系统的普及,使其成为了恶意攻击者的首要目标。据360互联网安全中心统计:平均每天截获新增手机恶意程序样本4.5万个,平均每天恶意程序感染量达到了100.6万人次。经研究发现,移动端恶意程序类型中资费消耗、恶意扣费以及隐私窃取所占比率高达99.2%,手机恶意程序趋利性极为明显,严重损害用户的利益。
近年来,随着机器学习算法的广泛应用,越来越多的学者使用机器学习算法对未知恶意应用进行分类与检测,通过机器学习算法构建分类器来区分良性应用和恶意应用。2013年,Yerima[1]通过提取Android应用样本的权限特征和行为特征,并分别对贝叶斯算法进行训练构建分类器;2014年,Ham等[2]提出了一种基于支持向量机SVM算法的Android恶意应用检测方法;2014年,Yerima[3]提出了一种基于并行机器学习分类器的Android恶意应用检测方法,通过提取的Android应用样本的特征集合,同时对决策树、朴素贝叶斯、Logistic回归、PART等机器学习算法进行训练,构建并行机器学习分类器,提高分类器精度。但是这些研究都仅关注分类器的构建,并没有对样本库的规模以及特征集合的维度进行研究。然而,作为分类器的输入,训练集的规模与质量严重影响着分类器的性能和效率。
为提高分类器的检测效率,有学者采用多种优化算法对特征集合进行选择,从而降低特征集合的维度。2016年,许艳萍等[4]在分类器训练之前采用信息增益算法优化选择分类特征,特征信息增益越大,表示该特征越好。2015年,胡静等[5]提出一种基于属性关系的特征选择算法,通过分析特征属性与类别标签之间的相关性来删除无关特征。
但是这些研究都是针对样本库的所有样本和特征集合,因此无论在哪个阶段都会造成处理时间较长,从而导致检测效率较低。此外,针对Android应用程序,无论是基于权限特征还是行为特征检测时,都会出现这种现象:某种特征在某类应用中是正常的,但是在其他应用中就有可能是恶意的。因此,会造成较高的误报率。
基于上述提出的问题,本文提出了一种基于BHNB的细粒度的Android恶意应用检测模型。该模型首先对样本库中的应用进行类别划分,然后采用动态分析技术分别对各类Android应用程序进行分析,提取其行为信息作为特征,从而构建行为特征集合。由于本文首先将应用程序进行了类别划分,因此,在分类器训练阶段,采用层次朴素贝叶斯分类算法对各类应用特征集合进行分别训练,从而构建出多个层次朴素贝叶斯分类器。为使得在提高检测效率的同时,又保证检测精度不降低,本文最后采用Bagging集成学习方法对构建出的多个层次朴素贝叶斯分类器进行集成学习,构建出基于层次朴素贝叶斯的Bagging集成学习分类器。实验证明,本文提出的细粒度的Android恶意应用检测模型在保证检测精度不降低的同时,能够有效提高检测效率。
本文提出的基于BHNB的细粒度的Android恶意应用检测模型,首先将待检测的应用进行类别的划分,然后在此基础上,再判断其是否为恶意应用。因此,本文在对各个类别的特征集合进行学习训练分类器时,采用层次朴素贝叶斯分类算法HNB(Hierarchical Naïve Bayesian)[6]。由于层次朴素贝叶斯分类算法在标签节点(即树的根节点)和特征节点(叶节点)之间引入潜在节点,即引入了放松朴素贝叶斯分类算法的某些独立性陈述,然而,这种方法降低了朴素贝叶斯分类算法的稳定性。因此,本文采用Bagging集成学习方法对单个HNB分类器进行集成学习,从而构建出分类性能稳定的BHNB分类器。
朴素贝叶斯算法是以贝叶斯最大后验准则和贝叶斯假设为理论基础,具有综合先验知识以及样本信息的能力。通过朴素贝叶斯构建的分类器,可以表示特征之间相互依赖的关系,并且在分类时可以对分类模型进行动态调整。传统的朴素贝叶斯分类器结构如图1所示。
图1 传统朴素贝叶斯分类器结构
由于本文提出的细粒度的Android恶意应用检测模型,是将创建的样本库进行类别划分,因此,我们采用层次朴素贝叶斯分类器,即在传统朴素贝叶斯分类器的基础上引入中间变量Z,其结构如图2所示。其中,Y代表Android应用的标签(恶意性和非恶意性),Z代表Android应用的类别(通信类、音频类、游戏类等),X代表Android应用的行为特征。
图2 层次朴素贝叶斯分类器结构
层次朴素贝叶斯分类器学习过程包括结构和参数学习两部分。结构学习指的是根据专家的领域知识确定指标之间的层次关系;参数学习是使用样本数据进行边缘和条件概率估计。其具体描述如下:
假设输入空间X∈Rn为n维向量的集合,特征向量x∈X,x是定义在输入空间X上的随机变量;输出空间的标签(恶意性标签或非恶意性标签)集合Y={c1,c2,…,ck},输出为标签y∈Y,y是输出空间Y上的随机变量;引入空间的类别集合Z={z1,z2,…,zt}。
(1) 一级和二级指标边缘估计
通过采用最大似然方法来估计一级和二级指标的边缘概率。
定义1一级指标边缘概率P(cj|D):在Android应用样本库D中,样本的标签为cj的概率。
(1)
其中,N(cj|D)为在Android应用样本库D中标签为cj(Y=cj)中的应用样本数量,N(D)为所有应用样本的数量。
定义2二级指标边缘概率P(zi|D):在Android应用样本库D中,应用样本属于类别zi的概率。
(2)
其中,N(zi|D)为在应用样本库第zi类(Z=zi)中样本的数量。
(2) 二级和三级指标条件概率
定义3二级指标条件概率P(zi|cj,D):在Android应用样本库D中,应用样本的标签是cj的情况下,属于类别zi的概率。
(3)
其中,N(zi,cj|D)为标签cj(Y=cj)中的第zi类(Z=zi)中样本的数量。
定义4三级指标的条件概率P(Xm|zi,D):在Android应用样本库D中,应用样本属于类别zi的条件下,特征Xm的概率。
(4)
其中,N(Xm,zi|D)为第zi类(Z=zi)中应用样本的数量。
(3) 分类器的表示形式与分类过程
基于贝叶斯网络理论和贝叶斯公式,以及条件独立性可得:
αP(cj)P(z1,z2,…,zt|cj,S)=
(5)
其中α是与cj无关的量。
βP(zi)P(X1,X2,…,Xn|zi,S)=
(6)
其中β是与zi无关的量。
根据上述分解式可得到两个层次的分类器表示形式,分别为:
(7)
(8)
分类过程是:首先由下层分类器确定二级指标Z1,Z2,…,Zt的值,然后再由基于上层分类器得到一级指标的值,整个分类过程自下而上,对应细粒度的Android恶意应用检测模型的自上而下。
集成学习[7]通过将多个弱分类器经过组合得到一个强分类器,强分类器比弱分类器有更好的预测能力,并且这种方式实现强分类比直接获取一个强分类器要简单的多。所以,本文利用集成学习Bagging方法,对多个层次朴素贝叶斯分类器进行集成学习,从而构建出分类性能更好的BHNB强分类器。其基本的集成方案如图3所示。
图3 集成学习方案
其具体的算法描述如下:
Step1对i=1,2,…,t重复进行如下计算。
从原始训练样本集中随机选取选取n个训练样本,允许重复,生成若干个与原始原始训练样本集有些许差异的新样本集。
使用上述得到的样本集求得弱分类器φi。
(9)
BHNB分类算法的具体流程如下:
Step1对原始的Android应用样本集进行按应用类别进行分类,得到t个不同类别的Android应用样本库Z={z1,z2,…,zt}。
Step2分别提取各类Android应用样本库中每个样本的特征(x1,x2,…,xn′)(其中n′表示该Android应用样本中的n′个特征)与该应用所属的标签cj,使其构成特征向量Xi′=(x1,x2,…,xn′,cj)(其中i′表示:在该类应用中第i′个样本的特征向量),该向量代表一个Android应用,将所有代表应用的特征向量构成特征集合。
Step3按照式(7)、式(8)对各个类别的特征集合(X1,…,Xm′)(其中m′表示该类应用样本库中样本的数量)进行学习,分别构造出针对某种类别的层次朴素贝叶斯分类器φi,i=1,2,…,t。
(10)
其中ω1,ω2,…,ωt分别用“0”、“1”表示,当待检测的Android应用属于zi类应用时,则由该类应用特征集训练的HNB分类器所对应的权重ωi值为1。相应的,其他分类器的权重取值为0;若待检测的Android应用无法明确判定其类别,即包含所有类别的特征,那么所有的HNB分类器的权重取值均为1。最后利用式(10)判定其是否为恶意应用。
本文提出的基于BHNB的细粒度Android恶意应用检测模型,首先创建非恶意样本库和恶意样本库,然后对其进行类别划分,并采用动态分析技术来提取各个类别中应用的行为信息作为特征,构建行为特征集合,并对其进行格式化处理;其次,采用HNB分类算法对各个类别的行为特征集合进行学习,从而构建出多个HNB分类器,各个HNB分类器的构建并行且独立;最后,采用Bagging集成学习方法,对多个HNB分类器进行学习,从而构建出分类性能更好的BHNB强分类器。该检测模型主要包括预处理模块、特征提取模块、特征集合构建模块、格式化处理模块以及分类器构建模块如图4所示。
图4 基于BHNB的细粒度的Android恶意应用检测模型
基于BHNB的细粒度的Android恶意应用检测模型具体的流程如下:
(1) 创建样本库
主要包括非恶意样本库和恶意样本库。非恶意应用样本库利用爬虫技术从Google Play商城批量下载,包含各种类别的应用;恶意应用样本库主要包括49个恶意应用家族的所有类别,主要从https://virusshare.com、http://sanddroid.xjtu.edu.cn网站上收集。
(2) 预处理模块
该模块主要通过人工分析,将样本库中的应用进行分类,如游戏类、网上购物类、系统工具类、通信社交类、金融理财类等。
(3) 特征提取及特征集合构建模块
主要利用沙盒技术对各类应用进行动态分析,通过对运行时的应用进行监控,提取各个应用程序的行为信息作为特征,构建行为特征集合。
(4) 格式化处理模块
采用CSV(Comma Separated Values)格式,即逗号分隔值格式。对提取的各类应用的特征集合统一进行格式化处理。其中,每一行为一个应用程序的特征集合。
(5) 分类器构建模块
使用各类应用的特征集合对HNB分类算法进行训练,构建单分类器。然后,利用集成学习Bagging方法将构建好的单分类器集成为分类性能更好的BHNB分类器。
实验样本主要包括两部分:(1) 非恶意应用样本1 255个。主要利用爬虫技术从广受信赖的应用商城Google Play上批量下载,这些应用程序包含了所有的应用类别。(2) 恶意应用样本1 200个。主要从https://virusshare.com、http://sanddroid.xjtu.edu.cn网站上收集,覆盖49个恶意应用家族的所有类别。
对于上述采集到的应用样本,经过人工处理,将其分为各个应用类别。主要包括游戏类,网上购物类,资讯阅读类,系统工具类,影音图像类,通信社交类,生活服务类,交通工具类,学习教育类,商业办公类,运动保健类和金融理财类等,其所占比例如图5所示。
图5 Android应用样本库中各类应用所占比例
其中游戏类、通信社交类与影音图像类应用所占的比例相对较高,分别为20.4%、15.7%和11.2%;资讯阅读类应用所占比例最少,为3.2%。
为验证本文提出的基于层次朴素贝叶斯算法的Android恶意应用检测方法的高效性和准确性,我们比较了样本分类之前和样本分类之后的分类器性能。样本分类之前是将所有样本的特征构成一个集合,采用NB或DT分类器进行分类;样本划分之后是将样本按照类别进行划分,构建多个不同类别的特征集合,采用本文提出的BHNB分类器进行分类。
(1) 分类器的评价参数
本文将非恶意应用样本定义为正样本,恶意应用样本定义为负样本。
分类器性能评价标准:
正确接受TP,即实际为真,预测为真,指分类器将非恶意应用正确识别为非恶意应用;
正确拒绝TN,即实际为假,预测为假,指分类器将恶意应用正确识别为恶意应用;
错误接受FP,即实际为假,预测为真,指分类器将恶意应用错误识别为非恶意应用;
错误拒绝FN,即实际为真,预测为假,指分类器将非恶意应用错误识别为恶意应用;
分类器的分类精度,即正确率Accuracy,
召回率Recall,在所有实际样本中,被预测为正样本的数量,即
ROC曲线反映分类器的优劣,其显示了给定模型的TP概率与FP概率之间的比较评定。以假正率FPR(false positive rate)为横轴,真正率TPR(true positive rate)为纵轴,描绘分类器的灵敏度,曲线越接近左上角,说明该分类器性能越好。
ROC曲线下面的面积是模型准确率的度量AUC。为了评估模型的准确率,可以测量曲线下方的面积,面积越接近0.5,对应模型的准确率越低,完全准确的模型的面积为1。AUC值越大,说明分类效果越好。在ROC曲线无法清晰反映分类效果时,比较AUC的值,有助于增强分类器之间的比对。
图6 样本划分之前与样本划分之后的ROC曲线和AUC比较
(2) 不同分类器间的比较
在分类器精度测试过程中,采用十折交叉的验证方法,轮流将各类应用样本集中的90%作为训练集,10%作为测试集,取十次实验的平均结果,作为对分类器精度的估计。
本文在使用过程中对DT、NB以及BHNB分类器进行了比较,结果如表1所示。
表1 不同分类器分类结果
从表1中我们可以看出,DT分类器的分类精度虽然最高,但是其构建的时间却最长,在效率上不如NB分类器。BHNB分类器在构建时间上虽然稍微逊色于NB分类器,但是其精度却比NB分类器要高。因此,BHNB针对Android恶意应用检测具有较高的精度与效率。在本文提出的细粒度的Android恶意应用检测模型基础上,构建的BHNB分类器可以有效检测出Android恶意应用。
本文提出的基于BHNB的细粒度的Android恶意应用检测模型,首先通过人工分析的方法将样本库中的应用划分多个类别,然后基于动态分析技术提取各个应用程序的行为信息作为特征,构建行为特征集合。再采用HNB分类算法对各类应用的特征集合进行训练,构建出多个HNB分类器。由于分类器的训练仅针对小规模的特征集合,且构建过程并行而独立,因此,在一定程度上提高了效率。为了在提高检测效率的同时,也能够稳定分类器的性能。本文最后采用Bagging集成学习方法,对构建出的多个HNB分类器进行集成学习,从而构建出分类性能更加稳定的BHNB强分类器。实验结果证明,本文提出的基于BHNB的细粒度的Android恶意应用检测模型,能够有效检测出Android恶意应用,且误报率低、检测效率较高。
[1] Yerima S Y, Sezer S, Mcwilliams G. Analysis of Bayesian classification-based approaches for Android malware detection[J]. Information Security Iet, 2013, 8(1):25-36.
[2] Ham H S, Kim H H, Kim M S, et al. Linear SVM-Based Android Malware Detection for Reliable IoT Services[J]. Journal of Applied Mathematics, 2014, 2014:1-10.
[3] Yerima S Y, Sezer S, Muttik I. Android Malware Detection Using Parallel Machine Learning Classifiers[C]// Eighth International Conference on Next Generation Mobile Apps, Services and Technologies. IEEE, 2014:493-494.
[4] 许艳萍, 伍淳华, 侯美佳,等. 基于改进朴素贝叶斯的Android恶意应用检测技术[J]. 北京邮电大学学报, 2016, 39(2):43-47.
[5] 胡静, 华俊, 姜羽,等. 一种基于属性关系的特征选择算法[J]. 控制与决策, 2015(10):1903-1906.
[6] 范敏, 石为人. 层次朴素贝叶斯分类器构造算法及应用研究[J]. 仪器仪表学报, 2010, 31(4):776-781.
[7] 杉山将.图解机器学习[M]. 北京:人民邮电出版社,2015.
[8] 哈林顿.机器学习实战[M]. 北京:人民邮电出版社, 2013.
[9] 黄梅根,曾云科.基于权限组合的Android窃取隐私恶意应用检测方法[J].计算机应用与软件,2016,33(9):320-323,333.
[10] 王辉,陈泓予.基于树加权朴素贝叶斯算法的入侵检测技术研究[J].计算机应用与软件,2016,33(2):294-298.
[11] 奚琪, 曾勇军, 王清贤,等. 一种基于模型检测的恶意行为识别方法[J]. 计算机应用与软件, 2015, 32(7):284-287.
[12] 卿斯汉. Android安全研究进展[J]. 软件学报, 2016(1):45-71.
[13] 杨欢, 张玉清, 胡予濮,等. 基于多类特征的Android应用恶意行为检测系统[J]. 计算机学报, 2014, 37(1):15-27.
[14] 杨欢, 张玉清, 胡予濮,等. 基于权限频繁模式挖掘算法的Android恶意应用检测方法[J].通信学报,2013(s1):106-115.
AFINE-GRAINEDANDROIDMALWAREDETECTIONMETHODBASEDONBHNB
Sun Lei Han Jingdan
(CollegeofCryptographyEngineering,InformationEngineeringUniversity,Zhengzhou450000,Henan,China)
In order to further improve the detection efficiency of Android malicious applications, this paper proposes a fine-grained Android malware detection model based on BHNB (Bagging Hierarchical Naïve Bayesian). First, the model classified the applications in the sample database and dynamically analyzed them respectively, and extracted the behavior information of each application as features. Then, HNB (Hierarchical Naïve Bayesian) classification algorithm was used to train all kinds of application feature sets respectively, so as to construct several layers of Naïve Bayesian classifier. Finally, the multi-level Naïve Bayesian classifier was constructed by using bagging ensemble learning method, building up the Bagging ensemble learning classifier based on Hierarchy Naïve Bayesian algorithm-BHNB. The experimental results demonstrate that the proposed model can effectively improve the detection efficiency while improving the detection accuracy.
Android Dynamic analysis Hierarchical Naïve Bayesian Ensemble learning Malware detection
TP301
A
10.3969/j.issn.1000-386x.2017.10.055
2016-11-23。国家重点研发计划项目“协同精密定位技术”(2016YFB0501900);国防预研基金项目(910A26010106JB5201)。孙磊,研究员,主研领域:云计算基础设施可信增强、可信虚拟化技术。韩静丹,硕士生。