SSL Pinning 绕过:当应用不信任你的证书
什么是 SSL Pinning
SSL Pinning(证书固定)是一种应用级别的安全机制——App 在代码里硬编码了服务器真实证书的指纹,每次建立 HTTPS 连接时都会验证:服务端返回的证书指纹是不是和代码里写死的一致。
如果 httpCanary 在中间替换了证书,证书指纹肯定对不上,App 会立即中断连接——不管 httpCanary 的 CA 证书有没有被系统信任。
和系统证书信任的区别
| 机制 | 层级 | 控制权 |
|---|---|---|
| 系统证书信任 | Android 系统层 | 用户可以改 |
| 网络安全配置 | 应用的 Manifest | 应用开发者设置 |
| SSL Pinning | 应用代码内部 | 用户难以干预 |
SSL Pinning 是 应用自己管的,绕不开系统信任链——这是它比网络安全配置更强的原因。
哪些 App 有 SSL Pinning
高安全级别的 App 通常会开启:
- 银行、支付类 App(微信支付、支付宝、各银行手机银行)
- 社交平台核心功能(微信登录、Facebook)
- 企业内部 App
- 部分游戏的登录和支付流程
判断方法:如果只有某些 App 的 HTTPS 抓不到(乱码),而浏览器和其他 App 正常,基本可以确定是 SSL Pinning。
绕过方案总览
| 方案 | 是否需要 Root | 难度 | 兼容性 |
|---|---|---|---|
| JustTrustMe(Xposed 模块) | 是 | 中 | 较好 |
| TrustMeAlready(Xposed 模块) | 是 | 中 | 一般 |
| 太极 + 内置 Hook | 可选 | 中 | 较好 |
| Frida 脚本 | 是(模拟器免 Root) | 高 | 好 |
| VirtualApp 平行空间 | 否 | 中 | 一般 |
| 模拟器 Frida(免 Root) | 否 | 高 | 好 |
方案一:JustTrustMe(最流行)
JustTrustMe 是 Xposed 框架上最流行的 SSL Pinning 绕过模块——它 Hook 了 Android 中所有用于 SSL 证书校验的 API,让证书校验永远返回成功。
使用步骤
- 安装 Xposed 框架(需要 Root)
- LSPosed(推荐,兼容性好)
- 或者太极(免 Root 但某些 App 不兼容)
- 安装 JustTrustMe
- 在 LSPosed 管理器中搜索 JustTrustMe 并安装
- 或者从 GitHub 下载 APK 安装
- 在 Xposed 中启用
- 模块列表中找到 JustTrustMe
- 勾选目标 App(微信、银行 App 等)
- 重启目标 App
- 在 httpCanary 中重新抓包
JustTrustMe 的局限
- 只 Hook 常见的 SSL 校验 API——某些 App 自己实现了证书校验逻辑(不走系统 API),JustTrustMe 就抓不住
- App 更新可能改变校验逻辑,需要等 JustTrustMe 更新适配
- 部分新版微信和支付宝检测到 Xposed 后会拒绝启动
方案二:太极(免 Root 首选)
太极(Taichi)是一个 Hook 框架,不修改系统分区(不需要 Root),通过修改目标 App 的 APK 来注入 Hook 代码。
使用步骤
- 安装太极 App
- 在太极中选择需要 Hook 的目标 App
- 太极会自动做 APK 重打包并生成「太极版」的 App
- 在太极里启用 JustTrustMe 模块
- 通过太极打开目标 App
太极的局限
- 需要重新安装「太极版」App——原来的签名会变
- 部分 App 检测到签名变化会拒绝运行
- 更新 App 后需要重新走太极重打包流程
方案三:Frida(灵活但技术门槛高)
Frida 是一个动态插桩框架,可以在运行时 Hook 任意函数。有成熟的 SSL Pinning 绕过脚本。
使用步骤
- Root 手机或用模拟器(模拟器免 Root)
- 启动 Frida Server
- 在电脑上运行 Frida 绕过脚本
Frida 的优势是灵活——可以针对具体 App 定制绕过逻辑,不像 JustTrustMe 是通用 Hook。但需要一定的逆向分析能力。
实战建议
| 你的情况 | 推荐方案 |
|---|---|
| 设备已 Root | LSPosed + JustTrustMe,最省心 |
| 没 Root 但可以改 APK | 太极 + JustTrustMe |
| 用模拟器 | Frida 脚本,最灵活 |
| 只有一个特定 App 要抓 | 先试试能不能改 App 的 network_security_config.xml |
安全提示
- SSL Pinning 是 App 开发者用来保护用户数据安全的机制——绕过它可能违反 App 的服务条款
- 建议只在合法的开发测试和安全研究场景下使用
- 不要用绕过 SSL Pinning 的方式窃取他人隐私数据