社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

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

FreeBuf • 4 年前 • 431 次点击  

 关于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开源许可证协议。

项目地址

https://github.com/user1342/DroidDetective

参考资料

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


精彩推荐









Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/135388