Рассмотрим следующее мнимое нападение:
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=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-приложения, которые следуют за ним. Если система обнаружения вторжения захочет просто подать сигнал тревоги при обнаружении запроса файла, то в этом случае с ее точки зрения нет необходимости в полной оценке выражения. Ниже приведены два эквивалентных запроса:
Читать дальше
Конец ознакомительного отрывка
Купить книгу