摘要

在日常中经常需要用到网络抓包,尤其是HTTPS。

年轻的时候,我也经常玩抓包,不过相对来说,只是按照网络搜到的配置一步步搞,少了一些思考的内容。比较依赖于工具的傻瓜化,所以当时还在IOS购买了正版三件套。

现在发现,免费版工具,也一样可以正常抓包,只是需要自己多思考而已。本文主要记录使用免费的工具,如何进行HTTPS明文抓包。

正文

在日常中经常需要用到TCP/UDP网络抓包,我开发调试中下面这两个工具是用的最多的。

  • tcpdump:免费、开源、Linux专用
  • Wireshark:免费、开源、Windows/Linux/macOS

这两款工具的使用,可以参考这篇文章。但是在逆向的时候,这两款工具,相对来说就比较难用了。

本文主要记录在Windows上,如何使用以下免费的工具,抓包HTTPS明文

一、mitmproxy

1.1 安装

下载mitmproxy,一路无脑下一步安装。他会安装三个工具。

  • mitmproxy:提供交互式命令行界面
  • mitmweb:提供基于浏览器的 GUI
  • mitmdump:提供非交互式终端输出

1.2 修改脚本执行策略

安装完成后,win+r输入powershell,然后ctrl+shift+enter以管理员运行,并执行如下命令,把脚本的执行策略由默认修改为无限制。

sh
1
2
3
4
5
6
7
8
# 查看当前策略
Get-ExecutionPolicy
# 查看详细策略分布
Get-ExecutionPolicy -list
# 修改策略为无限制
Set-ExecutionPolicy Bypass
# 将策略改为默认
Set-ExecutionPolicy Restricted

image-20250611212405312.png

1.3 如何抓包

1.3.1 设置环境变量

通过环境变量,临时设置HTTP/HTTPS请求代理。这仅适用于部分情况。

Linux

sh
1
2
export http_proxy=http://127.0.0.1:8080
export https_proxy=http://127.0.0.1:8080

Windows

sh
1
2
set http_proxy=http://127.0.0.1:8080
set https_proxy=http://127.0.0.1:8080

1.3.2 透明代理(底层拦截所有传输层流量)

运行mitmweb,配置透明代理即可。

image-20250614160004685.png

1.4 配置CA证书

1.4.1 系统证书(适用大部分)

首先,运行mitmproxy,然后关闭即可。之后win+r输入%userprofile%/.mitmproxy

image-20250611220241068.png

在当前目录下管理员启动终端,执行certutil -addstore root mitmproxy-ca-cert.cer,即可安装证书

image-20250611223138004.png

如果没有命令的话,也可以按照如下图,手动安装。

image-20250611223531743.png

这样就可以把证书安装到系统根证书里了,这对于大部分程序都好使。比如浏览器就可以明文抓包了。

image-20250611224316707.png

1.4.2 单独配置证书

但是一些工具,是不走系统根证书的。比如curl、node、java等。他们自己有独立的证书库,因此在使用时,需要指定一下。

指定curl使用证书

sh
1
curl --proxy 127.0.0.1:8080 --cacert C:/Users/meethigher/.mitmproxy/mitmproxy-ca-cert.pem https://meethigher.top/whoami

image-20250611225501073.png

指定node使用证书

sh
1
2
set NODE_EXTRA_CA_CERTS=C:\Users\meethigher\.mitmproxy\mitmproxy-ca-cert.pem
node test.js

给java的证书库添加证书

sh
1
"D:\3Develop\Java\jdk-21.0.1\bin\keytool" -importcert -keystore "D:\3Develop\Java\jdk-21.0.1\lib\security\cacerts" -storepass changeit -file "C:\Users\meethigher\.mitmproxy\mitmproxy-ca-cert.pem" -alias mitmproxy

其他比如安卓等配置CA证书的细节,可以参考Certificates

之后就可以正常抓包了,比如我在使用SpringAi的框架时,想知道HTTPS请求体是啥,就直接抓包即可。

二、FiddlerClassic

下载FiddlerClassic,一路无脑下一步安装。

之后Tools-HTTPS-勾选Decrypt HTTPS Traffic,即可安装对应的根证书

image-20250611230726720.png

image-20250611230940117.png

三、证书卸载

控制面板-管理用户证书,右键删除即可

image-20250611231513986.jpg