APP下载

基于权限与敏感API的恶意程序检测方法

2017-12-13盛超魏盛娜

电脑知识与技术 2017年33期

盛超 魏盛娜

摘要:由于Android系统开源的特性,基于Android系统的手机很容易成为攻击对象,给用户造成不必要的损失。为了解决这一问题,该文提出一种基于权限特征和敏感API的朴素贝叶斯分类检测方法。该方法克服了朴素贝叶斯分类算法中特征属性之间是假设相互独立的前提条件。通过提取Android应用程序配置文件的权限标签以及源代码中的敏感API组成混合特征集,然后应用信息增益和卡方检验组合算法,减少冗余数据,得到适合朴素贝叶斯分类算法的样本集。最后使用朴素贝叶斯分类算法进行分类。实验结果证明,该方法能较好地提高恶意程序检测率,降低误报率。

关键词:权限特征;敏感API;恶意程序;朴素贝叶斯分类算法

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)33-0067-03

Abstract: As the Android system open source features, the phone Based on Android system is easy to become an object of attack and causes unnecessary losses to the user. In order to solve this problem, a Naive Bayesian classification detection method Based on permission feature and sensitive API is presented by this paper. This method overcomes the precondition that the characteristic attributes are assumed to be independent of each other in the Naive Bayesian classification algorithm. By extracting the permission tag of the Android application configuration file and the sensitive API in the source code, the mixed feature set is composed, and then the information gain and the chi-square test combination algorithm are used to reduce the redundant data and get the sample set suitable for the naive Bayesian classification algorithm. Finally, the Naive Bayesian classification algorithm is used to classify. The experimental results show that this method can improve the detection rate of malware and reduce the false positive rate.

Key words: permission feature; sensitive API; malware; Naive Bayesian classification algorithm

1 背景

Android是一款拥有庞大市场份额的智能移动操作系统,其安全性受到了研究者的广泛关注[1]。Android系统开源的特点,使得Android手机很容易成为攻击对象,给手机用户造成不必要的损失。目前,针对Android系统恶意应用程序检测的研究有很多。文献[2]中提出了基于权限分析的Android应用程序检测系统,使没有专业知识的普通用户都能够了解申请权限的作用。但从Android系统安全架构层上考虑,权限机制和涉及敏感数据和高危行为的应用接口同样重要。文献[3]提出一种静态检测方法,提取权限特征作为特征属性集,在采用朴素贝叶斯分类模型之前,使用卡方检验算法对数据样本集进行预处理。但其特征集较为单一,也没有考虑到特征属性间在现实中可能存在的较大关联性。文献[4]提出了一种基于敏感权限及API的静态综合检测法,但是该方法只对已知恶意应用有较好的检测效果。

针对以上情景,本文提出的一種基于朴素贝叶斯分类算法的静态检测方法。通过提取由Android应用中配置文件的权限标签以及源代码里的敏感API组成混合特征集[5]。然后应用信息增益和卡方检验的组合算法,去除冗余数据,得到适合算法的样本集。最后使用此静态检测模型进行检测。实验结果证明,该方法较好地提高了恶意程序检测率并降低误报率。

2 基于NBC模型的恶意程序检测方法

2.1 特征集提取

1) 权限特征提取

Android系统提供的权限机制对于每个访问系统资源的应用程序都会进行相应的权限检测,程序是否能访问,一定程度上保证了用户的信息安全。以防用户信息被越权访问,造成信息泄露[6]。考虑到利用单个权限标签难以达到威胁目的,而一个恶意程序的恶意行为却需要多个权限的配合[7]。通过比较良性程序与恶意程序配置文件中权限标签发现,恶意程序的权限标签比良性程序的多很多,其申请的权限大多是获取用户信息的权限,或是可能威胁到用户信息安全的权限行为[8]。因此,对权限特征的提取是有必要的[9]。

本文通过对应用程序分析,获取程序配置文件AndroidManifest.xml,提取出程序申请的权限标签。对每个应用程序的权限申请标签用一个153维的向量表示(Google为Android系统设立了153个权限),每个维度对应一个权限。利用工具逆向分析程序的配置文件,若该文件含有此权限标签则用1表示,否则用0表示。

2) 敏感API特征提取

Android应用程序通过函数接口调用可以访问和获取手机中的一些敏感数据,或是做出一些敏感行为,本文称这些敏感数据及行为的API为敏感API。通过比较良性程序与恶意程序在敏感API的调用次数,可以发现恶意程序调用次数较之更多,因此可以以此作为识别应用程序性质的一个依据。故设定一些接口为敏感API。

