C максим Мамаев

Вид материалаДокументы
Глава 9. Проблемы безопасности протоколов TCP/IP
Проблемы безопасности протоколов TCP/IP
Методы и инструменты
Прослушивание сети
Сканирование сети
Генерация пакетов
Подобный материал:
1   ...   7   8   9   10   11   12   13   14   ...   17

Глава 9. Проблемы безопасности протоколов TCP/IP


Материал настоящей главы цитируется по книге М.Мамаев, С.Петренко "Технологии защиты информации в Интернете" (СПб: "Питер", 2002). Данный фрагмент опубликован на сайте издательства "Питер".
  • Методы и инструменты
    • Прослушивание сети
    • Сканирование сети
    • Генерация пакетов
  • Перехват данных
    • Ложные ARP-ответы
    • Навязывание ложного маршрутизатора
  • Имперсонация
    • Имперсонация без обратной связи
    • Десинхронизация TCP-соединения
  • Несанкционированное подключение к сети
  • Несанкционированный обмен данными
    • Туннелирование
    • Атака крошечными фрагментами (Tiny Fragment Attack)
  • Принуждение к ускоренной передаче данных
    • Расщепление подтверждений
    • Ложные дубликаты подтверждений
    • Преждевременные подтверждения
  • Отказ в обслуживании
    • Истощение ресурсов узла или сети
    • Сбой системы
    • Изменение конфигурации или состояния узла
  • Обсуждение
    • Фильтрация на маршрутизаторе
    • Анализ сетевого трафика
    • Защита маршрутизатора
    • Защита хоста
    • Превентивное сканирование
  • Литература
  • Бесплатное программное обеспечение
  • Сайты
  • Отечественные Сайты

Проблемы безопасности протоколов TCP/IP


В данной главе рассматривается безопасность сетевого взаимодействия только на уровнях от доступа к сети до транспортного включительно, то есть охватываются аспекты безопасности собственно передачи данных через сети IP (Интернет). Здесь мы не останавливаемся на содержании этих данных и возможности их использования в неблаговидных целях. Последнее относится к безопасности прикладных протоколов и приложений Интернета.

Прежде чем перейти к разбору конкретных приемов, классифицируем действия злоумышленника — атаки, направленные против какого-либо узла (или, возможно, целой сети). Злоумышленник ставит перед собой определенную цель, как-то:
  • перехват (и, возможно, модификация) данных, передаваемых через сеть от одного узла другому;
  • имперсонация (обезличивание, spoofing) (узел злоумышленника выдает себя за другой узел, чтобы воспользоваться какими-либо привилегиями имитируемого узла);
  • несанкционированное подключение к сети;
  • несанкционированная передача данных (обход правил фильтрации IP-трафика в сетях, защищенных брандмауэрами);
  • принуждение узла к передаче данных на завышенной скорости;
  • приведение узла в состояние, когда он не может нормально функционировать, передавать и принимать данные (так называемый DoS — denial of service, отказ в обслуживании).

Методы и инструменты


Для достижения своих целей злоумышленник использует прослушивание (sniffing), сканирование сети и генерацию пакетов. Под генерацией пакетов понимается создание и отправка специально сконструированных датаграмм или кадров, позволяющих злоумышленнику выполнить ту или иную атаку. Особо выделим здесь фальсификацию пакетов, то есть создание IP-датаграмм или кадров уровня доступа к сети, направленных якобы от другого узла (spoofing).

Прослушивание сети


Прослушивание сети Ethernet (а подавляющее большинство локальных сетей используют именно эту технологию) является тривиальной задачей: для этого нужно просто перевести интерфейс в режим прослушивания (promiscuous mode). Легко доступны программы, не только записывающие весь трафик в сегменте Ethernet, но и выполняющие его отбор по установленным критериям: например, программа ссылка скрыта или входящая в поставку ОС Solaris программа snoop.

