binaryguardia/andro-malware-analysis
GitHub: binaryguardia/andro-malware-analysis
一款多信号融合的 Android APK 恶意软件静态分析桌面应用,通过机器学习、YARA 规则、VirusTotal 和行为分析为应用给出可解释的风险判决。
Stars: 0 | Forks: 0
# AndroidGuard Pro — 多信号 APK 恶意软件扫描器
[](LICENSE)


**AndroidGuard Pro** 是一款用于对 Android APK 文件进行静态分析的桌面应用程序,采用四信号融合引擎:**机器学习**(RandomForest,在 CICMalDroid 2020 数据集上准确率达 91%)、**YARA 规则**、**VirusTotal** 集成以及**行为分析**。
## 下载
从[发布页面](https://github.com/binaryguardia/andro-malware-analysis/releases)获取最新版本。
| 平台 | 安装包 | 大小 |
|---|---|---|
| **Linux** (Debian/Ubuntu) | `.deb` | ~88 MB |
| **Linux** (任意发行版) | `.AppImage` | ~127 MB |
| **Windows** | `.exe` (NSIS 安装程序) | — |
### 系统要求
- **操作系统**: Linux (Ubuntu 22.04+, Debian 12+, Fedora 38+) 或 Windows 10/11
- **Python**: 3.11+(内置依赖安装程序会处理此要求)
- **内存**: 最低 4 GB,推荐 8 GB
- **存储**: 500 MB 用于安装应用程序及模型
## 功能
### 扫描流水线
当您上传一个 APK 时,AndroidGuard Pro 会运行多阶段分析:
1. **特征提取** — 使用 `androguard` 解析 APK 以提取 56 个特征(权限、组件、证书、SDK 版本)
2. **机器学习分类** — 在 CICMalDroid 2020 数据集上训练的 RandomForest 集成(200 棵树,5 个类别)
3. **SHAP 可解释性** — TreeExplainer 识别驱动每次预测的前 10 个特征
4. **YARA 规则匹配** — 6 组规则集,涵盖广告软件、银行木马、勒索软件、风险软件、短信欺诈和间谍软件
5. **VirusTotal 查询**(可选)— 将 APK 哈希值与 70 多种防病毒引擎进行交叉比对
6. **判决融合** — 将所有信号组合成最终判决:**CLEAN**(安全)、**SUSPICIOUS**(可疑)或 **MALWARE**(恶意软件),并附带风险评分(0–100)
### 结果
扫描报告包括:
- 带有颜色编码风险徽章的**判决**
- **信号细分** — 每个信号的得分
- **ML 概率** — 每个类别(良性、广告软件、风险软件、短信欺诈、银行)的置信度百分比
- **热门 SHAP 特征** — 影响 ML 决策的因素
- **YARA 匹配** — 匹配的规则及其严重程度
- **VirusTotal** — 检出率、排名靠前的恶意检出引擎
- **权限** — 分类为危险/普通/签名的完整列表
- **行为分析** — 组件数量、证书信息、接收器
- **分析推理** — 人类可读的解释
### 导出
- **PDF 报告** — 深色主题的 A4 PDF,包含所有部分、适当的分页符和文本换行
- **JSON 导出** — 用于外部处理的完整结构化数据
## 架构
```
┌─────────────────────────────────────────────────────────────┐
│ Desktop App (Electron) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────────┐ │
│ │Dashboard │ │ Scanner │ │ Settings │ │ Report View │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └──────┬──────┘ │
│ └──────────────┼──────────────┼──────────────┘ │
└──────────────────────┼──────────────┼────────────────────────┘
│ HTTP :8765 │
┌──────────────────────┼──────────────┼────────────────────────┐
│ Backend (FastAPI / Python) │ │
│ ┌───────────────────┴──────────────┴──────────────────┐ │
│ │ FastAPI REST API (main.py) │ │
│ └──┬──────────┬──────────┬──────────┬──────────┬──────┘ │
│ │ │ │ │ │ │
│ ┌──▼──┐ ┌────▼────┐ ┌──▼──┐ ┌─────▼─────┐ ┌─▼──────────┐ │
│ │Feature│ │ ML Model │ │YARA │ │VirusTotal │ │ Encrypted │ │
│ │Engine │ │RandomFor.│ │Engine│ │Client │ │ Key Store │ │
│ └──────┘ └─────────┘ └─────┘ └───────────┘ └────────────┘ │
│ androguard 56 feats 6 rules async aiohttp Fernet │
└─────────────────────────────────────────────────────────────┘
```
## API 端点
后端运行在 `http://localhost:8765` 并提供 REST API:
| 方法 | 路径 | 描述 |
|---|---|---|
| `GET` | `/health` | 后端 + 模型健康检查 |
| `POST` | `/api/v1/scan` | 上传 APK 进行分析 |
| `POST` | `/api/v1/scan-local` | 通过本地文件系统路径扫描文件 |
| `GET` | `/api/v1/history` | 列出最近的扫描记录 |
| `GET` | `/api/v1/scan/{id}/report` | 完整报告 JSON |
| `DELETE` | `/api/v1/history/{id}` | 删除扫描记录 |
| `POST` | `/api/v1/setup` | 保存 API 密钥 |
| `GET` | `/api/v1/setup/status` | 检查配置状态 |
| `DELETE` | `/api/v1/setup/virustotal` | 移除 VirusTotal 密钥 |
## ML 模型
- **算法**: RandomForest 分类器(200 个估计器,平衡子采样,最大深度 20)
- **训练数据**: CICMalDroid 2020(11,598 个样本,5 个类别)
- **特征**: 56 个(33 个权限布尔值,10 个派生权限指标,6 个组件计数,4 个行为标志,2 个 SDK 版本,1 个证书标志)
- **准确率**: 91.12%(CICMalDroid 2020 测试集)
- **可解释性**: SHAP TreeExplainer 用于评估单次预测的特征重要性
### 分类目标
| 类别 | 描述 |
|---|---|
| **Benign** (良性) | 没有恶意指标的干净应用程序 |
| **Adware** (广告软件) | 强制广告展示,数据收集 |
| **Riskware** (风险软件) | 如果被滥用可能产生危险的合法应用 |
| **SMS Fraud** (短信欺诈) | 高级短信欺诈,未经授权的付费短信 |
| **Banking** (银行木马) | 金融木马,覆盖攻击,凭证窃取 |
## YARA 规则
针对不同恶意软件家族的六组规则集:
| 文件 | 目标 |
|---|---|
| `adware.yar` | 广告软件行为模式 |
| `banking.yar` | 银行木马指标 |
| `ransomware.yar` | 勒索软件特征 |
| `riskware.yar` | 潜在有害应用程序模式 |
| `sms_fraud.yar` | 高级短信欺诈签名 |
| `spyware.yar` | 间谍软件和数据外发指标 |
## 隐私与安全
- **所有分析均在本地运行** — 除非您配置了 VirusTotal API 密钥,否则不会有任何数据离开您的计算机
- **静态加密的 API 密钥** — 使用 Fernet (AES-256) 加密,自动生成的密钥存储在 `~/.androidguard/.secret_key` 中
- **无遥测**,无分析,无数据收集
- 可选的 VirusTotal 查询仅发送 APK 哈希值(不发送文件内容)
## 快速开始(通过源码)
```
# Clone (private repo — source access required)
git clone https://github.com/binaryguardia/andro-mal-source.git
cd andro-mal-source
# Backend
cd backend
pip install -r requirements.txt
python -m uvicorn main:app --port 8765
# Desktop (separate terminal)
cd desktop
npm install
npm run dev
```
## 构建
```
cd desktop
npm run build # Build React frontend
npx electron-builder --linux deb # .deb package
npx electron-builder --linux AppImage # AppImage
npx electron-builder --win nsis # Windows .exe (requires Wine on Linux)
```
## 许可证
本项目基于 **GNU General Public License v3.0** 授权 — 详情请参阅 [LICENSE](LICENSE) 文件。
标签:Android, Apex, Ask搜索, DSL, VirusTotal, YARA, 云安全监控, 云资产可视化, 机器学习, 逆向工具, 静态分析