Моя цель - перехватывать трафик через прокси MITM. Для этого я настроил свой ноутбук на размещение точки доступа Wi-Fi, подключил смартфон, запустил прокси-сервер и настроил смартфон на использование своего ноутбука в качестве прокси в этой сети Wi-Fi.

IP-адрес хоста - 10.42.0.1 а клиента - 10.42.0.2 . Прокси прослушивает порт 8080, любой интерфейс. Он правильно отображается в netstat и я могу netcat к нему с локального хоста. Телефон Android настроен на прокси через порт 8080 10.42.0.1 .

С телефона могу пинговать 10.42.0.1 ; в Wireshark я вижу входящие эхо-запросы и выходящие ответы.

Однако, когда телефон отправляет пакет TCP или UDP, система не отвечает. При прослушивании точки доступа с netcat по UDP и отправке данных UDP с телефона эти данные не доставляются в netcat. Я вижу пакет с данными, поступающими в Wireshark, но терминал остается пустым. При прослушивании TCP я вижу в Wireshark пакет SYN, поступающий с телефона, но он никогда не подтверждается (нет ответа SYN+ACK).

Точка доступа (10.42.0.1) явно имеет ARP, и обратный маршрут или отклики ICMP не будут выходить. Там не установлен брандмауэр хоста. Проблема сохраняется после перезагрузки.

В чем может быть проблема?

1 ответ1

0

При написании вопроса я понял, что, хотя я знал, что это не может быть брандмауэр, потому что я не установил его, и это не может быть iptables, потому что они не сохранятся после перезагрузки, я понял, что на самом деле не проверял это Правила iptables не были установлены.

# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
DROP       all  --  anywhere             anywhere             state INVALID
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     udp  --  anywhere             anywhere             udp dpt:isakmp
ACCEPT     esp  --  anywhere             anywhere
ACCEPT     ah   --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:8528

Оказывается, что-то, вероятно NetworkManager в своей бесконечной мудрости, решило добавить некоторые правила для нас, счастливые неожиданно предоставить брандмауэр.

Обходной путь - убить некоторые правила и сбросить политику по умолчанию:

# iptables -L --line-numbers
Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
2    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps
3    ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
4    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
5    DROP       all  --  anywhere             anywhere             state INVALID
# iptables -D INPUT 5
# iptables --policy INPUT ACCEPT

Я не могу найти ссылки на все это в документации NetworkManager или даже на исходный код. Я не знаю, что это за порт 8528, который, по-видимому, разрешает по умолчанию (он нигде не зарегистрирован и ни на что не ссылается), и я не могу быстро найти соответствующий код, который вызывает iptables, или найти какие-либо соответствующие настройки, чтобы остановить его от брандмауэра подключение. Возможно, NetworkManager вызывает другое программное обеспечение, которое впоследствии устанавливает это?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .