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解码, 安全规则引擎, 无后门, 目录枚举, 移动安全, 逆向工具, 静态安全分析