cognis-digital/apkprobe
GitHub: cognis-digital/apkprobe
一款零依赖的 Android APK 静态安全分析器,自行解码二进制 AndroidManifest.xml 并对齐 MASTG/MASVS 标准输出安全检查结果。
Stars: 0 | Forks: 0
# apkprobe
**Android APK 静态安全分析器 —— 对齐 MASTG,零依赖。**
`apkprobe` 可以打开一个 APK,使用从零开始编写的 AXML 解码器解码其**二进制** `AndroidManifest.xml`(无需 `aapt`、`apktool` 或任何第三方库),运行一组映射到 **MASVS** 控制项和 **MASTG** 测试 ID 的检查,扫描内置资源以查找嵌入的机密信息,并报告签名方案。
它是 Cognis 移动安全套件的一部分,并与 [`scopeward`](../scopeward) 集成:将其指向已签名的授权范围,它将拒绝分析任何未获授权的目标包。
## 独特之处
大多数“APK 扫描器”都会调用 `aapt`/`apktool` 或者引入庞大的 SDK。
`apkprobe` 则是使用纯 Python 自行解码已编译的 AXML(`apkprobe/axml.py`),因此它可以在任何能运行 Python 的地方运行——CI 容器、物理隔离的审查设备、个人笔记本电脑——**无需安装任何其他组件**。
## 安装
```
pip install -e . # standalone
pip install -e ".[scope]" # with scopeward engagement gating
pip install -e ".[dev]" # + pytest
```
## 使用
```
# 快速扫描,人类可读
apkprobe scan app.apk
# 机器可读,仅限 MEDIUM 及以上
apkprobe scan app.apk --json --min-severity MEDIUM
# 受授权的 engagement scope 限制(拒绝未列出的 packages)
export SCOPEWARD_KEY=... # the engagement key
apkprobe scan app.apk --scope engagement.json
```
当存在任何**高(HIGH+)**级别的发现时,退出码将为非零,因此可以直接将其接入 CI 门禁。
### 输出示例
```
package: com.acme.app
signing: v1 (JAR)
findings: 9 (>= INFO)
[HIGH ] Application is debuggable
MASVS-RESILIENCE-2 / MASTG-TEST-0026 — android:debuggable="true"
[HIGH ] Cleartext (HTTP) traffic permitted
MASVS-NETWORK-1 / MASTG-TEST-0019 — android:usesCleartextTraffic="true"
[HIGH ] Possible embedded secret: Google API Key
MASVS-STORAGE-1 / MASTG-TEST-0011 — res/raw/cfg.json: AIzaSy…qsHI
[MEDIUM ] Exported activity without permission: .MainActivity
...
```
## 检查内容
| 检查项 | MASVS | MASTG |
|-------|-------|-------|
| 可调试构建 | MASVS-RESILIENCE-2 | MASTG-TEST-0026 |
| 允许 ADB 备份 | MASVS-STORAGE-2 | MASTG-TEST-0009 |
| 允许明文传输 | MASVS-NETWORK-1 | MASTG-TEST-0019 |
| 缺少 Network Security Config | MASVS-NETWORK-2 | MASTG-TEST-0020 |
| 未设权限的导出组件 | MASVS-PLATFORM-1 | MASTG-TEST-0024 |
| 请求敏感权限 | MASVS-PLATFORM-1 | MASTG-TEST-0024 |
| 资源中嵌入机密信息 | MASVS-STORAGE-1 | MASTG-TEST-0011 |
| 未签名/未检测到签名 | MASVS-RESILIENCE-1 | — |
| 较低的 minSdkVersion | MASVS-RESILIENCE-1 | — |
## 架构
```
apk.py ZIP container: locate manifest, detect v1/v2+ signing, yield text entries
└ axml.py binary AXML decoder (string pool, namespaces, elements, typed attrs)
└ manifest.py decoded tree -> AppManifest (package, sdk, perms, flags, components)
rules.py MASVS/MASTG checks -> Finding[]
secrets.py high-signal credential patterns
analyzer.py orchestration + optional scopeward gating
cli.py scan command
```
安装后,`Finding`/`Severity` 将来自 `scopeward`,以便 apkprobe 的结果能够与套件中的其余部分合并,生成一份完整的授权评估报告。
## 使用范围
用于分析**您已获授权评估**的应用——您自己的应用、已签署授权协议的客户应用、实验室/CTF 目标。`--scope` 标志的存在正是为了确保这一点。仅进行静态分析;`apkprobe` 不会修改或重新打包 APK。
## 许可证
Cognis Open Collaboration License (COCL) v1.0。请参阅 [LICENSE](LICENSE)。
标签:Android, APK, DSL, MASTG, MASVS, Python, 二进制AXML解码, 安全规则引擎, 无后门, 目录枚举, 移动安全, 逆向工具, 静态安全分析