Существует два способа определить внештатную ситуацию: проверка соответствия шаблону и эвристический анализ - анализ "похожести" ситуации на внештатную. Второй имеет очевидное преимущество: позволяет отлавливать ситуации, еще неизвестные в момент создания программы. Большинство современных антивирусных пакетов снабжена эвристическим анализатором, позволяющим замечать подозрительные явления, похожие на вирусную активность.
Недостатком современных сетевых экранов является именно их "шаблонность" - они умеют определять лишь внештатные ситуации (т.е. атаки) из заранее запрограммированного списка. Самообучение и разумность этих систем оставляет желать лучшего. И совершенно напрасно: "Разумный" сетевой экран смог бы предотвратить многие прискорбные события - от обычных малозаметных атак до распространения в Сети вирусов и червей типа SirCam и CodeRed.
Рассмотрим гипотетический сетевой экран с эвристическим анализатором (впрочем, скоро он перестанет быть гипотетическим, соответствующая программа уже создается). Допустим, он умеет считать статистику по IP-пакетам, и рассчитывать числовые показатели:
- Трафик, количество корреспондирующих хостов и количество пакетов за период времени
- Трафик, количество корреспондирующих хостов и количество пакетов, удовлетворяющих произвольным условиям: установленные TCP-флаги, корреспондирующий TCP-порт.
Посмотрим, как поведет себя эвристический анализатор в стандартной и во внештатной ситуациях.
Сначала анализатору нужно пройти "обучение" - набор статистики в стандартной ситуации. Будут записаны значения всех числовых показателей и допустимые отклонения от них в состоянии "нормальной работы".
По окончанию периода обучения эвристический анализатор считает отклонения от записанных значений внештатной ситуацией, и сигнализирует о ней. Далее у администратора экрана есть выбор - игнорировать сообщение (никаких изменений в поведении экрана не будет), назначить его штатной ситуацией (экран в дальнейшем будет считать такие значения параметров нормальными) или заблокировать активность. Недостатком всех эвристических анализаторов являются ложные тревоги, но при достаточно продолжительном периоде обучения они будут возникать очень редко.
Рассмотрим реакцию эвристического анализатора на некоторые известные типы атак.
Syn-flood. Атакующему серверу посылается большое количество ложных запросов на подсоединение с большого количества адресов, что мешает ему обрабатывать настоящие запросы на подсоединение. Анализатор обнаружит необычно высокое количество корреспондирующих адресов и пакетов с установленным флагом SYN.
Octopus. Атакующая машина (или несколько машин) подсоединяются к атакуемому серверу по максимально возможному числу каналов. Анализатор обнаружит подозрительно высокое количество корреспондирующих портов с одного IP-адреса.
Spam relay. При неправильно сконфигурированном почтовом сервере-жертве возможно заниматься рассылкой рекламы через него, что тратит трафик и грозит санкциями со стороны пострадавших. Анализатор обнаружит подозрительно высокий трафик через 25-й порт. Ложная тревога возникнет при экстремальном увеличении объема почтовой переписки.
Portshell / backdoor. После взлома очень часто хакер устанавливает связь с сервером (с целью управления) через какой-либо порт, не используемый другими службами. Анализатор обнаружит трафик через неизвестный порт. Ложная тревога может возникнуть лишь при первом использовании сетевого сервиса (маловероятно, т.к. все сервисы должны были бы быть задействованы еще в период "обучения").
Почтовый вирус (Anna Kournikova, SirCam и т.п.). Вирус производит интенсивную рассылку самого себя по адресам из почтовой книги или по случайным электронным адресам. Анализатор заметит подозрительно высокий трафик через 25й порт.
Сетевой червь. Злонамеренная программа, ищущая уязвимые сервера и заражающая их. Анализатор сигнализирует о большом количестве корреспондирующих хостов и отклонении от нормы среднего размера пакета.
Эти типы атак даны лишь для примера, подтверждающего, что большинство известных атак будут замечены эвристическим анализатором, в который, заметьте, не закладывалось НИКАКОЙ информации о них. Он способен обнаружить их просто потому, что они являются нетипичной для данного шлюза сетевой активностью, и точно также, вероятно, он обнаружит и многие другие, ранее неизвестные типы атак.