Среди других сетевых технологий подвержены прослушиванию сети FDDI и радиосети (например Radio Еthernet). Несколько сложнее для злоумышленника извлечь трафик из телефонных выделенных и коммутируемых линий — главным образом, из-за сложности физического доступа и подключения к таким линиям. Однако следует помнить, что злоумышленник может оккупировать промежуточный маршрутизатор и таким образом получить доступ ко всему транзитному трафику, независимо от используемых технологий на уровне доступа к сети.

Ограничить область прослушивания в сети Ethernet можно разбиением сети на сегменты с помощью коммутаторов. В этом случае злоумышленник, не прибегая к активным действиям, описанным в п. 9.2, может перехватить только кадры, получаемые или отправляемые узлами сегмента, к которому он подключен. Единственным способом борьбы с прослушиванием сегмента Ethernet является шифрование данных.

Злоумышленник, прослушивающий сеть, может быть обнаружен с помощью утилиты ссылка скрыта, которая выявляет в сети узлы, чьи интерфейсы переведены в режим прослушивания.

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-приложения запущены на обнаруженных компьютерах, используются программы-сканеры, например, программа ссылка скрыта. Поскольку номера портов всех основных сервисов Интернета стандартизованы, то, определив, например, что порт 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 (так, запрещаются соединения хостов Интернета с внутренними хостами, инициируемые из Интернета, но разрешаются соединения, инициируемые изнутри).

Программа ссылка скрыта может зарегистрировать попытки сканирования в различных режимах.

Для определения открытых портов UDP злоумышленник может отправить на тестируемый порт UDP-сообщение. Получение в ответ ICMP-сообщения Port Unreachable (тип 3, код 3) говорит о том, что порт закрыт.



1О способе проникновения SYN-сегментов через брандмауэр с помощью фрагментации дейтаграмм см. п. 9.5.2.


Программа-сканер может также определить операционную систему сканируемого узла по тому, как узел реагирует на специальным образом сконструированные, нестандартные пакеты: например, TCP-сегменты с бессмысленными сочетаниями флагов или ICMP-сообщения некоторых типов, и по другим признакам.

В марте 2001 г. в списке рассылки ссылка скрыта шла оживленная дискуссия об опции TCP Timestamp (Временной штамп) [McDanel]. У многих систем часы модуля TCP, чьи показания помещаются в опцию Timestamp, связаны с системными часами, что позволяет по значению опции определить uptime — время, прошедшее с момента загрузки компьютера. Эта информация может представлять потенциальную угрозу для безопасности компьютера в следующих аспектах.
  • Некоторые реализации могут использовать uptime для инициализации генератора псевдослучайных чисел, который используется различными приложениями для создания серийных номеров, имен временных файлов и т. п., а также для назначения номеров ISN для TCP-соединений (о роли ISN в обеспечении безопасности см. п. 9.3). Зная uptime и имея аналогичный генератор, злоумышленник может предсказать результаты его работы.
  • Зная тип системы и время последней перезагрузки, можно сделать вывод, что заплаты (patches), касающиеся безопасности и вышедшие позже момента загрузки, в системе не установлены (если их установка требует перезагрузки).
  • Наблюдая за системой продолжительное время, можно составить график ее регулярных перезагрузок и произвести имперсонацию хоста (п. 9.3) в тот момент, когда он перегружается и не способен работать с сетью.

Однако возможность выполнения реальных атак с использованием значения uptime пока остается под вопросом.

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

Генерация пакетов


Генерация датаграмм или кадров произвольного формата и содержания производится не менее просто, чем прослушивание сети Ethernet. Библиотека ссылка скрыта обеспечит программиста всем необходимым для решения этой задачи. Библиотека ссылка скрыта предоставляет инструментарий для обратного действия — извлечения пакетов из сети и их анализа.

На многочисленных сайтах Интернета злоумышленник может найти уже готовые программы, генерирующие пакеты целенаправленно для выполнения какой-либо атаки или сканирования сети (например, программа nmap, упомянутая выше). Применение таких программ часто не требует от злоумышленника ни квалификации программиста, ни понимания принципов работы сети, что делает многие из описанных атак, особенно атаки типа «отказ в обслуживании», широко доступными для исполнения.