Przekieruj ruch za pomocą PF wraz z Udostępnianiem Internetu

8

Krótka wersja:

Jak przekierować cały ruch z portu en2 80/443 na 127.0.0.1:8080, gdy włączyłem Udostępnianie Internetu w OS X Mountain Lion (10.8)?

Niektóre tło:

Robię pracę magisterską, w której ocenię bezpieczeństwo komunikacji dla różnych aplikacji na smartfony. Wybrałem używanie mojego nowego MacBooka Air jako routera.

Podłączyłem Air do Internetu za pomocą USB Ethernet i skonfigurowałem Udostępnianie Internetu do mojego Wi-Fi. To działa dobrze. Mogę podłączyć inne urządzenia do mojego Air przez Wi-Fi i uzyskać dostęp do Internetu. Świetny!

Teraz chcę przechwycić ten ruch i zmodyfikować go w locie. Pomyślałem, że potrzebuję proxy, aby to zrobić, ale potrzebuję przezroczystego, w którym nie muszę wykonywać żadnej konfiguracji na urządzeniu. Odkryłem, że mitmproxy oferuje dokładnie te funkcje. Mam go więc na 127.0.0.1:8080, gotowy do przechwytywania ruchu.

Niestety utknąłem próbując przekierować mój ruch przychodzący z Wi-Fi (en2) na porcie 80 i 443 do 127.0.0.1:8080. Dokumenty mitmproxy sugerują konfigurację dla pfctl, ale to nie działa. Zauważyłem, że Apple dostarczył konfigurację do udostępniania Internetu, włączając NAT. Więc jeśli nie użyję ich konfiguracji, Udostępnianie Internetu przestanie działać. A kiedy próbuję dodać wiersze rdr do ich konfiguracji, to nie działa (próbowałem kilku miejsc w pliku /etc/pf.conf). Mój ruch po prostu przechodzi do Internetu, omijając mitmproxy.

Christoffer Reijer
źródło

Odpowiedzi:

6

Znalazłem odpowiedź

Załadowałem swoje zasady jako część kotwicy, com.apple/100.InternetSharing/natpmpktóra jest używana do udostępniania Internetu.

Plik mitm.pf.confzawiera reguły:

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`

Załaduj go za pomocą kotwicy udostępniania Internetu:

sudo pfctl -a com.apple/100.InternetSharing/natpmp -f mitm.pf.conf
Christoffer Reijer
źródło
0

W podobnej sytuacji użyłem zapory do przekierowania ruchu z jednej karty sieciowej do serwera proxy. Możesz użyć czegoś takiego:

$ 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

Jeśli działało ok dla mnie.

Możesz również użyć darmowego programu WaterRoof jako GUI do konfiguracji zapory. Nie dodaje niczego do polecenia ipsw, po prostu zapewnia łatwiejszy dostęp do wszystkich opcji.

Ta strona bardzo mi pomogła w konfiguracji mojej konfiguracji:

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

Andrea
źródło
Próbowałem tego, ale z jakiegoś powodu nie zadziałało. To całkowicie zepsuło Udostępnianie Internetu. Rozumiem też, że Apple odchodzi od ipfw od FreeBSD na rzecz pf z OpenBSD.
Christoffer Reijer
Ta odpowiedź działa tylko na starych komputerach Mac. Apple porzuciło IPFW.
Brady