Перейти к содержанию

Отравление кэша DNS

Материал из Википедии — свободной энциклопедии
(перенаправлено с «DNS cache poisoning»)

Отравление кэша DNS (англ. DNS cache poisoning) — повреждение целостности данных в системе DNS путём заполнения кэша DNS-сервера данными, не исходящими от авторитетного DNS-источника. Также известно как DNS-спуфинг. Подобная компрометация данных может быть результатом хакерской атаки на сервер имён или неожиданным результатом ошибки в конфигурировании DNS-кэша. Данный тип атаки был впервые изучен и описан в 2008 году экспертом по информационной безопасности Дэном Камински.

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


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

DNS-сервер призван транслировать доменное имя (например, example.com) в IP-адрес, используемый хостами для соединения с ресурсами Интернета. Если DNS-сервер отравлен, он может возвращать некорректный IP-адрес, направляя таким образом трафик на другой компьютер[1]

Обзор системы доменных имен

[править | править код]

DNS-серверы сопоставляют удобно читаемые доменные имена (например, example.com) с IP-адресом, используемым для маршрутизации сообщений между узлами. Обычно, если сервер не знает данного IP-адреса, он выполняет запрос к другому серверу, и процесс продолжается рекурсивно. Для увеличения производительности сервер, как правило, сохраняет (кэширует) значения IP-адреса и доменного имени на определённый промежуток времени. Это означает, что если он получает ещё один запрос на тот же перевод, он сможет ответить без необходимости спрашивать другие серверы, до истечения срока действия кэша.

Атаки на кэш

[править | править код]

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

Чтобы выполнить отравление кэша, злоумышленник эксплуатирует недостатки программного обеспечения сервера DNS. Если сервер не проверяет ответы DNS на корректность, чтобы убедиться в их авторитетном источнике (например, при помощи DNSSEC), он будет кэшировать некорректные ответы локально и использовать их для ответов на запросы других пользователей, пославших такие же запросы.

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

Например запись для сервера ns.target.example может быть отравлена и перенаправлять все запросы на IP-адрес злоумышленника w.x.y.z. Эти атаки предполагают, что сервер имён для target.example является ns.target.example.

Чтобы выполнить атаки, злоумышленник должен заставить целевой DNS-сервер сделать запрос на домен, контролируемый одним из серверов имён злоумышленников.

Подмена IP-адреса DNS-сервера домена жертвы

[править | править код]

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

Запрос от DNS-сервера жертвы: какова A-запись для subdomain.attacker.example?

subdomain.attacker.example. IN A

Ответ злоумышленника:

Answer:
(no response)
Authority section:
attacker.example. 3600 IN NS ns.target.example.
Additional section:
ns.target.example. IN A w.x.y.z

Сервер-жертва сохранит A-запись (IP-адрес) ns.target.example, указанный в дополнительной секции, в кэше, что позволит атакующему отвечать на последующие запросы для всего домена target.example.

Подмена NS-записи для другого домена жертвы

[править | править код]

Второй вариант атаки заключается в перенаправлении DNS-сервера другого домена, не относящегося к первоначальному запросу, на IP-адрес, указанный атакующим.

Запрос DNS-сервера: какова A-запись для subdomain.attacker.example?

subdomain.attacker.example. IN A

Ответ злоумышленника:

Answer:
(no response)
Authority section:
target.example. 3600 IN NS ns.attacker.example.
Additional section:
ns.attacker.example. IN A w.x.y.z

Сервер-жертва сохранит не относящуюся к запросу информацию о NS-записи для target.example в кэше, что позволит атакующему отвечать на последующие запросы для всего домена target.example.

Предотвращение атак и противодействие

[править | править код]

Многие атаки на кэш могут быть предотвращены на стороне DNS-серверов с помощью уменьшения степени доверия к информации, приходящей от других DNS-серверов, или даже игнорирования любых DNS-записей, прямо не относящихся к запросам. Например, последние версии BIND (версии 9, 10) выполняют такие проверки.

Существенно снизить вероятность успешной атаки на кэш может использование случайных UDP-портов для выполнения DNS-запросов.

Несмотря на это, маршрутизаторы, сетевые экраны, прокси-серверы и прочие устройства-шлюзы, выполняющие трансляцию адресов (NAT), или, более конкретно, трансляцию портов (PAT), часто подменяют порт, используемый для выполнения запросов, для отслеживания соединения. При этом устройства, выполняющие PAT, обычно теряют случайность при выборе порта, созданную DNS-сервером.

Протокол DNSSEC использует электронную цифровую подпись с построением цепочки доверия для определения целостности данных. Применение DNSSEC может свести результативность атак на кэш к нулю. В 2011 году внедрение DNSSEC идет уже быстрыми темпами (большинство доменных зон gTLD: .com, .net, .org — уже подписаны DNSSEC). Начиная с июля 2010 года корневые серверы DNS содержат корневую зону DNS, подписанную при помощи стандартов DNSSEC.

Атакам на кэш также можно противопоставить транспортный уровень либо уровень приложений модели OSI, так как и на этих уровнях могут быть использованы цифровые подписи. К примеру, в безопасной версии HTTP — HTTPS пользователь может проверить, имеет ли сервер, с которым он соединился, сертификат ЭЦП и кому этот сертификат принадлежит. Похожий уровень безопасности имеет SSH, когда программа-клиент проверяет ЭЦП удалённого сервера при установке соединения. Соединение с помощью IPsec не установится, если клиентом и сервером не будут предъявлены заранее известные ключи ЭЦП. Приложения, которые загружают свои обновления автоматически, могут иметь встроенную копию сертификата ЭЦП и проверять подлинность обновлений с помощью сравнения ЭЦП сервера обновлений со встроенным сертификатом.

Примечания

[править | править код]
  1. ↑ Son, Sooel. The Hitchhiker's Guide to DNS Cache Poisoning (PDF). Cornell University. Архивировано (PDF) 14 августа 2017. Дата обращения: 3 апреля 2017.