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端抓包数据,操作如下
开启远程控制器支持,
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而已。