基于改进朴素贝叶斯算法的安卓恶意软件检测研究
2019-12-06胡芷琦
摘 要: 由于安卓平台开源性、免费性的特点,恶意软件的数量急剧增长,其安全问题面临巨大挑战。现有的基于权限进行安卓恶意软件的静态检测方法中,往往利用单一的权限,缺少特征性,据此该文提出了一种安卓恶意软件检测的方案,通过反编译软件提取权限,运用改进的朴素贝叶斯方法进行分类,实验结果表明, 基于权限组合,使用改进的朴素贝叶斯算法相比于传统的算法,具有较好的分类结果,准确率达到95%。
关键词: 权限组合;朴素贝叶斯;恶意软件检测;静态检测
中图分类号: TP309 文献标识码: A DOI:10.3969/j.issn.1003-6970.2019.10.026
本文著录格式:胡芷琦. 基于改进朴素贝叶斯算法的安卓恶意软件检测研究[J]. 软件,2019,40(10):115120
Research on Android Malware Detection Based on Improved Naive Bayes Algorithm
HU Zhi-qi
(School of Information Science and Engineering, Hangzhou Normal University, Hangzhou 311121, China)
【Abstract】: Due to the open source and free features of the Android platform, the number of malwares has increased dramatically, and its security issues are facing enormous challenges. Among the currently static detection method of Android malware that bases on the permissions, it frequently makes use of the single permission, thus, it leads to lack of the characteristic. Accordingly, it puts forward a scheme about detecting Android malware. First, we obtain the permissions by decompiling software. Second, using improved Naive Bayesian method to make classification. The experimental result shows that compared the traditional calculation, using improved Naive Bayesian method based on permissions combination contributes to relatively good classification result with 95% accuracy rate.
【Key words】: Combination of permissions; Naive bayes; Malware detection; Static detection
0 引言
根據市场调研机构Gartner 2017年第一季度智能手机市场报告[1]显示安卓的市场份额已经达到了86.1%,而IOS则仅有13.7%的份额。由于安卓操作系统开源性、免费性等优点,使其智能手机获得了手机厂商和消费者的喜爱,拥有较大的市场占有率,但同时由于安卓平台的恶意程序制作成本低,可批量生成恶意程序,致使其安全性面临着巨大的挑战。2017年360互联网安全统计[2],如图1所示,2017年全年,360互联网安全中心累计截获安卓平台新增恶意软件样本757.3万个,平均每天新增2.1万。安卓的移动恶意软件总体进入平稳高发期,它的安全问题仍然存在很大的危险,这使得安卓恶意软件的检测成为了学术界和工业界关注的热点。
在恶意软件检测中,如果需要执行安全相关的操作或者访问隐私的情况,开发者需要在其配置文件中进行相应权限的申请。文献[3]对正常软件和恶意软件对权限的使用情况进行了对比,发现恶意程序倾向于使用短信、开机自启动、更改WIFI状态等权限,而良性程序很少使用这些权限。因此,我们可以将权限提取出来作为特征值, 具有一定的实际意义。
除此之外,机器学习算法被广泛应用于安卓恶意软件的检测,对此也有很多人进行了研究。Wu等人[4]提出了用k-means聚类算法进行聚类,聚类中心数量通过奇异值分解来确定,但该方法算法复杂度高,并且需要先确定k的个数;张锐等[5]采用卡方检验计算各权限特征对分类结果的影响,去除冗余权限特征,从权限相关性角度快速检测恶意软件,但没有考虑组合权限的威胁;Junmei Sun等[6]用关键字相关距离进行计算关键代码之间的相关性,后运用SVM算法检测安卓恶意软件,但复杂度较高。
所以本文的研究从用户信息安全入手,将一系列威胁用户安全的恶意权限组合作为特征,并为了避免程序计算中出现计算不准确这一问题,采用改进的朴素贝叶斯算法进行分类。
1 研究现状
1.1 基于权限的安卓恶意软件检测研究
在安卓恶意软件检测中,主要有静态检测与动态检测。静态检测是指在软件不运行的状态下通过提取软件自身的特征进行分析,而动态检测是在软件运行状态下检测可疑行为,从而判断软件是否为恶意。所以,静态检测更为方便快捷。
在静态分析中,Enck等人[7]提出了有代表性的Kirin系统,通过分析安卓软件申请的权限来判定软件是否存在恶意行为。Justin Sahs[8]提取APK的恃征,利用分类器训练这些特征来进行分类。Glodek等人[9]提取权限、组件、本地代码作为特征,利用Random Forest算法对应用程序进行分类。Moonsamy等人[10]静态分析安卓Manifest.xml中的权限,利用biclustering算法,找出恶意软件和非恶意软件分别使用频率最高的权限和权限之间的特征关系。陈洪闵等人[11]获取apk中的权限以及API特征作为特征集,并用机器学习的分类算法来判断是否为恶意软件。由此可见,安卓软件测权限可以作为检测恶意软件的特征属性。
1.2 朴素贝叶斯算法在检测方面的应用
朴素贝叶斯(Native Bayes,NB)算法[12]是一种依据概率原则进行分类的机器学习算法。应用先前事前的有关数据来估计未来事件发生的概率。朴素贝叶斯的思想基础是:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。
基于贝叶斯理论的朴素贝叶斯分类方法具有简单、有效、速度快的优点,是文本分类算法的重点研究内容之一,李丹[13]的基于朴素贝叶斯方法的中文文本分类研究表明朴素贝叶斯具有良好的分类效果;张洁琳[14]使用贝叶斯网络应用于用户信用评估;任晓奎[15]等人所做的基于粒子群的加权朴素贝叶斯入侵检测模型既能解决传统朴素贝叶斯算法的特征项冗余问题,同时也可以优化特征项间的强独立性问题,通过实验证实了该模型的实效性,提高了检测率。由此可见,朴素贝叶斯算法在分类上具有着广泛的应用和良好的表现。
综上,朴素贝叶斯方法在分类检测方面应用广泛,且基于权限的朴素贝叶斯检测方法快速、准确率高、误报率低,但是要求特征间独立性较大,而单个权限特征之间往往是互相关联的。基于权限组合的检测方法可以增加特征间的独立性,缺点是检测方法太单一。
2 方案介绍
2.1 安卓恶意软件检测方法
该文提出的安卓恶意软件检测方法,具体流程如图1所示,以静态检测的方式,通过反编译提取出软件中的权限,并将权限组合作为特征形成特征集合,然后将它们向量化,利用改进的朴素贝叶斯算法进行训练,计算出条件概率和先验概率,建立相应的分类模型,在测试时利用后验概率来快速地识别出恶意软件。
2.2 构建权限特征集合
安卓软件中,每一种行为都有相应的权限与之对应,权限能够在很大程度上反应出软件的特定行为模式。该文首先获取软件的权限信息,构建权限特征集合,将权限作為特征属性来判别恶意软件。
安卓应用程序包文件apk,是安卓操作系统上的应用程序安装文件格式。一个apk文件通常包括被编译的代码文件(即.dex件)、资源文件(即resources)、assets、证书文件(即certifi-cates)和清单文件(即mainifest.xml)等。从结构上来说,apk是一种基zip文件格式的文件,它与jar文件的构造方式相似[16]。该文首先将正常和恶意apk作为训练样本库,以apk文件为输入,利用开源工具解压缩工具apktool反编译apk,得到classes.dex文件和安卓Manifest.xml文件,解析安卓Manifest.xml文件提取所有权限信息,例如读取通讯录、拨打电话等权限。通过对权限特征的训练、分析和识别,检测应用程序是恶意应用程序还是非恶意应用程序。Google为安卓系统设立了134个权限,同时允许用户进行自定义权限的操作。本文主要研究安卓本身所提供的权限。
解析安卓Manifest.xml文件提取的所有权限信息只是反映出软件会申请这些权限,但是有些权限,正常应用和恶意应用可能都会申请,不能够反映出恶意应用的特性,会引起较多的误判,研究发现一个恶意行为的发生通常需要多个特定权限的配合使用才能达到[17]。
为了识别未知的安卓软件是否为恶意软件,是否存在恶意行为,该文采用文献[3]中总结出来14组权限组合作为输入特征,其中包括9组危险权限和5组从常被恶意程序利用的事件。如表1所示,构建权限特征集合。
对于每个训练样本的提取出所有权限,从中选取含有这14组权限组合特征的权限集合,这样每个训练样本可用{Xi1,Xi2,…,Xi14}来表示,每个维度对应一组权限组合,若样本中含有该权限组合中的个数为n,则标记为n;若没有,则用0表示,得到特征向量集合。最后进行类别标记,用{0,1}来表示,其中0表示属于非恶意软件,1表示属于恶意软件。
例如某个样本中包含权限RECEIVE_BOOT_ COMPLETED,INTERNET,READ_PHONE_STATE,SEND_SMS,RECEIVE_SMS,CHANGE_CONFI GURATION,则此样本构建权限特征集为{0,0,0,0, 0,1,0,2,0,1,0,0,0,1,1}。
2.3 基于改进的朴素贝叶斯算法的恶意软件检测
朴素贝叶斯算法利用贝叶斯公式的特性, 将先验概率和条件概率转换成后验概率, 并为了简化问题处理, 利用条件独立性假设,减少安卓恶意软件分类计算的开销,预测位置数据样本属于最高后验概率的类。但传统的朴素贝叶斯算法对数据计算要求较高,容易产生偏差,且由于特征的复杂性无法直接应用,该文对此提出了改进:
算法:改进的朴素贝叶斯算法
输入:样本训练数据集定义为D={D1, D2,…,Dn},测试数据集定义为T={T1,T2,…,Tm},将提取出的特征集合作为数据的特征集X={Xi1, Xi2,…, Xi14},i∈[1,m],定义Y={0,1}来表示类别,其中0表示属于非恶意软件,1表示属于恶意软件。
输出:T的分类
1. 预处理
(1)Laplace校准
Laplace校准,也叫拉普拉斯平滑,即若出现特征划分未出现,即条件概率为0的情况下,将所有类别特征划分计数加1,这样如果训练样本集数量充分大时,并不会对结果产生影响,并且解决了上述频率为0的尴尬局面。
(2)自然对数避免下溢出
在公示中我们可以发现,在对后验概率的比较计算中,存在很小的概率相乘可能会造成下溢出,所以在进行乘法运算时采用乘数取自然对数法对运算结果进行修正。采用自然对数可避免下溢出或浮点数舍入导致的错误,且不会有任何损失。
2. 计算先验概率以及条件概率
其中,先验概率P(Y)可以计算恶意或非恶意样本在整个训练集中的比例来得到
(1)
该文利用朴素贝叶斯分类器计算条件概率P(X|Y),由于贝叶斯公式的条件是特征集合A中的各个特征值相互独立,则条件独立性假设可表示为
(2)
P(Xi|Y=j)为条件概率,也可以从训练数据中得到,样本Ti的特征可以用一组维度为14的特征向量(Xi1,Xi2,…,Xi14)来表示,则条件概率公式可以写成
(3)
若出现所有特征为出现的情况则引入拉普拉斯校准进行数值修正,即
(4)
3. 计算后验概率
分别计算出判断为恶意与非恶意情况下的后验概率,即可简化为
(5)
比较各分类下的值,若在恶意条件下的后验概率比非恶意条件下概率大,则分类结果为恶意软件;反之,则为良性软件。
3 实验过程与分析
3.1 实验过程
本次实验共采集了7035个样本,其中3171个是良性应用,为了避免数据的不均衡性,良性应用下载自广受信赖的应用商城 Google Play、小米商店等分别通过自己编写的爬虫程序爬取,包含生活、游戏、社交、购物、教育等应用类别。另外3864个应用为恶意应用,恶意样本来源为Android Malware Genome Project[16],覆盖恶意应用家族的所有类别。
实验在配置有JAVA环境的Windows 操作系统上执行。通过对多个恶意软件和非恶意软件的样本进行检测,统计计算出检测的评价标准,作为评估该方法可靠性的指标。
在恶意检测部分的实验中,将训练样本分为训练样本集合和测试样本集合。其中训练样本集合有5628个样本,包含恶意样本3010个和非恶意样本2528个;测试样本集合有1407个,包含恶意样本763个,非恶意样本644个,在分类算法上,使用上述改进的朴素贝叶斯算法,并对检测出为恶意的软件进行恶意行为分析,采用十折交叉验证,轮流将样本集的90%作为训练集,10%作为测试集,取10次试验的平均结果来评估模型。
3.2 实验方法和评价标准
为了更好的评估算法模型,实验选取的评价标准有Accuracy、Precision、Recall、F-score。
(1)Accuracy为准确率,该指标越高,表示该模型对所有未知APK预测结果的准确率越高;
(2)Precision为精确率,该指标越高,表示该模型对负样本的区分能力越强;
(3)Recall为回归率,该指标越高,表示该模型对正样本的识别能力越强;
(4)F-score是Precision与Recall的综合评估,该指标越高,说明了该模型越稳健。
其中分类的结果表如表2所示。
根据表2的描述,则实验效果评价标准的计算公式如表3所示。
3.3 实验结果与分析
如表4所示,本方案的恶意样本与Yeima,DroidDetective均包含49个恶意家族,将实验结果同Yerima[18],DroidDetective[19]的方案比较。为了测试模型的准确性和稳定性,采用了4个指标,分别为:Accuracy、Precision、Recall、F-score。
从上述实验结果和对比可以得出以下结论:
(1)对比Yeima中使用的传统朴素贝叶斯方 法,在各个评价指标上均有较好表现,说明本文基于权限组合的改进的朴素贝叶斯算法有一定的改进效果。
(2)与DroidDetective使用权限组合进行对恶意软件的检测方案相比,本文表现出了更好的对恶意软件检测的准确率以及稳定性。
(3)本文对于恶意样本的检测准确率高达97%,而对于良性样本检测准确率达到91.9%,可能存在有些软件权限申请过多而誤判为恶意样本的情况,有待改进。
4 总结
该文针对如何对安卓恶意软件进行快速有效的分析检测这一问题,使用静态检测的方法,首先通过apktool反编译安卓软件,并从中提取了安卓软件的权限,并用机器学习的方法将权限组合作为特征进行训练,用改进的朴素贝叶斯算法将软件进行分类检测。本方案具有较高的准确率和稳定性,并且即使在非恶意软件使用了大量敏感权限时,也能够被准确被准确区分出来,将对非恶意软件的误报降到最小。在未来的工作中,希望能找到更多更加有效的特征,结合动态检测进行研究或者将对比基于BP神经网络和SVM算法[20]以及以熵值法加权的KNN算法[21]来进行安卓恶意软件上的检测。
参考文献
[1]电子产品世界. 2017年第一季度全球智能手机销量增长9%[DB/OL]. http://www.eepw.com.cn/article/201705/359681. htm, 2017 05 25.
[2]鴻鴈. 360:2017年中国手机安全风险报告[DB/OL]. https:// bbs.360.cn/thread-14972358-1-1.html, 2017 5 12.
[3]ZHOU Y, JIANG X. Dissecting Android malware: characterizationand evolution[C]//Proceedings of the 2012 IEEE Symposium onSecurity and Privacy. Washington, DC: IEEE Computer Society, 2012: 95-109.
[4]Wu D J, Mao C H, Wei T E, et al. DroidMat: Android Malware Detection through Manifest and API Calls Tracing[C]//Information Security (Asia JCIS), 2012 Seventh Asia Joint Conference on. IEEE, 2012: 62-69.
[5]ZHANG R, YANG J Y. Android malware detection based on permission relevance[J]. Journal of Computer Applications, 2014, 34(5): 1322-1325.
[6]Junmei Sun, Kai Yan, Xuejiao Liu, Chunlei Yang, Yaoyin Fu: Malware detection on android smartphones using keywords vector and SVM. ICIS 2017: 833-838.
[7]Enck W, Ongtang M, Mcdaniel P D, et al. On lightweight mobile phone application certification[C]. computer and communications security, 2009: 235-245.
[8]Sahs J, Khan L. A machine learning approach to Androidmalware detection. European Intelligence and SecurityInformatics Conference. Odense, Denmark, 2012: 141-147. [doi:10.1109/EISIC.2012.34].
[9]Glodek W, Harang R. Rapid Permissions-Based Detection and Analysis of Mobile Malware Using Random Decision Forests[C]//Military Communications Conference, Milcom 2013-. IEEE, 2014: 980-985.
[10]Moonsamy V, Rong J, Liu S. Mining permission patterns for contrasting clean and malicious Android applications[J]. Future Generation Computer Systems, 2014, 36(3): 122-132.
[11]陈红闵, 胡江村. 安卓恶意软件的静态检测方法. 计算机系统应用, 2018, 27(7): 26-33.
[12]BrettLantz, 兰兹, 李洪成, 等. 机器学习与R语言[M]. 机械工业出版社, 2015.
[13]李丹. 基于朴素贝叶斯方法的中文文本分类研究[D]. 河北大学, 2011.
[14]张洁琳. 试论贝叶斯网络在用户信用评估中的应用[J]. 软件, 2018, 39(12): 194-197.
[15]任晓奎, 缴文斌, 周丹. 基于粒子群的加权朴素贝叶斯入侵检测模型[J]. 计算机工程与应用, 2016, 52(7): 122-126.
[16]APK[OL]. https://zh. wikipedia. org/wiki/APK.
[17]杨欢, 张玉清, 胡予濮, 等. 基于权限频繁模式挖掘算法的安卓恶意应用检测方法[J]. 通信学报, 2013, 34(Z1): 106-115.
[18]Yerima S Y, Sezer S, Mcwilliams G, et al. A New Android Malware Detection Approach Using Bayesian Classification [J]. advanced information networking and applications, 2013: 121-128.
[19]Liang S, Du X. Permission-combination-based scheme for Android mobile malware detection[C]. international conference on communications, 2014: 2301-2306.
[20]王宏濤, 孙剑伟. 基于BP 神经网络和SVM 的分类方法研究[J]. 软件, 2015, 36(11): 96-99.
[21]张慧, 侯开虎, 周洲. EM-KNN算法在复烤烟叶分类上的运用[J]. 软件, 2018, 39(6): 96-100.