Чтение онлайн

на главную

Жанры

Защита от хакеров корпоративных сетей

авторов Коллектив

Шрифт:

Внутри правила задаются путь и имя команды chgrp. Явно видно, что если бы файл команды был размещен не в директории /usr/bin, а в другой, то с помощью этой сигнатуры попытка определить атаку потерпела бы неудачу. Кроме того, если бы атакующий был уверен в правильной установке переменной среды, задающей путь к команде chgrp, то он смог бы выполнить команду без указания ее полного пути. Тем самым ему бы удалось избежать обнаружения своей атаки системой обнаружения вторжения, выполняющей проверку на соответствие сигнатур. Как следует настроить систему обнаружения вторжения, чтобы она смогла предупредить обо всех только что рассмотренных видоизменениях атак злоумышленником? Сколько сигнатур должна учитывать система обнаружения вторжения, если принять во внимание эти и подобные им многочисленные изменения программ?

Дополнительное кодирование данных

Пересылаемый между Web-сервером и клиентом стандартный текст может быть закодирован таким образом, чтобы он интерпретировался как текст в кодировке Unicode, которая в значительной степени предназначена

для кодирования символов, позволяющих представлять алфавиты всех существующих в мире языков. Значением строки «Yung» в кодировке Unicode является величина U+6C38. Кодировка Unicode является еще одной головной болью для разработчиков систем обнаружения вторжения, поскольку представляемые в ней величины могут быть исследованы и преобразованы в ASCII-код при помощи стандартных процедур. Эти проблемы не относятся к разряду непреодолимых. В большинстве систем реализовано то, что известно как нормализация протокола. Нормализация протокола основана на анализе входной строки и систематизации всех известных кодировок, представлений свободного места в тексте (пробелов, символов табуляции, пустых строк и т. д.) с целью построения наиболее общей стандартной формы входных данных.

К сожалению, все вообразимые способы нормализации не могут разрешить все проблемы контроля сетевого трафика программами с закрытыми исходными текстами. Без знания деталей внутренней работы системы нельзя учесть ее недокументированные возможности. У информационного сервера Интернет-компании Microsoft (IIS) была одна подобная специфическая особенность. Она заключалась в том, что допускалось представление данных, закодированных с использованием спецификации преобразования формата %u****, которая являлась альтернативой обычному кодированию Unicode %**** . Знаменитый саморазмножающийся вирус Code Red использовал этот ранее неизвестный способ для уклонения от сигнатур системы обнаружения вторжения, настроенных на соответствие сигнатуре специфичной уязвимости переполнения буфера . ida. Недостаток информации является наихудшим врагом защитника сети.

Рассмотрим следующее мнимое нападение:

Attack String:

GET /vulnerable.cgi?ATTACK=exploit-code

Signature:

alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS 80 (msg:“WEBATTACKS

vulnerable.cgi attempt”; flags:A+; content:“get /

vulnerable.cgi? ATTACK=exploit-code”;nocase; sid:1337;

rev:1; classtype:web-application-attack;)

Modified Attack String:

GET /vulnerable.cgi?ATTACK=<SPACE>exploit-code

Скорее всего, атака использует приложения общего шлюзового интерфейса CGI (Common Gateway Interface). Для оповещения об известной атаке используется простая сигнатура. С большой долей вероятности эта сигнатура гарантировала бы сравнительно небольшое число ошибочных оповещений об атаке при отсутствии самой атаки, поскольку код атаки встроен непосредственно в сигнатуру. Но можно увидеть, что если атакующий сможет послать модифицированное строковое представление кода атаки путем использования нескольких дополнительных пробелов, символов табуляции и пустых строк, то он избежит обнаружения при условии, что система обнаружения вторжения будет сопоставлять характерные признаки атаки с сигнатурой из своей базы данных. Этот пример еще раз свидетельствует о сложности подхода к обнаружению атак, основанного на сигнатурах. Если в сигнатуре не будет учтена часть кода атаки, то вполне возможен пропуск большого числа атак. В то же время, если в сигнатуру будут включены образцы программного кода атаки, шансы уклониться от ее обнаружения остаются и могут даже возрасти.

Этот рассмотренный пример атаки сильно упрощен. Данной атаке уклониться от обнаружения совсем нетрудно. При адекватной нормализации протокола лишние пробелы должны устраняться, и система обнаружения вторжения должна успешно осуществлять сопоставление сигнатур.

Способы атак в сети

