Как известно, для обращения к хостам в сети Internet используются 32-разрядные IP-адреса, уникально идентифицирующие каждый сетевой компьютер. Но для пользователей применение IP-адресов при обращении к хостам является не слишком удобным и далеко не самым наглядным. Поэтому для их удобства было принято решение присвоить всем компьютерам в Сети имена, что в свою очередь потребовало преобразования этих имён в IP-адреса, так как на сетевом уровне адресация пакетов идёт не по именам, а по IP-адресам.
Первоначально, когда в сети Internet было мало компьютеров, для решения проблемы преобразования имён в адреса существовал специальный файл (так называемый hosts-файл), в котором именам в соответствие ставились IP-адреса. Файл регулярно обновлялся и рассылался по Сети. По мере развития Internet, число объединённых в Сеть хостов увеличивалось, и такая схема становилась всё менее работоспособной. Поэтому ей на смену пришла новая система преобразования имён, позволяющая пользователю получить IP-адрес, соответствующий определённому имени, от ближайшего информационно-поискового сервера (DNS-сервера). Этот способ решения проблемы получил название Domain Name System (DNS - доменная система имён). Для реализации этой системы был разработан протокол DNS.
Алгоритм работы DNS-службы такой:
Как видно из приведённого алгоритма, в сети, использующей протокол DNS, возможно внедрение ложного объекта - ложного DNS-сервера.
Так как по умолчанию служба DNS функционирует на базе протокола UDP, не предусматривающего, в отличие от TCP, средств идентификации сообщений, это делает её менее защищённой.
Возможна такая схема работы ложного DNS-сервера:
Возможны два варианта реализации этой атаки. В первом случае необходимым условием является перехват DNS-запроса, что требует нахождения атакующего либо на пути основного трафика, либо в одном сегменте с DNS-сервером. Во втором случае создаётся направленный шторм ложных заранее подготовленных DNS-ответов на атакуемый хост.
В Internet при использовании существующей версии службы DNS нет приемлемого решения для защиты от ложного DNS-сервера. Можно отказаться от механизма удалённого поиска и вернуться к методу с файлом hosts, как это было до появления службы DNS, но на сегодняшний день в этот файл можно лишь внести информацию о наиболее часто посещаемых адресах.
Также для затруднения данной атаки можно предложить использовать протокол TCP вместо UDP, хотя из документации не всегда известно, как это сделать, да и использование TCP всё равно не обеспечивает полную безопасность.