Published on

HTTPS 抓包工具入门

Authors
  • avatar
    Name
    Terry
    Twitter

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抓包原理提供了详细的时序图。

  1. 客户端向服务器发起HTTPS请求
  2. Charles拦截客户端的请求,伪装成客户端向服务器进行请求
  3. 服务器向“客户端”(实际上是Charles)返回服务器的CA证书
  4. Charles拦截服务器的响应,获取服务器证书公钥,然后自己制作一张证书,将服务器证书替换后发送给客户端(为什么这个证书能够通过验证,因为Charles会往电脑的ROOT CA中添加根证书,然后Charles会根据这个证书生成自签的CA)。
  5. 客户端接收到“服务器”(实际上是Charles)的证书后,生成一个对称密钥,用Charles的公钥加密,发送给“服务器”(Charles)
  6. Charles拦截客户端的响应,用自己的私钥解密对称密钥(Charles拿到了对称密钥),然后用服务器证书公钥加密,发送给服务器。
  7. 服务器用自己的私钥解密对称密钥,向“客户端”(Charles)发送响应
  8. Charles拦截服务器的响应,替换成自己的证书后发送给客户端
  9. 至此,连接建立,Charles拿到了 服务器证书的公钥 和 客户端与服务器协商的对称密钥,之后就可以解密或者修改加密的报文了。

可以看出,重点是添加自签名证书(包含私钥(yue,四声)和公钥)

Proxyman 使用

文档地址:proxyman 文档

安装

非常简单,使用Homebrew一行命令搞定。

brew install --cask proxyman

证书配置

为了拦截加密的 HTTPS 消息(请求或响应),必须在当前计算机上安装Proxyman CA 证书。Proxyman同样简化了这一步骤。只需要点击Proxyman菜单栏的Certificate -> Install Certificate on this xxx 即可。

证书安装配置完成后,即可看到浏览器访问相关页面的HTTPS抓包信息。

更多功能

参考:新款HTTP代理抓包工具Proxyman(界面美观、功能强大)