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

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

Я работаю с очень ограниченным клиентом (основанным на Poky из проекта Yocto), на который я хочу перенаправить все 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. Проблемы с сертификатами можно игнорировать для базовой настройки.

В моем очень специфическом случае мне кажется, что я должен обратить внимание на выходную цепочку, а не на цепочку предварительной маршрутизации. Следующая настройка работает для меня:

nft flush ruleset

nft add table nat
nft add chain ip nat output { type nat hook output priority 0 \;}

nft add rule ip nat output tcp dport 80 dnat to 10.0.0.2:8080
nft add rule ip nat output tcp dport 443 dnat to 10.0.0.2:8080

nft list ruleset

Ответ или решение

Для перенаправления всех исходящих HTTP и HTTPS запросов на машину с Burp, используя nftables, в вашем случае правильней всего использовать цепочку output вместо prerouting. Это связано с тем, что при использовании prerouting нельзя корректно перехватывать соединения, инициируемые локальным приложением. Рассмотрим более подробно настройку и реализацию.

Шаги по перенаправлению HTTP/HTTPS запросов

  1. Очистка существующего набора правил: Начнем с очистки текущего набора правил nftables, чтобы исключить конфликты.

    nft flush ruleset
  2. Создание таблицы и цепочки для NAT: Создаем таблицу nat и цепочку output, которая будет перехватывать исходящие запросы.

    nft add table nat
    nft add chain ip nat output { type nat hook output priority 0; }
  3. Добавление правил для перенаправления: Добавляем правила для перенаправления всех запросов на порты 80 (HTTP) и 443 (HTTPS) к Burp, который работает на IP-адресе 10.0.0.2 и порту 8080.

    nft add rule ip nat output tcp dport 80 dnat to 10.0.0.2:8080
    nft add rule ip nat output tcp dport 443 dnat to 10.0.0.2:8080
  4. Просмотр текущего набора правил: Чтобы убедиться, что все правила добавлены корректно, вы можете вывести текущий набор правил.

    nft list ruleset

Объяснение процесса

  • Цепочка output: Использование цепочки output позволяет перехватывать и модифицировать пакеты, исходящие от вашего компьютера. Это особенно важно, если приложения инициируют соединения напрямую.

  • dnat: В данном случае правило dnat (Destination Network Address Translation) меняет адрес назначения пакетов, таким образом, все запросы на порты 80 и 443 будут перенаправлены на Burp, который слушает на порту 8080.

Тестирование конфигурации

Для тестирования настроенной конфигурации вы можете использовать команды curl или браузер. Например, выполните команду:

curl http://test.test

Это должно вернуть ответ от вашего сервера, который обрабатывается Burp.

Возможные проблемы и их решения

  • Firewall: Убедитесь, что на вашей системе не работают другие файерволы или фильтры, которые могут блокировать или изменять ваши правила.

  • SSL/TLS: Хотя в вашем случае вы игнорируете проблемы с сертификатами, учтите, что при работе с HTTPS соединениями могут возникнуть сложности. Важно установить необходимый серверный сертификат на Burp для корректной работы. Для этого вам необходимо установить в системе ваш Burp CA сертификат.

Заключение

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

Если у вас возникнут дополнительные вопросы или потребуется помощь в настройке, не стесняйтесь обращаться за поддержкой.

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

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