Rediriger le trafic à l'aide de PF avec le partage Internet

8

La version courte:

Comment rediriger tout le trafic du port en2 80/443 vers 127.0.0.1:8080 lorsque j'ai activé le partage Internet dans OS X Mountain Lion (10.8)?

Quelques antécédents:

Je fais une thèse de maîtrise où j'évaluerai la sécurité de la communication pour diverses applications de smartphone. J'ai choisi d'utiliser mon nouveau MacBook Air comme routeur.

J'ai connecté mon Air à Internet avec USB Ethernet et configuré le partage Internet sur mon Wifi. Cela fonctionne bien. Je peux connecter d'autres appareils à mon Air via wifi et accéder à Internet. Génial!

Maintenant, je veux intercepter ce trafic et le modifier à la volée. J'ai pensé que j'avais besoin d'un proxy pour ce faire, mais j'ai besoin d'un transparent, où je n'ai pas à faire de configuration sur l'appareil. J'ai trouvé que mitmproxy offre exactement ces fonctionnalités. Je l'ai donc exécuté sur 127.0.0.1:8080, prêt à intercepter le trafic.

Malheureusement, je suis coincé à essayer de rediriger mon trafic provenant du wifi (en2) sur les ports 80 et 443 vers 127.0.0.1:8080. Les documents mitmproxy suggèrent une configuration pour pfctl mais cela ne fonctionne pas. J'ai remarqué qu'Apple a fourni une configuration pour le partage Internet, activant NAT. Donc, si je n'utilise pas leur configuration, le partage Internet cesse de fonctionner. Et quand j'essaye d'ajouter les lignes rdr à leur config cela ne prend pas effet (essayé plusieurs endroits dans le fichier /etc/pf.conf). Mon trafic passe simplement sur Internet, contournant le mitmproxy.

Christoffer Reijer
la source

Réponses:

6

J'ai trouvé la réponse.

J'ai chargé mes règles dans le cadre de l'ancre com.apple/100.InternetSharing/natpmpqui est celle utilisée pour le partage Internet.

Le fichier mitm.pf.confcontient les règles:

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`

Chargez-le à l'aide de l'ancre Partage Internet:

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

Dans une situation similaire, j'ai utilisé le pare-feu pour rediriger le trafic d'une carte réseau vers le proxy. Vous pouvez utiliser quelque chose comme ça:

$ 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

Si cela fonctionnait bien pour moi.

Vous pouvez également utiliser le programme gratuit WaterRoof comme interface graphique pour configurer le pare-feu. Il n'ajoute rien à la commande ipsw, il vous donne simplement un accès plus facile à toutes les options.

Cette page m'a beaucoup aidé dans la mise en place de ma configuration:

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

Andrea
la source
J'ai essayé, mais pour une raison quelconque, cela n'a pas fonctionné. Cela a complètement brisé le partage Internet. Aussi, je crois comprendre qu'Apple s'éloigne d'ipfw de FreeBSD au profit de pf d'OpenBSD.
Christoffer Reijer
Cette réponse ne fonctionne que pour les anciens Mac. Apple a abandonné IPFW.
Brady