...
Инструментарий и ловушки
Компоненты сигнатуры
Ниже приводится пример сигнатур, описанных на языке описания сигнатур, который используется системой обнаружения вторжения Snort:
alert tcp $EXTERNAL_NET any -> $HOME_NET 8080 (msg:“SCAN Proxy
attempt”;flags:S; classtype:attempted-recon; sid:620;
rev:1;)
alert ip $EXTERNAL_NET any -> $HOME_NET :1023 (msg:“SHELLCODE
linux shellcode”; content:“|90 90 90 e8 c0 ff ff ff|/bin
/sh”; classtype:attempted-admin; sid:652; rev:2;)
alert tcp $EXTERNAL_NET any -> $HOME_NET 21 (msg:“FTP CWD ...”;
flags:A+; content:“CWD ...”; classtype:bad-unknown; sid:1229
; rev:1;)
alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:“ICMP
traceroute ipopts”; ipopts: rr; itype: 0; classtype:
attempted-recon; sid:475; rev:1;)
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS 80 (msg:“WEBATTACKS
chgrp command attempt”; flags:A+; content:“/usr/bin/
chgrp”;nocase; sid:1337; rev:1; classtype:web-application
–attack;)
Язык описания сигнатур системы Snort является описательным языком, используемым для создания любых правил. Чтобы не запутаться в сложных деталях написания собственных сигнатур, давайте пробежимся по примеру слева направо и попытаемся его понять. Можно увидеть, что в примере определяются различные виды предупреждений об опасности. Предупреждения группируются по протоколам с указанием особенностей производимых действий. Например, для ограничения возможных действий в правилах указывается IP-адрес и номера портов. IP-адрес задается переменными $EXTERNAL_NET и $HOME_NET, обычно определяемыми с использованием стиля бесклассовой междоменной маршрутизации CIDR как 10.10.10.0/24. Стиль CIDR является описанием надсети единственной строкой в таблице маршрутизации с использованием укороченной маски подсети. Надсеть включает в себя несколько сетей одного класса. Ключевое слово msg определяет сообщение, которое будет отправлено при активизации правила после нахождения заданной сигнатуры. Параметр flags определяет, какие из установленных флажков режимов работы протокола TCP используются для анализа потока данных. Ключевое слово Ipopts задает анализируемые параметры пакетов протокола IP. А слово content используется для определения уникальной последовательности данных, содержащейся в пакете. Значение ключевого слова content задается в шестнадцатеричном формате между двумя вертикальными полосами, в то время как значения остальных слов – в формате ASCII. Первое правило отслеживает любую попытку подключения к внутреннему хосту извне по номеру порта 8080 протокола TCP. Этот порт часто используется проксимодулями доступа к сети Интернет. Второе правило ищет в каждом IP-пакете часто используемую последовательность команд командного процессора shell, передаваемую по номеру порта, который меньше, чем 1024. (Запись :1023 является сокращенной формой записи номеров портов между 0 и 1023 включительно.) Третье правило задает проверку наличия команды «CWD…»,которая передается через порт 21 протокола TCP. Порт 21 по умолчанию используется протоколом передачи файлов FTP. Четвертое правило контролирует пакеты IP с установленной опцией маршрутизации записи rr(Record Route). Последнее правило контролирует прохождение строки /usr/bln/chgrp через порт 80 протокола передачи гипертекстовых файлов HTTP.
В самом общем смысле вычислительные системы можно определить как машину с конечным числом состояний. Буквально это означает, что существует предопределенное число специфических состояний машины, в которые она может перейти. Препятствующее работе систем обнаружения вторжений ограничение состоит в том, что они встретят во всеоружии известную им атаку, и только один раз (другими словами, эффективность их применения зависит от размера базы данных сигнатур, с которой работает система). Объясняется это следующим. Во-первых, как можно предвидеть внутренние характеристики вторжения, если оно еще не произошло? Нельзя предупредить о нападениях, которые еще никто никогда прежде не видел. Во-вторых, можно только оттачивать механизмы обнаружения вторжений на уже свершившихся атаках, поскольку в будущем детали этих нападений могут проясниться. Можно создать сигнатуру прошлого нападения после его свершения, но нет никакой гарантии, что атака, проведенная в прошлом, когда-либо встретится еще раз. В-третьих, системы обнаружения вторжения могут оказаться неспособными распознать новое нападение, не отличив его от присутствующего в любой сети фонового белого шума. Слишком интенсивное использование сети или большое количество ошибочных результатов ее контроля может привести к блокировке правил оповещения об атаке. И наконец, системы обнаружения вторжений могут быть обмануты даже небольшой модификацией известной атаки. Это является следствием или ограниченности принципа поиска соответствий сигнатуре характерных признаков атаки, или, что более существенно, недостатками в работе средств анализа пакета. И то, и другое может исключить всякую возможность обнаружения атаки.