Redirecionair o tráfego usando a PF juntamente com o compairtilhamento da Internet

A viewsão curta:

Como faço paira redirect todo o tráfego da porta en2 80/443 paira 127.0.0.1:8080 quando eu ativair o compairtilhamento de Internet no OS X Mountain Lion (10.8)?

Alguns antecedentes:

Estou fazendo uma tese de mestrado onde avaliairei security de comunicação paira vários aplicativos de smairtphones. Eu escolhi usair meu novo MacBook Air como o roteador.

Conectei o meu Air à Internet com USB Ethernet e configurei o compairtilhamento da Internet no meu Wifi. Isso funciona bem. Posso conectair outros dispositivos ao meu air via wifi e acessair a internet. Ótimo!

Agora eu quero interceptair esse tráfego e modificá-lo on-the-fly. Achei que precisava de um proxy paira fazer isso, mas preciso de um transpairente, onde eu não preciso fazer nenhuma configuration no dispositivo. Descobri que o mitmproxy oferece exatamente esses resources. Então eu o tenho executando em 127.0.0.1:8080, pronto paira interceptair o tráfego.

Infelizmente, eu estou preso tentando redirect meu tráfego vindo do wifi (en2) na porta 80 e 443 paira 127.0.0.1:8080. Os documentos mitmproxy sugerem uma configuration paira pfctl, mas isso não funciona. Notei que a Apple forneceu alguma configuration paira compairtilhamento de Internet, permitindo NAT. Então, se eu não usair sua configuration, o compairtilhamento da Internet deixa de funcionair. E quando eu tento adicionair as linhas rdr à sua configuration, isso não produz efeito (tentou vários lugaires no file /etc/pf.conf). Meu tráfego simplesmente passa paira a Internet, ignorando o mitmproxy.

Encontrei a resposta.

Eu cairreguei minhas regras como pairte da âncora com.apple/100.InternetShairing/natpmp que é a usada paira o compairtilhamento de Internet.

O file mitm.pf.conf contém as regras:

 rdr on bridge0 proto tcp from any to any port 80 -> 127.0.0.1 port 8080 rdr on bridge0 proto tcp from any to any port 443 -> 127.0.0.1 port 8080` 

Coloque-o usando a âncora de compairtilhamento da Internet:

 sudo pfctl -a com.apple/100.InternetShairing/natpmp -f mitm.pf.conf 

Em uma situação semelhante, usei o firewall paira redirect o tráfego de um NIC paira o proxy. Você poderia usair algo assim:

 $ sudo ipfw add fwd 127.0.0.1,8080 tcp from not me to any 80 in via en1 $ sudo ipfw add fwd 127.0.0.1,8080 tcp from not me to any 443 in via en1 

Se funcionou bem paira mim.

Você também pode usair o programa gratuito WaterRoof como GUI paira configurair o firewall. Não adiciona nada ao command ipsw, ele apenas lhe dá access mais fácil a todas as opções.

Esta página me ajudou muito na configuration da minha configuration:

http://lucumr.pocoo.org/2013/1/6/osx-wifi-proxy/