Redirecione o tráfego usando PF juntamente com o compartilhamento da Internet

8

A versão curta:

Como redireciono todo o tráfego da porta en2 80/443 para 127.0.0.1:8080 quando habilitei o compartilhamento de Internet no OS X Mountain Lion (10.8)?

Alguns antecedentes:

Estou fazendo uma tese de mestrado em que avaliarei a segurança da comunicação para vários aplicativos de smartphone. Eu escolhi usar meu novo MacBook Air como roteador.

Conectei meu Air à Internet com Ethernet USB e configurei o Compartilhamento da Internet no meu Wifi. Isso funciona bem. Posso conectar outros dispositivos ao meu Air via wifi e acessar a Internet. Ótimo!

Agora, quero interceptar esse tráfego e modificá-lo rapidamente. Achei que precisava de um proxy para fazer isso, mas preciso de um transparente, onde não precise fazer nenhuma configuração no dispositivo. Eu descobri que o mitmproxy oferece exatamente esses recursos. Então, eu o tenho rodando em 127.0.0.1:8080, pronto para interceptar o tráfego.

Infelizmente, estou preso tentando redirecionar meu tráfego vindo do wifi (en2) nas portas 80 e 443 para 127.0.0.1:8080. Os documentos mitmproxy sugerem uma configuração para pfctl, mas não funciona. Notei que a Apple forneceu algumas configurações para o compartilhamento da Internet, ativando o NAT. Portanto, se eu não usar a configuração deles, o compartilhamento da Internet para de funcionar. E quando tento adicionar as linhas rdr à sua configuração, isso não entra em vigor (tentei vários lugares no arquivo /etc/pf.conf). Meu tráfego simplesmente passa para a Internet, ignorando o mitmproxy.

Christoffer Reijer
fonte

Respostas:

6

Eu encontrei a resposta.

Carreguei minhas regras como parte da âncora com.apple/100.InternetSharing/natpmpusada para o Compartilhamento da Internet.

O arquivo mitm.pf.confconté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`

Carregue-o usando a âncora de compartilhamento da Internet:

sudo pfctl -a com.apple/100.InternetSharing/natpmp -f mitm.pf.conf
Christoffer Reijer
fonte
0

Em uma situação semelhante, usei o firewall para redirecionar o tráfego de uma NIC para o proxy. Você poderia usar 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 para mim.

Você também pode usar o programa WaterRoof gratuito como uma GUI para configurar o firewall. Ele não adiciona nada ao comando ipsw, apenas fornece acesso mais fácil a todas as opções.

Esta página me ajudou muito na definição da minha configuração:

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

Andrea
fonte
Eu tentei isso, mas por algum motivo não funcionou. Ele quebrou completamente o compartilhamento da Internet. Além disso, entendo que a Apple está se afastando do ipfw do FreeBSD em favor do pf do OpenBSD.
Christoffer Reijer
Esta resposta funciona apenas para Macs antigos. A Apple caiu o IPFW.
Brady #