江苏省通信服务有限公司 无锡网盈分公司 杨树春
恶意移动应用检测方法
江苏省通信服务有限公司 无锡网盈分公司 杨树春
提出了一种恶意移动应用检测方法,该方法以Android移动应用为研究对象,从APK(Android安装包)文件中静态提取出权限、组件行为和函数调用等特征,进而采用支持向量机分类方法,建立分类模型用于识别恶意应用。实验结果表明该方法能获得较好的检测精度。
聚类分析; 集成聚类; 恶意应用检测
移动互联网移动终端的广泛应用,使得移动终端上的恶意软件成为重要的危险源。这些恶意软件通常会通过植入恶意代码篡改和采集用户信息、窃取账号、构建僵尸网络和获取root权限等操作,进而对终端使用者和服务提供者的数据资产安全造成了极大危害。此外,Android平台由于其开放性、优秀的性能和易操作性等特点,在智能移动终端市场具有较高的占有率,但也正由于其开放性,易于被恶客篡改和利用,所以出现了数量巨大、变种较多的恶意Android应用。因此,恶意应用检测成为近年来移动终端安全防护技术研究的热点问题之一。为了进行恶意应用检测,提高检测精度,本文的工作首先通过静态分析方法提取三类应用特征,包括权限特征、组件特征和函数调用特征,而后数据挖掘方法中支持向量机(SVM)模型对给定的样本建立分类模型,最后将采集自第三方应用市场的500款Android应用作为样本(其中有147款恶意应用和353款正常应用)进行了实验,获得了较好的检测精度。
1.1 检测框架
图1为基于数据挖掘的恶意应用检测框架。给定收集的正常应用样本库和恶意应用样本库,首先通过静态分析方法,对于Android应用的APK(Android安装包)文件进行处理,提取多种类型的特征,包括权限特征、组件使用特征和函数调用特征,建立多类型特征集;其次,采用主成分分析(PCA)方法进行特征选取;接着,采用SVM分类方法建立恶意应用分类器;最后,对应用分类器测试样本进行分类,给出样本的分类结果。
1.2 特征提取
Xij表示第i个样本应用的第j个特征值。
采用静态分析方法提取二进制程序样本的特征,本文提取的样本特征包括组件使用特征、权限特征、函数调用特征等。
假设Android应用可指定的权限有n个,权限集为
其中pi为第i个权限,n为权限总数,1≤i≤n,则权限特征为
若有
假设Android应用包含p个组件,记为C1,…,C2,…,Cp,则组件使用特征为
则方程组左边的综合指标Z1,Z2,…,Zm是样本原先的p个特征X1, X2,…, Xp对应的m个主成分,bij是系数。其中,Zi与Zj(i≠j;i, j=1,2,…, m)相互无关;Z1是X1, X2,…, Xp的所有线性组合中方差最大的;Z2是与Z1不相关的X1, X2, …, Xp的所有线性组合中方差最大的;Zm是与Z1, Z2,…,Zm-1都不相关的X1, X2, …, Xp的所有线性组合中方差最大的。
其中count(Ci)表示组件使用次数,1≤i≤p。
其中βi(0≤i≤m)是线性回归中变量Zi对应的系数,Y是线性拟合后的值。
其中函数调用是应用程序与底层系统交互的纽带,函数调用可以获取用户的subscriber ID、phone ID、其他类似个人隐秘信息和下载其他应用程序等。
可以采用静态分析的方式进行特征提取,其步骤如下:
1) 将APK文件解压缩后获取其中的lib/*.so文件以及Androidmanifest.xml文件;
2) 从Androidmanifest.xml文件中提取权限特征和组件使用特征;
3) 将所有的lib/*.so文件进行合并产生对应的*.elf文件;
4) 从*.elf文件中得到类别为“func”(*.elf文件中包含的类别)的所有应用程序编程接口。
经过主成分分析完成特征选择后,从样本库中选取部分训练样本以训练SVM分类器,同时选取部分测试样本作为测试集以进行分类结果的精度评估。选取样本的原则为充分考虑正常应用和恶意应用的比例,从而使选择的样本具有代表性。本文所选取的训练样本数据占总样本的80%,测试样本数据占20%。
其中x是空间中某个点,y是中心点, ||x -y||2表示x2与中心点y之间的距离平方和,核参数σ=0.5;错分惩罚因子C=50,采用开源的软件包Libsvm[1]实现。
1.3 特征选择
为了从组件使用特征、权限特征、函数调用特征等众多的特征中确定哪些特征对于分类有重大影响,采用了基于主成分分析方法进行特征选择。
设有个n×p 阶的数据矩阵是由n 个样本组成,其中每条样本都具有p个特征,构成如下的数据矩阵
2.1 实验设置
本实验采集自第三方应用市场的500款Android应用进行了病毒、蠕虫、木马等多种分析,经过整理将147款恶意应用和353款正常应用作为最终的样本集,样本集中的这些应用覆盖了娱乐、教育、体育、卫生、新闻、财经等多种类型,具有代表性。所有实验在内存为8 GB RAM,处理器为 Intel(R) core i5 CPU 3.5 GHz的机器上完成,采用了Java语言实现了本文提出的基于静态分析的特征提取算法完成上述APK样本的特征提取。为了验证算法有效性,与其他分类算法如后向传播神经网络、决策树算法C4.5等进行比较。
实验中采用的评价标准采用精度precision、召回率recall和平衡F分数F1 score,其中精度计算方法为正确识别的异常应用个数与真实异常应用个数的比值;召回率计算方法为正确识别的异常应用个数与识别到的所有异常个数的比值;F1 score计算方法为精度与召回率乘积的2倍除以精度与召回率之和。
2.2 结果分析
为了验证本文提出的算法的有效性,将SVM算法与人工神经网络(ANN)和C4.5的检测方法进行了比较分析,并且考虑了采用不同特征组合表示应用样本的情况,实验结果如表1所示。其中表格中每个单元格的第一行描述了算法获得的F1 score,而第二行则是算法的precision和recall值,粗体字表示每一个特征集刻画的样本取得最佳F1 score值的那个算法。
表1 不同算法在不同特征集表示样本中的结果
从表1中可以看出:
1) SVM分类器几乎在所有的特征集上的F1 score都优于其他两种分类器;
2) 在考虑用单一特征刻画的应用样本情形下,可以发现采用函数调用的方式刻画的样本集上取得的F1 score值最高,优于其他两种特征集下的值,其中基于组件特征的检测精度最低,基于权限特征的恶意应用检测的精度较高;
3) 从特征组合角度来说,基于多个特征刻画的样本集上取得的F1 score值均高于采用单一特征刻画的样本集取得的值,且对于组件特征的改善更为明显。
本文的方法以Android移动应用为研究对象,从APK文件中静态提取出权限、组件行为和函数调用等特征,进而采用支持向量机分类方法建立分类模型用于识别恶意应用。实验结果表明该方法能获得较好的检测精度。不过,目前本文的工作中考虑的特征均为通过静态分析方法获得的特征,在未来的工作中可以考虑通过动态分析的方法获取一些系统运行时的行为特征,如系统调用特征、控制流特征等,将对于进一步提高检测精度有更多贡献。
[1]CHANG Chih-chung, LIN Chih-jen. Libsvm-a library for support vector machines[EB/OL].[2015-10-08]. http://www.csie.ntu.edu.tw/~cjlin/libsvm.