- •Общие сведения
- •Уязвимые места защиты dns
- •ЛожныйDns-сервер в сети Internet
- •4.3.2. Внедрение в сеть Internet ложного сервера путем создания направленного "шторма" ложных dns-ответов на атакуемый хост
- •4.3.3. Внедрение в сеть Internet ложного сервера путем перехвата dns-запроса или создания направленного "шторма" ложныхDns-ответов на атакуемыйDns-сервер
Уязвимые места защиты dns
Вместе с тем такая чрезвычайно эффективная организация оборачивается множеством слабостей с точки зрения защиты. Например, когда удаленная система связывается с приложением, приложение посылает запрос для определения имени DNS по ее IP-адресу. Если возвращаемое доменное имя соответствует ожидаемому, то удаленной системе разрешается доступ.
ЛожныйDns-сервер в сети Internet
Как известно, для обращения к хостам в сети Internet используются 32-разрядные IP-адреса, уникально идентифицирующие каждый сетевой компьютер в этой глобальной сети. Однако, для пользователей применение IP-адресов при обращении к хостам является не слишком удобным и далеко не самым наглядным.
В самом начале зарождения Internet для
удобства пользователей было принято
решение присвоить всем компьютерам в
сети имена. Использование имен позволяет
пользователю лучше ориентироваться в
киберпространстве сети Internet - куда
проще, понятней и наглядней для
пользователя запомнить, например, имяwww.ferrari.it, чем четырехразрядную
цепочку IP-адреса. Использование в
Internet мнемонически понятных для
пользователей имен породило проблему
преобразования имен в IP-адреса. Такое
преобразование необходимо, так как на
сетевом уровне адресация пакетов идет
не по именам, а по IP-адресам, следовательно,
для непосредственной адресации сообщений
в Internet имена не годятся. На этапе раннего
развития Internet, когда в сеть было объединено
небольшое количество компьютеров, NIC
(Network Information Center) для решения проблемы
преобразования имен в адреса создал
специальный файл (hosts file), в который
вносились имена и соответствующие им
IP-адреса всех хостов в сети. Данный файл
регулярно обновлялся и распространялся
по всей сети. Но, по мере развития
Internet, число объединенных в сеть хостов
увеличивалось, и данная схема становилась
все менее и менее работоспособной,
поэтому была создана новая система
преобразования имен, позволяющая
пользователю в случае отсутствия у него
информации о соответствии имен и
IP-адресов получить необходимые сведения
от ближайшего информационно-поискового
сервера (
DNS
-сервера).
Эта система получила название доменной
системы имен -
DNS
(Domain Name System).
Для реализации системы
DNS
был создан специальный сетевой протокол
DNS
,
для обеспечения эффективной работы
которого в сети создаются специальные
выделенные информационно-поисковые
серверы -
DNS
-серверы.
Поясним основную задачу, решаемую
службой
DNS
.
В современной сети Internet хост при обращении
к удаленному серверу обычно имеет
информацию только о его имени и не знает
его IP-адреса, который и необходим для
непосредственной адресации. Следовательно,
перед хостом возникает стандартная
проблема удаленного поиска: по имени
удаленного хоста найти его IP-адрес.
Решением этой проблемы и занимается
служба
DNS
на базе протокола
DNS
.
Рассмотрим
DNS
-алгоритм
удаленного поиска IP-адреса по имени в
сети Internet:
хост посылает на IP-адрес ближайшего
DNS
-сервера
(он устанавливается при настройке
сетевой ОС)
DNS
-запрос,
в котором указывает имя сервера, IP-адрес
которого необходимо найти;
DNS
-сервер,
получив запрос, просматривает свою
базу имен на наличие в ней указанного
в запросе имени. В случае, если имя
найдено, а, следовательно, найден и
соответствующий ему IP-адрес, то на
запросивший хост
DNS
-сервер
отправляет
DNS
-ответ,
в котором указывает искомыйIP-адрес. В
случае, если указанное в запросе имя
DNS
-сервер
не обнаружил в своей базе имен, то
DNS
-запрос
отсылается
DNS
-сервером
на один из корневых
DNS
-серверов,
адреса которых содержатся в файле
настроек
DNS
-сервера
root.cache, и описанная в этом пункте процедура
повторяется, пока имя не будет найдено
(или не найдено).
Анализируя с точки зрения безопасности
уязвимость этой схемы удаленного поиска
с помощью протокола
DNS
можно сделать вывод о возможности
осуществления в сети, использующей
протокол
DNS
,
типовой удаленной атаки "Ложный
объект РВС" . Практические изыскания
и критический анализ безопасности
службы
DNS
позволяют предложить три возможных
варианта удаленной атаки на эту службу.
Внедрение в сеть 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
-сервер
и есть настоящий сервер).
Рис.
4.4. Функциональная схема ложного
DNS
-сервера.

Рис.
4.4.1. Фаза ожидания атакующим
DNS
-запроса
(он находится на ХА1, либо на ХА2).

Рис.
4.4.2. Фаза передачи атакующим ложного
DNS
-ответа.

Рис. 4.4.3. Фаза приема, анализа, воздействия и передачи перехваченной информации на ложном сервере.
Необходимым условием осуществления
данного варианта атаки является перехват
DNS
-запроса.
Это возможно только в том случае, если
атакующий находится либо на пути
основного трафика, либо в сегменте
настоящего
DNS
-сервера.
Выполнение одного из этих условий
местонахождения атакующего в сети
делает подобную удаленную атаку трудно
осуществимой на практике (попасть в
сегмент
DNS
-сервера
и, тем более, в межсегментный канал связи
атакующему, скорее всего, не удастся).
Однако в случае выполнения этих условий
возможно осуществитьмежсегментнуюудаленную атаку на сеть Internet.
Отметим, что практическая реализация
данной удаленной атаки выявила ряд
интересных особенностей в работе
протокола FTP и в механизме идентификации
TCP-пакетов (подробнее см. п. 4.5). В случае,
когда FTP-клиент на хосте подключался к
удаленному FTP-серверу через ложный
DNS
-сервер,
оказывалось, что каждый раз после выдачи
пользователем прикладной команды FTP
(например, ls, get, put и т. д.) FTP-клиент
вырабатывал команду PORT, которая состояла
в передаче на FTP-сервер в поле данных
TCP-пакета номера порта иIP-адреса
клиентского хоста(особый смысл в
этих действиях трудно найти - зачем
каждый раз передавать на FTP-сервер
IP-адрес клиента)! Это приводило к тому,
что, если на ложном
DNS
-сервере
не изменить передаваемый IP-адрес в поле
данных TCP-пакета и передать этот пакет
на FTP-сервер по обыкновенной схеме, то
следующий пакет будет передан FTP-сервером
на хост FTP-клиента, минуя ложный
DNS
-сервер
и, что самое интересное, этот пакет будет
воспринят как нормальный пакет (п. 4.5),
и, в дальнейшем, ложный
DNS
-сервер
потеряет контроль над трафиком между
FTP-сервером и FTP-клиентом! Это связано с
тем, что обычный FTP-сервер не предусматривает
никакой дополнительной идентификации
FTP-клиента, а перекладывает все проблемы
идентификации пакетов и соединения на
более низкий уровень - уровень TCP
(транспортный).
