Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
PolarDNS — PolarDNS — это специализированный авторитативный DNS-сервер, подходящий для тестирования на проникновение и исследования уязвимостей. | Kitploit
Инструменты/GitHubGitHub/oryxlabs/polardns
Сканеры уязвимостейАнализ уязвимостейФаззингСетевая безопасностьТестирование на ПроникновениеАнализ DNS
GitHuboryxlabs/polardns

PolarDNS

PolarDNS — это специализированный авторитативный DNS-сервер, подходящий для тестирования на проникновение и исследования уязвимостей.

Репозиторий
249191 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт
Логотип PolarDNS PolarDNS — это специализированный авторитативный DNS-сервер, написанный на Python 3.x, изначально разработанный как инструмент для тестирования безопасности DNS-резолверов со стороны сервера.

Он позволяет оператору создавать собственные DNS-ответы, что делает его пригодным для углублённого тестирования протокола DNS.

_

PolarDNS можно использовать для тестирования:

  • DNS-резолверов (со стороны сервера)
  • DNS-клиентов
  • DNS-библиотек
  • DNS-парсеров и диссекторов
  • любого ПО, обрабатывающего DNS-информацию

Он поддерживает как UDP, так и TCP протоколы, и предоставляет оператору полный контроль над уровнем протокола DNS.

Сервер PolarDNS может создавать множество нестандартных и несоответствующих спецификациям DNS-ответов, ответов, нарушающих RFC, включая крайне аномальные и искажённые DNS-ответы.

Это может быть полезно для:

  • Функционального тестирования
  • Проверки соответствия RFC
  • Исследования уязвимостей

Установка

Доступны три способа установки PolarDNS.

PolarDNS требует Python 3.11 или новее и не имеет дополнительных зависимостей.

Способ 1: Установка через Pip

Это самый простой способ установить и запустить PolarDNS:

root@kitploit:~
pip install polardns
polardns

Способ 2: Традиционная установка

Вы также можете склонировать репозиторий и запустить PolarDNS напрямую:

root@kitploit:~
git clone https://github.com/oryxlabs/PolarDNS.git
cd PolarDNS
python polardns.py

Этот способ рекомендуется, если вы планируете отлаживать или изменять код, либо добавлять новые функции.

Способ 3: Запуск PolarDNS в Docker

Вы также можете запустить PolarDNS в Docker-контейнере:

root@kitploit:~
docker run -p 53:53/tcp -p 53:53/udp oryxlabs/polardns

Запуск PolarDNS

Сервер PolarDNS настраивается через файл конфигурации polardns/polardns.toml.

  • Для целей тестирования конфигурации по умолчанию должно быть достаточно для локального запуска.
  • Однако вы, возможно, захотите изменить конфигурацию, добавив свой домен и IP-адреса серверов имён.

При запуске PolarDNS вы должны увидеть вывод, похожий на следующий:

root@kitploit:~
python polardns.py
1741599804.9039893 | PolarDNS v1.6.1 server starting up
1741599804.9039893 | Using '/path/to/your/polardns/polardns.toml' config file
1741599804.9039893 | Starting listener at tcp://0.0.0.0:53
1741599804.9039893 | Starting listener at udp://0.0.0.0:53

Это означает, что сервер запущен и работает.

Работа с PolarDNS

По умолчанию сервер начинает прослушивание всех интерфейсов на UDP и TCP порту 53 (0.0.0.0:53), готовый отвечать на DNS-запросы.

Вы можете проверить его локально, задав следующий тестовый запрос, который всегда должен разрешаться во что-то.

Запрос в режиме UDP:

root@kitploit:~
dig always.yourdomain.com @127.0.0.1

Запрос в режиме TCP:

root@kitploit:~
dig always.yourdomain.com @127.0.0.1 +tcp

Вы должны получить запись A с IP-адресом 2.3.4.5, как на этом скриншоте:

Пример использования PolarDNS

Это означает, что сервер работает корректно.

Основная концепция

Запрашивая у сервера PolarDNS разрешение чего-либо, вы фактически даёте ему инструкции, как он должен вам ответить. Это означает, что вы (клиент) диктуете серверу PolarDNS, какой именно ответ он должен для вас сгенерировать.

Например, рассмотрим следующий запрос:

root@kitploit:~
dig always.ttl2000000000.slp1500.yourdomain.com @127.0.0.1

Вы снова должны получить запись A с IP-адресом 2.3.4.5, но на этот раз со значением TTL 2 000 000 000 (63,4 года) и после задержки в 1,5 секунды:

Пользовательский TTL и задержка PolarDNS

В приведённом выше примере мы использовали базовую функцию always (которая всегда разрешается во что-то) и объединили её с модификатором ttl для настройки значения TTL и модификатором slp для ожидания перед отправкой ответа.

Функциональные возможности PolarDNS

PolarDNS имеет следующие основные функциональные возможности:

  1. Функции (Features): Они могут создавать различные DNS-ответы. Большинство функций имеют параметры, что позволяет настраивать их поведение для создания разнообразных DNS-ответов.
  2. Модификаторы ответов (Response modifiers): Они могут дополнительно изменять DNS-ответы, выходящие с сервера PolarDNS. Модификаторы не зависят от выбранной функции и могут свободно комбинироваться.

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

Смотрите прилагаемый каталог всех реализованных функций и модификаторов ответов.

Это даёт PolarDNS возможность создавать крайне необычные, аномальные и даже искажённые DNS-ответы, позволяя оператору увидеть, как принимающая сторона обрабатывает такие ситуации и насколько она технически устойчива и зрела.

