Ложный DNS-сервер в сети Internet

2.8.Ложный DNS-сервер в сети Internet


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

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

Алгоритм работы DNS-службы такой:

  1. Хост посылает на IP-адрес ближайшего DNS-сервера DNS-запрос, в котором указывается имя сервера, IP-адрес которого требуется найти.

  2. DNS-сервер при получении такого запроса ищет указанное имя в своей базе имён. Если оно и соответствующий ему IP-адрес найдены, то DNS-сервер отправляет на хост DNS-ответ, в котором указывает этот адрес. Если имя не найдено в своей базе имён, то DNS-сервер пересылает DNS-запрос на один из ответственных за домены верхнего уровня DNS-серверов. Эта процедура повторяется, пока имя не будет найдено или будет не найдено.

Как видно из приведённого алгоритма, в сети, использующей протокол DNS, возможно внедрение ложного объекта - ложного DNS-сервера.

Так как по умолчанию служба DNS функционирует на базе протокола UDP, не предусматривающего, в отличие от TCP, средств идентификации сообщений, это делает её менее защищённой.

Возможна такая схема работы ложного DNS-сервера:

  1. Ожидание DNS-запроса.

  2. Извлечение из полученного сообщения необходимых сведений и передача за запросивший хост ложного DNS-ответа от имени (с IP-адреса) настоящего DNS-сервера и с указанием в этом ответе IP-адреса ложного DNS-сервера.

  3. При получении пакета от хоста - изменение в IP-заголовке пакета его IP-адреса на IP-адрес ложного DNS-сервера и передача пакета на сервер. Ложный DNS-сервер ведёт работу с сервером от своего имени.

  4. При получении пакета от сервера - изменение в IP-заголовке пакета его IP-адреса на адрес ложного DNS-сервера и передача пакета на хост. Ложный DNS-сервер для хоста является настоящим сервером.

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

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

Также для затруднения данной атаки можно предложить использовать протокол TCP вместо UDP, хотя из документации не всегда известно, как это сделать, да и использование TCP всё равно не обеспечивает полную безопасность.

Назад Содержание Вперёд