我正在尝试在Mac OS X Lion(10.7.5)上设置透明代理,因此可以使用mitmproxy(拦截来自Android应用程序的SSL通信)。我遵循了mitmproxy docs for setting up port forwarding with pf on Mac OS X中的步骤,并且所有步骤都没有出现任何错误:

$ sudo sysctl -w net.inet.ip.forwarding=1
Password:
net.inet.ip.forwarding: 0 -> 1

$ sudo pfctl -f pf.conf
No ALTQ support in kernel
ALTQ related functions disabled

$ sudo pfctl -e
No ALTQ support in kernel
ALTQ related functions disabled
pf enabled

但这似乎没有任何效果。当我在浏览器中访问网站时,它会直接发出请求,并且不会通过我指定的端口。这是pf.conf文件(en1是我的wifi):
rdr on en1 inet proto tcp to any port 80 -> 127.0.0.1 port 4500
rdr on en1 inet proto tcp to any port 443 -> 127.0.0.1 port 4500

最佳答案

感谢您今天在IRC channel 停留。我已经对此进行了跟踪,基本的问题是rdr规则适用于入站流量。这意味着他们将不会重定向来自包装盒本身的流量。如果您考虑一下,这是不可避免的:我们无法区分非mitmproxy应用程序的出站连接和mitmproxy本身的出站连接。我们可以使用route-to将流量发送到lo0,然后将其重定向,但这会导致无限循环,在该循环中,mitmproxy自己的出站连接也被重定向回mitmproxy。

因为我对您的用例有所了解,所以建议您探索使用VirtualBox进行此操作的方法。攻击的计划是将VirtualBox网络设置为桥接模式,然后使用与源地址匹配的pf规则将流量重定向到mitmproxy。那应该做您想要的,而不会由于无限重定向而导致时间和空间上的奇异之处。

如果您需要进一步的帮助,请再次通过IRC channel 。

关于macos - 无法在Mac OS X上为透明代理设置端口转发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20434882/

10-09 06:22