基于权限特征和机器学习的Android恶意程序识别技术

在做恶意邮件附件检测系统时,被要求尝试在该系统内增加apk的检测。要求使用静态分析手段且对检测速度有较高的要求。

选择权限特征是因为速度很快且相对简单,只需要解包apk然后编码二进制化的AndroidManifest文件,根据permission标签读取其需要的权限即可。
在调研过程中收集到了权限相关的数据集,而在具体的实现方法上并无太大区别,只是在需要作为特征的权限数量上有所区别。
本文无创新点,只是在复现别人的操作,进行了一定程度的对比。

准备知识

以下内容来自官方文档
应用必须在清单文件的<uses-permission>标签中写入所需要的权限。
如以下代码完成对发送短信SEND_SMS权限的声明

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.snazzyapp">

    <uses-permission android:name="android.permission.SEND_SMS"/>

    <application ...>
        ...
    </application>
</manifest>

权限与应用的具体功能直接挂钩,如图。
图1 权限组与api调用
以下非官方文档
恶意软件通过具体的api调用实现其恶意操作,而每个权限能够对应多个api操作,因此通过对权限的检测能够在一定程度上表示应用的具体操作。
权限特征容易获取,这是该特征得到关注的另一个原因。
文献[1]是静态检测集大成者,基本参考了apk中的所有特征,其采用“我全都要“的基本思想,将所有权限作为特征进行训练。
自安卓系统问世以来就有研究人员研究了权限特征的可行性,至2018年仍有仅研究权限特征的高水平论文[2]。
考虑过多的权限特征一方面不一定会使检测效果更好,另一方面还有可能使检测的效率下降,因此现在基于权限的研究大多是在精简特征的个数。

我的工作

那么到底考虑多少权限能够获得比较好的检测结果呢。
博主将不同数量的权限作为特征进行训练,对比其在现在的、较新的恶意应用中的表现。
采用的权限数量分别为88、34、22。
88为综合手上两个较大数据集,取得交集。
22为论文[2]中选取的权限。
34为谷歌官方选取的26个危险权限与22个权限取并集,仅26个权限的组合曾做过测试,但由于效果原因与22权限取并集。

问:为什么不测试drebin那样的全部权限?
答:1.权限数量过多,除了drebin本身的数据集,没有其他数据集采用这么多权限。2.该方法很经典, 大概在别的地方有足够的资料。

算法采用效果最好的随机森林,参数按准确率优先进行了调整。

对457个较新的恶意应用检测结果:

88权限
34权限22权限
对恶意样本的检出率为:

权限个数检出率
8832.2%
3424.7%
2273.1%

注意22权限对照组将该457个应用划入了训练集,因而才有了较明显的提升。

对1648个较新的良性应用检测结果:

88良性
34良性
22良性
对于良性样本的检出率:

权限个数检出率
8894.2%
3499.3%
2296.3%

相关代码和数据集

细节部分如权限提取,csv处理等就不细说,在代码里了。

https://github.com/cckenny/AMDwithPermission-ML

恶意样本的训练集大概数千,良性样本数十万,只包含权限部分
数据集来源多样,主要包括kaggle比赛样本,北京某211学校网站的样本和drebin样本等,已上传至github。

结论

文献[2]的方法能够在减少权限数量的情况下达到较高的检测率(不然发不了论文…)。
可以看到仅基于权限的方法误报率是很低的,当然在一定程度上可以对参数进行调整,降低漏报则会提升误报,反之同理。
速度上的提升到没那么明显,因为无论88权限还是22权限主要都是解压比较耗时间,差不多都是1-2秒一个(CPU:E3-1231 硬盘:机械7200转)。
需要注意的是,论文一般采用的训练集和测试集为较老的、经典的程序集,对现存的恶意应用检出率较低。

补充说明

博主半年前完成的该部分复现,如今整理工作时拿出来分享,故存在截图和对照组缺失的问题
测试恶意程序的时间较短故能够截一些图,训练部分的图就算了吧,有些慢,不重跑了。
有兴趣的童鞋欢迎到github下载运行代码,如果能帮到您,请留一个star,谢谢

主要参考文献

  1. Arp, Daniel, et al. “DREBIN: Effective and Explainable Detection of Android Malware in Your Pocket.” NDSS. 2014.
  2. J. Li, L. Sun, Q. Yan, Z. Li, W. Srisa-an and H. Ye, “Significant Permission Identification for Machine-Learning-Based Android Malware Detection,” in IEEE Transactions on Industrial Informatics, vol. 14, no. 7, pp. 3216-3225, July 2018.
  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值