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 核心定位
1.2 版本信息
2. 系统架构
2.1 技术栈架构
┌─────────────────────────────────────────────────────────────┐
│ 表现层 (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 模块架构详解
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)
技术实现:
检测模式 (定义于 core/Strings.kt):
// 风险分级: 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)
技术实现:
三标签视图:
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)
核心机制:
// 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 注入检测矩阵:
| | |
|---|
| ' | |
| 1=1 | |
| UNION SELECT null,null | |
| AND (SELECT * FROM (SELECT(SLEEP(5)))a) | |
自动化流程:
枚举目标应用所有 exported Provider
对每个 Provider 的 URI 模式进行 9 种 payload 测试
通过 ContentResolver.query() 执行实际查询
实时 Logcat 监控捕获异常和响应
3.2.3 FileProvider 路径分析器
风险评级算法:
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 脚本生成器
脚本模板引擎: 采用字符串模板 + 反射分析生成定制化脚本:
// 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;// 跳过证书校验
};
});
六大脚本类别:
| | |
|---|
| OkHttp3, TrustManager, Conscrypt | |
| RootBeer, SafetyNet, File.exists | |
| | 自动发现 login/authenticate 方法 |
| | |
| | |
| OkHttp3, HttpURLConnection | |
使用模式:
3.3.2 流量拦截器 (Traffic Interceptor)
代理服务器实现:
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
}
功能特性:
配置方法:
# 通过 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/
敏感键检测:
val SENSITIVE_KEYS =listOf(
"token","password","secret","api_key",
"session","jwt","cookie","credential"
)
3.4.2 广播模糊测试器
预置 Payload 库 (10 个 payload,6 大类):
ADB 集成: 每个 payload 生成对应的 adb shell am broadcast 命令
4. 漏洞覆盖矩阵
AndroHunter 覆盖 OWASP Mobile Top 10 及常见 Android 漏洞类别:
| | |
|---|
| M1: 不安全的认证 | Frida Login Bypass, Crypto Monitor | |
| M2: 不安全的通信 | Traffic Interceptor, SSL Bypass | |
| M3: 不安全的加密 | DEX Analyzer (密钥硬编码), Crypto Monitor | |
| M5: 不安全的授权 | | |
| M6: 不安全的配置 | Manifest Viewer, FileProvider Analyzer | |
| M7: 客户端代码质量 | | |
| M8: 代码篡改 | | |
| M9: 逆向工程 | DEX Analyzer, Manifest Viewer | |
| StrandHogg | | |
| 路径遍历 | FileProvider Analyzer, Intent Fuzzer | |
| Deep Link 劫持 | Payload Engine, Activity Launcher | |
5. 使用指南
5.1 环境准备
系统要求:
构建步骤:
# 克隆仓库
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 命令参考
# 设置全局代理
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