Что делает DNS и почему это важно для пентестера
DNS (Domain Name System) — распределённая база данных, которая преобразует доменные имена в IP-адреса и обратно. Для пентестера DNS — это одновременно источник разведданных и потенциальная поверхность атаки. Понимание того, как устроен резолвинг, какие записи существуют и как их читать, позволяет:
- Определять инфраструктуру цели по публичным записям.
- Обнаруживать поддомены, почтовые серверы, внутренние хосты.
- Диагностировать проблемы с резолвингом в собственной лаборатории.
- Понимать, какие данные может получить злоумышленник из открытых DNS-записей.
Иерархия доменного пространства
DNS организован как дерево. Корень дерева обозначается точкой (
.). Ниже идут домены верхнего уровня (TLD): .com, .org, .ru, .net и другие. Под ними — домены второго уровня, затем поддомены.Пример структуры:
text
.
├── com.
│ ├── example.com.
│ │ ├── www.example.com.
│ │ └── mail.example.com.
│ └── another.com.
└── org.
└── test.org.
Каждый уровень делегируется отдельному набору серверов имён. Это означает, что за зону
example.com отвечают конкретные NS-серверы, а за зону com. — другие. Делегирование — ключевой механизм масштабируемости DNS.Основные типы ресурсных записей
Ресурсная запись (Resource Record, RR) — единица данных в DNS. Каждая запись привязана к имени, имеет тип, класс, TTL и данные (RDATA).
| Тип | Назначение | Пример RDATA |
|---|---|---|
| A | IPv4-адрес хоста | 93.184.216.34 |
| AAAA | IPv6-адрес хоста | 2606:2800:220:1:248:1893:25c8:1946 |
| CNAME | Каноническое имя (алиас) | www.example.com → example.com |
| MX | Почтовый обменник с приоритетом | 10 mail.example.com |
| NS | Сервер имён для зоны | ns1.example.com |
| PTR | Обратная запись (IP → имя) | 34.216.184.93.in-addr.arpa → example.com |
| SOA | Начало зоны: серийный номер, таймеры | Содержит primary NS, email администратора, refresh/retry/expire |
| TXT | Произвольный текст | SPF, DKIM, DMARC, верификация |
Запись SOA
SOA (Start of Authority) присутствует в каждой зоне ровно одна. Она содержит:
- Primary name server зоны.
- Email администратора (в формате
admin.example.com, где первая точка заменяет@).
- Serial number — инкрементируется при каждом изменении зоны.
- Refresh, Retry, Expire, Minimum TTL — таймеры для вторичных серверов и кэширования.
Для пентестера SOA полезна тем, что serial number может указывать на частоту изменений в инфраструктуре.
Запись TXT и её подтипы
TXT-записи изначально предназначались для произвольного текста, но на практике стали контейнером для структурированных данных:
- SPF (
v=spf1 ...) — список серверов, которым разрешено отправлять почту от имени домена.
- DKIM — публичный ключ для проверки подписи писем.
- DMARC — политика обработки писем, не прошедших SPF/DKIM.
- Верификационные строки — подтверждения владения доменом для облачных сервисов.
Анализ TXT-записей помогает понять, какие почтовые и облачные сервисы использует организация.
Механика резолвинга
Рекурсивный запрос
Клиент (stub resolver) отправляет запрос локальному рекурсивному серверу (например, DNS-серверу провайдера или
systemd-resolved). Рекурсивный сервер выполняет всю цепочку запросов сам и возвращает клиенту готовый ответ.Цепочка для
www.example.com:- Запрос к корневому серверу: «Кто отвечает за
.com?»
- Запрос к TLD-серверу
.com: «Кто отвечает заexample.com?»
- Запрос к авторитативному серверу
example.com: «Какой A-адрес уwww.example.com?»
- Ответ возвращается клиенту.
Итеративный запрос
При итеративном подходе сервер не выполняет запрос за клиента, а возвращает referral — ссылку на следующий сервер. Клиент сам обращается к указанному серверу. Этот режим используется между DNS-серверами и предпочтителен для датаграммного доступа (UDP).
Кэширование и TTL
Каждая ресурсная запись содержит поле TTL (Time to Live) в секундах. Рекурсивный сервер кэширует ответ на время TTL. Это означает:
- Повторный запрос в течение TTL вернёт кэшированные данные без обращения к авторитативному серверу.
- Изменения в DNS не видны мгновенно — нужно дождаться истечения TTL.
- Для пентестера это важно: если запись изменилась, но TTL ещё не истёк, вы можете видеть устаревшие данные.
Транспорт: UDP и TCP
DNS использует UDP порт 53 для стандартных запросов. Если ответ превышает 512 байт (или используется EDNS0 — расширение, увеличивающее размер), сервер устанавливает флаг TC (Truncated), и клиент повторяет запрос по TCP порт 53.
Zone transfer (AXFR/IXFR) всегда выполняется по TCP.
Для пентестера это означает:
- Стандартные запросы — UDP/53.
- Большие ответы и zone transfer — TCP/53.
- При диагностике проверяйте оба протокола.
Безопасная диагностика в учебной сети
Все команды ниже безопасны и предназначены для работы с собственной лабораторией или публичными доменами в образовательных целях.
dig — основной инструмент
dig (Domain Information Groper) — утилита для DNS-запросов с детальным выводом.bash
A-запись домена
dig example.com A
MX-записи
dig example.com MX
TXT-записи (SPF, DKIM, DMARC)
dig example.com TXT
NS-записи (серверы имён зоны)
dig example.com NS
SOA-запись
dig example.com SOA
Запрос к конкретному серверу имён
dig @ns1.example.com example.com A
Обратная запись (PTR)
dig -x 93.184.216.34
Краткий вывод (только ответ)
dig +short example.com A
Трассировка полного пути резолвинга
dig +trace example.com A
Флаг
+trace показывает всю цепочку: от корневых серверов до авторитативного. Это полезно для понимания, на каком этапе возникает проблема.nslookup — простая альтернатива
bash
A-запись
nslookup example.com
Запрос к конкретному серверу
nslookup example.com 8.8.8.8
MX-запись
nslookup -type=MX example.com
nslookup проще, но даёт меньше деталей. Для серьёзной диагностики предпочтительнее dig.host — минималистичный вывод
bash
host example.com
host -t MX example.com
host -t TXT example.com
Проверка zone transfer (AXFR)
Zone transfer — механизм синхронизации зоны между primary и secondary серверами. Если сервер разрешает AXFR без ограничений, любой может получить полный список записей зоны.
bash
Попытка zone transfer (только для собственных систем или с разрешения)
dig @ns1.example.com example.com AXFR
Если AXFR разрешён, вы получите все записи зоны: поддомены, внутренние хосты, IP-адреса. Это классическая находка при разведке. В современных конфигурациях AXFR обычно ограничен списком IP secondary-серверов.
Важно: попытка AXFR на чужих системах без разрешения может расцениваться как несанкционированный доступ. Выполняйте это только в собственной лаборатории или в рамках согласованного scope.
Что пентестер извлекает из DNS
Перечисление поддоменов
DNS-записи — один из источников информации о поддоменах. Методы:
- Пассивный сбор: базы данных Certificate Transparency (crt.sh), поисковые системы, архивы DNS.
- Активный перебор: запросы к DNS-серверу с перебором возможных имён (wordlist-based). Генерирует трафик и может быть обнаружен.
- Zone transfer: если AXFR открыт, даёт полный список.
Анализ инфраструктуры по записям
| Что смотрим | Что можно узнать |
|---|---|
| NS-записи | Хостинг DNS, облачный провайдер |
| MX-записи | Почтовый сервис (Google Workspace, Microsoft 365, собственный) |
| TXT SPF/DKIM | Какие сервисы отправляют почту от имени домена |
| A/AAAA записи поддоменов | Внутренние сервисы, staging-окружения, API |
| SOA serial | Частота изменений зоны |
Обратные записи (PTR)
Обратная зона
in-addr.arpa позволяет по IP-адресу получить имя хоста. Для пентестера это способ:- Определить hostname сервера по IP.
- Найти дополнительные домены, привязанные к тому же IP.
bash
dig -x 93.184.216.34
Типичные ошибки при диагностике DNS
Игнорирование TTL
Если вы изменили запись в лаборатории и сразу делаете запрос, но видите старое значение — проверьте TTL. Кэш рекурсивного сервера мог не обновиться.
Решение: запросите авторитативный сервер напрямую (
dig @ns1.example.com ...) или дождитесь истечения TTL.Путаница между рекурсивным и авторитативным ответом
В выводе
dig есть секция AUTHORITY SECTION и флаг aa (authoritative answer). Если флаг aa отсутствует, ответ пришёл из кэша рекурсивного сервера, а не от авторитативного. Это может давать устаревшие данные.Проверка только UDP
Некоторые DNS-серверы отвечают по UDP, но не по TCP (или наоборот). При диагностике проверяйте оба:
bash
dig +tcp example.com A
Неправильный формат обратной записи
Обратная запись для
192.168.1.10 хранится как 10.1.168.192.in-addr.arpa. Частая ошибка — писать IP в прямом порядке.Ограничения DNS как источника разведданных
- Не все записи публичны. Внутренние зоны (split-horizon DNS) могут отдавать разные ответы внутренним и внешним клиентам.
- Кэш искажает картину. Рекурсивные серверы кэшируют данные, и вы можете видеть устаревшую информацию.
- DNS не гарантирует актуальность. Запись может существовать, но сервис за ней уже не работает.
- Rate limiting. Некоторые DNS-провайдеры ограничивают частоту запросов, что замедляет активный перебор.
Практический чек-лист для учебной лаборатории
- Определите NS-серверы целевого домена:
dig example.com NS.
- Запросите SOA:
dig example.com SOA— обратите внимание на serial и TTL.
- Соберите A, AAAA, MX, TXT записи.
- Проверьте обратные записи для найденных IP:
dig -x <IP>.
- Попробуйте AXFR на каждом NS-сервере (только с разрешения).
- Сравните ответы от разных NS-серверов — они должны быть консистентны.
- Используйте
+traceдля проверки полного пути резолвинга.
- Зафиксируйте TTL записей — это поможет понять, как быстро изменения станут видны.
