pratikkhairnar160/apk-malware-analyzer
GitHub: pratikkhairnar160/apk-malware-analyzer
面向网络犯罪调查的 Android APK 恶意软件分析平台,融合静态反编译、动态沙箱、Frida 插桩和流量拦截,自动检测银行木马、短信窃取器等威胁并输出分级报告。
Stars: 0 | Forks: 0
# APK 恶意软件分析器
**专为网络犯罪调查人员设计的 Android APK 恶意软件分析平台**
针对 Android APK 的静态 + 动态分析。能够检测银行木马、短信窃取器、覆盖攻击和数据外泄恶意软件。专为 Kali Linux 构建。
## 功能特性
- **静态分析** — APKTool + JADX 反编译、权限审计、IOC 提取、熵/混淆评分、YARA 规则
- **动态分析** — Android 模拟器生命周期、ADB 自动化、Monkey 测试
- **Frida 插桩** — SMS 钩子、SSL unpin 绕过、加密密钥捕获、反射监控、模拟器伪装
- **网络抓包** — mitmproxy HTTPS 拦截、数据外泄检测
- **检测引擎** — YARA + IOC 匹配 + 启发式评分 → LOW/MEDIUM/HIGH/CRITICAL 判定
- **报告生成** — 适合调查人员使用的 HTML + JSON 报告
## 快速安装
```
git clone https://github.com/pratikkhairnar160/apk-malware-analyzer.git
cd apk-malware-analyzer
sudo bash install.sh
```
## 用法
### 静态分析(无需模拟器)
```
apkanalyzer analyze suspicious.apk
```
### 全面分析(静态 + 动态 + Frida + 流量)
```
# 1. 首先启动模拟器
apkanalyzer emulator start
# 2. 安装 mitmproxy CA 证书到模拟器
apkanalyzer setup-mitm
# 3. 运行完整分析
apkanalyzer analyze suspicious.apk --dynamic --frida --mitm
```
### 快速 IOC 分类
```
apkanalyzer ioc-check suspicious.apk
```
### REST API 模式
```
# 启动 API 服务器
source venv/bin/activate
uvicorn api.main:app --host 0.0.0.0 --port 8000
# 通过 curl 上传
curl -X POST http://localhost:8000/api/v1/upload \
-F "file=@suspicious.apk"
# 检查状态
curl http://localhost:8000/api/v1/status/
# 获取报告
curl http://localhost:8000/api/v1/report/?fmt=html > report.html
```
### Celery 队列模式(用于大批量处理)
```
source venv/bin/activate
# Static workers (4 parallel)
celery -A worker.celery_app worker -Q static -c 4 --loglevel=info
# Dynamic worker (1 — one emulator per worker)
celery -A worker.celery_app worker -Q dynamic -c 1 --loglevel=info
# 监控队列
celery -A worker.celery_app flower
# 打开: http://localhost:5555
```
## 模拟器设置(用于动态分析)
```
# 安装 Android cmdline-tools
# https://developer.android.com/studio#command-line-tools-only
# 创建分析 AVD
sdkmanager "system-images;android-29;google_apis;x86_64"
avdmanager create avd -n Analyzer_AVD \
-k "system-images;android-29;google_apis;x86_64" \
-d pixel_3a
# 启动模拟器
apkanalyzer emulator start
# 安装 frida-server (自动下载匹配版本)
python3 -c "
from apkanalyzer.dynamic.frida_controller import FridaController
FridaController('x', '/tmp').install_frida_server()
"
# 在模拟器上启动 frida-server
adb shell 'su -c /data/local/tmp/frida-server &'
# 安装 mitmproxy 系统 CA 证书
apkanalyzer setup-mitm
# 保存干净的基线快照
apkanalyzer emulator snapshot
```
## 目录结构
```
apk-malware-analyzer/
├── apkanalyzer/
│ ├── cli.py # Main CLI (typer + rich)
│ ├── static/
│ │ ├── decompiler.py # APKTool + JADX wrappers
│ │ ├── permissions.py # Androguard permission audit
│ │ ├── ioc_extractor.py # URL/IP/string extraction
│ │ └── entropy.py # Obfuscation detection
│ ├── dynamic/
│ │ ├── emulator.py # AVD lifecycle + ADB
│ │ └── frida_controller.py # Script injection + event collection
│ ├── network/
│ │ └── mitm_handler.py # mitmproxy addon + setup
│ ├── detection/
│ │ └── engine.py # YARA + IOC + heuristic scoring
│ └── report/
│ └── generator.py # HTML + JSON report builder
├── frida_scripts/
│ ├── sms_hook.js # SMS send/receive interception
│ ├── ssl_unpin.js # Universal cert pinning bypass
│ ├── network_hook.js # OkHttp/URLConnection capture
│ ├── crypto_hook.js # Cipher/key material extraction
│ ├── emulator_cloak.js # Anti-emulator-detection bypass
│ └── reflection_hook.js # DexClassLoader/Runtime.exec
├── rules/
│ ├── yara/
│ │ ├── banking_trojan.yar
│ │ ├── sms_stealer.yar
│ │ └── overlay_attack.yar
│ └── ioc/
│ ├── malicious_domains.txt
│ └── malicious_ips.txt
├── worker/
│ ├── celery_app.py
│ └── tasks/
│ ├── static_analysis.py
│ └── dynamic_analysis.py
├── api/
│ └── main.py # FastAPI REST API
├── db/
│ └── models.py # SQLAlchemy ORM
├── docker/
│ ├── docker-compose.yml
│ ├── Dockerfile.api
│ └── Dockerfile.worker
├── config.py
├── setup.py
├── requirements.txt
├── install.sh # Kali Linux one-click installer
└── README.md
```
## 检测评分
| 分数 | 判定 | 典型特征 |
|-------|----------|-----------------|
| 0–24 | LOW | 干净或良性广告软件 |
| 25–49 | MEDIUM | 可疑,需要审查 |
| 50–74 | HIGH | 可能是恶意的 |
| 75+ | CRITICAL | 已确认的恶意软件行为 |
分数贡献:
- 危险权限:最高 40 分
- 恶意软件权限组合(OTP_STEALER、OVERLAY_ATTACK 等):各 35 分
- IOC/域名/IP 命中:各 45 分
- 高度混淆 (HIGH):20 分
- YARA 规则匹配:各 30 分
- 行为信号:最高 40 分
## 已知局限性
- 采用重度混淆且仅使用原生层字符串加密的样本可能会逃避静态 IOC 提取
- 加密的第二阶段有效载荷(安装后下载)需要通过动态分析来捕获
- 原生 (NDK) TLS 实现不受 Java 层 Frida 钩子的覆盖——需要在 `SSL_write` 上使用 `Interceptor.attach`
- 分析时间:静态分析约 2-5 分钟,每个样本的完整动态分析约 10-15 分钟
- 没有任何工具能达到 100% 的检测率——对于 MEDIUM 及以上的判定应始终进行人工审查
## 法律声明
本工具**仅供**授权的安全研究、恶意软件分析和网络犯罪调查使用。仅限分析您拥有或获得明确书面授权进行分析的 APK。未经授权分析第三方应用程序可能违反相关法律法规。
标签:ADB自动化, Android恶意软件分析, Android模拟器, APKTool, APK分析, DNS信息、DNS暴力破解, Frida Hook, HTML报告, IOC提取, JADX, REST API, SSL绕过, URL发现, YARA规则, 中间人攻击, 云安全监控, 云资产清单, 启发式分析, 威胁情报, 安全检测, 开发者工具, 异步任务队列, 搜索引擎查询, 数据窃取, 沙箱, 混淆评分, 目录枚举, 短信窃取, 移动安全, 网络安全, 网络测绘, 网络犯罪调查, 请求拦截, 逆向工具, 逆向工程, 银行木马检测, 隐私保护, 静态分析