Я хочу протестировать мобильное приложение. Для этого я хочу перехватить весь трафик Wi-Fi и перенаправить его в Burp, который работает на виртуальной машине.
Я включил «Общий доступ в Интернет» на своем Macbook, так что теперь мой телефон подключается к ноутбуку с помощью Wi-Fi. Затем я хочу перенаправить весь трафик на прокси-сервер Burp, который находится по адресу 172.16.122.128:8080.
Переадресация на localhost работает:
rdr pass on bridge100 inet proto tcp from any to any port {80,443} -> 127.0.0.1 port 8080
Я помещаю это правило в файл и загружаю его с помощью pfctl -f pf .rules
. После того, Я указал порт 8080 с помощью nc -l -p 8080
, и когда я просматриваю страницы на моем телефоне, он действительно подключается к localhost.
Однако, когда я пытаюсь переадресовать на 172.16.122.128, это не так. не работает:
rdr pass on bridge100 inet proto tcp from any to any port {80,443} -> 172.16.122.128 port 8080
Пакеты попадают в виртуальную машину (проверено с помощью Wireshark), но соединение не устанавливается. Это может быть связано с тем, что они происходят из 192.168.2.3. Нужен ли где-нибудь NAT? Как я могу это правильно настроить?
Я нарисовал схему моей сети. (На самом деле виртуальная машина работает на моем ноутбуке, но здесь я нарисовал ее отдельно.) Нужен ли где-нибудь NAT? Как я могу это правильно настроить?
Я нарисовал схему моей сети. (На самом деле виртуальная машина работает на моем ноутбуке, но здесь я нарисовал ее отдельно.) Нужен ли где-нибудь NAT? Как я могу это правильно настроить?
Я нарисовал схему моей сети. (На самом деле виртуальная машина работает на моем ноутбуке, но здесь я нарисовал ее отдельно.)
Следующие правила PF работают:
nat on vmnet8 from bridge100:network to any -> (vmnet8)
rdr pass on bridge100 inet proto tcp from any to any -> 172.16.122.128 port 8080
Это перенаправляет все запросы на 172.16.122.128, выполняя NAT между ними.
NAT необходим для преобразования между адресами двух сетей, то есть 192.168.2.0/24 и 172.16.122.0/24. Перенаправляющая часть уже работала (как описано в моем вопросе), но пакеты были перенаправлены с неправильным адресом источника. NAT изменяет этот исходный адрес на 172.16.122.1, чтобы виртуальная машина знала, что нужно отправлять пакеты обратно на мой MacBook, а затем снова пересылает их на телефон.
Думаю, проблема в том, что вы не настроили пересылку между 2 сетями: (1) сеть виртуальных машин (172.16.122.0/24) и (2) ваша локальная сеть (192.168.2.0/24) ). Чтобы настроить переадресацию на вашем Mac, вам, вероятно, потребуется сделать следующее (извините, у меня нет Mac, поэтому я не могу попробовать):
1) Как написано на https://apple.stackexchange.com / a / 192183 :
sudo sysctl -w net.inet.ip.forwarding=1
sudo sysctl -w net.inet.ip.fw.enable=1
2) при необходимости добавьте статические маршруты к обеим сетям (я думаю, он у вас уже есть, так как вы можете подключиться с помощью nc с вашего Mac к виртуальной машине)
Наконец, еще один вариант (без настройки Mac в качестве маршрутизатора) - настроить NAT с помощью программного обеспечения виртуализации и перенаправить порт на вашу виртуальную машину. Если вы используете VMware Fusion, посмотрите здесь или здесь .
Затем вместо пересылки трафика на порт вашей виртуальной машины пересылайте его на пересылаемый порт на интерфейс vmnet8:
rdr pass on bridge100 inet proto tcp from any to any port {80,443} -> 172.16.122.1 port 8080
(порт 8080 на vmnet8 должен быть перенаправлен на порт 8080 на вашей виртуальной машине с помощью VMware Fusion)
Если виртуальная машина - это Linux, вам действительно нужно обрабатывать входящий трафик Nat и изменять его. То есть:
Команды межсетевого экрана
# Enable forward
sudo sysctl -w net.ipv4.ip_forward=1
# FLUSH ALL RULES
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# Forward
sudo iptables -A FORWARD -i eth0 -j ACCEPT
# Mangling rule. I think you can add the port right after the dest ip
sudo iptables -t nat -A POSTROUTING -s 192.168.2.3/32 -j SNAT --to 172.16.122.128