🕵️ 一个用于 Android 应用的机器学习恶意软件分析框架。 ☢️
DroidDetective 是一个用于分析 Android 应用(APK)潜在恶意软件相关行为和配置的 Python 工具。当提供应用(APK 文件)路径时,DroidDetective 会利用其机器学习模型预测该应用是否恶意。DroidDetective 的特性和功能包括:
AndroidManifest.xml 文件中约 330 项权限的指定情况。 🙅AndroidManifest.xml 文件中使用的标准权限和专有权限数量。 🧮所有 DroidDetective 依赖项可通过 requirements 文件手动安装或使用以下命令安装:
pip install -R REQUIREMENTS.txt
DroidDetective 已在 Windows 10 和 Ubuntu 18.0 LTS 上测试通过。
DroidDetective 可通过将 APK 作为命令行参数提供给 Python 文件来运行,例如:
python DroidDetective.py myAndroidApp.apk
如果不存在 apk_malware.model 文件,则工具将首先训练模型,并需要在项目根目录下分别放置名为 malware 和 normal 的文件夹作为训练集。运行成功后,CLI 将输出模型判断 APK 为恶意还是良性的结果。输出示例如下:
>> Analysed file 'com.android.camera2.apk', identified as not malware.
可以向 DroidDetective.py 提供额外的参数,即一个 JSON 文件,用于保存结果。如果该 JSON 文件已存在,本次运行的结果将追加到该文件中。
python DroidDetective.py myAndroidApp.apk output.json
输出 JSON 的示例如下:
{
"com.android.camera2": false,
}
DroidDetective 是一个用于分析 Android 应用(APK)潜在恶意软件相关行为的 Python 工具。其工作原理是在从已知恶意软件 APK 和 Android 应用商店中可用的标准 APK 中提取的信息上训练随机森林分类器。该工具已预训练,但模型可在任何时间点使用新数据集重新训练。 ⚙️
该模型目前将 APK 的 AndroidManifest.xml 文件中的权限作为特征集。具体做法是创建一个包含每个标准 Android 权限的字典,若 APK 中存在该权限,则将特征设置为 1。同时,还会添加清单中使用的权限数量以及清单中发现的未识别权限数量作为特征。
预训练模型基于约 14 个恶意软件家族(每个家族包含一个或多个 APK 文件,数据来自 ashisdb 的仓库)以及约 100 个来自 Google Play 商店的正常应用进行训练。
以下为该机器学习模型的统计数据:
Accuracy: 0.9310344827586207
Recall: 0.9166666666666666
Precision: 0.9166666666666666
F-Measure: 0.9166666666666666
该模型用于识别恶意软件时权重最高的前 10 个特征(即 Android 权限)如下:
"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