基于Xgboost的Android恶意软件检测方法

2019-08-08 06:23王雪敬
电脑知识与技术 2019年18期
关键词:特征提取

王雪敬

摘要:Android操作系统是当今最流行的智能手机操作系统,Android平台的恶意软件也急剧增长,而目前仍然没有十分有效的手段对Android恶意软件进行检测,该文通过分析Android恶意软件并获取特征,采用机器学习算法Xgboost对Android恶意软件进行检测分类。选取Permission、Intent和API作为特征属性并进行优化选择,用Xgboost算法对特征集进行训练和测试,得到最终分类结果。实验结果表明,提出的基于检测方法有较好的检测准确率和较低的误报率。

关键词:Xgboost;Android;恶意软件;特征提取;检测分类

中图分类号:TP393.08        文献标识码:A

文章编号:1009-3044(2019)18-0288-03

Abstract:Android operating system is the most popular smartphone operating system nowadays. Malware on Android platform is also growing rapidly. At present, there is still no very effective means to detect Android malware. By analyzing the characteristics of Android malware, machine learning algorithm Xgboost is used to detect and classify Android malware. Extract Permission,Intent and API as feature attributes and select the optimal feature subset by feature selection algorithm . Xgboost algorithm is used to detect and classify Android malware. The experimental results show that thedetection method proposed have better accuracy of detection and lower false positive rate.

Key words: Xgboost; Android; malware; feature extraction; detection classification

1 引言

Android操作系统由于其开源性、兼容性和市场的开放性,成了当今最流行的智能手机操作系统。各种各样的应用软件给人们的生活提供了极大的便利,然而多种类型的Android恶意软件也随之而来。Android智能终端带来的安全问题日益严重,造成用户的隐私泄露和经济损失等问题,给用户带來了非常多的困扰。因此,对恶意软件检测研究具有重要的意义,如何有效检测出恶意软件已成为目前的研究热点。

目前,Android恶意软件检测的方法有静态检测、动态检测以及动静态相结合的混合检测方法[1]。由于机器学习算法的普遍应用,许多学者试着借助机器学习的算法对Android 恶意软件检测研究。文献[2]提出一种基于权限相关性的恶意软件检测方法,通过对朴素贝叶斯改进形成分类器,实现了对恶意软件初步的快速检测,缺点是只采用单一的特征,造成检测效果不佳。文献[3]提出了一种基于SVM(Support Vector Machine )的检测方法,利用高危的权限组合和API调用作为特征属性,建立SVM分类器,从而自动分类恶意和良性软件。文献[4]提出了一种基于沙盒的恶意软件动态分类模型,使用逆向工具在Android 的apk中注入API监视代码,在沙盒中运行Android软件并实时监测API调用,故在沙盒中模拟应用软件的运行过程,从而达到检测恶意软件的目的,但是这种方法资源开销很大。文献[5]提出了一个高效系统的信息流跟踪工具TaintDroid,它可以同时跟踪应用程序的敏感数据的多个扩散途径,实现了对多种敏感数据泄露源点的追踪。文献[6]设计了Android软件行为的动态监控框架,通过实验分别对SVM、DT、k-近邻和NB四种算法进行评价。文献[7]采用动静态结合的方法提取三种类型的特征,然后设计了一种三层混合系综算法(Triple Hybrid Ensemble Algorithm, THEA)。然后通过THEA算法实现了Androdect检测工具对恶意软件的检测,但此方法在技术方面比较有难度。

目前的恶意软件检测方法在检测准确率、检测误报率和复杂度等方面还存在一些不足。本文提出基于Xgboost的Android恶意软件检测分类方法,通过逆向工程对Android 应用软件进行处理,获取Permission、Intent和API三种特征作为特征属性,并运用特征选择算法去除冗余的特征,得到的最优特征子集。采用十折交叉验证法训练分类器并获取分类结果。实验表明该分类检测方法具有较好的检测准确率和较低的误报率。

2 基于Xgboost的检测方法

2.1 Xgboost算法

Xgboost是在GBDT(Gradient Boosting Decision Tree)基础上发展起来的,全名是eXreme Gradient Boosting,Tianqi Chen于2015年提出的[8]。Xgboost使用多种策略去防止出现过拟合,如正则化项、Shrinkage and Column Subsampling等。在Xgboost集成学习框架中,直接影响其分类性能的主要有参数的收缩步长(shrinkage)和子节点中最小样本权重阈值(min_child_weight)。过小的shrinkage会导致算法过拟合,较大的shrinkage导致算法无法收敛,对于min_child_weight,过小会导致算法过拟合,过大的mini_child_weight将会导致算法对线性不可分数据的分类性能。Xgboost支持并行化,有很快的训练速度。Xgboost的目标函数的优化是利用损失函数关于待求函数的二阶导数。

2.2 方法设计

本文提出的基于Xgboost的Android恶意软件检测方法示意图如图1所示。该方法主要有特征向量提取、特征优化和检测分类3个阶段组成。详细的设计过程如下:

