Внедрение в сеть Internet ложного DNS -сервера путем перехвата DNS -запроса

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

Во-первых, по умолчанию служба DNS функционирует на базе протокола UDP (хотя возможно и использование протокола TCP) что, естественно, делает ее менее защищенной, так как протокол UDP в отличие от TCP вообще не предусматривает средств идентификации сообщений. Для того, чтобы перейти от UDP к TCP, администратору DNS -сервера придется очень серьезно изучить документацию (в стандартной документации на домен named в ОС Linux нет никакого упоминания о возможном выборе протокола (UDP или TCP), на котором будет работать DNS -сервер). Кроме того, этот переход несколько замедлит систему, так как при использовании TCP требуется создание виртуального соединения, и, кроме того, конечная сетевая ОС вначале посылает DNS -запрос с использованием протокола UDP. И только в том случае, если ей придет специальный ответ от DNS -сервера, сетевая ОС пошлет DNS -запрос с использованием TCP.

Во-вторых, следующая тонкость, на которую требуется обратить внимание, состоит в том, что значение поля "порт отправителя" в UDP-пакете вначале принимает значение ? 1023 и увеличивается с каждым переданным DNS -запросом.

В-третьих, значение идентификатора (ID) DNS -запроса ведет себя следующим образом. В случае передачи DNS -запроса с хоста это значение зависит от конкретного сетевого приложения, вырабатывающего DNS -запрос. Эксперименты показали, что в случае передачи запроса из оболочки командного интерпретатора (SHELL) операционных систем Linux и Windows '95 (например, ftp nic.funet.fi) это значение всегда равняется единице. В том случае, если DNS -запрос передается из Netscape Navigator, то с каждым новым запросом сам броузер увеличивает это значение на единицу. В том случае, если запрос передается непосредственно DNS -сервером, то сервер увеличивает это значение идентификатора на единицу с каждым вновь передаваемым запросом. Все эти тонкости имеют значение в случае атаки без перехвата DNS -запроса.

Для реализации атаки путем перехвата DNS -запроса атакующему необходимо перехватить DNS -запрос, извлечь из него номер UDP-порта отправителя запроса, двухбайтовое значение ID идентификатора DNS -запроса и искомое имя и затем послать ложный DNS -ответ на извлеченный из DNS -запроса UDP-порт, в котором указать в качестве искомого IP-адреса настоящий IP-адрес ложного DNS -сервера. Это позволит в дальнейшем полностью перехватить трафик между атакуемым хостом и сервером и активно воздействовать на него по схеме "Ложный объект РВС".

Рассмотрим обобщенную схему работы ложного DNS -сервера (рис. 4.4):

· ожидание DNS -запроса;

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

· в случае получения пакета от хоста, изменение в IP-заголовке пакета его IP-адреса на IP-адрес ложного DNS-сервера и передача пакета на сервер (то есть ложный DNS -сервер ведет работу с сервером от своего имени);

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