Surge进行HTTPS解密

最近,我不满足光猪圈健身个人的健康数据只能由官方App查看的问题,于是利用Surge抓取了请求,现在利用postman,或自己写个App,脚本等,都可以轻松获取App数据。

解密的好处

解密即抓取解密了请求中及返回数据。好处有以下几点。

  • 了解一些WEB,App是否偷偷传递了敏感数据到后台
  • 基于请求数据,自行搭建C端或者B端,比如一些开源App,知乎,掘金客户端等
  • Script编写实现一键功能,比如查话费,JD签到等

OK,这里就Mark下如何开启解密。

开启解密

  • 这里以Mac端v4.0.3,iOS端v4.4.3为例
  • 针对解密,Mac端v3及iOS端v3起已支持,功能及命名存在些许差异

配置(Mac端)

如上,按照数字顺序,依次打开HTTPS解密开关=>生成证书=>系统安装=>添加域名

配置(iOS端)

iOS端的配置相对Mac端繁琐,首先要要将缺省浏览器设定为Safari,如果手机上无其它浏览器可忽视此设定要求。原因是Safari下下载证书后,系统才可以识别文件

接下来按照图示依次操作

安装成功后,还要General=>About=>Certificate Trust Settings,信任该证书,以Surge中显示为信任标志配置成功

最后,开启MiTM及增加域名设置

Dashboard

开启解密后,需要在Dashboard或iOS端的Utilities=>Recent Requests中查看解密后的body体

  • 这里以Mac端的dashboard来展示,且推荐使用Mac端来浏览。
  • 在Dashboard中查看解密请求,需要Enable HTTP Capture,否则还是不会解密body体
  • 注意箭头指向的小图标,如果解密成功会是这个颜色,若失败会提示MitM failed

如上即可看到请求及返回的body体

连接远程机器

有时候需要Mac上浏览iOS端抓包数据,操作如下

  1. 开启远程控制器支持,Home=>More Settings=>Remote Controller

注意如果出现连接拒绝,请确认IP/端口/密码正确性,重试即可。

注意

  • 开启了MitM,请求/回复处理过程会多一次解/加密,对性能有一点影响

  • 部分应用只允许特定证书,因此会失败Mitm failed

    应用使用了 Certificate Pinning,只相信特定的证书或者来自特定的 issuer 的证书。该情况下 MitM 无法正常工作。(如 iOS 系统对 apple.com 和 icloud.com 的相关请求)

  • 生成的证书是自签名证书,如果密钥泄漏,需要手动取消信任

  • MitM 失败和性能毫无关系,MitM 失败是客户端在握手期间主动断开连接所致,一般是因为客户端有 Pinned-Certificate 防御 MitM,或者是正好因自身逻辑取消了请求,也可能是你配置不当对非 TLS 请求尝试进行 MITM。同时,如果开启MitM但是没有安装或信任,那么也会failed.

写在最后

  • 利用Surge的HTTPS解密可以方便本地或者局域网内其它设备的网络请求,基于此,比如做个性化广告拦截等都具备了一定可行性,因此还是挺实用的
  • 需要注意,Surge依然无法完全替代Charles,fiddler,仅仅支持对于抓包有这些基本的feat而已。

参考文档