Перенаправить трафик с помощью PF вместе с Internet Sharing

8

Краткая версия:

Как перенаправить весь трафик с порта en2 80/443 на 127.0.0.1:8080, если я включил общий доступ к Интернету в OS X Mountain Lion (10.8)?

Немного предыстории:

Я делаю магистерскую диссертацию, где я буду оценивать безопасность связи для различных приложений для смартфонов. Я решил использовать мой новый MacBook Air в качестве маршрутизатора.

Я подключил свой Air к Интернету через USB Ethernet и настроил общий доступ к Интернету к своему Wi-Fi. Это отлично работает. Я могу подключить другие устройства к своему Air через Wi-Fi и получить доступ к Интернету. Большой!

Теперь я хочу перехватить этот трафик и изменить его на лету. Я подумал, что мне нужен прокси для этого, но мне нужен прозрачный, где мне не нужно настраивать устройство. Я обнаружил, что mitmproxy предлагает именно эти функции. Итак, он работает на 127.0.0.1:8080, готов к перехвату трафика.

К сожалению, я застрял, пытаясь перенаправить мой трафик, поступающий с Wi-Fi (en2) через порт 80 и 443 на 127.0.0.1:8080. Документы mitmproxy предлагают конфигурацию для pfctl, но она не работает. Я заметил, что Apple предоставила некоторые настройки для общего доступа в Интернет, включая NAT. Так что, если я не использую их конфигурацию, Internet Sharing перестает работать. И когда я пытаюсь добавить строки rdr в их конфигурацию, это не вступает в силу (пробовал несколько мест в файле /etc/pf.conf). Мой трафик просто проходит в Интернет, минуя митропрокси.

Кристоффер Рейер
источник

Ответы:

6

Я нашел ответ.

Я загрузил свои правила как часть якоря, com.apple/100.InternetSharing/natpmpкоторое используется для общего доступа в Интернет.

Файл mitm.pf.confсодержит правила:

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`

Загрузите его с помощью привязки Internet Sharing:

sudo pfctl -a com.apple/100.InternetSharing/natpmp -f mitm.pf.conf
Кристоффер Рейер
источник
0

В аналогичной ситуации я использовал брандмауэр для перенаправления трафика с одного сетевого адаптера на прокси. Вы можете использовать что-то вроде этого:

$ 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

Если бы работал нормально для меня.

Вы также можете использовать бесплатную программу WaterRoof в качестве графического интерфейса для настройки брандмауэра. Он ничего не добавляет к команде ipsw, он просто упрощает доступ ко всем параметрам.

Эта страница очень помогла мне в настройке моей конфигурации:

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

Andrea
источник
Я попробовал это, но по какой-то причине это не сработало. Это полностью сломало интернет-обмен. Кроме того, я понимаю, что Apple отходит от ipfw от FreeBSD в пользу pf от OpenBSD.
Кристофер Рейер
Этот ответ работает только для старых Mac. Apple бросила IPFW.
Брейди