在做恶意邮件附件检测系统时,被要求尝试在该系统内增加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,谢谢

主要参考文献

  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.

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

  1. Android驾驶证拍照识别技术

    Android驾驶证拍照识别SDK 一.Android驾驶证拍照识别技术应用背景 这些年,随着互联网金融的极速发展,第三方支付.理财.P2P网贷.征信等APP应用成爆发式的增长,在众多APP中都涉及到 ...

  2. android声纹识别技术,基于Android平台的声纹识别系统的研究与实现

    摘要: 社会的发展越来越快,计算机技术的应用也愈来愈广,已经渗透到生活的各个方面.在快节奏.信息化的时代,需要识别和交互的应用日益广泛,要求验证身份的场合越来越多,迅速判定一个人的身份是一个非常重要的 ...

  3. 【机器学习超详细】机器学习案例之SVM人脸识别技术应用 PCA降维 结果可视化 支持向量机

    基础知识介绍: LFW人脸识别数据集(http://vis-www.cs.umass.edu/lfw/) 该实验可以在JupyterNotebook上运行,也可在其他Python程序上运行.(本人习惯 ...

  4. android恶意代码检测报告,用机器学习检测Android恶意代码

    参考资料 原理 原理就不详细讲了,我参考资料中给的链接已经说得很清楚了,我就说一说原文中说得不是很清楚,我自己进行了一些揣摩理解的地方. 我以method作为单位进行提取,每个method看成互不相关 ...

  5. 004基于离散小波变换和机器学习分类器的癫痫发作检测技术

    An Efficient Epileptic Seizure Detection Technique using Discrete Wavelet Transform and Machine Lear ...

  6. 基于android的条码识别技术,基于Android手机的条码识别系统研究

    摘要: 当前,条码技术在商品管理.生产自动化.邮政系统.交通运输等领域得到了广泛的应用.与此同时,随着网络信息技术的发展,尤其是近几年以智能手机为代表的智能终端设备的兴起,移动互联网获得了蓬勃发展,为 ...

  7. Android之基于xmpp openfire smack开发之Android消息推送技术原理分析和实践[4]

    http://blog.csdn.net/shimiso/article/details/8156439 前面几篇给大家系统讲解的有关xmpp openfire smack asmack相关的技术和使 ...

  8. android查看应用权限管理,通过adb列出Android应用程序的权限

    我只是想将Jason和Juuso的答案结合在一起,并注意到前者列出了授予的权限,而后者列出了请求的权限(包括被授予的权限). 要查看仅授予的权限(但忽略被请求但未被授予的权限),请使用 adb she ...

  9. android访问setting权限,如何获得我的Android应用程序的可怕WRITE_SECURE_SETTINGS权限?...

    我需要能够打开和关闭GPS接收器,并且需要WRITE_SECURE_SETTINGS才能访问安全设置.我已经搜索了很多,我看到的每个答案都说,系统/固件之外的任何应用程序都无法获得该认可. 然而,这完 ...

  10. Windows Dll Injection、Process Injection、API Hook、DLL后门/恶意程序入侵技术

    catalogue 1. 引言 2. 使用注册表注入DLL 3. 使用Windows挂钩来注入DLL 4. 使用远程线程来注入DLL 5. 使用木马DLL来注入DLL 6. 把DLL作为调试器来注入 ...

最新文章

  1. 水晶报表导出数据并实现打印
  2. 在Android NDK中使用OpenSSL
  3. 搭建Java开发环境及相关工具
  4. 【七】zuul路由网关
  5. 游戏开发中的数学和物理算法(18):缩放
  6. BG.Hive - part3
  7. 淮安颜老师计算机,颜老师_以老师为话题的作文750字_独木帆作文网
  8. Git amend 修改上次提交
  9. 大数据分析项目实例:Hadoop数据分析应用场景
  10. Spline样条曲线
  11. 新库上线 | 税收调查企业专利及引用被引用数据
  12. 人脸对齐算法常用评价标准总结
  13. android实现微信网页浏览、QQ下拉效果SlidingLayout
  14. c++ ODBC使用
  15. 数字化时代-11:从马斯洛需求层次看未来选择做什么样的产品
  16. python中爬虫隐藏身份的设置
  17. 【附源码例】快捷指令实现调出iOS隐藏应用程序-原理解析
  18. vs Code常用插件和快捷键(区分 win 和 Mac)
  19. 程序员新公司入职被拒 只因离职证明多了一句话!
  20. java浏览器刷新页面_使用js刷新浏览器页面

热门文章

  1. 单片机广告灯实验总结_单片机流水灯实验总结精选 .doc
  2. golang学习笔记(6)-gorm实现查询功能
  3. 程序员的工资是不是太高了?真相让人心疼
  4. 【UE】初识Slate编辑器-理解一个最基础的编辑器界面
  5. HttpStatus详解
  6. python画多边形太阳花
  7. 伽罗华有限域_有限域 伽罗瓦域
  8. 保姆级教程!Windows右下角扬声器有红叉,点击声音设置输出显示“未安装任何音频输出设备”?
  9. 影响塑料制品注塑质量的因素,以及解决方案
  10. vim设置自动保存快捷键、执行当前正在编写的Shell脚本快捷键