ynsmroztas/AndroHunter

GitHub: ynsmroztas/AndroHunter

一款专为漏洞赏金猎人和移动端渗透测试人员打造的综合Android安全研究工具套件,覆盖静态分析、动态测试、运行时Hook和流量拦截等全流程能力。

Stars: 104 | Forks: 22

![AndroHunter](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/6b0402b9a5204033.png) # AndroHunter

一款专为漏洞赏金猎人和移动端渗透测试人员打造的综合 Android 安全研究工具套件。
基于 Jetpack Compose 构建 · 暗色终端风格 UI · 本地设备分析

## ⚠️ 法律免责声明 ## 概述 AndroHunter 是一款原生 Android 应用程序,提供全套移动安全测试工具——大部分功能无需 Root 手机即可在设备上直接运行。该工具专为参与漏洞赏金项目(HackerOne、Yes WeHack、Intigriti 等)、需要快速高效分析 Android 应用程序的安全研究人员而设计。 该工具涵盖了整个 Android 攻击面:静态分析(APK、DEX、Manifest)、动态测试(Intent fuzzing、ContentProvider 探测、Broadcast 注入)、运行时分析(Frida 脚本生成、SSL 绕过)以及网络拦截(HTTP 代理)。 ## 功能特性 ### 📱 应用浏览器 - 列出所有已安装的应用及其元数据(包名、版本、权限、目标 SDK) - 按系统/用户应用过滤 - 从应用详情视图快速导航至任意分析模块 ### 🔍 DEX 分析器 - 从 APK 中提取并分析 `.dex` 文件 - 扫描硬编码敏感信息:API keys、tokens、passwords、URLs、private keys - 基于严重性分类的字符串模式匹配(`VULN` / `SUSP` / `SAFE`) - 类和方法枚举及弹窗查看器 - 支持多 DEX APK —— 每个 DEX 文件单独分析 ### 📄 Manifest 查看器 - 直接从 APK 解析 `AndroidManifest.xml`(无需反编译器) - 三栏视图:**Components**、**Permissions**、**Raw XML** - 高亮显示导出组件、危险权限和 Deep Link 方案 - 识别潜在攻击面(导出的 Activities、Services、Receivers、Providers) ### 🎯 Intent Fuzzer - 列出目标应用所有导出的 Activities、Services 和 Broadcast Receivers - 发送带有自定义 extras、data URIs 和 categories 的构造 Intent - 支持通过 Intent data 进行路径遍历 Payload 攻击(`file:///data/...`) - 集成 Payload Engine 以实现自动化测试 ### 💥 Payload Engine - 基于 Logcat 的实时结果监控 - 自动化 Payload 投递至目标组件 - 可视化结果分类:`VULN`(红)/ `SUSP`(黄)/ `SAFE`(绿) - 支持 deeplink 利用、OAuth 重定向劫持、文件 URI 泄露 ### 🗄️ Content Provider Fuzzer - 枚举目标应用所有导出的 ContentProviders - 对每个 provider 测试 9 种 SQL 注入 Payload(基于错误、布尔、UNION、基于时间) - 检测可读/可写 provider 及 schema 泄露 - 从 APK Analyzer 发现结果一键跳转至 Provider Fuzzer 并预填目标 ### 📁 FileProvider Path Analyzer - 从 APK 解析 `res/xml/` 配置文件以提取 FileProvider 路径定义 - 按路径类型进行风险分类: - 带空路径的 `root-path` → **CRITICAL**(完整文件系统访问) - 带空路径的 `external-path` → **HIGH** - `cache-path` / `external-cache-path` → **MEDIUM** - **Path Traversal Tester**:使用 9 种遍历 Payload 进行自动化测试 - 尝试通过 `ContentResolver` 读取实际文件,成功时报告文件内容 - **ADB Commands tab**:即用型 `adb shell content read --uri '...'` 命令 ### 🏃 Activity Launcher - 列出任何已安装应用的所有 Activities,并带有导出状态徽章 - 一键启动,支持可选 extra data / deep link 注入 - ADB 命令生成器:`adb shell am start -n pkg/activity --es data "payload"` - 按仅导出过滤,快速识别攻击面 ### 📡 Broadcast Fuzzer - 跨 6 个类别的 10 个预构建 Broadcast Payload: - **Auth**:登录绕过、会话劫持 - **SQLi**:通过 Intent extras 进行 SQL 注入 - **LFI**:通过文件路径 extras 进行路径遍历 - **Redirect**:开放重定向、Deep link 劫持 - **PrivEsc**:权限提升、组件启用 - **Exfil**:通过备份 intent 进行数据渗出 - 自定义 Broadcast 发送器:指定 action + key=value extras - 每个 Payload 均可复制 ADB 命令 ### 🔑 Shared Preferences 读取器 - 从目标应用数据目录读取 `shared_prefs/*.xml` 文件 - 对调试应用使用 `run-as`,其他应用回退至 `dumpsys` - 敏感 Key 检测:`token`、`password`、`secret`、`api_key`、`session`、`jwt`、`cookie` - 支持按仅敏感项过滤、全文搜索、一键复制 ### 🐛 Frida Script Generator - 生成针对选定目标包定制的即用型 Frida hook 脚本 - 6 个脚本类别: - **SSL Pinning Bypass**:OkHttp3、TrustManager、Conscrypt、BoringSSL - **Root Detection Bypass**:RootBeer、SafetyNet、`File.exists()` hook - **Login Bypass**:通过反射自动发现 auth/login/session 类 - **Crypto Monitor**:Hooks `javax.crypto.Cipher` —— 记录所有加密/解密操作 - **SQL Monitor**:Hooks `SQLiteDatabase.rawQuery`、`execSQL`、`query` - **HTTP Intercept**:Hooks OkHttp3 和 `HttpURLConnection` - 一键复制,可选是否包含启动命令头 - 即运行命令:`frida -U -f com.target.app -l script.js --no-pause` ### 🔓 SSL Pinning Bypass 指南 - 6 种绕过方法及分步说明: 1. **Frida SSL Kill Switch 2** —— 最简单,无需 root 2. **objection** —— `android sslpinning disable` 3. **Magisk TrustMeAlready** —— 系统级绕过 4. **APK Repack** —— 通过 `apktool` 注入 `network_security_config.xml` 5. **Xposed / LSPosed + JustTrustMe** 6. **Burp Suite + User CA** ### 🌐 Traffic Interceptor - 运行在 `127.0.0.1:8877` 的内置 HTTP 代理服务器 - 捕获任何配置为使用该代理的应用程序的 HTTP 流量 - 支持 HTTPS CONNECT 隧道 - 实时请求/响应列表,带有方法颜色编码 - 敏感 Header 高亮:`Authorization`、`Cookie`、`Token` 显示为红色 - 单个请求详情视图:完整 Headers、请求体、响应体、耗时 - **curl 命令生成器**:一键复制任何捕获的请求 - 按 URL、Host、Body 内容或 HTTP 方法过滤 ### 🖥️ 终端 - 本地设备 Shell 命令执行 - 快捷命令标签:`id`、`whoami`、`uname -a`、`env`、`ifconfig`、`netstat -an`、`ps`、`ls /data` - 彩色输出:命令(绿)、stdout(白)、stderr(红) - IME Padding:键盘弹出时输入栏保持可见 ### 👁️ Broadcast Monitor - 针对系统和自定义 Broadcast Intent 的实时监控 ### 🎭 Task Hijack (StrandHogg) - 测试 Task Affinity 劫持漏洞(StrandHogg 1.0) ### ♿ Accessibility Monitor - 监控目标应用的 Accessibility Service 事件 ## 模块架构 ``` com.androhunter.app/ ├── MainActivity.kt ├── AndroHunterApp.kt ├── navigation/ │ ├── Screen.kt # Type-safe @Serializable destinations │ └── NavGraph.kt # Compose NavHost routing ├── core/ │ ├── Strings.kt # Pattern matching constants │ └── Language.kt ├── ui/ │ ├── applist/ AppListScreen │ ├── appdetail/ AppDetailScreen │ ├── dex/ DexAnalyzerScreen │ ├── manifest/ ManifestViewerScreen │ ├── intent/ IntentFuzzerScreen │ ├── payload/ PayloadEngine + PayloadScreen │ ├── providers/ ContentProviderScreen │ ├── fileprovider/ FileProviderScreen │ ├── actlauncher/ ActivityLauncherScreen │ ├── broadcast/ BroadcastFuzzerScreen │ ├── prefs/ SharedPrefsScreen │ ├── frida/ FridaGeneratorScreen │ ├── ssl/ SslBypassScreen │ ├── traffic/ │ │ ├── ProxyServer.kt # Raw ServerSocket proxy on :8877 │ │ └── TrafficInterceptorScreen │ ├── terminal/ TerminalScreen │ ├── adb/ AdbScreen │ ├── autoadb/ AutoAdbScreen │ └── common/ HunterTopBar, HunterCard ├── monitor/ │ ├── BroadcastMonitorScreen + Receiver │ ├── TaskHijackScreen │ └── AccessibilityMonitorScreen + Service └── web/ WebTesterScreen ``` ## 技术栈 | 组件 | 技术 | |-----------|-----------| | 语言 | Kotlin 2.x | | UI 框架 | Jetpack Compose (Material 3) | | 导航 | Navigation Compose (类型安全, `@Serializable`) | | 并发 | Kotlin Coroutines + `Dispatchers.IO` | | APK 解析 | `ZipFile` + `XmlPullParser` (无外部库) | | 代理服务器 | Raw `ServerSocket` on `127.0.0.1:8877` | | Min SDK | 29 (Android 10) | | Target SDK | 35 (Android 15) | | 构建系统 | Gradle 8.9 + AGP 8.x | | Java 版本 | 17 | ## 环境要求 - Android 10+ (API 29+) - 大部分功能无需 Root - Root / `run-as`:用于读取非调试应用的 SharedPrefs - ADB over USB:ADB Manager 命令所需 - 设备上的 Frida server:Frida 脚本执行所需(脚本在本地生成,从 PC 运行) ## 构建说明 ``` git clone https://github.com/ynsmroztas/AndroHunter.git cd AndroHunter # 需要 Java 17 ./gradlew assembleDebug # 安装 adb install app/build/outputs/apk/debug/app-debug.apk ``` ## 使用指南 ### 流量拦截 ``` # 在 app 中启动代理 → 点击 ▶ START # 在设备 Wi-Fi 上配置代理:127.0.0.1:8877 # 或通过 ADB: adb shell settings put global http_proxy 127.0.0.1:8877 # 使用目标 app — 请求实时显示 # 点击任意条目查看完整详情 + curl 命令 # 完成后移除代理: adb shell settings put global http_proxy :0 ``` ### Frida 脚本使用 ``` # 推送 frida-server 到设备 adb push frida-server /data/local/tmp/ adb shell chmod 755 /data/local/tmp/frida-server adb shell /data/local/tmp/frida-server & # 从 app 复制生成的脚本,然后: frida -U -f com.target.app -l script.js --no-pause ``` ### FileProvider 路径遍历 ``` # 通过 ADB(从 app 的 ADB Commands 标签页复制): adb shell content read --uri 'content://com.target.app.fileprovider/files/../../../data/data/com.target.app/databases/' ``` ## 涵盖的漏洞类别 | 类别 | 模块 | |----------|---------| | 硬编码敏感信息 | DEX Analyzer | | 导出组件 | Manifest Viewer, Intent Fuzzer, Activity Launcher | | SQL 注入 | Content Provider Fuzzer | | 路径遍历 | FileProvider Analyzer, Intent Fuzzer | | 不安全的 Deep Links | Intent Fuzzer, Payload Engine, Activity Launcher | | OAuth 重定向劫持 | Payload Engine | | Broadcast 注入 | Broadcast Fuzzer, Broadcast Monitor | | SSL Pinning | SSL Bypass Guide, Frida Generator | | 敏感数据存储 | Shared Preferences Reader | | StrandHogg Task Hijack | Task Hijack Module | | HTTP 流量分析 | Traffic Interceptor | | Root 检测绕过 | Frida Generator | | 加密弱点 | Frida Crypto Monitor | ## 路线图 - [ ] HTTPS MITM with dynamic certificate generation - [ ] SQLite database browser (root) - [ ] Report export (Markdown / JSON) - [ ] AppDetail v4 module integration (single hub screen) - [ ] Custom payload library - [ ] Burp Suite upstream proxy chaining ## 作者 **ynsmroztas** — [@ynsmroztas](https://x.com/ynsmroztas) · MITSEC ## 许可证 MIT License — Copyright (c) 2025 ynsmroztas
标签:API密钥检测, APK分析, Bug Bounty, DEX反编译, Docker支持, DOE合作, Frida, Intent Fuzzing, Jetpack Compose, Kotlin, SSL Bypass, 云安全监控, 可自定义解析器, 后台面板检测, 域名枚举, 安全工具箱, 安卓安全, 流量嗅探, 目录枚举, 移动安全, 移动应用安全, 网络安全审计, 网络抓包, 输入验证, 隐私合规, 静态分析