Вопрос или проблема
Я читаю “Введение в компьютерную безопасность”, новый международный выпуск Pearson, 1-е издание, авторы Гудрич и Тамассия.
По теме отравления кэша DNS они упоминают, что в 2008 году была обнаружена “новая” атака, так называемое “отравление кэша DNS поддоменов”. Вот как должна развиваться эта атака:
- Злоумышленник делает множество запросов к серверу имен на несуществующие поддомены, например
aaaa.example.com
,aaab.example.com
,aaac.example.com
и т.д. - В книге упоминается, что эти поддомены не существуют, и поэтому целевой авторитетный сервер имен просто игнорирует запросы.
- Одновременно злоумышленник отправляет подделанные ответы на запросы, сделанные атакуемым сервером имен, каждый с угаданным идентификатором транзакции (который выбирается случайно и неизвестен злоумышленнику).
- Поскольку целевой авторитетный сервер имен игнорирует запросы на несуществующие домены, у злоумышленника есть возможность отправить много подделанных ответов, что делает вероятность угадать правильный идентификатор транзакции высокой.
Книга была написана в 2011 году, так что с тех пор что-то могло измениться. Когда я выполняю dig
для несуществующего поддомена, например aaaa.example.com
, я получаю ответ NXDOMAIN
:
$ dig @a.iana-servers.net. aaaa.example.com. +norecurse
; <<>> DiG 9.16.16 <<>> @a.iana-servers.net. aaaa.example.com. +norecurse
;; глобальные опции: +cmd
;; Получен ответ:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 20391
;; флаги: qr aa; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
# ... вырезано ...
Я предположу, что любой неавторитетный сервер имен поместит этот негативный результат в свой кэш (как это должно быть согласно RFC 2308, написанному в марте 1998 года).
Было ли ранее распространенной практикой для серверов имен игнорировать (= не отправлять ответ на) запросы на несуществующие поддомены? Был ли этот подход заменен на ответ NXDOMAIN
, который я вижу сегодня? Возможно ли провести атаку, как описано выше, до сих пор?
Правка
Оказалось, что Дэн Каминский придумал эту атаку.
В этом видео DEF CON он объясняет, что в то время (2008 год) несколько авторитетных серверов имен не отвечали на определенные виды DNS-запросов (“засорители запросов”), включая:
- Неизвестный QTYPE (например,
FOO
вместоA
) - Неизвестный QCLASS (например,
BAR
вместоIN
) - Несуществующие имена
Насколько мне известно, проблема немного другая, но я получил свои знания из видео на YouTube. (источник: https://m.youtube.com/watch?v=7MT1F0O3_Yw)
Проблема, похоже, заключается в том, что вы можете сделать много запросов с разными поддоменами. Почти ни один из них не будет в кэше атакуемого сервера имен, поскольку они не должны быть реальными адресами. Затем сервер имен спрашивает другой сервер имен, знает ли он что-то о этом поддомене, и отправляет с ним случайный 16-битный идентификатор запроса. В промежутке между запросом и ответом этого другого сервера имен злоумышленник может попытаться угадать идентификатор запроса. Он отправляет множество запросов с другого, вредоносного, сервера имен, угадывая другой идентификатор запроса для каждого запроса и говоря: “Я не знаю, где находится aaaa.example.com, но example.com здесь: xxx.xxx.xxx.xxx, с истечением срока 20 дней”. Если попытка для aaaa.example.com не удалась, отправляется другой запрос с aaab.example.com, и у злоумышленника есть еще несколько (~10) попыток, но я не уверен в математике того, сколько попыток необходимо, чтобы достичь высокой вероятности успеха.
Проблема все еще существует сегодня, просто делать её стало немного сложнее, отправляя идентификатор запроса и номер порта, злоумышленнику теперь нужно угадать оба этих значения. Они пытаются внедрить сертификаты для аутентификации серверов имен, но я не знаю, в какой мере это уже было сделано.
Я не знаю, была ли практикой игнорировать запросы на несуществующие домены. Я не знаю, что означает NXDOMAIN. Я просто повторяю то, что было сказано в видео, не имея дополнительных знаний. Насколько мне известно, эта атака по-прежнему возможна, просто стало немного сложнее, см. предыдущий абзац для деталей.
Ответ или решение
DNS (Domain Name System) является краеугольным камнем функционирования Интернета, обеспечивая преобразование доменных имен в IP-адреса, что позволяет пользователям без проблем взаимодействовать с веб-ресурсами. Однако, как и многие технологии, DNS подвержен различным видам атак, включая так называемое «отравление кеша DNS» (DNS cache poisoning), которое в последние годы привлекло значительное внимание. Одной из его форм является «отравление кеша поддоменов» (subdomain DNS cache poisoning), впервые описанное в 2008 году.
Важные аспекты атаки
Атака «отравления кеша поддоменов» предполагает следующее:
-
Запросы к несуществующим поддоменам: Атакующий отправляет множество запросов к авторитетному DNS-серверу для несуществующих поддоменов (например, aaaa.example.com). Важно отметить, что многие авторитетные DNS-серверы могут игнорировать такие запросы.
-
Игнорирование запросов: Как показано в приведённом вами тексте, если DNS-сервер не имеет запрашиваемого поддомена в своей базе данных, он, скорее всего, не ответит на запрос, что создаёт возможность для атаки.
-
Поддельные ответы: В то же время атакующий отправляет поддельные ответы с предполагаемыми значениями идентификатора транзакции (transaction ID) и IP-адресами. Здесь критическим моментом является угадать правильный идентификатор транзакции, чтобы его ответ был принят.
Изменение поведения DNS-серверов
Вопрос о том, зависит ли «отравление кеша поддоменов» от поведения авторитетного DNS-сервера по отношению к запросам на несуществующие домены, требует детального анализа.
-
В прошлом было распространено, что некоторые авторитетные DNS-серверы не отвечали на запросы о несуществующих поддоменах, что позволяло злоумышленникам использовать это в своих интересах, так как сервер не подвергал сомнению поддельные ответы от атакующих.
-
Современные практики: На сегодняшний день, в соответствии с RFC 2308, DNS-серверы должны возвращать ответ NXDOMAIN (Нет такого домена) для несуществующих поддоменов. Это изменение сделало атаку более сложной, так как теперь DNS-серверы кэшируют отрицательные ответы, что снижает количество запросов к истечению времени.
Возможность атаки в современном контексте
С учетом изменений в поведении авторитетных DNS-серверов, атака «отравления кеша поддоменов» по-прежнему возможна, но она усложнена. Все большее число DNS-серверов настраивается на ответ на запросы даже по несуществующим поддоменам, что делает труднее для злоумышленника осуществлять атаки.
Современные меры безопасности, такие как DNSSEC (DNS Security Extensions), позволяют аутентифицировать ответы DNS-серверов. Это в значительной степени снижает вероятность успешного выполнения атаки, так как злоумышленнику теперь нужно не только угадать идентификатор транзакции, но и предоставить валидный ответ, подписанный публичным ключом.
Заключение
В итоге, зависимость «отравления кеша поддоменов» от игнорирования запросов на несуществующие домены уменьшается с развитием стандартов безопасности и лучшего понимания уязвимостей DNS. Хотя атака все еще может быть осуществлена, текущие меры и практики значительно повышают уровень защиты и делают эту атаку менее эффективной. Безусловно, всегда есть необходимость следить за новыми уязвимостями и поддерживать систему безопасности на уровне, чтобы минимизировать риски.