IT-ИМПУЛЬС
Контакты Меню

Конкурс хаков: разведка DNS средствами chaosnet txt-записи hostname.bind

Тема information gathering с помощью DNS уже многократно поднималась в специализированных изданиях, блогах и статьях энтузиастов. Но сегодня я хочу обратить внимание на один из вспомогательных этапов, который может помочь собрать чуточку больше данных, а иногда и раскрыть крайне чувствительную информацию об атакуемой системе. Поздравляем участника конкурса

Этот текст был прислан на конкурс авторов, который мы запустили весной. Мы разобрались с большим количеством пришедших материалов, подвели итоги и наградили победителей. Автор этой заметки получил приз — трехмесячную подписку на «Хакер». Поздравляем!

Любой компетентный администратор DNS скажет, что сокрытие версии сервера, отдаваемой по запросу chaos txt-записи version.bind., считается как минимум хорошим тоном. При этом те же самые администраторы теряются, если напомнить им об RFC 4892 и сопутствующих записях hostname.bind. и id.server..

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


Маловероятно, что на все запросы зоны mail.ru или yandex.ru приходится всего три или два сервера DNS соответственно.

Атаковать (или использовать для сбора информации) те серверы, которые нам услужливо предоставляет атакуемая компания, как минимум глупо — для них это первая линия обороны, которая будет наиболее часто подвергаться атакам, а потому наиболее защищенная.

Было бы круто узнать, какие серверы стоят за этой линией, и, если к ним есть доступ из глобальной сети, пользоваться ими напрямую, минуя релей.

Это и можно сделать с помощью упомянутых выше записей. Запрашивая chaosnet txt-записи hostname.bind. или id.server. у релея, мы можем узнать имена серверов, которые стоят за ним. В условиях засилья распределенных инфраструктур это имя (или его вариации) очень часто резолвится в public IP, открывая дорогу дальнейшим действиям.


Такой метод получения дополнительной информации о структуре DNS легко автоматизируется. Я написал небольшой скрипт, который итеративно опрашивает релей на предмет наличия выдаваемого имени сервера, пытается отрезолвить это имя и потом выплевывает результат в JSON.

Например, вот вывод скрипта для одного из DNS-серверов «Яндекса»:


Согласись, довольно любопытная информация.


РАССЫЛКА ПОСЛЕДНИХ НОВОСТЕЙ