前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DroidDetective:针对Android应用程序的机器学习恶意软件分析框架

DroidDetective:针对Android应用程序的机器学习恶意软件分析框架

作者头像
FB客服
发布2022-06-08 15:40:36
7240
发布2022-06-08 15:40:36
举报
文章被收录于专栏:FreeBufFreeBuf

关于DroidDetective

DroidDetective是一款功能强大的Python工具,该工具可以帮助广大研究人员分析Android应用程序(APK)中潜在的与恶意软件相关的行为或配置。我们只需要给DroidDetective提供一个应用程序APK文件路径,DroidDetective将会使用其机器学习模型来对目标应用程序进行分析和判断。

功能介绍

1、分析目标应用程序的AndroidManifest.xml文件中包含了那些权限(支持约330种权限); 2、分析目标应用程序的AndroidManifest.xml文件中使用的标准和专用权限数量; 3、使用了RandomForest机器学习分类器,可以通过14种恶意软件家族和上百款Google Play应用商店App中训练出上述数据;

机器学习模型

DroidDetective通过训练RandomForest机器学习分类器来分析Android应用程序(APK)的潜在恶意软件相关行为。这个分类器的训练数据来源于Android应用商店上已知的恶意软件APK和标准APK。该工具是经过预先训练的,但是,可以随时在新的数据集上重新训练模型。

此模型当前使用来自目标APK的AndroidManifest.xml文件中的数据作为功能集,并且能够创建标准的Android权限字典,如果APK中存在某个权限,则将该功能设置为1。

预先训练的模型利用了ashisdb提供的14个恶意软件家族以及上百款Google Play应用商店App来进行训练。

下面给出的是DroidDetective机器学习模型的统计信息:

代码语言:javascript
复制
Accuracy: 0.9310344827586207

Recall: 0.9166666666666666

Precision: 0.9166666666666666

F-Measure: 0.9166666666666666

该模型可以用于识别恶意软件的前十大热门权限,具体如下所示:

代码语言:javascript
复制
"android.permission.SYSTEM_ALERT_WINDOW": 0.019091367939223395,

"android.permission.ACCESS_NETWORK_STATE": 0.021001765263234648,

"android.permission.ACCESS_WIFI_STATE": 0.02198962579120518,

"android.permission.RECEIVE_BOOT_COMPLETED": 0.026398914436102188,

"android.permission.GET_TASKS": 0.03595458598076517,

"android.permission.WAKE_LOCK": 0.03908212881520419,

"android.permission.WRITE_SMS": 0.057041576632290585,

"android.permission.INTERNET": 0.08816028225034145,

"android.permission.WRITE_EXTERNAL_STORAGE": 0.09835914154294739,

"other_permission": 0.10189463965313218,

"num_of_permissions": 0.12392224814084198

工具下载

广大研究人员可以使用下列命令将该项目源码克隆至本地:

代码语言:javascript
复制
git clone https://github.com/user1342/DroidDetective.git

工具安装

由于该工具基于Python语言开发,因此我们首先需要在本地设备上安装并配置好Python环境。接下来,可以使用requirements.txt文件来安装该工具所需的依赖组件:

代码语言:javascript
复制
pip install -r REQUIREMENTS.txt

注意,DroidDetective已在Windows 10和Ubuntu 18.0 LTS系统上进行过测试。

工具使用

在下列命令中,我们将一个待分析的目标APK文件以命令行参数的形式提供给了DroidDetective的Python脚本,并执行分析:

代码语言:javascript
复制
python DroidDetective.py myAndroidApp.apk

如果apk_malware.model文件不存在的话,该工具则首先需要训练模型,此时需要在项目的malware目录和normal目录中提供训练集APK。

分析完成之后,工具将会把分析结果打印到命令行窗口中,并告知广大研究人员目标APK文件是否具有恶意性。

下面给出的是一份分析结果示例:

代码语言:javascript
复制
>> Analysed file 'com.android.camera2.apk', identified as not malware.

当然了,我们也可以通过命令行参数的形式让DroidDetective将分析结果存储到一个JSON文件中,如果目标JSON文件已存在的话,工具则会将分析结果追加到文件内容结尾处:

代码语言:javascript
复制
python DroidDetective.py myAndroidApp.apk output.json

下面给出的是JSON文件输出样例:

代码语言:javascript
复制
{

    "com.android.camera2": false,

}

许可证协议

本项目的开发与发布遵循GPL-3.0开源许可证协议。

项目地址

https://github.com/user1342/DroidDetective

参考资料

https://gist.github.com/Arinerron/1bcaadc7b1cbeae77de0263f4e15156f

https://github.com/ashishb/android-malware

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于DroidDetective
  • 功能介绍
  • 机器学习模型
  • 工具下载
  • 工具安装
  • 工具使用
  • 许可证协议
  • 项目地址
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档