
Удобный DNS-сервис, написанный на Go, помогающий в обнаружении нескольких типов слепых уязвимостей. Он отслеживает сервер пентестера на предмет внеполосных DNS-взаимодействий и отправляет уведомления о запросах через Slack.
Удобный DNS-сервис, написанный на Go, помогающий обнаруживать различные виды слепых уязвимостей. Он отслеживает внеполосные DNS-взаимодействия на сервере пентестера и отправляет уведомления с деталями полученного запроса через Slack. DNSObserver поможет вам найти такие ошибки, как слепая внедрение команд ОС, слепая SQL-инъекция, слепая XXE и многие другие!

Более подробный обзор и инструкции по настройке см. на странице:
https://www.allysonomalley.com/2020/05/22/dnsobserver/
Что понадобится:
Если у вас ещё нет готового VPS, создайте новый Linux VPS у предпочтительного провайдера. Запишите его публичный IP-адрес.
Зарегистрируйте новое доменное имя у предпочтительного регистратора — подойдёт любой, если он позволяет задавать пользовательские серверы имён и glue-записи.
Перейдите в настройки DNS вашего нового домена и найдите раздел 'glue records'. Добавьте две записи, по одной для каждого нового сервера имён, и укажите для обеих публичный IP-адрес вашего VPS.
Затем измените серверы имён по умолчанию на:
ns1.<ВАШ-ДОМЕН>
ns2.<ВАШ-ДОМЕН>
Подключитесь по SSH к вашему VPS и выполните следующие шаги:
Установите Go, если он ещё не установлен. Инструкции по установке можно найти здесь
Убедитесь, что стандартные DNS-порты открыты — 53/UDP и 53/TCP. Выполните:
sudo ufw allow 53/udp
sudo ufw allow 53/tcp
Получите DNSObserver и его зависимости:
go get github.com/allyomalley/dnsobserver/...
Есть два обязательных аргумента и два необязательных:
domain [ОБЯЗАТЕЛЬНО]
Ваше новое доменное имя.
ip [ОБЯЗАТЕЛЬНО]
Публичный IP-адрес вашего VPS.
webhook [Необязательно]
Если вы хотите получать уведомления, укажите URL вашего Slack вебхука. Вы будете уведомлены о любых запросах к вашему домену или любым его поддоменам (я исключил уведомления для запросов к другим корневым доменам и к вашим пользовательским серверам имён, чтобы избежать избыточных или случайных уведомлений). Если вебхук не указан, взаимодействия будут записываться в стандартный вывод. Инструкции по настройке вебхука можно найти здесь.
recordsFile [Необязательно]
По умолчанию DNSObserver отвечает только на запросы к вашему доменному имени или к любому из его серверов имён. Для любого другого хоста он всё равно уведомит вас о взаимодействии (если это ваш домен или поддомен), но отправит пустой ответ. Если вы хотите, чтобы DNSObserver отвечал на A-запросы для определённых хостов с IP-адресом, вы можете либо отредактировать файл config.yml, включённый в этот проект, либо создать свой собственный на основе этого шаблона:
a_records:
- hostname: ""
ip: ""
- hostname: ""
ip: ""
В настоящее время инструмент использует только A-записи — в будущем я, возможно, добавлю CNAME, AAAA и т. д. Вот пример полного пользовательского файла записей:
a_records:
- hostname: "google.com"
ip: "1.2.3.4"
- hostname: "github.com"
ip: "5.6.7.8"
Эти настройки означают, что я хочу отвечать на запросы для 'google.com' адресом '1.2.3.4', а для 'github.com' — адресом '5.6.7.8'.
Теперь мы готовы начать прослушивание! Если вы хотите иметь возможность выполнять другую работу на вашем VPS во время работы DNSObserver, сначала запустите новую tmux-сессию.
Для стандартной настройки передайте обязательные аргументы и ваш вебхук:
dnsobserver --domain example.com --ip 11.22.33.44 --webhook https://hooks.slack.com/services/XXX/XXX/XXX
Чтобы сделать то же самое, но также включить несколько пользовательских ответов на A-запросы, добавьте аргумент для вашего файла записей:
dnsobserver --domain example.com --ip 11.22.33.44 --webhook https://hooks.slack.com/services/XXX/XXX/XXX --recordsFile my_records.yml
Если всё настроено правильно, DNSObserver должен запуститься. Чтобы убедиться в его работе, откройте терминал на вашем рабочем столе и выполните запрос к вашему новому домену ('example.com' в этой демонстрации):
dig example.com
Теперь вы должны получить уведомление в Slack с деталями запроса!