Некоторые из проблем сетевых нападений были проанализированы RFP. Например, пусть читатель познакомится с его статьей «Исследование направленной против систем обнаружения вторжения тактикой сканера whisker» (A look at whisker\'s Anti-IDS Tactics). Статья была опубликована в декабре 1999 года (www.wiretrip.net/rfp/pages/whitepapers/whiskerids.html). Он реализовал ряд способов атак в своем сканере уязвимостей whisker. В следующих секциях будут рассмотрены некоторых из них.

Способ соответствия

Метод HTTP-запроса (GET, HEAD, POST и т. д.) информирует сервер о типе ожидаемого соединения. RFP обнаружил, что многие сигнатуры системы обнаружения вторжения полностью непригодны для обнаружения других методов. Это открытие слегка угнетает, поскольку многие разработчики систем обнаружения вторжений объявили о своей лишь частичной зависимости от соответствия сигнатур для генерации и выдачи сигнала оповещения об атаке.

Ссылки на директорию и файл

Слэш (косая черта) является символом разделения имен директорий и файла при указании пути к файлу. Он может быть представлен десятком различных способов. Самый простой из них заключается в представлении одного слэша двойными или несколькими следующими друг за другом слэшами (/some// file.html = /some////file.html). Этот способ может обмануть простейшие варианты поиска соответствий с сигнатурой из базы данных системы обнаружения вторжения при отсутствии какой-либо нормализации, чтобы противодействовать этому.

Другой формой реализации того же самого трюка (описываемый трюк работает только на Web-серверах IIS компании Microsoft) является применение символа обратного слэша (\), используемого в операционной системе DOS. Если система обнаружения

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

Эти уловки приводят к успеху из-за существования различных способов ссылки на файл. Достаточно удивительно, что разрешение имени пути на самом деле гораздо сложнее, чем ранее об этом можно было подумать (именно это является причиной удаленной компрометации Web-серверов IIS, вспомните Unicode). Точка (.), указывающая путь к текущему каталогу, и двойная точка (..), указывающая путь к родительскому каталогу текущего каталога, может быть использована для запутывания ссылки на файл. Злоумышленнику нужно только напрячь свое воображение для построения уникальных путей. Ниже приведен пример эквивалентных запросов:

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 параллельно показаны две разновидности одного и того же выполняемого полиморфного управляющего кода.

Поделиться:
Популярные книги

Энфис 6

Кронос Александр
6. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Энфис 6

Сердце Дракона. Предпоследний том. Часть 1

Клеванский Кирилл Сергеевич
Сердце дракона
Фантастика:
фэнтези
5.00
рейтинг книги
Сердце Дракона. Предпоследний том. Часть 1

Идеальный мир для Лекаря 8

Сапфир Олег
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Идеальный мир для Лекаря 8

Под маской, или Страшилка в академии магии

Цвик Катерина Александровна
Фантастика:
юмористическая фантастика
7.78
рейтинг книги
Под маской, или Страшилка в академии магии

Мой любимый (не) медведь

Юнина Наталья
Любовные романы:
современные любовные романы
7.90
рейтинг книги
Мой любимый (не) медведь

Академия

Кондакова Анна
2. Клан Волка
Фантастика:
боевая фантастика
5.40
рейтинг книги
Академия

Играть, чтобы жить. Книга 3. Долг

Рус Дмитрий
3. Играть, чтобы жить
Фантастика:
фэнтези
киберпанк
рпг
9.36
рейтинг книги
Играть, чтобы жить. Книга 3. Долг

Виконт. Книга 4. Колонист

Юллем Евгений
Псевдоним `Испанец`
Фантастика:
фэнтези
попаданцы
аниме
7.50
рейтинг книги
Виконт. Книга 4. Колонист

Вечный Данж. Трилогия

Матисов Павел
Фантастика:
фэнтези
юмористическая фантастика
6.77
рейтинг книги
Вечный Данж. Трилогия

Мужчина не моей мечты

Ардова Алиса
1. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.30
рейтинг книги
Мужчина не моей мечты

Последний Паладин. Том 7

Саваровский Роман
7. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 7

Истинная со скидкой для дракона

Жарова Анита
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Истинная со скидкой для дракона

Волк 7: Лихие 90-е

Киров Никита
7. Волков
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Волк 7: Лихие 90-е

Кровь Василиска

Тайниковский
1. Кровь Василиска
Фантастика:
фэнтези
попаданцы
аниме
4.25
рейтинг книги
Кровь Василиска