mal404/APKGuard
GitHub: mal404/APKGuard
一款全自动化的 Android APK 恶意软件分析工具包,集成反编译、多维度威胁检测与评分、批量处理和多格式报告生成于一体。
Stars: 0 | Forks: 0
# APKGuard v1.0
**高级 Android APK 恶意软件分析工具包**
APKGuard 是一款全自动化、基于命令行的 APK 恶意软件分析工具,能够反编译 Android 应用程序、扫描恶意软件特征、检测加密货币挖矿程序、间谍软件、勒索软件、木马程序,并生成多种格式的专业报告。它支持单 APK 和批处理(多任务)模式,并支持并行线程。
## 功能特性
| 特性 | 描述 |
|---|---|
| **自动反编译** | 使用 `apktool`(资源 + smali)和 `jadx`(Java 源码),并自带回退至 ZIP 解压机制 |
| **自动安装依赖** | 在缺失时自动下载并安装 `apktool`、`jadx` 和 Python 包 |
| **权限分析** | 标记危险权限,检测恶意权限组合(短信木马、银行木马、间谍软件、勒索软件、Dropper、加密货币挖矿程序) |
| **代码模式扫描** | 基于正则表达式扫描 smali 和 Java 源码,覆盖 13 个类别的 150 多个恶意软件特征 |
| **加密货币挖矿程序检测** | 检测矿池 URL、钱包地址(BTC、ETH、XMR)、挖矿库和挖矿相关字符串 |
| **间谍软件检测** | 识别数据渗出 API、键盘记录器模式、无障碍服务滥用、剪贴板监控 |
| **勒索软件检测** | 标记带有勒索特征的加密 API、设备管理器滥用、文件系统加密模式 |
| **混淆分析** | 检测加壳、代码混淆、反射 API 滥用、动态代码加载 |
| **熵值分析** | 对 DEX 文件和原生库进行香农熵计算,以检测加壳/加密的载荷 |
| **证书分析** | 检查调试证书、自签名证书和证书异常 |
| **网络 IOC 提取** | 提取 URL、IP 地址、域名、可疑端口、C2 指标 |
| **已知恶意软件匹配** | 匹配已知的恶意软件包名、RAT 家族和可疑的命名模式 |
| **VirusTotal 集成** | 针对 VirusTotal 的可选哈希查询(需要 API 密钥) |
| **深度分析模式** | 隐藏 DEX 检测、嵌入式 APK 发现、反射使用分析 |
| **多格式报告** | 终端(彩色)、HTML(暗色主题仪表盘)、JSON(机器可读) |
| **批处理模式** | 使用并行线程分析整个目录中的 APK |
| **威胁评分** | 0-100 的威胁评分,包含加权发现项和自动判定 |
## 安装说明
### 前置条件
APKGuard 需要 **Python 3.8+** 和 **Java 11+**。所有其他依赖将在首次运行时自动安装。
### 快速开始
```
# Clone 或复制该工具
git clone apk-malware-analyzer
cd apk-malware-analyzer
# 赋予可执行权限
chmod +x apkguard.py
# 运行(首次使用时自动安装依赖项)
python3 apkguard.py -t target.apk
```
### 手动安装依赖(可选)
```
# Java(必需)
sudo apt install default-jre-headless
# Python 包
pip3 install androguard lxml
# apktool 和 jadx 会在首次运行时自动下载到 ./tools/ 目录
```
## 运行说明
### 单个 APK 分析
```
# 基础分析(终端输出)
python3 apkguard.py -t suspicious.apk
# 生成 HTML 报告
python3 apkguard.py -t suspicious.apk -o html
# 生成 JSON 报告
python3 apkguard.py -t suspicious.apk -o json
# 生成所有报告格式
python3 apkguard.py -t suspicious.apk -o all
# 深度分析模式(速度较慢,更详尽)
python3 apkguard.py -t suspicious.apk -o all --deep
# 使用 VirusTotal 查询
python3 apkguard.py -t suspicious.apk --vt YOUR_VT_API_KEY
# 保留反编译文件以供手动检查
python3 apkguard.py -t suspicious.apk --keep-decompiled
# 详细输出
python3 apkguard.py -t suspicious.apk -v
```
### 批处理模式(多任务)
```
# 分析目录中的所有 APK
python3 apkguard.py -t /path/to/apk_folder/ -m
# 使用 8 个并行线程批处理并生成 HTML 报告
python3 apkguard.py -t /path/to/apk_folder/ -m --threads 8 -o html
# 使用所有报告格式批处理
python3 apkguard.py -t /path/to/apk_folder/ -m -o all
# 自定义输出目录
python3 apkguard.py -t /path/to/apk_folder/ -m --output-dir /path/to/reports/
```
## 命令行参数
| 开关 | 简写 | 描述 |
|---|---|---|
| `--target` | `-t` | **必填。** 目标 APK 文件或目录(用于批处理模式) |
| `--output` | `-o` | 报告格式:`terminal`、`html`、`json` 或 `all`(默认:`terminal`) |
| `--multi` | `-m` | 启用批处理模式,用于分析目录中的多个 APK |
| `--threads` | | 批处理模式的并行线程数(默认:4) |
| `--deep` | | 启用深度分析:隐藏 DEX、嵌入式 APK、混淆评分 |
| `--vt` | | 用于哈希查询的 VirusTotal API 密钥 |
| `--output-dir` | | 报告的自定义输出目录(默认:`./output/`) |
| `--keep-decompiled` | | 分析后在 `./work/` 中保留反编译文件 |
| `--verbose` | `-v` | 启用详细/调试输出 |
| `--quiet` | `-q` | 抑制横幅和进度输出(仍会显示分析结果) |
## 分析管道
APKGuard 按顺序运行 12 个分析模块:
1. **反编译** — apktool(smali + 资源)和 jadx(Java 源码)
2. **清单文件分析** — 包信息、SDK 版本、组件、Intent 过滤器
3. **权限分析** — 单独的危险权限 + 恶意组合检测
4. **组件分析** — 导出组件、可疑接收器、高优先级过滤器
5. **代码模式扫描** — 覆盖 13 个恶意软件类别的 150 多个正则表达式模式
6. **字符串分析** — URL、IP、电子邮件、Base64 载荷、加密钱包、API 密钥
7. **原生库分析** — 可疑的 .so 文件,用于检测加壳的熵值检查
8. **证书分析** — 调试证书、自签名证书、异常
9. **熵值分析** — DEX 文件熵值,以检测加壳/加密
10. **网络 IOC 提取** — 域名、IP、端口、C2 指标
11. **已知恶意软件匹配** — 与已知家族的包名匹配
12. **深度分析** *(可选)* — 隐藏 DEX、嵌入式 APK、反射、混淆
## 威胁评分
分析结果将根据严重程度进行加权,从而生成 0-100 分的威胁评分:
| 严重程度 | 权重 | 示例 |
|---|---|---|
| CRITICAL(严重) | +15 | 加密货币挖矿指标、短信诈骗、已知恶意软件匹配 |
| HIGH(高危) | +8 | 可疑原生库、Shell 执行、数据渗出 API |
| MEDIUM(中危) | +4 | 过度权限请求、硬编码 IP、编码载荷 |
| LOW(低危) | +2 | 开机自启、唤醒锁、网络状态访问 |
针对特定组合(例如,加密钱包 + 挖矿字符串、VirusTotal 检出、已知恶意软件包名匹配)会应用**额外评分**。
| 分数范围 | 判定结果 |
|---|---|
| 80-100 | **MALICIOUS(恶意)** — 高置信度恶意软件 |
| 60-79 | **SUSPICIOUS(可疑)** — 包含多种恶意软件特征 |
| 40-59 | **MODERATE RISK(中等风险)** — 存在部分可疑行为 |
| 20-39 | **LOW RISK(低风险)** — 轻微隐患 |
| 0-19 | **LIKELY CLEAN(可能安全)** — 未发现重大威胁 |
## 恶意软件检测类别
APKGuard 可检测以下恶意软件类别:
| 类别 | 检测指标 |
|---|---|
| **加密货币挖矿程序** | 矿池 URL (stratum+tcp)、钱包地址 (BTC/ETH/XMR)、挖矿库 (libxmrig, libcpuminer)、CoinHive |
| **短信木马** | SmsManager API 滥用、高额扣费号码、短信拦截 |
| **银行木马** | 无障碍服务滥用、覆盖攻击、钓鱼模式 |
| **间谍软件** | 摄像头/麦克风访问、读取联系人/短信/通话记录、位置追踪、键盘记录 |
| **勒索软件** | 加密 API + 勒索信息、设备管理器滥用、比特币支付要求 |
| **RATs** | 已知 RAT 家族、C2 通信模式 |
| **Droppers** | 动态代码加载、包安装、隐藏 DEX 文件 |
| **广告软件** | 已知广告 SDK、激进广告库 |
| **数据渗出** | 设备 ID 收集、IMEI 采集、剪贴板监控 |
| **混淆恶意软件** | 加壳 DEX (高熵值)、字符串加密、反射滥用 |
## 输出示例
### 终端输出
终端报告采用彩色输出,包含按严重程度标记的分析结果、直观的威胁评分条,以及针对权限、代码模式、网络指标等分类整理的版块。
### HTML 报告
深色主题、响应式的 HTML 仪表盘包含:
- 环形威胁评分指示器
- 严重程度统计条
- APK 元数据和哈希值
- 可排序的分析结果表
- 带有风险描述的权限分析
- 网络指标(URL、IP、域名)
### JSON 报告
具有完整分析数据的机器可读 JSON,适用于:
- 集成至 SIEM 系统
- 自动化处理管道
- 数据库存储
- API 响应
## 项目结构
```
apk-malware-analyzer/
├── apkguard.py # Main entry point
├── README.md # This file
├── modules/
│ ├── __init__.py
│ ├── analyzer.py # Core malware analysis engine
│ ├── banner.py # ASCII art and visual elements
│ ├── batch_processor.py # Multi-APK parallel processing
│ ├── decompiler.py # APK decompilation (apktool + jadx)
│ ├── dependency_checker.py # Auto-install dependencies
│ ├── reporter.py # Report generation (terminal, HTML, JSON)
│ ├── signatures.py # Malware signature database
│ └── utils.py # Utilities (colors, logging, hashing)
├── tools/ # Auto-downloaded tools (apktool, jadx)
├── work/ # Temporary decompilation workspace
└── output/ # Generated reports
```
## 许可证
本工具仅供**教育和授权的安全研究目的**使用。在分析非您所有的 APK 之前,请务必获取适当的授权。作者对滥用行为不承担任何责任。
标签:Android安全, Apktool, APK分析, DAST, DeepSeek, Jadx, JS文件枚举, 云资产清单, 代码生成, 代码脱壳, 勒索软件检测, 威胁情报, 威胁评分, 开发者工具, 恶意软件分析, 批量分析, 指令注入, 挖矿木马检测, 木马检测, 杀毒软件/反病毒, 权限分析, 渗透测试工具, 熵值分析, 网络安全, 自动化分析, 自动化报告, 跨站脚本, 逆向工具, 逆向工程, 间谍软件检测, 隐私保护