基于权限特征和机器学习的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>
权限与应用的具体功能直接挂钩,如图。
以下非官方文档
恶意软件通过具体的api调用实现其恶意操作,而每个权限能够对应多个api操作,因此通过对权限的检测能够在一定程度上表示应用的具体操作。
权限特征容易获取,这是该特征得到关注的另一个原因。
文献[1]是静态检测集大成者,基本参考了apk中的所有特征,其采用“我全都要“的基本思想,将所有权限作为特征进行训练。
自安卓系统问世以来就有研究人员研究了权限特征的可行性,至2018年仍有仅研究权限特征的高水平论文[2]。
考虑过多的权限特征一方面不一定会使检测效果更好,另一方面还有可能使检测的效率下降,因此现在基于权限的研究大多是在精简特征的个数。
我的工作
那么到底考虑多少权限能够获得比较好的检测结果呢。
博主将不同数量的权限作为特征进行训练,对比其在现在的、较新的恶意应用中的表现。
采用的权限数量分别为88、34、22。
88为综合手上两个较大数据集,取得交集。
22为论文[2]中选取的权限。
34为谷歌官方选取的26个危险权限与22个权限取并集,仅26个权限的组合曾做过测试,但由于效果原因与22权限取并集。
问:为什么不测试drebin那样的全部权限?
答:1.权限数量过多,除了drebin本身的数据集,没有其他数据集采用这么多权限。2.该方法很经典, 大概在别的地方有足够的资料。
算法采用效果最好的随机森林,参数按准确率优先进行了调整。
对457个较新的恶意应用检测结果:
对恶意样本的检出率为:
权限个数 | 检出率 |
---|---|
88 | 32.2% |
34 | 24.7% |
22 | 73.1% |
注意22权限对照组将该457个应用划入了训练集,因而才有了较明显的提升。
对1648个较新的良性应用检测结果:
对于良性样本的检出率:
权限个数 | 检出率 |
---|---|
88 | 94.2% |
34 | 99.3% |
22 | 96.3% |
相关代码和数据集
细节部分如权限提取,csv处理等就不细说,在代码里了。
https://github.com/cckenny/AMDwithPermission-ML
恶意样本的训练集大概数千,良性样本数十万,只包含权限部分。
数据集来源多样,主要包括kaggle比赛样本,北京某211学校网站的样本和drebin样本等,已上传至github。
结论
文献[2]的方法能够在减少权限数量的情况下达到较高的检测率(不然发不了论文…)。
可以看到仅基于权限的方法误报率是很低的,当然在一定程度上可以对参数进行调整,降低漏报则会提升误报,反之同理。
速度上的提升到没那么明显,因为无论88权限还是22权限主要都是解压比较耗时间,差不多都是1-2秒一个(CPU:E3-1231 硬盘:机械7200转)。
需要注意的是,论文一般采用的训练集和测试集为较老的、经典的程序集,对现存的恶意应用检出率较低。
补充说明
博主半年前完成的该部分复现,如今整理工作时拿出来分享,故存在截图和对照组缺失的问题。
测试恶意程序的时间较短故能够截一些图,训练部分的图就算了吧,有些慢,不重跑了。
有兴趣的童鞋欢迎到github下载运行代码,如果能帮到您,请留一个star,谢谢。
主要参考文献
- Arp, Daniel, et al. “DREBIN: Effective and Explainable Detection of Android Malware in Your Pocket.” NDSS. 2014.
- 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.
基于权限特征和机器学习的Android恶意程序识别技术相关推荐
- Android驾驶证拍照识别技术
Android驾驶证拍照识别SDK 一.Android驾驶证拍照识别技术应用背景 这些年,随着互联网金融的极速发展,第三方支付.理财.P2P网贷.征信等APP应用成爆发式的增长,在众多APP中都涉及到 ...
- android声纹识别技术,基于Android平台的声纹识别系统的研究与实现
摘要: 社会的发展越来越快,计算机技术的应用也愈来愈广,已经渗透到生活的各个方面.在快节奏.信息化的时代,需要识别和交互的应用日益广泛,要求验证身份的场合越来越多,迅速判定一个人的身份是一个非常重要的 ...
- 【机器学习超详细】机器学习案例之SVM人脸识别技术应用 PCA降维 结果可视化 支持向量机
基础知识介绍: LFW人脸识别数据集(http://vis-www.cs.umass.edu/lfw/) 该实验可以在JupyterNotebook上运行,也可在其他Python程序上运行.(本人习惯 ...
- android恶意代码检测报告,用机器学习检测Android恶意代码
参考资料 原理 原理就不详细讲了,我参考资料中给的链接已经说得很清楚了,我就说一说原文中说得不是很清楚,我自己进行了一些揣摩理解的地方. 我以method作为单位进行提取,每个method看成互不相关 ...
- 004基于离散小波变换和机器学习分类器的癫痫发作检测技术
An Efficient Epileptic Seizure Detection Technique using Discrete Wavelet Transform and Machine Lear ...
- 基于android的条码识别技术,基于Android手机的条码识别系统研究
摘要: 当前,条码技术在商品管理.生产自动化.邮政系统.交通运输等领域得到了广泛的应用.与此同时,随着网络信息技术的发展,尤其是近几年以智能手机为代表的智能终端设备的兴起,移动互联网获得了蓬勃发展,为 ...
- Android之基于xmpp openfire smack开发之Android消息推送技术原理分析和实践[4]
http://blog.csdn.net/shimiso/article/details/8156439 前面几篇给大家系统讲解的有关xmpp openfire smack asmack相关的技术和使 ...
- android查看应用权限管理,通过adb列出Android应用程序的权限
我只是想将Jason和Juuso的答案结合在一起,并注意到前者列出了授予的权限,而后者列出了请求的权限(包括被授予的权限). 要查看仅授予的权限(但忽略被请求但未被授予的权限),请使用 adb she ...
- android访问setting权限,如何获得我的Android应用程序的可怕WRITE_SECURE_SETTINGS权限?...
我需要能够打开和关闭GPS接收器,并且需要WRITE_SECURE_SETTINGS才能访问安全设置.我已经搜索了很多,我看到的每个答案都说,系统/固件之外的任何应用程序都无法获得该认可. 然而,这完 ...
- Windows Dll Injection、Process Injection、API Hook、DLL后门/恶意程序入侵技术
catalogue 1. 引言 2. 使用注册表注入DLL 3. 使用Windows挂钩来注入DLL 4. 使用远程线程来注入DLL 5. 使用木马DLL来注入DLL 6. 把DLL作为调试器来注入 ...
最新文章
- 水晶报表导出数据并实现打印
- 在Android NDK中使用OpenSSL
- 搭建Java开发环境及相关工具
- 【七】zuul路由网关
- 游戏开发中的数学和物理算法(18):缩放
- BG.Hive - part3
- 淮安颜老师计算机,颜老师_以老师为话题的作文750字_独木帆作文网
- Git amend 修改上次提交
- 大数据分析项目实例:Hadoop数据分析应用场景
- Spline样条曲线
- 新库上线 | 税收调查企业专利及引用被引用数据
- 人脸对齐算法常用评价标准总结
- android实现微信网页浏览、QQ下拉效果SlidingLayout
- c++ ODBC使用
- 数字化时代-11:从马斯洛需求层次看未来选择做什么样的产品
- python中爬虫隐藏身份的设置
- 【附源码例】快捷指令实现调出iOS隐藏应用程序-原理解析
- vs Code常用插件和快捷键(区分 win 和 Mac)
- 程序员新公司入职被拒 只因离职证明多了一句话!
- java浏览器刷新页面_使用js刷新浏览器页面