iOS 抓包怎么绕过 SSL Pinning 证书限制,抓取app上的包

0 阅读3分钟

在 iOS 网络调试中,最典型的现象是:

  1. 代理已经配置
  2. 证书已经信任
  3. Safari 可以正常抓到 HTTPS
  4. 目标 App 一启动就提示网络错误

Charles 或 Fiddler 里只能看到一条失败的连接,甚至什么都没有。

这个情况可能是App 在 TLS 层主动校验了服务器证书或做了 Pin 校验。


第一步,确认失败发生在 TLS 阶段

在判断绕过 SSL 证书认证之前,需要确认在哪被截断的。

可以观察两个现象:

  • 代理工具中是否能看到 TLS ClientHello
  • 是否出现证书校验错误

如果在握手阶段直接断开,而 Safari 正常,说明校验逻辑存在于 App 内部。


代理抓包的上限在哪里

代理模式的工作方式是:

  1. 代理伪装成服务器
  2. 向客户端返回自己的证书
  3. 客户端信任该证书

当 App 内部对服务器证书做校验时:

  • 即使系统信任了代理证书
  • App 仍然会拒绝连接

此时再重新安装证书,不会改变结果。


验证 SSL 校验是否由 App 主动执行

可以通过一个对比测试确认:

  • 使用相同的代理配置
  • 抓 Safari 的 HTTPS
  • 抓目标 App 的 HTTPS

如果只有目标 App 失败,可以确认校验逻辑存在于该应用内部,而不是系统层。


切换到对设备直接抓包

当代理模式被证书校验阻断时,需要换一个抓包方式。

使用抓包大师(Sniff Master)进行对设备 HTTPS 暴力抓包

抓包大师提供对设备的 HTTPS 暴力抓包能力,不依赖系统代理,也不通过中间人证书转发。

操作流程如下:

  1. 使用 USB 连接 iOS 设备
  2. 保持设备解锁并信任电脑
  3. 启动抓包大师
  4. 选择对应 iPhone
  5. 按提示安装驱动与描述文件
  6. 进入 HTTPS 暴力抓包相关模式
  7. 启动抓包并触发目标请求

这一模式不会因为代理证书不被信任而失效。 https暴力抓包


通过 App 筛选定位目标流量

在设备级抓包启动后,可以:

  • 使用选择 App功能
  • 仅保留目标应用
  • 再触发网络操作

这样可以在抓包列表中直接看到与当前业务对应的 HTTPS 请求。 筛选app


当数据不完整时该如何判断

如果抓包结果中:

  • 能看到请求地址
  • Header 可见
  • 请求体或响应体为空

说明 HTTPS 已被捕获,但应用未使用 iOS 开发证书签名。

这与 SSL 校验无关,而是平台限制。


需要完整数据时的处理步骤

在自有应用或授权测试环境中,可以按以下步骤操作:

  • 获取目标 App 的 IPA 文件
  • 使用 iOS 开发证书重新签名
  • 若 IPA 为加密版本,先进行脱壳
  • 安装重签后的 App
  • 重新进行 HTTPS 抓包

完成后,HTTPS 请求体与响应体即可完整显示。


当涉及双向认证(mTLS)时

如果 App 同时启用了客户端证书校验:

  • 代理抓包会在握手阶段失败
  • 暴力抓包仍然可以观察到完整 TLS 会话

与其他工具的配合

在完整排查流程中,可以结合:

  • 代理工具:确认校验是否发生在 TLS 阶段
  • 抓包大师:获取真实 HTTPS 数据
  • Wireshark:分析底层 TLS 行为

每个工具都站在不同位置,承担不同职责。


不要把所有问题都归结为证书问题

在调试过程中,SSL 证书认证只是阻断流量的一种方式。

确认以下几点会更有效:

  • 请求是否发出
  • TLS 是否建立
  • 数据是否被解密
  • 抓包工具抓在网络的哪个位置

每一步都可以通过抓包结果直接验证。

参考链接:www.sniffmaster.net/tutorial/zh…