移动安全实战:Android Frida Hook与SSL Pinning绕过,hack-skills移动端技能解析
【免费下载链接】hack-skillsHelping AI Agent become an awesome practical hacker!项目地址: https://gitcode.com/gh_mirrors/ha/hack-skills
hack-skills是一个面向 AI Agent 的黑客技能库,覆盖101 个深度安全技能、14 个安全领域。其中移动安全板块围绕Android 渗透测试、Frida Hook、SSL Pinning(证书固定)绕过整理成可直接套用的实战手册。本文面向新手,带你从零看懂:为什么手机 App 抓不到包、Frida 如何"无侵入"地 Hook 目标方法,以及 SSL Pinning 绕过的完整决策路径。
一、先认识 hack-skills:为什么选它学移动安全?
很多教程零散、过时,而 hack-skills 的设计目标是把"实战中真正有用"的知识,压缩成可安装、可检索、可组合的技能文件。
| 亮点 | 说明 |
|---|---|
| 📚 结构化 | 每个技能独立成目录:skills/技能名/SKILL.md,按需加载 |
| 📱 移动安全成体系 | Android 技巧、SSL Pinning 绕过、iOS 运行时技巧各有专属技能 |
| 🧩 模板丰富 | 附带现成的 FRIDA_SCRIPTS.md 脚本模板库 |
| 🔄 决策树思维 | 不教"死记命令",而是教你按条件分流选择方案 |
移动端三大核心技能文件:
- skills/android-pentesting-tricks/SKILL.md:APK 分析、组件暴露、WebView、Root 检测绕过
- skills/mobile-ssl-pinning-bypass/SKILL.md:Android/iOS 证书固定绕过全矩阵
- skills/ios-pentesting-tricks/SKILL.md:iOS 运行时与证书校验 Hook
二、获取 hack-skills 的 3 种方式
根据使用场景任选其一(三者内容保持同步):
- 网页版:支持模糊搜索、分类筛选、一键复制安装命令,适合快速查阅
- 源码仓库:完整 Markdown 渲染,适合离线精读与二次加工,需要克隆时使用 https://link.gitcode.com/i/db999e5ee8b07091385f7099bf562b49
- 加密 ZIP 包:一次性打包全部技能文件,适合离线环境
# 克隆后浏览移动安全技能 ls skills/ | grep -E "mobile|android|ios"三、Frida Hook 入门:为什么它是移动安全的核心武器?
3.1 一句话原理
Frida 是一种动态插桩工具:在 App运行时拦截(Hook)目标方法,观察甚至篡改其行为——无需反编译、无需改包重签,改完即生效,这让它成为渗透测试中性价比最高的手段。
3.2 Android 抓包失败的根源
HTTPS 之外,现代 App 还会做一层应用级证书校验(SSL Pinning),即使你装了抓包工具(Burp/mitmproxy)的 CA 证书,请求依然失败。绕过它通常有两条路:
- Frida Hook:直接让校验方法"放行"(无需 Root 时也可配合重签名注入)
- Objection 一键式:封装好的 Frida 脚本,一条命令搞定
3.3 最快上手流程(4 步)
① 部署 frida-server 到设备
adb push frida-server-16.x.x-android-arm64 /data/local/tmp/ adb shell "chmod 755 /data/local/tmp/frida-server-16.x.x-android-arm64" adb shell "/data/local/tmp/frida-server-16.x.x-android-arm64 &"② 设置抓包代理
adb shell settings put global http_proxy <电脑IP>:8080 # 测试结束后清除 adb shell settings put global http_proxy :0③ 挂载 SSL 绕过脚本启动 App
frida -U -l ssl_pinning_bypass.js -f com.target.app --no-pause④ 懒人替代:Objection 一键绕过
objection -g com.target.app explore # 进入 REPL 后执行: android sslpinning disable3.4 常用 Frida Hook 点位速查
| Hook 点位 | 所属库/类 | 覆盖范围 |
|---|---|---|
X509TrustManager.checkServerTrusted | Android SDK | 标准 HTTPS 全量 |
CertificatePinner.check | OkHttp 3.x/4.x | OkHttp 证书固定 |
HttpsURLConnection.setSSLSocketFactory | Android SDK | 传统 HTTPS 连接 |
WebViewClient.onReceivedSslError | WebView | WebView 内 SSL 报错 |
ConscryptFileDescriptorSocket | Conscrypt | 新版 Android 原生校验 |
完整脚本模板见 FRIDA_SCRIPTS.md。
四、SSL Pinning 绕过:从原理到 6 种方案
4.1 到底"固定"了什么?
SSL Pinning 在 TLS 握手后,额外把服务器证书/公钥指纹与 App 内置的"白名单"比对,不匹配直接拒绝连接。常见类型如下:
| Pinning 类型 | 固定对象 | 抗破坏能力 | 常见于 |
|---|---|---|---|
| 证书 Pinning | 完整叶子证书 | 低(换证书即失效) | 遗留 App |
| 公钥 Pinning | 公钥信息(SPKI) | 中 | 现代 App |
| SPKI 哈希 Pinning | SPKI 的 SHA-256 | 中 | OkHttp、AFNetworking |
| CA Pinning | 中间/根 CA 证书 | 高 | 企业级 App |
4.2 Android 的 6 条绕过路线(按难度递进)
| 路线 | 方式 | 门槛 | 适用场景 |
|---|---|---|---|
| 1️⃣ Frida 通用脚本 | 同时 Hook 系统 TrustManager + OkHttp + Volley + Conscrypt | 需 Root/注入 | 首选方案 |
| 2️⃣ Objection | android sslpinning disable | 需 Frida 环境 | 快速验证 |
| 3️⃣ LSPosed 模块 | TrustMeAlready(全局)/ SSLUnpinning(按 App) | Root + LSPosed | Frida 被检测时的替代 |
| 4️⃣ 系统 CA 安装 | Magisk 模块把抓包 CA 搬进系统信任库 | Root | Android 7+ 不信任用户 CA |
| 5️⃣ 调试包改配置 | 修改network_security_config.xml信任用户证书 | 有调试包 | 无需 Root |
| 6️⃣ 反编译打补丁 | jadx 定位校验逻辑 → 修改 → 重打包重签 | 逆向基础 | 以上全部失效时 |
4.3 决策树:我该选哪条路?
需要拦截 App 的 HTTPS 流量 ├── 设备已 Root? │ ├── 是 → ① Frida 通用绕过(先试它) │ │ ├── 成功 → 收工 │ │ ├── 失败 → 补 Conscrypt/Volley Hook │ │ ├── 仍失败 → LSPosed + TrustMeAlready │ │ └── 还不行 → 把 CA 装进系统信任库 │ └── 否 → 调试包?→ 改 Network Security Config │ └ 正式包?→ 反编译 + 打补丁 + 重打包 └── 是 Flutter 框架?→ 标准 Hook 失效,需原生层处理(见 5.2)💡 技能库把这个决策树完整收录在 mobile-ssl-pinning-bypass/SKILL.md 第 7 节,遇到新情况直接对照分流即可。
五、跨平台与跨框架:iOS 和跨端 App 怎么办?
5.1 iOS 侧要点
| 场景 | 方案 |
|---|---|
| 已越狱 | objection执行ios sslpinning disable,或安装 SSL Kill Switch 2 |
| 未越狱 | Frida Gadget 重签名注入 → 跑 Hook 脚本;或二进制补丁后侧载 |
iOS 的核心 Hook 点是SecTrustEvaluateWithError、SecTrustEvaluate、SSLHandshake,以及网络库层(AFNetworking、Alamofire、TrustKit)的校验方法。详见 skills/ios-pentesting-tricks/SKILL.md 与 IOS_RUNTIME_TRICKS.md。
5.2 跨端框架的特殊性(新手最常踩的坑)
| 框架 | 网络栈 | 绕过要点 |
|---|---|---|
| Flutter | Dart + BoringSSL(原生层) | 标准 Java/ObjC Hook无效,需 Hook 原生libflutter.so或借助专门工具补丁 |
| React Native | Android 走 OkHttp / iOS 走 NSURLSession | 用平台标准 Hook 即可 |
| Xamarin | Mono 运行时 | Objection 内置支持,直接android sslpinning disable |
5.3 常见问题排查表
| 症状 | 原因 | 解决 |
|---|---|---|
| 脚本加载了但流量仍失败 | 多层 Pinning 叠加 | 把各层全部 Hook:TrustManager + OkHttp + 自定义校验 |
| 提示"需要客户端证书" | 双向认证(mTLS) | 从 App 中提取客户端证书导入代理 |
| App 被 Hook 后闪退 | 防篡改检测到注入 | 先绕过完整性/Root 检测,再处理 SSL |
| Android 7+ 不信任代理 CA | 用户 CA 权限收紧 | 用 Magisk 模块将 CA 装入系统证书库 |
| Flutter 应用完全无视 Hook | 校验发生在 BoringSSL 原生层 | 原生层 Hook 或工具自动化补丁 |
六、不止 SSL:Android 移动安全完整测试地图
SSL 绕过只是第一步,android-pentesting-tricks/SKILL.md 还给出了完整的攻击面清单:
- 导出组件滥用:导出的 Activity/Service/ContentProvider 可被外部 App 直接调用,测试 SQL 注入与路径穿越
- WebView 漏洞:JS 桥接(
addJavascriptInterface)、file://权限滥用、深链→WebView 重定向链 - Intent 重定向:外部可控的"Intent 套 Intent"可启动未导出的内部页面
- Root 检测绕过:Hook
File.exists()拦截su探测、伪造Build.TAGS - 备份提取:
allowBackup=true(默认值!)时可用adb backup拖走本地数据库 - 调试包利用:
debuggable=true时run-as直接进 App 数据目录
6.1 脚本模板库:8 个拿来即用的 Frida 脚本
项目内置的 FRIDA_SCRIPTS.md 提供了一整套模板:
| 脚本 | 用途 |
|---|---|
| 通用 SSL 绕过 | 拦截 HTTPS 流量 |
| Root 检测绕过 | 在 Root 设备上"隐身"运行 |
| 方法追踪器 | 快速摸清 App 内部调用逻辑 |
| 加密 Hook | 提取密钥、查看明文 |
| WebView 调试开关 | 检查 WebView 加载的 URL 与 JS 桥 |
| SharedPrefs 转储 | 提取本地存储的 Token/凭据 |
| Intent 嗅探器 | 监控组件间通信 |
| 生物识别绕过 | 跳过指纹/人脸校验回调 |
常用命令格式:frida -U -l 脚本.js -f 包名(-UUSB 设备、-f全新启动、--no-pause自动恢复运行)。
七、新手行动清单:从 0 到抓到第一包流量 ✅
- ☑️ 准备一台Root 设备(或至少一个调试包)
- ☑️ 电脑上装好抓包工具(Burp/mitmproxy/Charles),生成 CA 证书
- ☑️ 设备设置 Wi-Fi 代理指向电脑,安装 CA 证书
- ☑️ 部署 frida-server,跑
frida -U -l ssl_bypass.js -f 目标包名 - ☑️ 若失败 → 按 4.3 决策树逐级升级方案(模块 → 系统 CA → 反编译)
- ☑️ 流量出来后 → 转入 API 层测试(项目内 api-sec 技能)
⚠️合规提醒:Frida Hook、证书绕过等技术仅在授权渗透测试、自家 App 或 CTF 环境中使用。对未授权目标实施测试属于违法行为。
八、延伸阅读:技能库内的相关模块
- skills/hack/SKILL.md:主入口,全局路由与测试方法论
- skills/recon-for-sec/SKILL.md:资产侦察与技术识别
- skills/api-sec/SKILL.md:拿到流量后的后端 API 测试路线
- skills/mobile-ssl-pinning-bypass/SKILL.md:本文详解的完整决策树与框架矩阵
- skills/android-pentesting-tricks/FRIDA_SCRIPTS.md:8 个现成 Hook 脚本模板
把"移动安全"放进 hack-skills 的体系里看:先侦察 → 再绕过(Root/SSL)→ 后分析(流量/组件/存储),一条主线贯穿始终。跟着决策树走,你就能把碎片化技巧变成可复制的测试流程。
【免费下载链接】hack-skillsHelping AI Agent become an awesome practical hacker!项目地址: https://gitcode.com/gh_mirrors/ha/hack-skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考