Тема 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-серверов «Яндекса»:


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

Сам скрипт доступен здесь, но, как я и говорил, не составит труда написать свой аналог.

В общем, попробуй данный метод в бою — я уверен, он тебе понравится. Удачи!

Конкурс продолжается

Мы решили продлить конкурс и превратить его в постоянную акцию. Прислав нам описание хака, полезный совет или описание клевой неизвестной проги, ты по-прежнему можешь получить подписку на месяц, три месяца или, если постараешься, на год. Следуй рекомендациям и присылай свой текст!

3 комментария

  1. himeata

    19.09.2017 at 17:28

    Огонь! Очень круто)

  2. Il

    20.09.2017 at 00:07

    Отличная методика, спасибо автору!

  3. john_

    20.09.2017 at 09:15

    Интересная рубрика, больше таких.

Оставить мнение

Check Also

Страдания с ReactOS. Почему в заменителе Windows работают трояны, но не работает Word

Сегодня в нашей кунсткамере демонстрируется необычайный организм — двадцатилетний зародыш …