Android抓包

原理

正常情况下,客户端和服务端通讯先要建立https连接,客户端公国CA证书里的公钥和一个随机数生成对称秘钥,后续通讯通过对称秘钥加密解密。流程图:

抓包常用的有两种方式:

  1. Mitm(中间人攻击)
  2. 安装CA证书

中间人攻击的原理并不是代理软件使用原始证书解密一方的请求。而是同时担当客户端和服务端的角色,客户端和服务端建立连接时,就已经在中间起作用,客户端与服务端的三次握手变成了客户端和代理软件、代理软件和服务端分别完成三次握手共两次。

当客户端与服务端通讯时,实际上是将http请求发送给代理软件,代理软件解密后显示在面板上,显示可读的内容,再将解密后的内容通过与服务端握手时生成的对称秘钥加密后发送给服务端。

接收服务端的响应也是类似的。

总结一下实现 HTTPS 抓包的基本步骤:

  • 部署 MITM 代理服务器;
  • 通过代理等方式将网络流量归集到 MITM 主机;
  • 客户端信任 MITM CA 证书;
  • MITM 分别与客户端和服务端建立独立连接;
  • MITM 解密客户端和服务端的通信,并结构化地呈现出来。

Android root后能抓到https包不是因为有证书,而是因为信任了伪造的证书。(没有双向证书校验、自签证书是可以看到的。)