在 MacOS 上使用 PF 將流量重定向到特定地址和埠
我想滲透測試一個移動應用程序。為此,我想攔截所有 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 嗎?如何正確配置它?
以下 PF 規則有效:
nat on vmnet8 from bridge100:network to any -> (vmnet8) rdr pass on bridge100 inet proto tcp from any to any -> 172.16.122.128 port 8080
這會將所有請求轉發到 172.16.122.128,同時在其間進行 NAT。
需要 NAT 在兩個網路的地址之間進行轉換,即 192.168.2.0/24 和 172.16.122.0/24。轉發部分已經工作(如我的問題中所述),但是數據包轉發時使用了錯誤的源地址。NAT 將該源地址更改為 172.16.122.1,以便 VM 知道將數據包發送回我的 MacBook,然後再將它們轉發到手機。
我想,問題是你沒有配置兩個網路之間的轉發,(1)VM網路(172.16.122.0/24)和(2)你的區域網路(192.168.2.0/24)。要在 Mac 上配置轉發,您可能需要執行以下操作(抱歉,我沒有 Mac,所以無法嘗試):
1) 如https://apple.stackexchange.com/a/192183所寫:
sudo sysctl -w net.inet.ip.forwarding=1 sudo sysctl -w net.inet.ip.fw.enable=1
2)如果需要,添加到兩個網路的靜態路由(我猜,你已經有了,因為你可以用 nc 從你的 Mac 連接到 VM)
最後,另一種選擇(不將您的 Mac 配置為路由器)是使用您的虛擬化軟體設置 NAT 並將埠轉發到您的 VM。如果您使用 VMware Fusion,請查看此處或此處。
然後,不要將流量轉發到 VM 上的埠,而是將其轉發到 vmnet8 介面上的轉發埠:
rdr pass on bridge100 inet proto tcp from any to any port {80,443} -> 172.16.122.1 port 8080
(vmnet8 上的 8080 埠應通過 VMware Fusion 轉發到您的 VM 上的 8080 埠)