0%

使用mitmproxy查看HTTPS流量

HTTPS流量由于加密不能通过常规工具wireshark和tcpdump查看,本文介绍使用mitmproxy达成目标。

一、mitmproxy工作原理

mitmproxy作为中间人代理工具,通过客户端 <-> mitmproxy代理 <-> 目标服务器工作模式,强制介入HTTPS流量,从而实现“解密查看”、“篡改”、“拦截”等目标。

完整的工作流程如下:

  1. 开启mitmproxy代理,其是一个HTTP代理端点
  2. 客户端信任mitmproxy自签根CA证书
  3. 客户端配置使用mitmproxy代理
  4. 客户端发起HTTP/HTTPS请求
    1. mitmproxy代理与目标服务器建立连接:
      1. mitmproxy代理向服务器请求证书
      2. 验证通过服务器证书合法性
      3. mitmproxy代理与服务器建立连接
    2. 客户端与mitmproxy代理建立连接:
      1. 客户端向mitmproxy代理请求证书
      2. mitmproxy代理拿到目标服务器域名,动态伪造一张同域名证书,然后用mitmproxy自签根CA证书,给伪造证书签名
      3. 由于第2步——客户端信任mitmproxy自签根CA证书,此时客户端验证通过mitmproxy代理返回的伪造证书
      4. 客户端与mitmproxy代理建立连接

至此,已建立数据通信过程:客户端发数据 -> 加密发给mitmproxy代理 -> mitmproxy代理解密成明文(可进行“查看”,“篡改”,“拦截”等动作) -> mitmproxy代理再加密发给目标服务器 -> 目标服务器回复数据 -> 加密发给mitmproxy代理 -> mitmproxy代理解密成明文(可进行“查看”,“篡改”,“拦截”等动作) -> mitmproxy代理再加密回复给客户端。

二、Ubuntu 24.04下使用mitmproxy获取FlClash软件请求订阅地址的格式

背景:Ubuntu 24.04下软件FlClash,其内会请求订阅地址获取最新服务节点,想要获取请求订阅地址的格式。

使用mitmproxy代理实现以上目标,完整流程如下:

  1. 执行apt-get install mitmproxy命令安装mitmproxy
  2. 执行mitmproxy命令开启mitmproxy代理,其是一个HTTP代理端点,默认代理地址为127.0.0.1:8080
  3. FlClash客户端信任mitmproxy自签根CA证书(路径为~/.mitmproxy/mitmproxy-ca-cert.pem):不似浏览器可进行仅自身级别的信任,故直接进行系统级信任,具体步骤如下:
    • 复制自签根CA证书:sudo cp ~/.mitmproxy/mitmproxy-ca-cert.pem /usr/local/share/ca-certificates/
    • 刷新/etc/ssl/certs目录并重建合并证书包ca-certificates.crtsudo update-ca-certificates
  4. FlClash配置代理:不支持读取HTTP_PROXYHTTPS_PROXY环境变量配置代理方式,故使用proxychains FlClash方式(ProxyChains配置HTTP代理http 127.0.0.1 8080
  5. FlClash软件内触发请求订阅地址
  6. 在mitmproxy界面可以查看到以下信息而达成目标
1
2
3
4
5
            Request                         Response                         Detail
user-agent: FlClash/v0.8.92 clash-verge Platform/linux
accept-encoding: gzip
host: 118.124.47.116:9099
Query [m:auto]
您的支持将鼓励我继续分享!