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

图片[1]-DroidDetective:针对Android应用程序的机器学习恶意软件分析框架-NGC660 安全实验室

关于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机器学习模型的统计信息:

Accuracy: 0.9310344827586207

Recall: 0.9166666666666666

Precision: 0.9166666666666666

F-Measure: 0.9166666666666666

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

"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

工具下载

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

git clone https://github.com/user1342/DroidDetective.git

工具安装

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

pip install -r REQUIREMENTS.txt

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

工具使用

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

python DroidDetective.py myAndroidApp.apk

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

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

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

>> Analysed file 'com.android.camera2.apk', identified as not malware.

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

python DroidDetective.py myAndroidApp.apk output.json

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

{

    "com.android.camera2": false,

}

许可证协议

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

项目地址

DroidDetective:GitHub传送门

参考资料

https://gist.github.com/Arinerron/1bcaadc7b1cbeae77de0263f4e15156f
https://github.com/ashishb/android-malware

本文作者:Alpha_h4ck, 转载请注明来自FreeBuf.COM

© 版权声明
THE END
喜欢就支持一下吧
点赞8赏点小钱 分享