Die Kurzversion:
Wie leite ich den gesamten Datenverkehr von en2-Port 80/443 auf 127.0.0.1:8080 um, wenn ich die Internetfreigabe in OS X Mountain Lion (10.8) aktiviert habe?
Etwas Hintergrund:
Ich schreibe eine Masterarbeit, in der ich die Kommunikationssicherheit für verschiedene Smartphone-Apps evaluiere. Ich habe mich entschieden, mein neues MacBook Air als Router zu verwenden.
Ich habe meinen Air über USB-Ethernet mit dem Internet verbunden und die Internetfreigabe für mein WLAN eingerichtet. Das funktioniert gut. Ich kann andere Geräte per WLAN mit meinem Air verbinden und auf das Internet zugreifen. Großartig!
Jetzt möchte ich diesen Datenverkehr abfangen und spontan ändern. Ich dachte, ich brauche dafür einen Proxy, aber ich brauche einen transparenten, bei dem ich keine Konfiguration auf dem Gerät vornehmen muss. Ich habe festgestellt, dass mitmproxy genau diese Funktionen bietet. Ich habe es also auf 127.0.0.1:8080 ausgeführt und bin bereit, den Datenverkehr abzufangen.
Leider stecke ich fest und versuche, meinen vom WLAN (en2) eingehenden Datenverkehr auf Port 80 und 443 auf 127.0.0.1:8080 umzuleiten. Die mitmproxy-Dokumentation schlägt eine Konfiguration für pfctl vor, aber sie funktioniert nicht. Mir ist aufgefallen, dass Apple eine Konfiguration für die Internetfreigabe bereitgestellt hat, die NAT aktiviert. Wenn ich also ihre Konfiguration nicht verwende, funktioniert die Internetfreigabe nicht mehr. Und wenn ich versuche, die rdr-Zeilen zu ihrer Konfiguration hinzuzufügen, wird dies nicht wirksam (versuchte es an mehreren Stellen in der Datei /etc/pf.conf). Mein Datenverkehr wird einfach an das Internet weitergeleitet, wobei der mitmproxy umgangen wird.
Ich habe die Antwort gefunden.
Ich habe meine Regeln als Teil des Ankers geladen, com.apple/100.InternetSharing/natpmp
der für die Internetfreigabe verwendet wird.
Die Datei mitm.pf.conf
enthält die Regeln:
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`
Laden Sie es mit dem Internet Sharing-Anker:
sudo pfctl -a com.apple/100.InternetSharing/natpmp -f mitm.pf.conf
In einer ähnlichen Situation habe ich die Firewall verwendet, um den Datenverkehr von einer Netzwerkkarte zum Proxy umzuleiten. Du könntest so etwas verwenden:
$ 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
Wenn es für mich ok funktioniert hat.
Sie können auch das kostenlose WaterRoof- Programm als GUI verwenden, um die Firewall zu konfigurieren. Es fügt dem ipsw-Befehl nichts hinzu, es erleichtert Ihnen lediglich den Zugriff auf alle Optionen.
Diese Seite hat mir beim Einrichten meiner Konfiguration sehr geholfen:
Christoffer Reijer
Brady