Cyber Security Academy · Урок

Подмена DNS и отравление кэша

Подделка ответов DNS

Урок 2 из 413 шагов

«Подмена DNS и отравление кэша» — бесплатный урок Cyber Security Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cyber Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cyber Security Academy содержит 4 уроков всего.

Подделка ответов DNS

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

Обычно цель состоит в перенаправлении трафика: пользователи попадают на фишинговые страницы, страницы загрузки вредоносных программ или прокси-серверы типа «человек посередине».

Состояние гонки

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

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

Поля, которые атакующий должен угадать

Чтобы поддельный ответ UDP был принят, злоумышленник должен правильно указать:

  • IP-адрес источника (авторитетного сервера).
  • Порт назначения (исходящий порт преобразователя).
  • Имя и тип запроса.
  • 16-битный идентификатор транзакции (TXID).

Без защитных механизмов единственным настоящим секретом остаётся TXID, поэтому вероятность успеха для каждого пакета составляет примерно 1 к 65 536.

Атака Каминки

Раскрытие, сделанное Дэном Каминки в 2008 году, показало, что отравление кэша было намного проще, чем считалось. Вместо одной гонки для каждой записи злоумышленник запрашивает множество несуществующих субдоменов (aaa.bank.com, aab.bank.com...) и отправляет поток поддельных ответов, содержащих вредоносную запись NS или склеечную запись для всего домена.

Каждая попытка представляет собой новую гонку без потерь из-за кэширования промаха, поэтому злоумышленник может перебирать варианты, пока не добьётся успеха и не отравит всю зону.

for sub in $(seq 1 10000); do
  dig $sub.bank.com @victim-resolver &
done
# Attacker floods forged NS answers in parallel

Рандомизация порта источника

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

Теперь злоумышленнику приходится угадывать и TXID (16 бит), и порт источника (примерно 16 бит), что расширяет пространство поиска примерно до 2^32 вариантов. Это делает слепое отравление кэша злоумышленником вне пути передачи практически невозможным, хотя атака всё ещё возможна при слабой случайности реализации.

Атакующие на пути передачи и вне его

Атакующий вне пути передачи не видит запрос и должен вслепую угадывать TXID и порт. Атакующий на пути передачи (злоумышленная сеть Wi-Fi, взломанный маршрутизатор, ISP) может напрямую прочитать запрос и легко сформировать соответствующий ответ.

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

Злоумышленный DHCP и захват преобразователя

Злоумышленники не всегда подделывают пакеты. Злоумышленный DHCP-сервер может передать клиентам адрес вредоносного преобразователя DNS, и тогда на каждый запрос будет отвечать атакующий. Вредоносная программа может аналогичным образом изменить /etc/resolv.conf или настройки маршрутизатора.

Исторические угрозы, такие как вредоносная программа DNSChanger, годами незаметно перенаправляли DNS жертв на мошеннические серверы. Проверьте, какие преобразователи фактически использует Ваш парк устройств.

cat /etc/resolv.conf
# nameserver should match your trusted internal resolver

Проверка принадлежности зоне

Преобразователи применяют правила зоны ответственности: ответ может содержать записи только для имён в зоне, за которую отвечают. Ответ для bank.com не может тайно добавить запись для unrelated.com.

Это ограничивает внедрение по методу Каминки запрошенным доменом и не позволяет одному отравленному ответу загрязнить несвязанные зоны. Убедитесь, что Ваш преобразователь применяет строгую фильтрацию по зоне ответственности.

Обнаружение отравления

Признаки продолжающегося или успешного отравления:

  • Резкий рост числа запросов к случайным несуществующим субдоменам.
  • Дублирующиеся ответы DNS или ответы, поступающие не по порядку, для одного TXID.
  • IP-адреса, которые внезапно указывают на неожиданные автономные системы или географические регионы.
  • Несоответствие между ответами преобразователя и результатами надёжной независимой проверки.

Многоуровневая защита

Одного механизма недостаточно. Сочетайте:

  • Рандомизацию порта источника и TXID для повышения стоимости атаки вне пути передачи.
  • Проверку DNSSEC, чтобы поддельные ответы не проходили проверку подписей.
  • DoT/DoH, чтобы лишить атакующих на пути передачи возможности видеть и изменять трафик.
  • Кодирование 0x20 (случайный регистр в именах запросов) для дополнительной энтропии.
  • Мониторинг потоков NXDOMAIN и аномалий ответов.

Практическая реальность

На практике сегодня слепое отравление кэша атакующими вне пути передачи редко удаётся на обновлённых преобразователях, однако оно возвращается через побочные каналы (например, фрагментацию UDP и атаки на основе ICMP для определения портов, такие как SAD DNS). Поддерживайте преобразователи в обновлённом состоянии и отдавайте предпочтение проверяющим и шифрованным преобразователям.

Помните: наиболее серьёзная компрометация DNS часто происходит не из-за хитрой гонки при отравлении, а из-за украденной учётной записи регистратора. Защищайте обе стороны.

Быстрая проверка

Проверьте, насколько хорошо Вы освоили технику Каминского.

Итоги

Подмена DNS создаёт поддельные ответы; отравление кэша сохраняет их в резолвере. Ответ принимается только при совпадении исходного IP-адреса, порта, имени запроса и TXID. Случайный выбор исходного порта и проверки допустимости зоны повысили защиту от атакующих вне канала, но атакующие, находящиеся на пути передачи, и побочные каналы по-прежнему представляют угрозу.

Многоуровневая защита — энтропия, проверка DNSSEC, шифрованный транспорт и контроль — крайне важна. Далее мы рассмотрим, как злоумышленники используют DNS для передачи данных: туннелирование и вывод данных.

Можно начать бесплатно

Изучай Cyber Security Academy с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
76
Уроки
303

Часто задаваемые вопросы

Урок «Подмена DNS и отравление кэша» бесплатный?

Да — полный текст урока «Подмена DNS и отравление кэша» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cyber Security Academy, подпишись на CoddyKit PRO. Курс Cyber Security Academy содержит 4 уроков всего.

Чему я научусь в уроке «Подмена DNS и отравление кэша»?

Подделка ответов DNS Ты практикуешь Cyber Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cyber Security Academy?

Предыдущий опыт не требуется. Cyber Security Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Подмена DNS и отравление кэша»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cyber Security Academy?

Да. Каждый урок Cyber Security Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Как работает DNS и каковы его риски
  2. Подмена DNS и отравление кэша
  3. Туннелирование и извлечение данных через DNS
  4. DNSSEC и фильтрация DNS
← Назад к Cyber Security Academy