Некоторые примеры DNS-ответов, которые может генерировать PolarDNS, включают:

  • Цепочки псевдонимов (CNAME) и циклы псевдонимов
  • Искажения заголовка DNS (ID, флаги, количество секций)
  • Вставку незапрошенных записей (отравление кеша)
  • Вставку произвольных байтов произвольной длины
  • Неполные / пустые / NULL-байтовые ответы
  • Проблемы сжатия (циклы, недопустимые указатели)
  • Медленно передаваемые фрагментированные ответы
  • Недопустимые метки или длины доменных имён
  • Произвольное количество TXT-записей произвольного размера
  • Манипуляции длиной пакета (TCP)
  • И т.д.

Это может привести к обнаружению различных уязвимостей, таких как:

  • Атаки «ленивых доменов» (Sloth domain)
  • Атаки «доменов-фантомов» (Phantom domain)
  • Атаки блокировки доменов
  • Отравление кеша
  • Истощение ресурсов
  • Сбои, DoS

Смотрите презентации BlackHat MEA 2023 (включая слайды BONUS) для получения более подробной информации, дополнительных примеров и сценариев использования.

Тестирование рекурсивных DNS-резолверов

Вот общий обзор того, что вам нужно для начала тестирования рекурсивных DNS-серверов.

  1. Купите домен для тестов, например, example123.com, у вашего любимого регистратора доменов.
  2. Получите два VPS-экземпляра Linux с публичными и статическими IP-адресами — это будут ваши серверы имён.
  3. Разверните сервер PolarDNS на обоих экземплярах.
  4. Отредактируйте файл конфигурации polardns/polardns.toml на каждом экземпляре, изменив имя вашего домена и IP-адреса серверов имён соответствующим образом — одинаковая конфигурация на обоих.
  5. В панели регистратора доменов выберите управление доменом с помощью собственных серверов имён. Вам нужно будет указать первичный и вторичный NS — укажите IP-адреса ваших экземпляров.

Теперь ваша инфраструктура готова для тестирования любого рекурсивного DNS-резолвера по вашему выбору.

Разбивка процесса тестирования

Чтобы начать тестирование целевого рекурсивного DNS-резолвера, вы должны направлять запросы целевому DNS-резолверу, например:

root@kitploit:~
dig always.example123.com @<TARGET-RESOLVER-IP>

Например, для тестирования публичного DNS CloudFlare:

root@kitploit:~
dig always.example123.com @1.1.1.1

Во время разрешения целевой DNS-резолвер свяжется с вашими авторитативными серверами имён PolarDNS (управляющими вашим тестовым доменом example123.com), чтобы разрешить запрос.

Один из ваших серверов PolarDNS ответит целевому DNS-резолверу. Резолвер получит, разберёт и обработает ответ от PolarDNS. После этого он вернёт окончательный ответ вам (клиенту).

Вот визуальное представление процесса тестирования: Использование PolarDNS для тестирования DNS-резолвера

Давая DNS-резолверу инструкции разрешать различные поддомены вашего домена example123.com, вы можете эффективно тестировать поведение DNS-резолвера и наблюдать, как он обрабатывает различные неожиданные ситуации (ответы).

Например, как он справляется с ситуацией, когда получает искажённый DNS-ответ, ответ с вставленной записью или запись, содержащую недопустимые символы, и какой ответ он в конечном итоге отправляет вам, клиенту?

Автоматизированное сквозное (E2E) тестирование с GitHub Actions

PolarDNS может быть интегрирован с различными DNS-резолверами для запуска комплексного набора сквозных (E2E) тестов DNS-серверов.

Эта интеграция осуществляется с помощью GitHub Actions, при этом эталонные шаблоны (рабочие процессы) в настоящее время доступны для следующих шести DNS-резолверов:

  • BIND9 (e2e-bind9.yaml)
  • CoreDNS (e2e-coredns.yaml)
  • Dnsmasq (e2e-dnsmasq.yaml)
  • Knot Resolver (e2e-knot-v5.yaml, e2e-knot-v6.yaml)
  • PowerDNS (e2e-powerdns.yaml)
  • Unbound (e2e-unbound.yaml)

Когда GitHub Action запускается (например, при коммите или вручную), рабочие процессы выполняют следующие шаги:

  1. Запускают выбранный DNS-резолвер в Docker-контейнере
  2. Запускают PolarDNS в отдельном Docker-контейнере
  3. Подключают выбранный резолвер к PolarDNS
  4. Запускают набор E2E-тестов против выбранного DNS-резолвера

Чтобы добавить свои собственные E2E-тесты, просто поместите их в каталог test-e2e/.

Ищете полнофункциональный набор E2E-тестов DNS-сервера? Свяжитесь с [email protected].

Добавление новых функций

Добавление новых функций в PolarDNS необходимо для обнаружения действительно новых проблем DNS. И с PolarDNS вы можете сделать это относительно легко.

PolarDNS позволяет быстро добавить новую функцию, опробовать свои идеи или разработать PoC без необходимости создавать собственный DNS-сервер. Всё, что вам нужно, — это умение понимать код Python и любопытство экспериментировать с протоколом DNS.

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

Ссылки

Вот несколько отличных ресурсов, которые полезны при работе с PolarDNS.

Ссылки, связанные с протоколом DNS:

  • https://en.wikipedia.org/wiki/List_of_DNS_record_types
  • https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml

DNS-серверы:

  • https://en.wikipedia.org/wiki/Comparison_of_DNS_server_software
  • https://www.lifewire.com/free-and-public-dns-servers-2626062

Благодарности

Спасибо всем, кто внёс вклад в PolarDNS! ❤️

Скачать инструмент