①运用反编译工具apktool[9]反编译apk文件得到AndroidManifest.xml文件和smali文件。

②选取Permission、Intent和API作为特征属性,然后提取属性值。根据提取的属性值,统计出每个属性值的出现次数并进行排序,使用频率较高的属性值组合作为特征集合。

③根据组成的特征集合,把apk文件提取出的属性值与之对比,生成相应的特征向量集合。

④使用特征选择算法对特征向量集合进行特征属性选择并排序,根据排序的结果选取更更具有代表性的特征属性集合并生成最优的特征子集。

⑤按照十折交叉验证,将特征向量提取阶段生成的最优特征子集轮流地以9:1的比例划分为训练集和测试集,输入到Xgboost分类器中进行训练和测试,并计算出分类准确率和误报率。

2.3 特征向量提取

在特征向量提取模块首先进行逆向分析,提取apk文件中的Permission、Intent和API作为特征,特征量化后构造特征向量,最后将全部的特征向量合并为数据集。获取Permission、Intent和API的过程以及apk文件的反编译结果如图2、图3所示。部分常见的Permission、Intent和高危API如表1所示。

具体处理过程设计如下:

3 实验结果与分析

3.1 样本来源和实验环境

在本文实验中共采集了3260个样本,其中良性软件2000个,来源于Google 官方应用市场Google Play[10],包含所有应用类别。恶意软件来源于Android 恶意软件基因组项目(Android malware genome project)[11],共计1260个样本,覆盖恶意应用家族的所有类别。

实验主机配置为 Intel(R) Core(TM) i5-7400 CPU @ 3.00 GHz,内存为4GB,特征的提取以及检测分类通过Python语言编程来实现,特征的优化过程是在Weka[12]下完成。

3.2 实验结果分析

本文通过实验来验证所提出方法的分类效果。采用十折交叉验证法,将获得的最优样本集分为10个部分,轮流将其中1个部分作为测试样本,其它9部分为训练样本,实验结果取10次平均值。

为验证Xgboost对Android恶意软件分类的效果,将Xgboost分别与Android 恶意软件检测中常用的机器学习算法RF、SVM和GBDT进行对比,训练4种分类器,并对测试集分类,获得最终分类结果。本文所采用的评估指标是准确率和误报率。实验结果如表2所示。

4 结论

针对Android平台中恶意软件泛滥问题以及现有方法检测的效果不是很好等问题,提出了基于Xgboost的Android恶意软件检测方法。在特征属性选择方面,选取了Permission、Intent和API三个特征属性,有效增强了对Android软件的区分度。实验结果显示出该分类方法有较高的分类精度,具有良好的分类效果。

参考文献:

[1] Qing SH. Research progress on Android security. Ruan Jian Xue Bao/Journal of Software, 2016,27(1):45?71 (in Chinese). http://www.jos.org.cn/1000-9825/4914.html

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

[3] Li W, Ge J, Dai G. Detecting Malware for Android Platform: An SVM-Based Approach[C]// IEEE International Conference on Cyber Security and Cloud Computing. Piscataway, New Jersey, USA: IEEE Press, 2015: 464-469.

[4] 赵洋,胡龙,熊虎,等. 基于沙盒的Android恶意软件动态分析方案[J]. 信息网络安全,2014,(12):21-26.

[5] Enck W, Gilbert P, Han S, et al. TaintDroid:An Information-Flow Tracking System for Realtime Privacy Monitoring on Smartphones[C]// ACM Transactions on Computer Systems. New York, New York, USA: ACM Press, 2014:393-407.

[6] 孙润康,彭国军,李晶雯,等.基于行为的Android恶意软件判定方法及其有效性[J].计算机应用,2016, 36(4):973-978.

[7] 杨欢,张玉清,胡予淮,等.基于多类特征的Android应用恶意行为检测系统[J].计算机学报,2014, 37(1):15-27.

[8] TIANQI C, GUESTRIN C. XGBoost: A Scalable Tree Boosting System[C]//KDD '16 Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. USA, California San Francisco: AMC, 2016.

[9] FENG S Q. Android software security and reverse analysis[M]. Beijing: PTPRESS, 2013.

[10] https://play.google.com/store

[11]  JIANG X,ZHOU Y. Dissecting Android malware: characterization and evolution[C]// IEEE Symposium on Security & Privacy. New Jersey, USA: IEEE, 2012: 95-109.

[12] YUAN M Y.Data Mining and Machine Learning: WEKA Application Technology and Practice[M]. Beijing: Tsinghua University Press,2016: 329-344.

【通联编辑:代影】

猜你喜欢
特征提取
基于Gazebo仿真环境的ORB特征提取与比对的研究
基于Daubechies(dbN)的飞行器音频特征提取
一种基于LBP 特征提取和稀疏表示的肝病识别算法
基于DSP的直线特征提取算法
基于MED和循环域解调的多故障特征提取
Walsh变换在滚动轴承早期故障特征提取中的应用