☰
移动安全实战:Android Frida Hook与SSL Pinning绕过,hack-skills移动端技能解析
2026/10/7 7:02:29 网站建设 项目流程

移动安全实战: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 种方式

根据使用场景任选其一(三者内容保持同步):

  1. 网页版:支持模糊搜索、分类筛选、一键复制安装命令,适合快速查阅
  2. 源码仓库:完整 Markdown 渲染,适合离线精读与二次加工,需要克隆时使用 https://link.gitcode.com/i/db999e5ee8b07091385f7099bf562b49
  3. 加密 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 disable

3.4 常用 Frida Hook 点位速查

Hook 点位所属库/类覆盖范围
X509TrustManager.checkServerTrustedAndroid SDK标准 HTTPS 全量
CertificatePinner.checkOkHttp 3.x/4.xOkHttp 证书固定
HttpsURLConnection.setSSLSocketFactoryAndroid SDK传统 HTTPS 连接
WebViewClient.onReceivedSslErrorWebViewWebView 内 SSL 报错
ConscryptFileDescriptorSocketConscrypt新版 Android 原生校验

完整脚本模板见 FRIDA_SCRIPTS.md。

四、SSL Pinning 绕过:从原理到 6 种方案

4.1 到底"固定"了什么?

SSL Pinning 在 TLS 握手后,额外把服务器证书/公钥指纹与 App 内置的"白名单"比对,不匹配直接拒绝连接。常见类型如下:

Pinning 类型固定对象抗破坏能力常见于
证书 Pinning完整叶子证书低(换证书即失效)遗留 App
公钥 Pinning公钥信息(SPKI)中现代 App
SPKI 哈希 PinningSPKI 的 SHA-256中OkHttp、AFNetworking
CA Pinning中间/根 CA 证书高企业级 App

4.2 Android 的 6 条绕过路线(按难度递进)

路线方式门槛适用场景
1️⃣ Frida 通用脚本同时 Hook 系统 TrustManager + OkHttp + Volley + Conscrypt需 Root/注入首选方案
2️⃣ Objectionandroid sslpinning disable需 Frida 环境快速验证
3️⃣ LSPosed 模块TrustMeAlready(全局)/ SSLUnpinning(按 App)Root + LSPosedFrida 被检测时的替代
4️⃣ 系统 CA 安装Magisk 模块把抓包 CA 搬进系统信任库RootAndroid 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 跨端框架的特殊性(新手最常踩的坑)

框架网络栈绕过要点
FlutterDart + BoringSSL(原生层)标准 Java/ObjC Hook无效,需 Hook 原生libflutter.so或借助专门工具补丁
React NativeAndroid 走 OkHttp / iOS 走 NSURLSession用平台标准 Hook 即可
XamarinMono 运行时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 检测绕过:HookFile.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 到抓到第一包流量 ✅

  1. ☑️ 准备一台Root 设备(或至少一个调试包)
  2. ☑️ 电脑上装好抓包工具(Burp/mitmproxy/Charles),生成 CA 证书
  3. ☑️ 设备设置 Wi-Fi 代理指向电脑,安装 CA 证书
  4. ☑️ 部署 frida-server,跑frida -U -l ssl_bypass.js -f 目标包名
  5. ☑️ 若失败 → 按 4.3 决策树逐级升级方案(模块 → 系统 CA → 反编译)
  6. ☑️ 流量出来后 → 转入 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询