Защита от хакеров корпоративных сетей
Шрифт:
Вставка – это способ, который создает ситуацию, когда система обнаружения вторжения примет некоторую информацию, предполагая, что точно такие же данные получит и атакуемый хост. Но если система обнаружения вторжения не интерпретирует сетевой поток точно таким же образом, как это делает атакуемый хост, то у нее сложится неверное представление о передаваемых данных и она не сможет предупредить об атаке. Просто сигнатура из базы данных сигнатур системы обнаружения вторжения будет не соответствовать получаемым из сетевого потока данным. Рассматривая пример со строкой символов «CODE-RED» в HTTP-запросе, возможен следующий случай. К системе обнаружения вторжения будут поступать данные со строкой «CODE-NOT-RED», что не является достаточным, чтобы чувствовать себя и защищаемую сеть в безопасности. А атакуемый хост-адресат на самом деле получит данные со строкой символов «CODE-RED» из-за того, что пакет со строкой символов «NOT» был забракован хостом из-за его несоответствия, по мнению хоста, стандартам.
Уклонение – это способ, в
Типичным случаем является отказ в обслуживании системы обнаружения вторжения. Возможности нарушения работы датчика вполне очевидны. Системные ресурсы конечны. Системе доступно столько страниц памяти, сколько всего может быть выделено, возможности центрального процессора ограничены, и даже сетевые платы не способны поддерживать необходимую производительность, если она превышает их технические возможности. Поскольку компьютер является системой очередей, то неизбежно наступит момент, когда некоторые из них переполнятся и данные будут удалены из очереди быстрее, чем их проанализируют. Присущие этому проблемы разнообразны. Они могут изменяться от микропроблем, когда приходится сталкиваться с истощением относительно немногих сетевых буферов ввода-вывода, до глобальных проблем, подобно низкой производительности работы дисковых ресурсов. Управление системными ресурсами является сложной задачей, которая еще больше усложняется в результате необходимости контролировать неизвестное количество потоков передачи сетевых данных и ограниченного представления о фактическом состоянии внутреннего стека TCP/IP каждого хоста.
Опции протокола IP
Результаты исследования заголовка протокола IP говорят о том, что в нем есть множество полей, которые явно указывают на их уязвимость при использовании, с некоторыми методическими изменениями, способов вставки или уклонения. К изменению значений полей заголовка пакета IP следует подходить с большой осторожностью. После произведенных изменений трафик должен остаться корректным, поскольку он может быть маршрутизирован через Интернет. Модификация размера пакета может привести к тому, что для системы обнаружения вторжения станет трудно понять, где на самом деле заканчиваются его данные (в этом состоит способ уклонения). Точно так же можно заняться экспериментами с контрольной суммой. Если есть возможность вставлять в поток передаваемых данных неверные пакеты, то система обнаружения вторжения может воспринять их как правильные (если только она не будет вручную вычислять контрольную сумму для каждого пакета), в то время как атакованная система – нет (в этом состоит способ вставки).
Атаки на время существования пересылаемого пакета
В типичной сетевой конфигурации систему обнаружения вторжения наиболее часто можно внести в периметр сети. В этом случае она хорошо вписывается в систему обеспечения безопасности сети. Это позволяет ей контролировать всю связь через Интернет. К сожалению, если у злоумышленника есть возможность выполнить трассировку маршрута (выполнить утилиту traceroute) или систематически уменьшать счетчик времени существования пересылаемого пакета и определить точное число необходимых для достижения адресуемого хоста «прыжков», то он сможет послать несколько пакетов с заведомо недостаточным значением счетчика TTL. В результате в сети появятся пакеты с небольшим значением счетчика TTL, которые никогда не смогут достигнуть атакуемой системы. Но при этом система обнаружения вторжения воспримет их как часть передающего в сети потока данных. Схематично эта ситуация представлена на рис. 16.1. К счастью, администраторы могут противодействовать этому нападению, размещая и настраивая системы обнаружения вторжения в том же самом сетевом сегменте, что и хосты, которые они желают контролировать.
Рис. 16.1. Атака на время существования пересылаемого пакета
Фрагментация IP
Повторная сборка фрагментированных пакетов IP (IP fragmentation reassembly) составляет основу ряда атак. Сетевая система обнаружения вторжения не сможет проверить проходящие через нее пакеты на соответствие их содержимого сигнатурам из базы данных сигнатур, если она повторно не собирает фрагментированные IP-пакеты тем же способом, что и целевой хост. При обычных сетевых операциях фрагментированные IP-пакеты будут, как правило, приниматься адресатом в том же порядке, в котором они и были посланы. Однако так бывает не всегда. В протоколе IP предусмотрена трудно анализируемая передача пакетов в нестандартном порядке и возможность повторной сборки перекрывающихся фрагментов. Процесс сборки фрагментов IP-пакетов может также оказаться сложным из-за необходимости сохранять фрагменты в памяти до тех пор, пока не будет получен последний фрагмент передаваемых данных. Так делается для того,
Можно и дальше углубляться в рассматриваемую проблему, реализуя в системе обнаружения вторжения сложный алгоритм «сборки мусора» (процесс утилизации памяти, освобождаемой в процессе работы программы или системы). Контролируя передаваемые по линии связи данные, системе обнаружения вторжения, вероятно, придется учитывать сеансы нескольких тысяч хостов, тогда как каждый хост обеспокоен только своим собственным трафиком. Установленная на хосте система может лояльно относиться к временным задержкам при получении фрагментов данных, в то время как система обнаружения вторжения должна гораздо строже относиться к истечению времени ожидания, для того чтобы обеспечить управление экспоненциально большими системами. Если злоумышленник атакует, посылая три фрагмента данных без задержки и последний фрагмент с задержкой, и если в используемой сетевой системе обнаружения не реализованы аналогичные процессы управления фрагментированными порциями данных (что-то подсказывает автору, что это сделать почти невозможно), то в результате нельзя будет восстановить последовательное представление данных, передаваемых по протоколу IP. А значит, нельзя будет получить правильный результат проверки характерных признаков атаки сигнатуре из базы данных сигнатур системы обнаружения вторжения.
Выполненный Птасеком (Ptacek) и Невшамом (Newsham) тест на фрагментацию TestsTests показал, что во время тестирования ни одна из проверяемых систем обнаружения вторжения не смогла должным образом разрешить проблемы фрагментации IP-пакетов. Первые два теста испытания были посвящены тестированию обработки внутреннего порядка фрагментированных данных, содержащихся в пересылаемых пакетах по 8 и 24 байта. В последующих тестах участвовали восьмибайтовые фрагменты, которые пересылались в различном порядке. В серии фрагментов один из них пересылался или вне очереди (уклонение), или дважды (вставка), или все фрагменты пересылались в произвольном порядке с посылкой одного из них дважды (комбинация), или в последовательности фрагментов последний из них пересылался как первый (уклонение), или предыдущие фрагменты перекрывались с последующими (уклонение). Потрясающе, но ни одна из четырех программ (RealSecure, NetRanger, SessionWall и NFR) не смогла распознать какую-либо из атак фрагментации.
В настоящее время большинство сетевых систем обнаружения вторжения обновили свои модули сборки фрагментированных частей пакета. Теперь системы обнаружения вторжения с некоторой вероятностью успеха способны восстановить поток данных.
Заголовок TCP
В заголовке TCP содержится ряд полей, которые могут быть использованы для организации атак. Поэтому если система обнаружения вторжения проверяет не все, а только часть полей из заголовка TCP, то у злоумышленника появляются дополнительные возможности организации атак вставки и уклонения. Рассмотрим некоторые из полей заголовка TCP-пакета. Поле CODE определяет тип сообщения, посылаемого для подключения. Если кто-либо в этом поле пошлет недопустимую последовательность символов или пакет с пропущенным флагом ACK, то вполне возможно, что адресат отклонит такой пакет, а система обнаружения вторжения – нет (возможна вставка). Сегменты, отмеченные флажком SYN (запрос начала сеанса), также могут содержать данные. Из-за относительно нечастого использования этого флажка для пересылки данных система обнаружения вторжения может проигнорировать его содержимое (уклонение). Можно исследовать многие из полей заголовка TCP и найти какую-нибудь возможность, когда передаваемые данные будут приняты адресатом, но будут пропущены системой обнаружения вторжения и наоборот. Другим показательным примером является поле контрольной суммы «Checksum». Если система обнаружения не может самостоятельно вычислять контрольную сумму для каждого сегмента TCP, то в сеансе можно смешивать правильные сегменты с сегментами с неверной контрольной суммой в надежде, что система обнаружения вторжения не будет проверять все сегменты (производитель может предполагать, что в этом случае накладные издержки слишком велики).
Недавно в протокол TCP было добавлено несколько новых опций. Эти опции описаны в документе RFC 1323 «Добавление новых возможностей в протокол TCP для улучшения его производительности (TCP Extensions for High Performance)», который был подготовлен В. Джекобсоном (V. Jacobson), Р. Браденом (R. Braden) и Д. Борманом (D. Borman). Помимо прочего, в документе описан предназначенный для защиты от быстрого исчерпания порядковых номеров механизм PAWS (Protection Against Wrapped Sequence) и опции для пакетов с отсутствующим флажком SYN, которые содержат новые флажки опций. Это означает, что если система обнаружения вторжения не знает, каким образом система-адресат обрабатывает пакеты с пропущенным флажком SYN, содержащие дополнительные опции, то существуют многочисленные дополнительные возможности для вставки и уклонения. Адресуемая система может отклонять эту более новую форму протокола TCP, в то время как система обнаружения вторжения – нет. Возможна также и обратная ситуация. PAWS является механизмом, при помощи которого система связывает временной штамп с каждым TCP-сегментом. Если хост-адресат получит сегмент с временным штампом, значение которого меньше внутренней пороговой величины, то он будет пропущен. Снова и снова можно увидеть сложности, присущие поступающим по линии связи данным по протоколу TCP. Это объясняется простой недостаточностью передаваемой по линии связи информации состояния для получения точного представления о возможном поведении хоста-адресата.