Вопрос или проблема
Я работаю над очень ограниченным клиентом (основанным на Poky от Yocto Project), на котором я хочу перенаправить все http/https запросы на мой другой компьютер в той же сети. У меня есть nftables
на целевом устройстве, и я подтвердил это, успешно сбросив все пакеты, направленные на порт 80.
sysctl net.ipv4.ip_forward
показывает 1
.
Я пробовал использовать следующий сценарий/список команд nft:
nft flush ruleset
nft add table ip nat
nft add chain ip nat prerouting { type nat hook prerouting priority 0 \; }
nft add chain ip nat postrouting { type nat hook postrouting priority 100 \; }
nft add rule ip nat prerouting tcp dport 80 dnat to 10.0.0.2:8080
nft add rule ip nat prerouting tcp dport 443 dnat to 10.0.0.2:8080
nft add rule ip nat postrouting masquerade
nft list ruleset
Чтобы протестировать настройку, я настроил домен test.test
на 10.0.0.2 (через /etc/hosts
) на клиенте. На моем втором компьютере я запустил Burp, слушающий на всех интерфейсах на порту 8080, и простой веб-сервер на порту 80 (python3 -m http.server 80
).
Затем я выполняю curl http://test.test
на клиенте. Я получаю список директорий с моего компьютера с Burp, но перенаправление через Burp не происходит.
Что еще я мог бы попробовать, чтобы заставить все исходящие пакеты на порт 80 или 443 проходить через мой Burp. Проблемы с сертификатом можно игнорировать для базовой настройки.
Ответ или решение
Чтобы перенаправить все исходящие HTTP и HTTPS запросы на сервер Burp (предположим, что он находится по адресу 10.0.0.2), используем nftables
. Следующий шаги и рекомендации помогут вам настроить это правильно.
Инициализация правил nftables
Вы уже создали базовую конфигурацию с правилами для перенаправления, однако необходимо учесть несколько моментов для правильной работы с HTTP и HTTPS трафиком.
-
Проверка конфигурации IP Forwarding: Вы подтвердили, что
net.ipv4.ip_forward
установлено в1
, что позволяет пересылать пакеты между интерфейсами. Это шаг важен и он выполнен верно. -
Настройка правил nftables:
Убедитесь, что вы правильно настроили все необходимые правила. Ваша текущая конфигурация для прослушивания HTTP-трафика выглядит следующим образом:nft flush ruleset nft add table ip nat nft add chain ip nat prerouting { type nat hook prerouting priority 0; } nft add chain ip nat postrouting { type nat hook postrouting priority 100; } nft add rule ip nat prerouting tcp dport 80 dnat to 10.0.0.2:8080 nft add rule ip nat prerouting tcp dport 443 dnat to 10.0.0.2:8080 nft add rule ip nat postrouting masquerade nft list ruleset
-
Проблемы с HTTPS: Ваша текущая конфигурация перенаправляет как HTTP (порт 80), так и HTTPS (порт 443) трафик, но только для TCP-портов без учета дополнительных деталей HTTPS. Трафик HTTPS зашифрован и Burp не сможет увидеть заголовки, пока не выполнится SSL-сертификация. Вам нужно будет настроить Burp для перехватаHTTPS-трафика (что может потребовать установки сертификата на клиентском устройстве).
Устранение неполадок
-
Проверка работы Burp: Убедитесь, что Burp правильно принимает входящие соединения и что на нём установлен необходимый сертификат (если надо перехватывать HTTPS).
-
Проверка правил: Используйте команду
nft list ruleset
, чтобы убедиться, что ваши правила успешно применены и отражают ожидаемую структуру. -
Тестирование с curl: При тестировании с помощью curl убедитесь, что вы добавили флаг
-k
, если сервер Burp использует самоподписанный сертификат.curl -k http://test.test
Альтернативные Подходы
Если вышеописанные шаги не помогают, можно рассмотреть следующие дополнительные меры:
-
Создание специального правила для HTTPS: Убедитесь, что вы не блокируете трафик, исходя из правил.
-
Использование SOCKS5 прокси: Если возможно, настройте Burp для работы как SOCKS5 прокси, чтобы перенаправить весь трафик через него, предоставив вам больше гибкости.
-
Контроль сетевых интерфейсов: Если в системе несколько сетевых интерфейсов, например, виртуальные и физические, убедитесь, что правила применяются к нужному интерфейсу.
-
Логирование пакетов: При помощи
tcpdump
или аналогичного инструмента проверьте, действительно ли пакеты достигают сервера Burp.
Заключение
Настройка перенаправления запросов в nftables
для интеграции с Burp может быть сложной задачей из-за различных аспектов работы с сетями и протоколами, особенно в случае с HTTPS. Проделав перечисленные шаги, вы сможете обеспечить успешный перехват трафика. Если возникнут дополнительные сложности или специфические ошибки, будет полезно проверить логи как Burp, так и системные логи для более детальной информации.