我想渗透测试一个移动应用程序。为此,我想拦截所有 WiFi 流量并将其转发给在 VM 中运行的 Burp。
我在我的 Macbook 上启用了“互联网共享”,所以我的手机现在使用 WiFi 连接到笔记本电脑。然后我想将所有流量转发到 Burp 代理,它位于 172.16.122.128:8080。
重定向到本地主机工作:
rdr pass on bridge100 inet proto tcp from any to any port {80,443} -> 127.0.0.1 port 8080
我将此规则放在一个文件中并使用pfctl -f pf.rules
. 之后,我在端口 8080 上列出了使用nc -l -p 8080
,当我在手机上浏览某个地方时,它确实连接到了 localhost。
但是,当我尝试转发到 172.16.122.128 时,它不起作用:
rdr pass on bridge100 inet proto tcp from any to any port {80,443} -> 172.16.122.128 port 8080
数据包最终会进入 VM(使用 Wireshark 测试),但没有建立连接。这可能是因为它们源自 192.168.2.3。我需要在某个地方进行 NAT 吗?如何正确配置它?
我想,问题是你没有配置两个网络之间的转发,(1)VM网络(172.16.122.0/24)和(2)你的局域网(192.168.2.0/24)。要在 Mac 上配置转发,您可能需要执行以下操作(抱歉,我没有 Mac,所以无法尝试):
1) 如https://apple.stackexchange.com/a/192183所写:
2)如果需要,添加到两个网络的静态路由(我猜,你已经有了,因为你可以用 nc 从你的 Mac 连接到 VM)
最后,另一种选择(不将您的 Mac 配置为路由器)是使用您的虚拟化软件设置 NAT 并将端口转发到您的 VM。如果您使用 VMware Fusion,请查看此处或此处。
然后,不要将流量转发到 VM 上的端口,而是将其转发到 vmnet8 接口上的转发端口:
(vmnet8 上的 8080 端口应通过 VMware Fusion 转发到您的 VM 上的 8080 端口)
以下 PF 规则有效:
这会将所有请求转发到 172.16.122.128,同时在其间进行 NAT。
需要 NAT 在两个网络的地址之间进行转换,即 192.168.2.0/24 和 172.16.122.0/24。转发部分已经工作(如我的问题中所述),但是数据包转发时使用了错误的源地址。NAT 将该源地址更改为 172.16.122.1,以便 VM 知道将数据包发送回我的 MacBook,然后再将它们转发到手机。
如果虚拟机是 linux 虚拟机,您确实需要对传入流量进行 Nat 处理并对其进行处理。那是:
防火墙命令