- Published on
HTTPS 抓包工具入门
- Authors

- Name
- Terry
逛ruanyf的科技周刊时,刷到tickets,试用时想到软件是怎么拿到我手机的用户凭证的,于是深入研究了一下,发现还能跟大学学习的计算机知识联系起来,这种感觉非常的奇妙。
抓包简介
抓包(Packet Capture)是网络分析中常用的技术,用于拦截并记录网络数据包,以便分析网络通信的详细信息。抓包工具可以帮助我们了解网络协议的运行、性能瓶颈、安全威胁和其他网络问题。
常用抓包工具
Proxyman和Charles是MacOS首选,Proxyman更新且免费。Fiddler是Win平台首选。Wireshark老牌,功能强大。tcpdump是命令行工具。
抓包本质
抓包工具会在网络传输的某个层次或节点截获收发的数据,抓包的本质是分析网络流量的详细信息。
抓包场景
抓包可以用来:
- 网络服务监控和故障排查
- 安全分析和入侵检测
- 应用性能优化
- ...
HTTPS抓包
下面就以常用的HTTPS解密获取用户Token的案例,来介绍抓包的原理(需要对信息安全或者密码学有一定的基础)。
对称加密和非对称加密
一篇文章看懂对称加密和非对称加密:Introduction to Encryption
HTTPS 原理
中文高质量文章:20张图让你彻底弄懂HTTPS原理.md
以及一张图直观展示HTTPS保护了什么信息:Introduction to HTTPS
HTTP请求头所有信息都是明文(中间人攻击之后):

HTTPS加密保护了所有敏感信息: 
抓包原理
根据HTTPS的原理,HTTPS 抓包的原理主要涉及中间人攻击(Man-in-the-Middle, MITM)技术。
当客户端发起 HTTPS 请求时,抓包代理会截获这个请求。代理会与客户端建立一个 HTTPS 连接,使用其自签名证书进行加密。同时代理会与服务器建立另一个 HTTPS 连接,使用服务器的真实证书进行加密。
Charles抓包原理提供了详细的时序图。
- 客户端向服务器发起HTTPS请求
- Charles拦截客户端的请求,伪装成客户端向服务器进行请求
- 服务器向“客户端”(实际上是Charles)返回服务器的CA证书
- Charles拦截服务器的响应,获取服务器证书公钥,然后自己制作一张证书,将服务器证书替换后发送给客户端(为什么这个证书能够通过验证,因为Charles会往电脑的ROOT CA中添加根证书,然后Charles会根据这个证书生成自签的CA)。
- 客户端接收到“服务器”(实际上是Charles)的证书后,生成一个对称密钥,用Charles的公钥加密,发送给“服务器”(Charles)
- Charles拦截客户端的响应,用自己的私钥解密对称密钥(Charles拿到了对称密钥),然后用服务器证书公钥加密,发送给服务器。
- 服务器用自己的私钥解密对称密钥,向“客户端”(Charles)发送响应
- Charles拦截服务器的响应,替换成自己的证书后发送给客户端
- 至此,连接建立,Charles拿到了 服务器证书的公钥 和 客户端与服务器协商的对称密钥,之后就可以解密或者修改加密的报文了。
可以看出,重点是添加自签名证书(包含私钥(yue,四声)和公钥)。
Proxyman 使用
文档地址:proxyman 文档
安装
非常简单,使用Homebrew一行命令搞定。
brew install --cask proxyman
证书配置
为了拦截加密的 HTTPS 消息(请求或响应),必须在当前计算机上安装Proxyman CA 证书。Proxyman同样简化了这一步骤。只需要点击Proxyman菜单栏的Certificate -> Install Certificate on this xxx 即可。
证书安装配置完成后,即可看到浏览器访问相关页面的HTTPS抓包信息。