这里定义了15个敏感API,用一个15维向量表示,当应用源程序使用了该敏感API时,把相应的特征属性位置用1表示,否则用0表示。利用KMP字符串匹配算法将15个敏感API字符串与程序源代码进行匹配,判斷应用程序是否使用了敏感API,并记录,高效提取敏感API特征向量。

2.2 数据预处理

1) 信息增益

利用信息增益算法(Information Gain)[10],提取出与类别属性相关度较大的特征属性。当特征集中某一个特征属性对应分类的信息增益值越大,那么该属性对分类的影响越大。反之,信息增益越小,对正确分类影响越小,但它的存在可能会降低分类器的性能,因此需要去除这些冗余数据[11]。计算特征属性T与分类的信息增益公式,其中[Si]是数据样本中每个相应类别,n是样本中的类别个数,那么有:

[Gain(T)=I(S1,S2,...,Sn)-E(T)] (1)

计算样本类别的信息熵,[P(Ci)]是该类别在样本中占有的比重:

[I(S1,S2,...,Sn)=-i=1nP(Ci)log2P(Ci)] (2)

计算特征属性T的熵:

[E(T)=j=1kSj1+Sj2+...+SjnSI(Sj1+Sj2+...+Sjn)] (3)

2) 卡方检验

卡方检验(Chi-square test)是一种用途较广的假设检验方法。通过假设两个变量相关,计算两者之间的卡方值,查找卡方界值表得出其对应概率。如果概率较大,那么说明实际值与理论值差距很小,两个变量之间的相关性较大。否则,认为两者之间相互独立。本文利用四格卡方检验公式检测出两两特征属性间是否相互独立[12],去除掉特征属性之间关联性较大的两个特征属性中的一个,优化特征数据源。那么有:

[χ2=(ad-bc)2·N(a+b)(c+d)(a+c)(b+d)] (4)

其中a,b,c,d代表了两个构成所形成的四种比较情况,N表示总的频数,即a,b,c,d频数之和。通过把经过信息增益处理过的特征样本集作为输入数据,计算两两特征属性间的卡方值,分析两个特征属性相关与否。在根据卡方值查找界值表后得出两特征属性之间相关概率,当概率比0.95小时,那么这两个特征属性之间被认为是不相关的,否则这两个特征属性是相关的,则剔除其中的一个特征属性。

2.3 基于朴素贝叶斯算法的恶意程序检测方法

朴素贝叶斯算法是贝叶斯分类模型中最简单的[13],其主要思想基础是,对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率哪个最大,就认为此待分类项属于哪个类别。有类别集合[C={C1,C2,...,Cm}],一个[Ci]一个类别。通过对不确定分类的训练样本[X={a1,a2,...,an}](待分类项,每个a为[X]的一个特征属性)计算各个条件概率。已知在[X]条件下,每个类的最大概率值,作为最后被判别类别,依据贝叶斯定理[14-15],可以得出:

[P(Ci|X)=P(X|Ci)P(Ci)P(X)] (5)

由于[P(X)]是训练样本[X]的概率,其是先验概率,在训练样本[X]已知的情况下,对每个分类[Ci]的概率比较没有多大关系,可以考虑去除掉,那么有:

[P(Ci|X)≈P(X|Ci)P(Ci)] (6)

因为训练样本中各个特征属性是条件独立的,故有:

[P(X|Ci)P(Ci)≈P(Ci)Πj=1nP(aj|Ci)] (7)

3 实验分析

3.1 数据收集

本文共收集了600个样本数据,主要包括恶意程序和良性程序两类。其中500个良性程序来自各类Android应用程序市场,100个恶意程序采集自VirusShare.com[16]。

3.2 评估策略

为了测量检测方法的有效性,使用以下衡量策略:

1) 检测率TPR即是被正确分类的恶意程序与恶意程序总数的比重。其中TP是恶意程序中被正确检测为恶意程序的数量,FN是恶意程序中被错误检测为良性程序的数量。

[TPR=TPTP+FN] (8)

2) 误检率FPR即是良性程序被错误的检测为恶意程序的数量与样本中良性程序总数的比重。其中,FP是良性程序中被错误检测为恶意程序的数量,TN是良性程序中被正确检测为良性程序的数量。

[FPR=FPFP+TN] (9)

