文章总结: AndroHunter是一款专为Android平台设计的原生移动安全测试工具包,采用Kotlin和JetpackCompose开发,面向安全研究人员和移动渗透测试人员。该工具无需Root权限即可运行,提供静态分析、动态测试和运行时分析三大核心功能模块,覆盖OWASPMobileTop10漏洞类别。主要功能包括DEX分析器、清单查看器、Intent模糊测试器、ContentProviderSQL注入检测、FileProvider路径遍历测试、Frida脚本生成器和流量拦截器等。文章详细介绍了各模块的技术实现原理和架构设计,并提供GitHub项目地址、网盘下载链接及使用指南,具有较强的实用性和可操作性。 综合评分: 78 文章分类: 移动安全,安全工具,渗透测试,漏洞分析,实战经验
【安卓工具】AndroHunter——移动安全测试工具包
原创
一个人挺好 一个人挺好
一个人挺好 wa
2026年3月9日 17:13 上海
项目地址
https://github.com/ynsmroztas/AndroHunter
如果有不会打包的小白或者觉得部署麻烦的师傅可以使用我打包好的
最近很忙如果使用的人多我会在空闲的时间对软件进行汉化(本人英语不好都是查翻译对一些翻译可以翻译不到位)
百度网盘
通过网盘分享的文件:AndroHunter.apk链接: https://pan.baidu.com/s/14ocrY4z5MjuueU0NjgqPnQ?pwd=f4ym 提取码: f4ym --来自百度网盘超级会员v5的分享
夸克网盘
我用夸克网盘给你分享了「AndroHunter.apk」,点击链接或复制整段内容,打开「夸克APP」即可获取。/~3fba3LyO9k~:/链接:https://pan.quark.cn/s/f30de564af63提取码:qayv
项目概述
AndroHunter 是一款专为 Android 平台设计的原生移动安全测试工具包,采用 Kotlin 语言和 Jetpack Compose 框架开发。该工具面向安全研究人员、漏洞赏金猎人和移动渗透测试人员,提供了一整套无需 Root 权限即可运行的安全分析功能。
1.1 核心定位
- 目标用户: 参与 HackerOne、Yes We Hack、Intigriti 等漏洞赏金平台的安全研究人员
- 设计理念: 全功能集成、设备端运行、终端风格界面
- 技术特色: 零外部依赖、原生 APK 解析、实时流量拦截
1.2 版本信息
表格
| 属性 | 值 | | — | — | | 当前版本 | 4.0 | | 最低 SDK | API 29 (Android 10) | | 目标 SDK | API 35 (Android 15) | | 开发语言 | Kotlin 2.x | | 构建系统 | Gradle 8.9 + AGP 8.x | | 许可证 | MIT |
2. 系统架构
2.1 技术栈架构
plain
┌─────────────────────────────────────────────────────────────┐
│ 表现层 (UI Layer) │
│ Jetpack Compose + Material 3 + Navigation Compose │
│ 类型安全导航 (@Serializable) · 响应式状态管理 │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ 业务逻辑层 │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ 静态分析引擎 │ │ 动态测试引擎 │ │ 运行时分析引擎 │ │
│ │ DEX解析器 │ │ Intent构造器 │ │ Frida脚本生成器 │ │
│ │ Manifest解析│ │ Payload引擎 │ │ 代理服务器 │ │
│ │ 文件提取器 │ │ 广播构造器 │ │ 监控服务 │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ 数据访问层 │
│ ZipFile(APK) · XmlPullParser · ContentResolver · run-as │
│ ServerSocket(127.0.0.1:8877) · Runtime.exec() │
└─────────────────────────────────────────────────────────────┘
2.2 模块架构详解
plain
com.androhunter.app/
├── MainActivity.kt # 主入口
├── AndroHunterApp.kt # 应用级配置
├── navigation/
│ ├── Screen.kt # 密封类定义导航目的地
│ └── NavGraph.kt # NavHost 路由配置
├── core/ # 核心工具类
│ ├── Strings.kt # 敏感信息匹配模式
│ └── Language.kt # 国际化支持
├── ui/ # 功能模块界面
│ ├── applist/ # 应用列表
│ ├── appdetail/ # 应用详情
│ ├── dex/ # DEX 分析器
│ ├── manifest/ # 清单查看器
│ ├── intent/ # Intent 模糊测试
│ ├── payload/ # Payload 引擎
│ ├── providers/ # ContentProvider 测试
│ ├── fileprovider/ # FileProvider 分析
│ ├── actlauncher/ # Activity 启动器
│ ├── broadcast/ # 广播模糊测试
│ ├── prefs/ # SharedPreferences 读取
│ ├── frida/ # Frida 脚本生成
│ ├── ssl/ # SSL 绕过指南
│ ├── traffic/ # 流量拦截器
│ │ ├── ProxyServer.kt # 原始 Socket 代理
│ │ └── TrafficInterceptorScreen
│ ├── terminal/ # 终端模拟器
│ ├── adb/ # ADB 命令管理
│ ├── autoadb/ # 自动 ADB 配置
│ └── common/ # 通用组件
├── monitor/ # 监控模块
│ ├── BroadcastMonitor # 广播监听
│ ├── TaskHijack # StrandHogg 检测
│ └── AccessibilityMonitor # 无障碍服务监控
└── web/ # Web 测试工具
3. 核心功能详解
3.1 静态分析模块
3.1.1 DEX 分析器 (Dex Analyzer)
技术实现:
- 使用
ZipFileAPI 直接读取 APK 中的.dex文件,无需反编译工具 - 自定义字节码解析器提取字符串常量池
- 正则表达式模式匹配识别敏感信息
检测模式 (定义于 core/Strings.kt):
kotlin
// 风险分级: VULN (红色) / SUSP (黄色) / SAFE (绿色)
val PATTERNS =mapOf(
"API_KEY"to"(api[_-]?key|apikey)\\s*[=:]\\s*['\"][a-zA-Z0-9]{16,}['\"]",
"PRIVATE_KEY"to"-----BEGIN (RSA |DSA |EC |OPENSSH )?PRIVATE KEY-----",
"JWT_TOKEN"to"eyJ[a-zA-Z0-9_-]*\\.eyJ[a-zA-Z0-9_-]*\\.[a-zA-Z0-9_-]*",
"URL"to"https?://[\\w.-]+\\.[a-zA-Z]{2,}(/[^\\s]*)?",
// ... 更多模式
)
功能特性:
- 支持 Multi-Dex APK 的并行分析
- 类和方法枚举(弹出式查看器)
- 字符串上下文提取(前后 50 字符)
3.1.2 清单查看器 (Manifest Viewer)
技术实现:
- 直接解析 APK 中的二进制 XML (
AndroidManifest.xml) - 使用
XmlPullParser进行流式解析,内存占用低
三标签视图:
- Components: 可视化展示四大组件,标记 exported 状态
- Permissions: 危险权限高亮,权限组分类
- Raw XML: 原始 XML 内容,支持语法高亮
攻击面识别:
- 自动标记
android:exported="true"的组件 - 识别 Deep Link Scheme (
<intent-filter>中的<data>) - 检测 Task Affinity 配置(StrandHogg 风险)
3.2 动态测试模块
3.2.1 Intent 模糊测试器 (Intent Fuzzer)
核心机制:
kotlin
// Intent 构造策略
dataclassIntentPayload(
val component: ComponentName,
val action: String?,
valdata: Uri?,// 支持 file:// 路径遍历
val categories: Set<String>,
val extras: Bundle,// 支持任意类型额外数据
val flags: Int
)
测试能力:
- 组件遍历: 自动枚举所有 exported Activities/Services/Receivers
- 数据注入: 支持
file:///data/...等路径遍历 payload - Extra 构造: 支持基本类型、Parcelable、Serializable 的模糊测试
- Payload 集成: 与 Payload Engine 联动,实现自动化测试
3.2.2 ContentProvider 模糊测试器
SQL 注入检测矩阵:
表格
| 测试类型 | Payload 示例 | 检测逻辑 |
| — | — | — |
| Error-based | ' / " / ) | 监控 SQLiteException |
| Boolean | 1=1 / 1=0 | 比较返回结果集差异 |
| UNION | UNION SELECT null,null | 列数探测 |
| Time-based | AND (SELECT * FROM (SELECT(SLEEP(5)))a) | 响应时间分析 |
自动化流程:
- 枚举目标应用所有 exported Provider
- 对每个 Provider 的 URI 模式进行 9 种 payload 测试
- 通过
ContentResolver.query()执行实际查询 - 实时 Logcat 监控捕获异常和响应
3.2.3 FileProvider 路径分析器
风险评级算法:
kotlin
funassessRisk(pathType: String, pathValue: String): RiskLevel {
returnwhen{
pathType =="root-path"&& pathValue.isEmpty()-> CRITICAL // 全盘访问
pathType =="external-path"&& pathValue.isEmpty()-> HIGH // SD卡根目录
pathType inlistOf("cache-path","external-cache-path")-> MEDIUM
else-> LOW
}
}
路径遍历测试:
- 解析
res/xml/filepaths.xml提取路径配置 - 生成 9 种遍历 payload (
../../../变体) - 通过
content://URI 实际尝试文件读取 - 成功读取时显示文件内容片段
3.3 运行时分析模块
3.3.1 Frida 脚本生成器
脚本模板引擎: 采用字符串模板 + 反射分析生成定制化脚本:
JavaScript
// SSL Pinning Bypass 模板 (OkHttp3)
Java.perform(function(){
varOkHttp3=Java.use("okhttp3.CertificatePinner");
OkHttp3.check.overload('java.lang.String','java.util.List').implementation=function(){
console.log("[+] SSL Pinning Bypassed for: "+ arguments[0]);
return;// 跳过证书校验
};
});
六大脚本类别:
表格
| 类别 | Hook 目标 | 技术要点 | | — | — | — | | SSL Pinning Bypass | OkHttp3, TrustManager, Conscrypt | 替换 check/verify 方法 | | Root Detection Bypass | RootBeer, SafetyNet, File.exists | 伪造系统属性/文件状态 | | Login Bypass | 反射枚举认证类 | 自动发现 login/authenticate 方法 | | Crypto Monitor | javax.crypto.Cipher | 拦截所有加解密操作,记录密钥/算法 | | SQL Monitor | SQLiteDatabase | 记录所有 SQL 执行语句 | | HTTP Intercept | OkHttp3, HttpURLConnection | 打印请求/响应体 |
使用模式:
- 设备端: 生成脚本 → 复制到剪贴板
- PC 端执行:
frida -U -f com.target.app -l script.js --no-pause
3.3.2 流量拦截器 (Traffic Interceptor)
代理服务器实现:
kotlin
classProxyServer(privateval port: Int =8877){
privateval serverSocket =ServerSocket(port,50, InetAddress.getByName("127.0.0.1"))
funstart(){
while(isRunning){
val client = serverSocket.accept()
thread {handleClient(client)}
}
}
// 支持 HTTP CONNECT 隧道 for HTTPS
// 实时解析 HTTP 请求/响应头
// 敏感头标记: Authorization, Cookie, Token
}
功能特性:
- 实时捕获: 多线程处理并发连接
- 敏感信息高亮: 认证头标红显示
- curl 生成器: 一键复制请求为 curl 命令
- 过滤系统: 支持 URL/Host/Body/Method 多维度过滤
配置方法:
bash
# 通过 ADB 设置全局代理
adb shell settings put global http_proxy 127.0.0.1:8877
# 测试完成后清除
adb shell settings put global http_proxy :0
3.4 辅助工具模块
3.4.1 Shared Preferences 读取器
权限策略:
- Debug 应用: 使用
run-as <package>直接读取 - 非 Debug 应用: fallback 到
dumpsys提取有限信息 - Root 设备: 直接访问
/data/data/<package>/shared_prefs/
敏感键检测:
kotlin
val SENSITIVE_KEYS =listOf(
"token","password","secret","api_key",
"session","jwt","cookie","credential"
)
3.4.2 广播模糊测试器
预置 Payload 库 (10 个 payload,6 大类):
表格
| 类别 | 用途 | 示例 | | — | — | — | | Auth | 认证绕过 | 发送虚假登录成功广播 | | SQLi | SQL 注入 | 在 extra 中注入 SQL 片段 | | LFI | 路径遍历 | 通过文件路径 extra 读取敏感文件 | | Redirect | 重定向劫持 | 拦截 OAuth 回调广播 | | PrivEsc | 权限提升 | 启用被禁用的组件 | | Exfil | 数据外泄 | 触发备份机制发送数据 |
ADB 集成: 每个 payload 生成对应的 adb shell am broadcast 命令
4. 漏洞覆盖矩阵
AndroHunter 覆盖 OWASP Mobile Top 10 及常见 Android 漏洞类别:
表格
| 漏洞类别 | 对应模块 | 检测方法 | | — | — | — | | M1: 不安全的认证 | Frida Login Bypass, Crypto Monitor | 运行时 hook 认证逻辑 | | M2: 不安全的通信 | Traffic Interceptor, SSL Bypass | 中间人代理 + 证书绕过 | | M3: 不安全的加密 | DEX Analyzer (密钥硬编码), Crypto Monitor | 静态扫描 + 运行时监控 | | M5: 不安全的授权 | Content Provider Fuzzer | SQL 注入 + 权限绕过测试 | | M6: 不安全的配置 | Manifest Viewer, FileProvider Analyzer | exported 组件分析 | | M7: 客户端代码质量 | DEX Analyzer | 硬编码秘密扫描 | | M8: 代码篡改 | Frida Root Bypass | 运行时完整性检查绕过 | | M9: 逆向工程 | DEX Analyzer, Manifest Viewer | APK 结构分析 | | StrandHogg | Task Hijack Module | Task Affinity 检测 | | 路径遍历 | FileProvider Analyzer, Intent Fuzzer | 自动化 traversal 测试 | | Deep Link 劫持 | Payload Engine, Activity Launcher | Intent 拦截测试 |
5. 使用指南
5.1 环境准备
系统要求:
- Android 10+ 设备(无需 Root)
- ADB 调试桥(用于高级功能)
- Frida Server(用于运行时分析,需 Root 或调试模式)
构建步骤:
bash
# 克隆仓库
git clone https://github.com/ynsmroztas/AndroHunter.git
cd AndroHunter
# 确保 Java 17 环境
java-version# 应显示 17.x
# 构建 Debug 版本
./gradlew assembleDebug
# 安装到设备
adb install app/build/outputs/apk/debug/app-debug.apk
5.2 典型工作流程
场景 1: 快速应用评估
- App Explorer → 选择目标应用
- Manifest Viewer → 检查 exported 组件和权限
- DEX Analyzer → 扫描硬编码密钥
- FileProvider Analyzer → 检查路径遍历风险
- Activity Launcher → 测试 exported Activity 访问控制
场景 2: 深度动态测试
- Intent Fuzzer → 对 exported 组件进行模糊测试
- Content Provider Fuzzer → SQL 注入测试
- Traffic Interceptor →
- 启动代理 (▶ START)
- 配置设备代理为
127.0.0.1:8877 - 操作应用并观察流量
- Frida Generator → 生成 SSL Bypass 脚本
- PC 端执行:
frida -U -f <package> -l ssl_bypass.js --no-pause
场景 3: 数据提取
- Shared Preferences Reader → 提取应用配置
- Terminal → 执行
run-as <package>查看私有数据 - FileProvider Path Analyzer → 尝试读取其他应用文件
5.3 ADB 命令参考
bash
# 设置全局代理
adb shell settings put global http_proxy 127.0.0.1:8877
# 读取 ContentProvider (路径遍历)
adb shell content read--uri'content://com.target.app.fileprovider/../../../../data/data/com.target.app/databases/sensitive.db'
# 启动 exported Activity
adb shell am start -n com.target.app/.SecretActivity --es"payload""data"
# 发送测试广播
adb shell am broadcast -a com.target.app.ACTION_LOGIN --es"session""hijacked_session_id"
# 清除代理
adb shell settings put global http_proxy :0
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:一个人挺好 wa 一个人挺好 一个人挺好《【安卓工具】AndroHunter——移动安全测试工具包》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论