Whitehat987/apkshield-pt

GitHub: Whitehat987/apkshield-pt

一款自动化的 Android 渗透测试工具,能够反编译 APK 后检测 Root 检测和 SSL Pinning 实现,并自动生成针对性的 Frida 绕过脚本和可视化报告。

Stars: 31 | Forks: 2

``` █████╗ ██████╗ ██╗ ██╗███████╗██╗ ██╗██╗███████╗██╗ ██████╗ ██╔══██╗██╔══██╗██║ ██╔╝██╔════╝██║ ██║██║██╔════╝██║ ██╔══██╗ ███████║██████╔╝█████╔╝ ███████╗███████║██║█████╗ ██║ ██║ ██║ ██╔══██║██╔═══╝ ██╔═██╗ ╚════██║██╔══██║██║██╔══╝ ██║ ██║ ██║ ██║ ██║██║ ██║ ██╗███████║██║ ██║██║███████╗███████╗██████╔╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝╚══════╝╚══════╝╚═════╝ ``` **AI 驱动的 Android 渗透测试工具** ![Python](https://img.shields.io/badge/Python-3.10%2B-blue?style=flat-square&logo=python) ![Platform](https://img.shields.io/badge/Platform-Kali%20Linux-557C94?style=flat-square&logo=linux) ![Frida](https://img.shields.io/badge/Frida-17.x%20Compatible-orange?style=flat-square) ![License](https://img.shields.io/badge/License-MIT-green?style=flat-square)
## 什么是 APKShield-PT? APKShield-PT 是一款自动化的 Android 渗透测试工具,它可以: 1. 使用 `apktool`(smali + 资源)和 `jadx`(Java 源码)**反编译** APK 2. 跨 14 个类别**检测** Root 检测技术 3. 跨 15 个类别**检测** SSL/TLS 证书锁定 4. 针对检测结果**生成**可立即使用的 Frida 绕过脚本 5. **生成**完整的 HTML + JSON 报告 无需手动阅读代码。放入 APK,即可获得可用的 Frida 脚本。 ## 功能 | 功能 | 详情 | |---|---| | 自动反编译 | apktool + jadx,若已反编译则跳过 | | Root 检测引擎 | 14 个类别 — RootBeer, SafetyNet, Play Integrity, Magisk, su 二进制文件, build 属性, Frida/Xposed 自身检测, 签名校验, 模拟器检测 | | SSL Pinning 引擎 | 15 个类别 — OkHttp, TrustManager, HostnameVerifier, NSC XML, TrustKit, WebView, gRPC, Conscrypt, Cronet, 证书透明度, 原生层 pinning | | Frida 脚本生成器 | 自动生成针对性脚本 — 拒绝千篇一律的通用 hooks | | AI 分析 (可选) | 深度代码分析,查找混淆/自定义检查 | | 报告 | HTML 报告 (暗黑主题) + JSON 报告 | | 兼容 Frida 17.x | 正确指定所有 overloads,启动时不崩溃 | ## 安装说明 ### 前置条件 - Kali Linux (推荐) 或任何基于 Debian 的发行版 - Python 3.10+ - 运行了 frida-server 的 Android 设备 ### 一键安装 ``` git clone https://github.com/Whitehat987/apkshield-pt cd apkshield-pt bash setup.sh ``` 安装脚本将安装:`apktool`, `jadx`, `adb`, `frida-tools`, `objection` 以及所有 Python 依赖。 ### 手动安装 ``` sudo apt install apktool jadx adb -y pip3 install frida-tools objection rich anthropic --break-system-packages ``` ## 使用方法 ``` # 基本用法 — 无 AI(完全离线) python3 apkshield.py App.apk --no-ai # 自定义输出目录 python3 apkshield.py App.apk --no-ai -o /root/results # 使用 AI 分析(需要 API key) export ANTHROPIC_API_KEY=your_key_here python3 apkshield.py App.apk # 详细输出 python3 apkshield.py App.apk --no-ai -v # 检查所有 dependencies python3 apkshield.py --check-deps ``` ## 输出结构 ``` apkshield_output/ └── AppName/ ├── apktool_out/ # Smali + resources ├── jadx_out/ # Decompiled Java source ├── frida/ │ ├── master_bypass.js ← Start here (all-in-one) │ ├── root_bypass.js │ ├── ssl_bypass.js │ ├── safetynet_bypass.js │ ├── frida_detection_bypass.js │ └── custom_bypass.js ← AI-identified hooks (if AI used) ├── report.html ← Visual report (open in browser) └── report.json ← Machine-readable report ``` ## 使用 Frida 脚本 ### 首先在设备上配置 frida-server ``` # 下载与你的 frida-tools 版本匹配的 frida-server # https://github.com/frida/frida/releases adb push frida-server /data/local/tmp/ adb shell chmod +x /data/local/tmp/frida-server adb shell /data/local/tmp/frida-server & ``` ### 运行绕过脚本 ``` # 使用 master bypass 启动 app(推荐 — 从这里开始) frida -U -f com.target.app -l frida/master_bypass.js --no-pause # 附加到已运行的 app frida -U com.target.app -l frida/master_bypass.js # 仅绕过 SSL frida -U -f com.target.app -l frida/ssl_bypass.js --no-pause # 通过 objection(交互式 shell) objection -g com.target.app explore ``` ## Root 检测覆盖范围 | ID | 类别 | 绕过函数 | |---|---|---| | RD-001 | su 二进制文件路径检查 | `bypass_file_checks()` | | RD-002 | busybox 二进制文件 | `bypass_file_checks()` | | RD-003 | Root 管理应用 (Magisk, SuperSU) | `bypass_package_manager()` | | RD-004 | Build.TAGS test-keys | `bypass_build_props()` | | RD-005 | ro.secure / ro.debuggable 属性 | `bypass_build_props()` | | RD-006 | RootBeer 库 | `bypass_rootbeer()` | | RD-007 | RootTools 库 | `bypass_rootbeer()` | | RD-008 | SafetyNet Attestation API | `bypass_safetynet()` | | RD-009 | Play Integrity API | `bypass_safetynet()` | | RD-010 | Native JNI root 检查 | 手动 / Magisk Hide | | RD-011 | 可写路径检查 | `bypass_file_checks()` | | RD-012 | Frida / Xposed 自身检测 | `bypass_frida_detection()` | | RD-013 | 模拟器检测 | `bypass_build_props()` | | RD-014 | APK 签名 / 篡改检查 | `bypass_package_manager()` | ## SSL Pinning 覆盖范围 | ID | 类别 | 绕过函数 | |---|---|---| | SSL-001 | OkHttp3 CertificatePinner | `bypass_okhttp()` | | SSL-002 | 自定义 X509TrustManager | `bypass_trust_manager()` | | SSL-003 | 自定义 HostnameVerifier | `bypass_hostname_verifier()` | | SSL-004 | Network Security Config XML | `bypass_nsc()` | | SSL-005 | Conscrypt / Cronet | `bypass_trust_manager()` | | SSL-006 | HttpsURLConnection | `bypass_hostname_verifier()` | | SSL-007 | Appcelerator Titanium | `bypass_trust_manager()` | | SSL-008 | Volley HurlStack | `bypass_trust_manager()` | | SSL-009 | gRPC TLS 凭证 | `bypass_trust_manager()` | | SSL-010 | Native JNI SSL pinning | 手动修补 native 层 | | SSL-011 | Firebase / GMS TLS | `bypass_trust_manager()` | | SSL-012 | 证书透明度 | `bypass_trust_manager()` | | SSL-013 | 公钥锁定 | `bypass_trust_manager()` | | SSL-014 | WebView SSL 处理 | `bypass_webview_ssl()` | | SSL-015 | TrustKit 框架 | `bypass_trustkit()` | ## 项目结构 ``` apkshield-pt/ ├── apkshield.py # Main entry point ├── setup.sh # Installer for Kali Linux ├── README.md └── core/ ├── __init__.py ├── decompiler.py # apktool + jadx wrapper ├── root_detector.py # Root detection pattern engine ├── ssl_detector.py # SSL pinning pattern engine ├── frida_gen.py # Frida script generator ├── ai_analyzer.py # Optional AI deep analysis └── reporter.py # HTML + JSON report generator ``` ## 故障排除 **`No module named 'core'`** ``` # 确保从项目文件夹内部运行 cd apkshield-pt python3 apkshield.py App.apk --no-ai ``` **`pip install` 在 Kali 上失败** ``` pip3 install rich anthropic --break-system-packages ``` **`apktool not found`** ``` sudo apt install apktool -y ``` **`jadx not found`** ``` sudo apt install jadx -y ``` **Frida 崩溃:`has more than one overload`** 此问题在当前版本中已修复。请确保下载了最新的 `master_bypass.js`。 **绕过后应用仍检测到 Root** - 应用可能使用了原生 (C/C++) Root 检测 — 请查看报告中的 `native_root` 说明 - 尝试在运行 Frida 脚本的同时启用 Magisk Hide / Shamiko - 使用 `--verbose` 并检查哪些特定的 hooks 记录了输出 ## 法律声明 本工具仅用于授权的安全测试。作者不对任何滥用行为负责。在测试之前,请务必获得应用程序所有者的明确书面许可。 ## 许可证 MIT 许可证 — 详情请参见 [LICENSE](LICENSE)。
标签:Android, Apktool, APK反编译, APK安全, App安全评估, Docker支持, DSL, Frida, Frida脚本生成, Hook, Jadx, Python, Root检测绕过, Smali, SSL Pinning绕过, 云资产清单, 安全报告生成, 无后门, 目录枚举, 移动安全, 网络安全, 逆向工具, 逆向工程, 隐私保护, 黑盒测试