3) 分类准确率Acc即是所有被正确分类样本数与全部样本总数的比值。

[Acc=TP+TNTP+TN+FP+FN] (10)

3.3 有效性验证

对经过处理的数据样本,取出一部分用于分类检测模型建立的训练,剩余样本数据用于检测模型的有效性[17]。通过比较不同特征、不同预处理方式地数据源,分析比较检测结果。

1) 不同特征集检测

本文主要使用了权限特征集以及敏感API特征集,通过实验比较分别使用单一特征集与组合特征集对分类器性能影响。结果如下表所示:

表2中可以看到,与单一特征集相比,权限与敏感API的混合特征集检测性能较好。恶意程序检测率较高,分类器准确率也比单一特征集的分类器准确率高。

2) 不同預处理方式检测

通过上面不同特征集检测,组合特征对分类器性能提高较好,这里继续使用实验后的组合特征值进行数据预处理,剔除冗余数据。比较单一处理方式与组合处理方式下分类器效果。

从实验数据中看,信息增益与卡方检验方法相结合的数据预处理方式较好的提高了朴素贝叶斯分类器检测性能。相比于单一处理方式,分类器性能提高相对较多。

4 结束语

本文所设计的基于权限和敏感API的恶意程序检测方法在实验中得到的较好的结果,组合特征集以及组合预处理算法,比之单一的特征集和单一预处理算法,相对提高了分类器性能。为了进一步提升分类器性能,也可以考虑在朴素贝叶斯分类算法上进行改进。

参考文献:

[1] ZHANG Y Q, WANG K, YANG H, et al. Survey of Android OS Security[J]. Journal of Computer Research and Development,2014,51(7):1385-1396.

[2] ZHANG J X, YANG X H. A Detection System of Android Android Application Based on Permission Analysis[J]. Netinfo Security, 2014(7):30-34.

[3] ZHANG S Q. Android Malware Detection Technology Based on Improved Bayesian Classification[J]. Radio communication technology, 2014, 40(6):73-76.

[4] ZHU X L, WANG J F, DU Y, et al. Detecting Android malware Based on sensitive permissions and function-call graphs[J]. Journal of Sichuan University:Natural Science Edition, 2016, 53(3):526-533.

[5] LU W Q, HE J M, ZENG X B, et al. Android Malware Static Detection Based on Hybrid Features[J]. Radio Communications Technology, 2014,40(6):64-68.

[6] YAN M, PENG X G. Permission detection system Based on android security mechanism[J]. Computer Engineering and Design, 2013, 34(3):854-858.

[7] ZHANG X M, LIU J, ZHUANG J X, et al. Research on Android malware detection Based on permission and behavior[J]. Chinese Journal of Network and Information Security, 2017, 3(3):1-7.

[8] ZHOU Y, JIANG X. Dissecting Android malware: characterization and evolution[C]//Proceedings of the 2012 IEEE Symposium on Security and Privacy. Washington, DC: IEEE Computer Society, 2012: 95-109.

[9] Felt A P, Chin E, Hanna S, et al. Android permissions demystified[C]//Proceedings of the 18th ACM Conference on Computer and Communications Security. New York: ACM, 2011:627-638.

[10] XU Y P, WU C H, HOU M J, et al. Android Malware Detection Technology Based on Improved Naive Bayesian[J]. Journal of Beijing University of Posts and Telecommunications, 2016, 39(2):43-47.

[11] FEIZOLLAH A, ANUAR N B, SALLEH R, et al. A review on feature selection in mobile malware detection[J]. Digital Investigation, 2015, 13: 22-37.

[12] ZHANG R, YANG J Y. Android malware detection Based on permission correlation[J]. Journal of Computer Applications, 2014, 34(5):1322-1325.

[13] WANG X F, DU T. Improved Weighted Naive Bayes Classification Algorithm Based on Attribute Selection[J]. Computer system applications, 2015, 24(8):149-154.

[14] 张立民, 刘峰, 张瑞峰. 一种构造系数的自相关函数特征提取算法[J]. 无线电通信技术, 2012, 38(5):56-59.

[15] Mitchell T. Machine learning[M]. Beijing: China Machine Press, 2012: 112-136.

[16] virusshare. com. Because sharing is caring[EB/OL]. [2013-10-21]. http://virusshare.com/support.

[17] ZHOU X, LUO K. A weighted naive Bayes algorithm Based on the attribute order reduction[J]. Advanced Materials Research, 2013, 718: 2108-2112.