apptesteng
apptesteng
  • 发布:2026-08-21 15:09
  • 更新:2026-08-21 15:09
  • 阅读:21

App SSL Pinning 抓包怎么办?三种方法拿到明文

分类:快应用
iOS

'''之前处理 App 的 SSL Pinning 一直走 Frida hook:挂进进程,把证书校验函数改掉,代理抓包就能解密。直到有次在 iOS 上碰到带反调试的目标,hook 脚本全废,越狱环境还差点被检测出来。那次之后我把 Frida 环境撤了——为排查一次接口问题养一台越狱设备,成本实在不划算。那阵子把 app ssl pinning 抓包的各种路数重新捋了一遍,发现真正靠谱的路线有三条,都不碰校验函数。这篇按路线拆开,每条讲清楚怎么操作、什么时候用。

pinning 挡的是中间人这一条路

代理抓包的本质是中间人:工具用自己的根证书动态签发目标域名的证书,客户端信任根证书,握手继续,明文在中间被看到。SSL Pinning 把这个信任链写死了——App 在代码里固定服务端证书的指纹或公钥,校验时不看"证书链是否可信",只看"是不是我写死的那个"。代理签发的证书对不上,握手被拒。pinning 的写法有两种:固定证书本身,或固定证书里的公钥,后者更常见——证书可以轮换,公钥换了才需要发版更新。无论哪种写法,校验逻辑都发生在 TLS 握手阶段,这也是后面所有方案能绕开它的根本原因。所以 pinning 堵死的是"中间人换证书"这一种玩法,绕过它的思路就是避开这条路径,下面三条路都是这个逻辑。

路线一:代理抓包加一键去 Pin

想继续走代理这条熟悉的路线,先处理证书绑定。TraceEagle 的代理抓包里有一键解除目标证书绑定:选中目标 App,把它的证书校验处理掉,再按常规代理流程抓,HTTPS 请求就能正常解密,流量列表里直接看明文。

操作流程:开代理会话 → 目标指向要抓的 App → 解除证书绑定 → 让 App 产生请求 → 列表里出现已解密的请求,请求头、body 都能读。iOS 上装根证书走描述文件,Android 端扫码安装,都是一次性的;会话支持多开,代理和网卡直抓可以同时跑,各自独立页签互不干扰。去 Pin 之后不想碰的域名还能加进放行名单原样透传,只解密目标范围。适合想保留代理调试习惯的场景,规则改写、断点这些能力也都在同一条链路上。

路线二:应用层抓包直接取明文

不做中间人,也就没有"证书对不对得上"的问题。应用层抓包从程序内部数据收发的必经点取数,拿到的本来就是明文,不依赖任何中间人证书。pinning 校验发生在握手环节,应用层取数在握手之后,校验已经过去,管不到这一层。

操作上选应用层抓包,指定目标程序,开抓后让 App 产生请求,流量列表里直接是明文。不想放过启动初期的鉴权流量,勾上"抓启动那一刻",让工具先关掉 App 再拉起,握手和 token 交换都能覆盖。iOS 端免越狱,Android 端免装证书,同一套界面看解密结果。遇到证书绑定加自研加密叠一起的顽固目标,这条是代理和网卡之外仅剩的可行路。

App SSL Pinning 抓包的关键,是换一条不经过证书校验的路,而不是跟校验函数硬碰。

路线三:网卡直抓加密钥源

想看最原始的流量,走网卡直抓:逐包拿全量数据,DNS、QUIC、ICMP、任意 TCP/UDP 都不漏,粒度到包。HTTPS 流量默认是密文,把会话密钥源加进去(add_key_source),密钥自动匹配,密文变明文,原始包和解密后的内容并排看。

网卡直抓不依赖代理设置,App 不认系统代理也没关系;配合进程归属,混杂流量里能看出是谁发的,不用靠 IP 猜。适合排查非 HTTP 协议、确认包级行为、或者目标 App 流量根本不走代理的场景。抓包粒度跟 Wireshark 一个层级,但省掉手动导 SSLKEYLOGFILE 那套配置,密钥源加一次,之后的会话自动匹配。

三条路怎么选

代理去 Pin 适合习惯代理调试、想保留改写断点能力的场景;应用层取明文适合 pinning 加自研加密的顽固目标,iOS/Android 都免环境;网卡直抓加密钥源适合底层分析和非 HTTP 流量。组合使用也常见:常规流量走代理去 Pin,顽固目标切应用层,底层怀疑走网卡,同一台机器上互不干扰。对比 Frida hook 那套:要越狱或 root、脚本跟着 App 版本迭代、还可能被反调试发现,三条路都不碰校验函数,没有这些附加条件。选型的判断标准就一条:目标 App 的防护在哪一层,就把抓取点放在校验之外的那一层。各自适用场景不同,按目标类型选,不用一招打天下。

提醒一句:pinning 抓包用于自家 App 的调试和合规测试;绕过他人 App 的安全机制不在讨论范围内。

顺带一提,抓到明文只是开始,同一条流量还能接着做断点改包:请求飞在半路拦下来,改完再放行或丢弃,验证服务端对异常参数的响应;规则改写可以做 Mock 和转发;压测右键单条,恒定 QPS 或并发,百分位到 p99.9。TraceEagle 这些能力都在一个界面里,排查链路不用换工具。'''

0 关注 分享

要回复文章请先登录注册