9. Проблемы безопасности протоколов TCP/IP
Материал настоящей главы
цитируется по книге М.Мамаев, С.Петренко "Технологии защиты информации
в Интернете" (СПб: "Питер", 2002). Данный фрагмент опубликован на сайте
издательства "Питер".
В данной главе рассматривается безопасность сетевого взаимодействия
только на уровнях от доступа к сети до транспортного включительно, то
есть охватываются аспекты безопасности собственно передачи данных через
сети IP (Интернет). Здесь мы не останавливаемся на содержании этих
данных и возможности их использования в неблаговидных целях. Последнее
относится к безопасности прикладных протоколов и приложений Интернета.
Прежде чем перейти к разбору конкретных приемов, классифицируем
действия злоумышленника — атаки, направленные против какого-либо узла
(или, возможно, целой сети). Злоумышленник ставит перед собой
определенную цель, как-то:
- перехват (и, возможно, модификация) данных, передаваемых через сеть от одного узла другому;
- имперсонация (обезличивание, spoofing) (узел злоумышленника
выдает себя за другой узел, чтобы воспользоваться какими-либо
привилегиями имитируемого узла);
- несанкционированное подключение к сети;
- несанкционированная передача данных (обход правил фильтрации IP-трафика в сетях, защищенных брандмауэрами);
- принуждение узла к передаче данных на завышенной скорости;
- приведение узла в состояние, когда он не может нормально
функционировать, передавать и принимать данные (так называемый DoS —
denial of service, отказ в обслуживании).
Для достижения своих целей злоумышленник использует прослушивание
(sniffing), сканирование сети и генерацию пакетов. Под генерацией
пакетов понимается создание и отправка специально сконструированных
датаграмм или кадров, позволяющих злоумышленнику выполнить ту или иную
атаку. Особо выделим здесь фальсификацию пакетов, то есть создание
IP-датаграмм или кадров уровня доступа к сети, направленных якобы от
другого узла (spoofing).
Прослушивание сети Ethernet (а подавляющее большинство локальных
сетей используют именно эту технологию) является тривиальной задачей:
для этого нужно просто перевести интерфейс в режим прослушивания
(promiscuous mode). Легко доступны программы, не только записывающие
весь трафик в сегменте Ethernet, но и выполняющие его отбор по
установленным критериям: например, программа tcpdump или входящая в поставку ОС Solaris программа snoop.
Среди других сетевых технологий подвержены прослушиванию сети
FDDI и радиосети (например Radio Еthernet). Несколько сложнее для
злоумышленника извлечь трафик из телефонных выделенных и коммутируемых
линий — главным образом, из-за сложности физического доступа и
подключения к таким линиям. Однако следует помнить, что злоумышленник
может оккупировать промежуточный маршрутизатор и таким образом получить
доступ ко всему транзитному трафику, независимо от используемых
технологий на уровне доступа к сети.
Ограничить область прослушивания в сети Ethernet можно
разбиением сети на сегменты с помощью коммутаторов. В этом случае
злоумышленник, не прибегая к активным действиям, описанным в п. 9.2,
может перехватить только кадры, получаемые или отправляемые узлами
сегмента, к которому он подключен. Единственным способом борьбы с
прослушиванием сегмента Ethernet является шифрование данных.
Злоумышленник, прослушивающий сеть, может быть обнаружен с помощью утилиты AntiSniff, которая выявляет в сети узлы, чьи интерфейсы переведены в режим прослушивания.
AntiSniff выполняет три вида тестов узлов сегмента Ethernet.
Первый тест основан на особенностях обработки разными операционными
системами кадров Ethernet, содержащих IP-датаграммы, направленные в
адрес тестируемого узла. Например, некоторые ОС, находясь в режиме
прослушивания, передают датаграмму уровню IP, независимо от адреса
назначения кадра Ethernet (в то время как в обычном режиме кадры, не
направленные на MAC-адрес узла, системой вообще не рассматриваются).
Другие системы имеют особенность при обработке кадров с
широковещательным адресом: в режиме прослушивания MAC-адрес
ff:00:00:00:00:00 воспринимается драйвером интерфейса как
широковещательный. Таким образом, послав сообщение ICMP Echo внутри
«неверного» кадра, который при нормальных обстоятельствах должен быть
проигнорирован, и получив на него ответ, AntiSniff заключает, что
интерфейс тестируемого узла находится в режиме прослушивания.
Второй тест основан на предположении, что программа
прослушивания на хосте злоумышленника выполняет обратные
DNS-преобразования для IP-адресов подслушанных датаграмм (поскольку
часто по доменному имени можно определить назначение и важность того
или иного узла). AntiSniff фабрикует датаграммы с фиктивными
IP-адресами (то есть не предназначенные ни одному из узлов тестируемой
сети), после чего прослушивает сеть на предмет DNS-запросов о доменных
именах для этих фиктивных адресов. Узлы, отправившие такие запросы,
находятся в режиме прослушивания.
Тесты третьей группы, наиболее универсальные, с одной стороны,
так как не зависят ни от типа операционной системы, ни от
предполагаемого поведения прослушивающих программ. С другой стороны,
эти тесты требуют определенного анализа от оператора, то есть — не
выдают однозначный результат, как в двух предыдущих случаях кроме того,
они сильно загружают сеть. Тесты основаны на том, что интерфейс,
находящийся в обычном режиме, отфильтровывает кадры, направленные не на
его адрес, с помощью программно-аппаратного обеспечения сетевой карты,
и не задействует при этом ресурсы операционной системы. Однако в режиме
прослушивания обработка всех кадров ложится на программное обеспечение
злоумышленника, то есть, в конечном счете, на операционную систему.
AntiSniff производит пробное тестирование узлов сети на предмет времени
отклика на сообщения ICMP Echo, после чего порождает в сегменте шквал
кадров, направленных на несуществующие MAC-адреса, при этом продолжая
измерение времени отклика. У систем, находящихся в обычном режиме, это
время растет, но незначительно, в то время как узлы, переведенные в
режим прослушивания, демонстрируют многократный (до 4 раз) рост
задержки отклика.
В связи с вышеизложенным отметим, что представление о
прослушивании как о безопасной деятельности, которую нельзя обнаружить,
не соответствует действительности.
Сканирование сети имеет своей целью выявление подключенных к сети
компьютеров и определение работающих на них сетевых сервисов (открытых
портов TCP или UDP). Первая задача выполняется посылкой ICMP-сообщений
Echo с помощью программы ping с последовательным перебором адресов
узлов в сети. Стоит попробовать отправить Echo-сообщение по
широковещательному адресу — на него ответят все компьютеры,
поддерживающие обработку таких сообщений.
Администратор сети может обнаружить попытки сканирования путем
анализа трафика в сети и отслеживания Echo-сообщений, за короткий
промежуток времени посылаемых последовательно по всем адресам сети. Для
большей скрытности злоумышленник может существенно растянуть процесс во
времени («медленное сканирование») — это же касается и сканирования
портов TCP/UDP. Также злоумышленник может применить «обратное
сканирование» (inverse mapping): в этом случае на тестируемые адреса
посылаются не сообщения ICMP Echo, а другие сообщения, например
RST-сегменты TCP, ответы на несуществующие DNS-запросы и т. п. Если
тестируемый узел не существует (выключен), злоумышленник получит в
ответ ICMP-сообщение Destination Unreachable: Host Unreachable. Следовательно, если сообщение не было получено, то соответствующий узел подключен к сети и работает.
Программа traceroute поможет в определении топологии сети и обнаружении маршрутизаторов.
Для определения того, какие UDP- или TCP-приложения запущены на
обнаруженных компьютерах, используются программы-сканеры, например,
программа nmap. Поскольку
номера портов всех основных сервисов Интернета стандартизованы, то,
определив, например, что порт 25/TCP открыт, можно сделать вывод о том,
что данный хост является сервером электронной почты, и т. д. Полученную
информацию злоумышленник может использовать для развертывания атаки на
уровне приложения.
Сканирование TCP-портов хоста производится несколькими
способами. Наиболее простой способ — установление TCP-соединения с
тестируемым портом с помощью функции connect. Если соединение
удалось установить, значит, порт открыт и к нему подсоединено серверное
приложение. Достоинством этого способа является возможность выполнения
сканирования любым пользователем, и даже без специального программного
обеспечения: стандартная программа telnet позволяет указать
произвольный номер порта для установления соединения. Существенный
недостаток — возможность отслеживания и регистрации такого
сканирования: при анализе системного журнала сканируемого хоста будут
обнаружены многочисленные открытые и сразу же прерванные соединения, в
результате чего могут быть приняты меры по повышению уровня
безопасности.
Сканирование в режиме половинного открытия (half-open scanning)
не имеет описанного недостатка, но требует от злоумышленника
возможности формировать одиночные TCP-сегменты в обход стандартного
модуля TCP (или, при использовании уже написанных программ, как
минимум — прав суперпользователя). В этом режиме злоумышленник
направляет на сканируемый порт SYN-сегмент и ожидает ответа. Получение
ответного сегмента с битами SYN и ACK означает, что порт открыт;
получение сегмента с битом RST означает, что порт закрыт. Получив
SYN+ACK, злоумышленник немедленно отправляет на обнаруженный порт
сегмент с битом RST, таким образом ликвидируя попытку соединения. Так
как соединение так и не было открыто (ACK от злоумышленника не был
получен), то зарегистрировать такое сканирование гораздо сложнее.
Третий способ — сканирование с помощью FIN-сегментов. В этом
случае на сканируемый порт посылается сегмент с установленным битом
FIN. Хост должен ответить RST-сегментом, если FIN-сегмент адресован
закрытому порту. FIN-сегменты, направленные на порт, находящийся в
состоянии LISTEN, многими реализациями TCP/IP игнорируются (стандарт
требует в состоянии LISTEN посылать RST-сегменты в ответ на сегменты,
имеющие неприемлемый ACK SN; про сегменты, имеющие только флаг FIN,
ничего не говорится). Таким образом, отсутствие отклика говорит о том,
что порт открыт. Варианты этого способа сканирования — посылка
сегментов с флагами FIN, PSH, URG («Xmas scan») или вообще без всяких
флагов («Null scan»). Конечно, сканирование SYN-сегментами дает более надежные
результаты, однако, к счастью, многие брандмауэры могут не пропускать
SYN-сегменты без флага ACK из Интернета во внутреннюю сеть1
(так, запрещаются соединения хостов Интернета с внутренними хостами,
инициируемые из Интернета, но разрешаются соединения, инициируемые
изнутри).
Источник: http://athena.vvsu.ru/net/book/security.html#9.1.1 |