Mitmproxy解密自签名证书加密流量

在挖掘某些基于CS架构软件漏洞时,其服务端可能开启了HTTP服务,所以其看似是CS架构,但实际上还是BS架构,客户端只是一个另类的浏览器。

但我们可能会想要抓取client和server的通信流量,而此时会有两点问题。

  1. client可能不会读取HTTP_PROXY和HTTPS_PROXY等系统变量,不会尝试走系统代理。
  2. client和server之间可能会有证书验证,使用自签名的证书,而不是系统内的证书。

本文基于以上问题提出一个解决方案。

Windows上有 proxifier可以hook软件,将软件的TCP流量强行导入到HTTP/SOCKS代理中,所以可以使用proxifier将client流量导入到我们的代理。

而此处的代理可以使用mitmproxy,之前使用burpsuite尝试抓取proxifier导入过来的流量时,发现在TLS握手时server会reset TCP连接,后面使用mitmpoxy才发现是客户端使用自签名的证书,不走系统的证书,导致在TLS握手时证书不匹配,reset了连接。

https://github.com/mitmproxy/mitmproxy/issues/4536

这里可以导出server证书和私钥,并使用mitmproxy加载就可

  1. 导出IIS证书

https://www.xolphin.com/support/IIS_FAQ/IIS_-_Backup_Certificate_and_Private_Key_to_pfx_File

  1. 将pfx转化为pem格式 openssl pkcs12 -in 444.pfx -out temp.pem -nodes
  2. mitmproxy加载证书 mitmweb --cert domain=temp.pem --ssl-insecure

创建于:Monday, May 6,2024
最后修改于: Monday, May 6,2024