概述
mitmproxy
进行虚拟机流量转发方案,A虚拟机自身产生的流量,通过 A虚拟机系统代理设置转发至B主机上的Burp Suite,再由 B主机上的Burp Suite配置上游代理转发回A虚拟机上的mitmproxy,最终通过 A虚拟机已连接的VPN 进行转发的需求。这种循环代理的配置能够确保A虚拟机的所有网络流量都经过Burp Suite进行拦截和分析,并最终通过VPN安全出口,实现在B主机上对A虚拟机流量进行代理。
架构
核心问题
A 虚拟机需要将其自身流量通过系统代理正确转发到 B 主机。 B 主机上的 Burp Suite 需要接收来自 A 虚拟机的流量,并正确配置上游代理以转发回 A 虚拟机上的 mitmproxy
。A 虚拟机上的 mitmproxy
需要处理 Burp Suite 返回的流量,并确保其通过 VPN 隧道发出。HTTPS 代理的 CONNECT
方法在整个链路上需要被正确处理。
解决方案: mitmproxy
mitmproxy
是一个免费且开源的交互式 HTTPS 代理工具,它支持 HTTP/1、HTTP/2、HTTP/3、WebSockets 以及其他 SSL/TLS 保护协议的流量拦截、检查、修改和重放。其强大的功能使其成为解决此问题的理想选择。
方案拓扑
配置手册
配置 A 虚拟机系统代理
将 A 虚拟机的 Windows 系统代理设置为 B 主机上的 Burp Suite 监听地址和端口。这将确保 A 虚拟机自身产生的所有网络流量都先经过 B 主机上的 Burp Suite。
在 A 虚拟机上,打开 "设置" (Settings) -> "网络和 Internet" (Network & Internet) -> "代理" (Proxy)。 在 "手动设置代理" (Manual proxy setup) 部分,将 "使用代理服务器" (Use a proxy server) 选项设置为 "开" (On)。 在 "地址" (Address) 字段中填写 B 主机的 IP 地址 (例如: 192.168.1.101
,请替换为您的 B 主机实际IP)。在 "端口" (Port) 字段中填写 Burp Suite 监听的端口,通常是 8080
。勾选 "不使用代理服务器的地址" (Don't use the proxy server for local (intranet) addresses) 选项,以避免本地流量也经过代理。 点击 "保存" (Save)。
实际上我用的是这个项目:proxy-gui[1],简单设置个系统代理即可
mitmproxy配置
打开 A 虚拟机上的命令提示符 (CMD) 或 PowerShell,运行以下命令安装 mitmproxy
:
pip install mitmproxy
启动 mitmproxy
(或 mitmweb
)
推荐使用 mitmweb
,它提供了 Web 界面,方便查看和管理流量。mitmproxy
在此方案中作为 Burp Suite 的上游代理,也是最终将流量通过 VPN 发送出去的组件。
在 A 虚拟机上,打开命令提示符 (以管理员身份运行可能更好,以确保端口绑定权限),运行以下命令:
mitmweb--listen-host 0.0.0.0--listen-port 8081--mode regular
--listen-host 0.0.0.0
:这使得 mitmproxy
监听所有可用的网络接口,允许 B 主机通过 A 虚拟机的 IP 地址连接到它。--listen-port 8081
:指定 mitmproxy
监听的端口。您可以选择任何未被占用的端口。--mode regular
:指定 mitmproxy
以常规 HTTP 代理模式运行。
A 虚拟机防火墙配置
防火墙关闭
配置B主机 (Burp Suite与证书)
B主机需要进行相应设置,包括安装 mitmproxy
的CA证书以及配置Burp Suite的上游代理。Burp Suite 将接收来自 A 虚拟机系统代理的流量,并将其转发回 A 虚拟机上的 mitmproxy
。
1. 安装 mitmproxy
CA 证书 (处理 HTTPS 流量的关键)
当 mitmweb
运行时,它会生成自己的 CA 证书用于拦截 HTTPS 流量。为了让 B 主机信任这些被 mitmproxy
拦截和重新签名的 HTTPS 流量,您需要将 mitmproxy
的 CA 证书安装到 B 主机的操作系统信任存储或浏览器中。
在 B 主机上,打开浏览器,访问 http://<A虚拟机IP地址>:8081
。此时, mitmproxy
的 Web 界面会显示一个链接http://mitm.it
。点击该链接。在 mitm.it
页面上,选择适用于您 B 主机操作系统的证书下载选项 (例如 "Windows"),下载并安装证书。通常,您需要将证书安装到 "受信任的根证书颁发机构" 中。
2. 配置 Burp Suite 的上游代理
在 B 主机上启动 Burp Suite。
导航到 "Proxy" -> "Options" 选项卡。 向下滚动到 "Proxy Listeners" 部分,确保 Burp Suite 监听在 B 主机的 0.0.0.0:8080
(或您的 B 主机实际IP地址:8080),以确保能接收来自 A 虚拟机的流量。继续向下滚动到 "Upstream Proxy Servers" 部分。 点击 "Add" 按钮添加一个新的上游代理规则。 在弹出的 "Add upstream proxy rule" 对话框中进行以下配置: Destination host:
*
(星号表示此上游代理规则适用于所有目标主机)。Proxy host:
填写 A 虚拟机的 IP 地址 (例如 192.168.1.100
,请替换为您的 A 虚拟机实际IP)。Proxy port:
8081
(这是 A 虚拟机上mitmproxy
监听的端口)。Proxy type:
选择 HTTP
。其他选项通常保持默认即可,除非您的环境有特殊认证需求。 点击 "OK" 保存规则。
验证流量转发
完成所有配置步骤后,进行验证是确保一切按预期工作的关键环节。确认流量是否正确地从A虚拟机自身经由B主机和A虚拟机的VPN转发。
在 A 虚拟机上:
确保 VPN 客户端已连接。 确保 mitmproxy
(或mitmweb
) 正在运行并监听8081
端口,没有报错信息。从 A 虚拟机上的浏览器或其他应用程序发起网络请求
(例如访问 http://example.com
或https://google.com
)。由于 A 虚拟机的系统代理已配置,这些请求将首先发送到 B 主机。在 B 主机上:
确保 Burp Suite 的代理监听器已激活 (Proxy -> Intercept -> Intercept is on/off, and check Proxy Listeners table)。 检查 Burp Suite 的 "HTTP history" 选项卡,您应该能看到来自 A 虚拟机的流量被拦截。 再次检查 A 虚拟机:
检查 A 虚拟机上 mitmproxy
(或mitmweb
) 的控制台/Web 界面,您也应该能看到相同的流量记录。确认流量通过 VPN 出口:
在 A 虚拟机上,访问如 whatismyip.com
或ip.sb
,确认显示的 IP 地址是 VPN 的出口 IP,而不是您的真实公网IP。如果所有步骤都正常,流量路径将是:A 虚拟机 (应用) -> A 虚拟机 (系统代理) -> B 主机 (Burp Suite) -> A 虚拟机 (mitmproxy) -> A 虚拟机 (VPN) -> 互联网。
https://github.com/ai862/proxy-gui ↩
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://www.hqyman.cn/post/11605.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~