Satz-N-Sentry/android-malware-analysis
GitHub: Satz-N-Sentry/android-malware-analysis
一个基于 Python 与随机森林算法的 Android 恶意软件检测系统,通过静态分析提取权限和 API 特征来自动判定 APK 的恶意性。
Stars: 0 | Forks: 0
# Android 恶意软件分析 Pipeline
一个基于机器学习的 Android 恶意软件检测系统,构建于 Kali Linux 之上。
结合静态分析与 Random Forest 分类技术来检测恶意 APK。
## 项目概述
本工具使用以下方式分析 Android APK 文件:
- **静态分析 (Static Analysis)** — 使用 androguard 提取权限和 API 调用
- **机器学习 (Machine Learning)** — 基于标记 APK 样本训练的 Random Forest 分类器
- **手动 Pipeline** — 扫描任意 APK 并即时获取判定结果及置信度评分
## 项目结构
```
android-malware-analysis/
├── static_analysis/
│ └── extract_features.py
├── ml_model/
│ └── train_model.py
├── pipeline.py
├── results/
│ ├── features.csv
│ ├── confusion_matrix.png
│ ├── feature_importance.png
│ └── scan_reports/
└── requirements.txt
```
## 工具与技术
| 工具 | 用途 |
|------|---------|
| androguard | APK 静态分析 |
| scikit-learn | Random Forest 机器学习分类器 |
| pandas | 数据集管理 |
| matplotlib/seaborn | 可视化 |
| Frida | 动态分析 (即将推出) |
## 安装说明
```
# 克隆 repo
git clone https://github.com/Satz-N-Sentry/android-malware-analysis.git
cd android-malware-analysis
# 创建 virtual environment
python3 -m venv venv
source venv/bin/activate
# 安装 dependencies
pip install -r requirements.txt
```
## 使用方法
### 第 1 步 — 从 APK 数据集提取特征
```
python3 static_analysis/extract_features.py
```
### 第 2 步 — 训练 ML 模型
```
python3 ml_model/train_model.py
```
### 第 3 步 — 扫描任意 APK
```
python3 pipeline.py path/to/suspicious.apk
```
### 输出示例
```
=======================================================
ANALYSIS REPORT
=======================================================
APK : suspicious.apk
Total permissions: 21
Suspicious flags : SEND_SMS, READ_SMS, RECEIVE_SMS
-------------------------------------------------------
VERDICT : MALWARE DETECTED
CONFIDENCE: 76.0%
Do NOT install this APK!
=======================================================
[+] Report saved to: results/scan_reports/suspicious_report.txt
```
## 结果
### 混淆矩阵 (Confusion Matrix)

### 特征重要性 (Feature Importance)

### 关键发现
- **total_permissions** 是最强的恶意软件指标
- **total_api_calls** 紧随其后,是第二大指标
- 在所有恶意软件样本中均发现了 **RECEIVE_BOOT_COMPLETED**
- 通过 SEND/READ/RECEIVE_SMS 标志识别出的 SMS 窃取类恶意软件
## 数据集
- 3 个良性 APK (Calculator, Clock, Flashlight)
- 3 个来自 MalwareBazaar 的恶意软件 APK
- 特征:12 个权限标志 + 总权限数 + 总 API 调用数
## 准确率
- 总体准确率:67% (受限于较小的数据集)
- 恶意软件召回率:100% (没有漏报任何恶意软件!)
- 正在通过增加样本数量进行改进
## 路线图
- [x] 使用 androguard 进行静态分析
- [x] ML 模型 (Random Forest 分类器)
- [x] 手动 Pipeline 扫描器
- [x] 推送至 GitHub
- [ ] 增加更多 APK 样本以提高准确率
- [ ] 使用 Frida 进行动态分析
- [ ] 使用 Wireshark 进行网络流量监控
- [ ] 提供 Web 界面以便于扫描
## 免责声明
本项目仅供教育目的。
恶意软件样本仅在本地保存,绝不进行分发。
标签:AMSI绕过, Androguard, Android, Apex, API调用分析, APK分析, DSL, Python, Scikit-learn, 二进制分析, 云安全监控, 云安全运维, 人工审查, 威胁检测, 无后门, 机器学习, 权限提取, 网络安全, 自定义DNS解析器, 逆向工具, 随机森林, 隐私保护, 静态分析