Коллектив авторов - Защита от хакеров корпоративных сетей
GET /some/file.cgi HTTP/1.0
GET /.././some////file.cgi HTTP/1.0
GET /./some//....///some/./file.cgi HTTP/1.0Формат вышеприведенного представления данных, используемого для уклонения от системы обнаружения вторжения, RFP назвал сокрытием параметра (parameter hiding). Этот способ уклонения основан на предположении, что некоторые системы обнаружения вторжения оценивают запрос только до тех пор, пока они не встретят в поступивших данных символ вопроса (?), шестнадцатеричным представлением которого является величина %3f. Обычно этот символ является признаком начала аргументов для Web-приложения, которые следуют за ним. Если система обнаружения вторжения захочет просто подать сигнал тревоги при обнаружении запроса файла, то в этом случае с ее точки зрения нет необходимости в полной оценке выражения. Ниже приведены два эквивалентных запроса:
GET /real.file HTTP/1.0
GET /%3f/file/does/not/exist/../../../../../real.file HTTP/
1.0Контрмеры
Ранее уже говорилось, что основанные на сигнатурах системы обнаружения вторжения способны нормализовать передающиеся по сети данные. То есть после того, как входные данные достигнут сервера HTTP, следует каким-то образом логически их обработать, уменьшив их размерность и приведя принятые данные к наименьшему общему знаменателю (например, оставив в последовательности слэшей только один слэш или разрешив ссылку на директорию). Может оказаться полезным частичное совпадение сигнатур. Если для срабатывания системы обнаружения вторжения не обязательно стопроцентного совпадения сигнатур, то она распознает некоторые видоизменения большинства типов атак.
Уклонение при помощи морфизма кода
Полиморфизм – это способ существования во множественных формах, а морфизм – это процесс, используемый для достижения полиморфизма. Полиморфный код преследует цель сохранения в другой форме функциональных свойств уникального кода. Сетевая система обнаружения вторжения может только анализировать сетевую информацию, поступающую из канала связи. Только так она сможет выявить код атаки. Благодаря этому вирусы смогут оставаться необнаруженными в течение некоторого времени. Единственное различие состоит в том, что сканеры вирусов проверяют файлы на дисках, а не поток сетевых данных. Способ, с помощью которого большинство сканеров вирусов взялись бы разрешить описанную проблему, заключается в использовании эвристических способов сканирования. Это похоже на то, что делала бы размещенная на хосте система обнаружения вторжения (идентификация подозрительных событий, несоответствующий доступ к файлу и т. д.).
Полиморфизм достигается использованием полезного для осуществления атаки оригинального кода и кодирования его с помощью обратимого алгоритма. Все команды типа NOP и их последовательности заменяются подходящими двоичными данными. Закодированный таким образом двоичный код пересылается через сеть вместе с небольшой функцией декодирования, обычно размещаемой в начале пересылаемых данных (для того чтобы избежать соответствия сигнатур, функция декодирования может генерироваться динамически). По достижении атакуемой цели декодирующая функция декодирует первоначальный код атаки и выполняет его. Таким способом поддерживается оригинальная функциональность кода атаки.
В статье автора (www.ktwo.ca/c/ADMmutate-README) был тщательно рассмотрен полиморфный управляющий код. Статья была опубликована в начале 2001 года. В коде предусмотрено использование известных на сегодняшний день уязвимостей и уязвимостей, которые могут появиться в будущем. Основой для получения полиморфного кода является постоянно присутствующая возможность вычисления одной и той же величины различными способами. Например, если при атаке нужно вычислить величину, равную четырем, то ее можно вычислить любым из следующих способов: 2 + 2, 3 + 1, 6 – 2 и т. д. Есть буквально бесконечное число способов вычисления заданной величины. Именно этим занимается код атаки, использующий некоторые машинные команды. У исследуемой сетевой трафик системы обнаружения вторжения нет возможности отождествить выражение, вычисляющее искомую величину как 2 + 2, с выражением, вычисляющим эту же величину как 3 + 1. Она получает только низкоуровневые машинные команды и сравнивает их с известным образцом. Сетевая система обнаружения вторжения не интерпретирует машинные команды, как это делает целевой хост-адресат.
Этим способом можно замаскировать от обнаружения любой код атаки. При этом не поможет никакое правило, вне зависимости от того, является ли оно специализированным или общим. Для основанной на сравнении сигнатур сетевой системы обнаружения вторжения единственная возможность обнаружить код атаки появится только в том случае, если будет определена сигнатура декодирующей функции. До настоящего времени автору не были известны никакие сигнатуры или методы, развитые для этого класса полиморфного управляющего кода. В таблице 16.1 параллельно показаны две разновидности одного и того же выполняемого полиморфного управляющего кода.
Таблица 16.1.
Видоизменения управляющего кода
Как можно видеть из таблицы, три варианта исполняемого кода очень мало похожи друг на друга. Вообще, возможно большое число перестановок, которые могут быть использованы.
Очевидно, что большинство систем обнаружения вторжения не всегда вполне готовы к немедленному использованию. Для достижения долговременного успеха они нуждаются в частом обновлении и постоянном обслуживании. Системы обнаружения вторжения, у которых есть надежда обнаружить неизвестные ранее типы атак, являются аномалией среди систем обнаружения вторжения, основанных на сравнении сигнатур. Подобные системы не используют сигнатуры вообще. Вместо этого они контролируют все сетевые соединения и изменения в них, для того чтобы попытаться построить обобщенный образ типичного трафика. При обнаружении статистических аномалий подается сигнал тревоги. В результате самообучения и накопления энтропии в своих базах данных система обнаружения вторжения со временем, теоретически, становится все более совершенной и точной. Есть лишь один вопрос. Насколько эффективна система обнаружения вторжения, основанная только на обнаружении аномалий сетевого трафика? Ведь атаки могут маскироваться под повседневную деятельность сети. В этом случае при совпадении характерных признаков атаки с признаками повседневной деятельности сети атака может быть не обнаружена. Как это часто бывает, не так уж и плохо от каждого понемногу позаимствовать чуть-чуть полезного. Основанная на сравнении сигнатур хорошая система обнаружения вторжения, дополненная средствами обнаружения атаки по анализу аномалий сетевого трафика, должна гарантировать контроль большинства событий вторжения.
В бесконечной игре в кошки-мышки по вопросам безопасности можно предсказать появление поколения полиморфных статистически нормализованных атак. Эти атаки добавят еще одно препятствие для разработчиков сетевых систем обнаружения вторжения, которые они должны будут преодолеть.Резюме
Основанные на сравнении сигнатур системы обнаружения вторжения при попытке проанализировать и проинтерпретировать сетевые данные должны учитывать большое количество переменных параметров. По-прежнему у многих атак сохраняются шансы уклониться от подобных систем. Системам обнаружения вторжения трудно преодолеть недостаток доступной для анализа информации. Но темпы совершенствования их возможностей обнаружения атак впечатляют. Гигабитные скорости и гибкие архитектуры, поддерживаемые постоянно растущим сообществом безопасности, способствуют квалифицированной настройке систем для обнаружения всех атак, кроме наиболее тупых и нечастых сценариев нападения.
Всем уровням сетевого стека присущи свои трудности последовательного представления сетевого трафика, а заодно и анализа содержимого каждого передаваемого пакета. Вполне очевидно, что у атакующего есть определенные преимущества, поскольку у него есть возможность спрятать в море информации свои данные и он является единственным, кто знает их истинное предназначение.
В течение нескольких последних лет наблюдались случаи уклонения от обнаружения на уровне пакета. Разработчики систем обнаружения вторжения хорошо знакомы со многими проблемами, сопутствующими захвату пакета и его анализу. Большинство сетей в любом случае начинают фильтровать подозрительные пакеты. Подозрительными считаются пакеты с некоторыми типами установленных флажков и чрезмерной фрагментацией. Возможно, что в ближайшее время нормализация сетевых уровней станет обычным явлением. Тогда многие возможности для уклонения от обнаружения прекратят свое существование.
Трудности анализа протоколов на уровне приложений продолжают оставаться головной болью для лиц, участвующих в обеспечении безопасности сетей. Получили распространение некоторые прокси-решения, но их использование породило множество узких мест. Кроме того, прокси-решения также страдают от присущих системам обнаружения вторжения проблем: они не способны обнаружить первоначально непредусмотренные типы атак.