Механизм функционирования
Как показывает анализ имеющихся сегодня систем обнаружения атак на уровне сети, все они используют в качестве источника данных сетевой трафик, который исследуется на наличие в нем признаков атак. Также возможен анализ журналов регистрации сетевого программно-аппаратного обеспечения (например, маршрутизатора, межсетевого экрана или анализатора протоколов), фиксирующего весь обрабатываемый им трафик. В идеале эти средства должны работать в любых сетях, но практически средства обнаружения атак обнаруживают нарушения политики безопасности в сетях с разделяемой средой передачи данных (shared media), в которых одна линия связи используется попеременно несколькими компьютерами [Олифер 1-99]. То есть данные системы функционируют в технологиях Ethernet (и, следовательно, Fast Ethernet и Gigabit Ethernet), Token Ring, FDDI. Это связано с тем, что в таких сетях один компьютер может получить доступ ко всем пакетам, передаваемым в сегменте сети. Это качество существенно удешевляет системы обнаружения атак, т. к. практически независимо от числа узлов в сегменте сети трафик между ними может контролироваться всего одной системой обнаружения атак. В случае индивидуальных линий связи между узлами (например, ATM) необходимо устанавливать систему обнаружения атак между каждой парой взаимодействующих узлов, что нецелесообразно по финансовым соображениям. Именно поэтому существующие реализации сетевых систем обнаружения атак поддерживают в основном сетевые технологии с разделяемой средой передачи Данных. Кроме того, системы обнаружения атак имеют еще одно ограничение. Они могут анализировать не любые стеки протоколов, а только самые распространенные. Из всех существующих на сегодняшний день систем обнаружения атак примерно 95% работают со стеком TCP/IP и 5% — со стеком SMB/NetBIOS. Коммерческие системы, поддерживающие IPX/SPX, не говоря уже о других стеках, мне не известны.
Механизм функционирования системы обнаружения атак на уровне сети показан на рис. 6.21 и состоит из 4-х основных частей, отвечающих за:
q захват пакетов;
q фильтрацию и сборку фрагментов;
q распознавание атак;
q реагирование на них.
Если система обнаружения атак реализуется в сетевом оборудовании (например, Cisco Catalyst 6000 IDS Module (в коммутаторе) или Cisco Security Integrated Software (в маршрутизаторе)), то место сетевого адаптера занимает, один из компонентов сетевого оборудования. Если система обнаружения атак построена по принципу анализа журналов регистрации сетевого оборудования, то в этой роли выступает журнал регистрации (например, созданный программой TCPdump). В зависимости от того, откуда берутся данные для анализа (ссетевой карты, с компонентов коммутатора или из журнала регистрации), составляющая системы, отвечающая за захват пакетов, может быть реализована по-разному, но все остальные части (фильтрация, распознавание и реагирование) остаются без изменения.
Программное обеспечение системы обнаружения атак разделяется на две части:
q Ядро, которое осуществляет взаимодействие с сетевым адаптером, частью сетевого оборудования или журналом регистрации, хранящим сетевой трафик. Ядро отвечает за захват данных. В сложных системах обнаружения атак, использующих захват с сетевого интерфейса, взаимодействие обеспечивается драйвером самой системы обнаружения атак, подменяющим драйвер операционной системы. Помимо более эффективной работы, это позволяет реализовать и ряд дополнительных функций, например, stealth-режим, не позволяющий обнаружить и атаковать саму систему обнаружения атак. Более простые системы обнаружения используют и анализируют данные, получаемые от драйвера операционной системы. Это ядро по решаемым задачам практически полностью аналогично ядру анализатора протоколов.
q Программное обеспечение, выполняющее декодирование и анализ протоколов, с которыми работает сетевой адаптер, а также реализующее соответствующую логику работы системы при обнаружении атак и реагировании на них
Захват пакетов
Первый этап — захват пакетов сетевого трафика (packet capture). Как уже упоминалось выше, в зависимости от того, откуда берутся сетевые пакеты, эта часть может быть реализована по-разному. На момент написания книги абсолютное большинство систем обнаружения сетевых атак было построено на базе обычных или специализированных компьютеров, в которых использовалось специализированное программное обеспечение, функционирующее под управлением обычной операционной системы, захватывающее сетевой трафик с обычной сетевой карты. По такому принципу построены системы RealSecure Network Sensor, NetPowler, Snort и др. В некоторых случаях операционная система "урезается" до минимума, чтобы устранить все лишнее и мешающее работе системы обнаружения атак. Так строятся системы RealSecure for Nokia или VelociProwler Intrusion Detection Appliance. В обоих случаях захват сетевого трафика осуществляется с простой сетевой карты, которая может работать в двух режимах:
q в обычном режиме, в котором сетевая карта обрабатывает только пакеты, предназначенные именно ей;
q в "смешанном" или "беспорядочном" (promiscuous) режиме, когда сетевая карта обрабатывает все пакеты, передаваемые в сетевом сегменте;
В том случае, если система обнаружения реализуется в сетевом оборудовании, то трафик может быть получен:
q с объединительной платы (backplane) сетевого оборудования (по такому принципу работает Cisco Catalyst 6000 IDS Module);
q от программного обеспечения сетевого оборудования (как, например, в Cisco Secure Integrated Software).
Фильтрация
Несмотря на то, что системы обнаружения атак получают доступ ко всем захваченным сетевым пакетам, не все из последних подлежат обработке. Например, пакеты не поддерживаемых системой обнаружения атак протоколов не могут быть ею обработаны. Другим примером являются фрагментированные пакеты, которые не анализируются некоторыми из систем обнаружения атак. Фильтрующий модуль отвечает за то, чтобы отбросить пакеты, которые должны игнорироваться системой обнаружения атак (например, IPX-трафик).
Существует два типа фильтров.
q Системные.Позволяют отсеивать или, наоборот, контролировать сетевой трафик на основе данных о распознаваемых сигнатурах. Например, если включено обнаружение атаки ColdFusion, то фильтрующий модуль будет отслеживать HTTP-трафик на 80 TCP-порте.
q Пользовательские.Отклоняют или, наоборот, контролируют трафик, соответствующий определенным правилам, установленным администратором системы обнаружения атак. Например, если в контролируемой сети функционируют узлы под управлением только ОС Windows, то не имеет смысла искать в этой сети признаки атаки Tribe Flood Network, которая присуща исключительно ОС Linux или Solaris.
Распознавание атак
Модуль распознавания является самым важным звеном в любой системы обнаружения атак. От качества его реализации зависит эффективность всей системы. Этот модуль использует три широко известных метода для распознавания атаки:
q Сигнатуры, основанные на шаблоне (pattern-based signatures), выражении или строке, говорящих об атаке или иной подозрительной деятельности.Эти сигнатуры содержат некоторые ключевые слова или выражения, обнаружение которых и свидетельствует об атаке. Например, фрагмент "cwd ~root" в FTP-сеансе однозначно определяет факт обхода механизма аутентификации на FTP-сервере и попытке перейти в корневой каталог FTP-сервера. Другим примером является обнаружение в сетевом трафика апплетов Java с включением шестнадцатеричного фрагмента "СА FE BA BE". Эти же сигнатуры позволяют идентифицировать многих "троянских коней", если последние используют стандартные значения портов. Например, "троянец" NetBus, как это уже демонстрировалось выше, определяется по доступу к 12345-му и 12346-му портам, a BackOrifice 31337-му порту. Все сигнатуры по аналогии с фильтрами делятся на два класса— системные и пользовательские. Первые предопределены заранее, а вторые создаются и настраиваются администратором системы обнаружения атак.
q Сигнатуры, основанные на контроле частоты событий или превышении пороговой величины.Эти сигнатуры описывают ситуации, когда в течение некоторого интервала времени происходят события, число которых превышает заданные заранее показатели, Примером такой сигнатуры является обнаружение сканирования портов или обнаружение атаки SYN Flood. В первом случае пороговым значением служит число портов, просканированных в единицу времени. Во втором случае — количество попыток установления виртуального соединения с узлом также за единицу времени.
q Обнаружение аномалий.Данный тип сигнатур позволяет обнаруживать события, отличающиеся от нормальных. Например, если система обнаружения атак фиксирует вход сотрудника компании в сеть в субботу в 2.30, то это может свидетельствовать о том, что пароль этого пользователя украден или подобран, и его использует злоумышленник для несанкционированного проникновения.
Анализ сетевого трафика может осуществляться двумя способами — путем синтаксического разбора отдельных сетевых пакетов при помощи регулярных выражений и через анализ всего протокола в целом. Системы, использующие первый способ, основаны на механизме захвата необработанных (raw) пакетов сетевого трафика и пропускании их через синтаксический анализатор, который ищет в этих пакетах соответствие некоторому шаблону или сигнатуре [Graham l-00]. Примером такого шаблона можно назвать текстовый фрагмент "/etc/passwd", характеризующий попытку подбора пароли или запрос на передачу файла паролей по сети. Данные системы функционируют по следующему алгоритму [Network ICE l-00]:
1. В захваченном трафике выбирается один сетевой кадр, в котором будут искаться различные сигнатуры.
2. Начиная с самого первого байта сетевого кадра, выделяется группа байтов той же самой длины, что и рассматриваемая сигнатура. Затем две группы байтов (сигнатура и фрагмент пакета) сравниваются (рис. 6.22).
3. Если две группы байтов тождественны, то атака обнаружена.
4. Если группы не одинаковы, то происходит продвижение на один байт вперед в последовательности байтов сетевого кадра, и процесс сравнения повторяется до тех пор, пока не наступит конец последовательности (рис. 6.23).
5. Как только достигается конец сетевого кадра, система обнаружения атак начинает сравнение со следующей сигнатурой и так до конца базы данных.
6. Если в первом сетевом кадре не найдено соответствие ни одной из известных сигнатур, то начинается анализ второго сетевого кадра и весь процесс повторяется сначала.
Системы, основанные на анализе протокола в целом, захватывают все множество атак, а не только самые распространенные, тем самым приводя к уменьшению ложных срабатываний. Они способны провести границу между вполне безобидными и опасными событиями, например, найти отличия Back Orifice PING от Back Orifice compromise. С другой стороны, время добавления новой сигнатуры в базу данных систем обнаружения атак, основанных на обработке всего протокола, несколько больше, чем для системного анализа отдельных пакетов. Кроме того, базы данных сигнатур этих систем, как правило, не могут быть пополнены самим пользователем — ему приходится дожидаться обновления сигнатур со стороны производителя.
Функционирование этих систем отличается от такового для предыдущих систем (приводится пример алгоритма, иллюстрирующий разницу с описанным выше алгоритмом):
1. В захваченном трафике выделяется один сетевой кадр, в котором будутискаться различные сигнатуры.
2. Зная формат сетевых кадров Ethernet и протоколов более высокого уровня, мы можем уменьшить число возможных операций, т.к. не имеет смысла искать соответствие атаке в первых байтах Ethernet-кадра, содержащих адреса источника и получателя. Мы переходим сразу к 13-му и 14-му байтам данного кадра и определяем тип протокола верхнего (сетевого) уровня. В нашем случае — это протокол IP (значение 0x0800) (рис. 6.24). Необходимо отметить, что в данном примере рассматривается формат кадра Ethernet DIX (Ethernet II) и размер поля, идентифицирующего протокол верхнего уровня, равен 2 байтам. В случае других типов кадра (например, для 802.3/LLC) длина этого поля составила бы один байт, его значение было бы равно 6, а начиналось бы оно не с 13-го, а с 15-го байта.
3. 10-ый байт заголовка IP-пакета (24-й байт от начала кадра) идентифицирует протокол верхнего (транспортного) уровня. Размер этого поля равен одному байту, а его значение — 6, т. е. протоколом верхнего уровня является протокол TCP. Можно заметить, что мы опять отбросили некоторые поля заголовка IP-пакета, не являющиеся необходимыми для анализа (рис. 6.25).
4. На следующем шаге мы анализируем первые две пары байтов заголовка TCP-пакета — это порты источника и получателя (35—38 байты первоначального сетевого кадра). В нашем случае значение порта получатели равно 80, т. е. это протокол HTTP (рис. 6.26).
5. Пропуская 20 байтов заголовка TCP-пакета, мы переходим непосредственно к полю данных (55-й байт), которое для протокола HTTP начинается с URL. Необходимо отметить, что для уменьшения рассматриваемого сетевого кадра некоторые байты из него удалены. Именно с данной позиции мы и ищем соответствие сигнатуре "GET /cgi-bin/./phf" (рис. 6.27).
6. Как только система обнаружения атак "упирается в" конец сетевого кадра, она начинает сравнение со следующей сигнатурой и так до конца базы данных.
7. Если в первом сетевом кадре не найдено соответствие ни одной из известных сигнатур, то начинается анализ второго сетевого кадра и процесс повторяется сначала.
Можно заметить, что то, для чего в первом алгоритме нам понадобилось бы выполнить 55 операций, в данном алгоритме было достигнуто всего за 7 шагов.
Однако первые из названных двух категорий систем имеют преимущества над системами анализа протокола. В связи с тем, анализируя весь трафик, они могут обнаруживать атаки, пропускаемые другими системами. Например, если Web-сервер компании настроен на нестандартный порт (то есть не на 80, а, к примеру, 8083), то, вероятнее всего, система, основанная на анализе протоколов, пропустит атаку на этот сервер, т.к. не будет сопоставлять график нестандартного порта с HTTP-трафиком. Следовательно, любые атаки на нетрадиционные порты не будут обнаружены. Системы, осуществляющие анализ каждого пакета, не связаны с номерами портов и могут «вычислить» атаку в трафике, направленном к любому из 65 535 портов. Справедливости ради стоит сказать, что некоторые средства, опирающиеся на анализ протоколов (например, система RealSecure Network Sensor илиBlackICE Sentry) могут обнаруживать атаки для протоколов, работающих на не типичных портах. Реализуется это путем переопределения стандартных значений.
Реагирование на атаки
Мало обнаружить атаку, надо еще и отреагировать на нее. Как только атака зарегистрирована, система обнаружения атак предоставляет широкий выбор вариантов реагирования, начиная от уведомления администратора безопасности и выдачи сигнала тревоги на консоль системы управления сетью и заканчивая реконфигурацией маршрутизаторов и межсетевых экранов. Эти варианты изменяются от системы к системе, но, как правило, включают в себя оповещение администратора через консоль или по электронной почте, завершение соединения с атакующим узлом и/или запись сессии для последующего анализа и сбора доказательств, реконфигурацию сетевого оборудования.