Перенаправьте все исходящие http и https запросы в Burp, используя nftables.

Вопрос или проблема

Я работаю над очень ограниченным клиентом (основанным на 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 трафиком.

  1. Проверка конфигурации IP Forwarding: Вы подтвердили, что net.ipv4.ip_forward установлено в 1, что позволяет пересылать пакеты между интерфейсами. Это шаг важен и он выполнен верно.

  2. Настройка правил 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
  3. Проблемы с HTTPS: Ваша текущая конфигурация перенаправляет как HTTP (порт 80), так и HTTPS (порт 443) трафик, но только для TCP-портов без учета дополнительных деталей HTTPS. Трафик HTTPS зашифрован и Burp не сможет увидеть заголовки, пока не выполнится SSL-сертификация. Вам нужно будет настроить Burp для перехватаHTTPS-трафика (что может потребовать установки сертификата на клиентском устройстве).

Устранение неполадок

  1. Проверка работы Burp: Убедитесь, что Burp правильно принимает входящие соединения и что на нём установлен необходимый сертификат (если надо перехватывать HTTPS).

  2. Проверка правил: Используйте команду nft list ruleset, чтобы убедиться, что ваши правила успешно применены и отражают ожидаемую структуру.

  3. Тестирование с curl: При тестировании с помощью curl убедитесь, что вы добавили флаг -k, если сервер Burp использует самоподписанный сертификат.

    curl -k http://test.test

Альтернативные Подходы

Если вышеописанные шаги не помогают, можно рассмотреть следующие дополнительные меры:

  1. Создание специального правила для HTTPS: Убедитесь, что вы не блокируете трафик, исходя из правил.

  2. Использование SOCKS5 прокси: Если возможно, настройте Burp для работы как SOCKS5 прокси, чтобы перенаправить весь трафик через него, предоставив вам больше гибкости.

  3. Контроль сетевых интерфейсов: Если в системе несколько сетевых интерфейсов, например, виртуальные и физические, убедитесь, что правила применяются к нужному интерфейсу.

  4. Логирование пакетов: При помощи tcpdump или аналогичного инструмента проверьте, действительно ли пакеты достигают сервера Burp.

Заключение

Настройка перенаправления запросов в nftables для интеграции с Burp может быть сложной задачей из-за различных аспектов работы с сетями и протоколами, особенно в случае с HTTPS. Проделав перечисленные шаги, вы сможете обеспечить успешный перехват трафика. Если возникнут дополнительные сложности или специфические ошибки, будет полезно проверить логи как Burp, так и системные логи для более детальной информации.

Оцените материал
Добавить комментарий

Капча загружается...