В настоящее время большинство производителей программных средств защиты для домашних и корпоративных пользователей предлагают интегрированные решения, куда включены такие компоненты, как антивирус, антиспам, проактивный модуль и межсетевой экран, в сочетании со встроенной системой обнаружения вторжений (СОВ, или Intrusion Detection System, IDS*). В данной статье мы остановимся на системах обнаружения вторжений, заглянув поглубже на "кухню" сетевой защиты.


* Intrusion Detection System, IDS — программное средство, предназначенное для выявления фактов неавторизованного доступа в компьютерную систему или сеть либо нарушения их нормального функционирования и иных попыток взлома.

Общие сведения

Необходимость в IDS возникла еще в те далекие времена, когда Интернет (в ту пору ARPAnet) вышел за пределы военных и исследовательских институтов США и постепенно начал превращаться в столь же привычный инструмент, как телефон. Привилегированный доступ специалистов и ученых к стратегически важным объектам сети уступил место масштабному и практически неконтролируемому подключению случайных людей. Разумеется, первые практические наработки в области IDS появились гораздо позже, чуть более двух десятилетий назад, и заметно уступали по функциональности современным аналогам. Основополагающими документами при их построении считаются труды Джеймса Андерсона "Мониторинг угроз компьютерной безопасности" и Дороти Деннинг "О модели обнаружения вторжения" (опубликованы в 1980-х гг.).

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

Способ сбора информации

По способу сбора информации (перехвату сетевого трафика) системы обнаружения вторжений делят на два типа: host-based IDS (хостовая, или локальная) и network-based IDS (сетевая). Оба типа имеют свои особенности, определяющие в конечном счете всю архитектуру системы IDS. Здесь необходимо упомянуть следующие их принципиальные различия:

  • хостовая IDS теоретически может работать с любым типом трафика, включая изначально зашифрованный;
  • сетевая IDS не использует ресурсы процессора и память защищаемого объекта.

Исходя из того, что в гетерогенной сети с высокой вероятностью могут присутствовать клиенты с различными ОС, заметным минусом сетевой IDS становится потенциальная уязвимость к атакам, учитывающим особенности реализации различных TCP/IP-стеков, например, при обработке фрагментированного сетевого трафика. Известно несколько разновидностей таких атак.

Fragmentation Reassembly Timeout attacks — это атаки, базирующиеся на различии временных интервалов (“тайм-аутов”) стеков TCP/IP разных ОС при сборке фрагментов. Если значения тайм-аутов дефрагментатора IDS отличаются от соответствующих значений на стороне атакуемой системы, для последующего анализа будет собран неправильный поток.

TTL Based attacks — в основном такие атаки реализуются путем генерации ложных фрагментов, которые по замыслу не будут получены жертвой, но будут перехвачены и ошибочно учтены дефрагментатором IDS для текущей сессии. Ситуацию легко воспроизвести, если IDS и атакуемый объект расположены в разных сетевых сегментах.

Overlapping Fragments — при такой атаке происходит (либо не происходит) перезапись уже полученных фрагментов вновь поступающими дубликатами, имеющими аналогичный порядковый номер. В результате сессия на стороне IDS может быть дефрагментирована иначе, чем на стороне жертвы атаки.

Таким образом, чтобы обеспечить защищенность всего периметра гетерогенной сети с помощью сетевой IDS, требуется ее тщательная оптимизация, учитывающая, какое сетевое оборудование и ПО используются в каждом конкретном случае. Хостовая IDS лишена этого недостатка благодаря возможности установки программных перехватчиков как на NDIS-, так и на TDI-уровне ОС.

Метод анализа информации

По методу анализа информации IDS делятся на сигнатурные, поведенческие (накопление статистики и обнаружение аномалий), а также смешанные или комбинированного типа. Сигнатурные IDS выигрывают по скорости анализа входного потока и генерируют сравнительно немного отчетов об ошибочном детектировании, но бессильны перед еще неизвестными им уязвимостями — в этом случае как раз достаточно успешно выступают IDS с применением алгоритмов выявления статистических аномалий. Но зато последние дают ощутимое число ложных срабатываний в совершенно безобидных ситуациях повседневной работы.

Самая известная система обнаружения вторжений на основе сигнатурного поиска — это, безусловно, Snort (http://www.snort.org). Данная IDS завоевала множество почитателей во многом благодаря открытому формату хранения баз (в виде текстовых файлов), легкости их изменения и внесения собственных наборов правил. В Интернете существует некоммерческий проект Bleeding Edge Threats (http://www.bleedingthreats.net), посвященный методам борьбы с сетевыми угрозами и созданию соответствующих сигнатур для Snort.

Способ реагирования на угрозы

По способам реагирования на обнаруживаемые угрозы системы IDS можно разделить на два типа: пассивные и активные. Пассивные системы в случае идентификации вторжения обычно создают детальный отчет о произошедшем, включающий лог сетевой атаки, оповещают службу безопасности, например, по электронной почте, и предоставляют рекомендации по устранению выявленной уязвимости. Активные IDS помимо всего вышеперечисленного пытаются противостоять вторжению. Их действия могут включать в себя как разрыв текущего злонамеренного соединения, так и полное блокирование атакующего путем изменения конфигурации межсетевого экрана или иным способом.

На сегодняшний день самый распространенный тип подобных систем — активные IDS. Идеология пассивных IDS более подходит к существующим проектам типа систем-ловушек (honeypot) либо сетей на их основе (honeynet), задача которых — как можно более правдоподобно эмулировать уязвимую систему и сервисы, при этом сохраняя полную историю происходящего (включая сетевую сессию в raw-формате), не выдавая себя и не создавая дополнительной преграды для нарушителя. В итоге с высокой долей вероятности удается определить новые методы компрометации системы.

Требования к IDS

Существует принципиальная разница в программировании логики вынесения вердикта у детекторов, входящих в состав network-based IDS и host-based IDS. Основная причина — различный уровень подготовленности персонала, от которого требуется проанализировать ситуацию и однозначно отреагировать на случившееся. Часто для правильной оценки рисков необходима достаточно высокая квалификация. В связи с этим к хостовым IDS предъявляют повышенные требования по технологиям детектирования и фильтрации шумов. Для сетевых IDS без дополнительной оптимизации приемлемым уровнем false alarms (ложных срабатываний) принято считать цифру 90%, т. е. всего 10% срабатываний действительно относятся к попыткам нарушения безопасности систем. На практике за счет дополнительных усовершенствований процент ложных тревог понижается до 60% и менее, что считается очень хорошим показателем. Для современных host-based IDS аналогичный показатель не может превышать нескольких процентов, другими словами, пользователь должен быть оповещен лишь в случае реальной атаки.

Для обнаружения атак, потенциально реализуемых на любом из уровней стека TCP/IP (от сетевого до прикладного), ядро системы обнаружения вторжений должно быть построено в виде драйвера ОС, с возможностью низкоуровневого перехвата поступающих на интерфейс пакетов, которые далее будут обработаны внутренним анализатором протоколов, входящим в IDS, и непосредственно движком-детектором, окончательно определяющим характер соединения. Важный критерий здесь — скорость сканирования трафика, ведь при работе за компьютером, полностью загруженным только проверкой, не может идти речи ни о какой комфортности. Существенную оптимизацию в такого рода задачах повышения быстродействия обеспечивают математические алгоритмы, в частности, методы хеширования.

Модель OSI

Международная организация по стандартизации (International Standards Organization, ISO) спроектировала эталонную модель, определяющую семь различных уровней взаимодействия систем (рис. 1). Каждый из уровней имеет собственное стандартизованное наименование (например, сетевой, транспортный и т. д.) и перечень документов, регламентирующих список протоколов, которые используются на данном уровне. Сама модель получила название «модель взаимодействия открытых систем» (Open System Interconnection, OSI) или сокращенно модель ISO/OSI.

Рис. 1. Эталонная модель ISO/OSI.

Обязательное требование к современным IDS — модульность архитектуры, учитывающая расширяемость и возможность обновления баз, состоящих как из сигнатур атак, так и из дополнительных объектных модулей ядра-детектора, содержащих программный код. Это позволяет оперативно реагировать на обнаруживаемые угрозы любого типа и выпускать критические патчи безопасности в минимальные сроки, тем самым предотвращая глобальные эпидемии сетевых червей. Немаловажен здесь и размер обновлений IDS: в идеальном случае он должен предоставляться по инкрементному принципу, в зависимости от текущей базы клиента, и скачиваться в минимальном объеме.

Традиционно в качестве защиты от появившегося эксплойта** пользователям предлагается установить «заплатку», выпущенную производителем соответствующего ПО. Однако проблема в том, что между обнаружением эксплойта и выпуском патча всегда существует временной разрыв. Его продолжительность зависит от многих факторов, например, от того, сколько времени потребует тестирование и отладка патча. Фактически в этот период пользователь остается уязвимым. Один из возможных способов сократить этот опасный период — сбор подозрительной сетевой активности и дальнейшее взаимодействие с экспертами в области информационной безопасности


** Эксплойт уязвимости (от англ. exploit — использовать) — это обобщенное наименование компьютерных программ особого типа (обычно небольшого размера), которые используют возможности, предоставляемые ошибкой (уязвимостью) в других программных продуктах, чтобы совершить незапланированные автором этих программных продуктов действия: например, выполнение произвольного кода в контексте уязвимого приложения и т. п.

Например, “Лаборатория Касперского” разработала специальную утилиту KLDump (ftp://ftp.kaspersky.ru/utils/KLDump/KLDump.exe), позволяющую сохранять полный лог сетевой активности в файл, который затем можно отправить по электронной почте экспертам для анализа. Если вредоносность присланного файла подтвердится, пользователь получит от разработчика срочное антивирусное обновление.

Остановимся немного подробнее на вопросе возникновения уязвимостей, их классификации и сути проблемы в целом.

Использование уязвимостей

Первопричиной программных ошибок и некачественного кода смело можно назвать неизбежную циркуляцию программистской рабочей силы. Текучка в крупных ИТ-компаниях, создающих сложное многокомпонентное ПО, приводит к тому, что количество конструктивных просчетов в технических заданиях и процент однотипных логических ошибок поддерживаются практически на постоянном уровне. Просчетами в данном случае можно считать несоблюдение неких общепринятых стандартов, например, требований RFC (http://www.ietf.org/rfc.html), и низкий уровень документированности разрабатываемого проекта. В свою очередь, среди критических с точки зрения информационной безопасности ошибок можно выделить два типа:

  • отсутствие проверок выхода за границы массива;
  • небезопасная работа с функциями, которые не контролируют корректность переданных им параметров.

К первым относят так называемые ошибки переполнения — buffer overflow, heap overflow, integer overflow и другие, менее известные; исторически значимое упоминание о возможности совершения незапланированных действий при возникновении таких ситуаций зафиксировано еще в 1980-х гг. Из ошибок второго типа назовем нашумевшие ошибки форматной строки, или format string vulnerabilities, которые получили широкую огласку в конце 1990-х и изначально использовались как брешь в защите систем Unix. Одним из первых публичных эксплойтов подобной уязвимости был WuFTPd 2.6.0 Remote Root Exploit, датируемый серединой 2000 г.

Из-за растущей популярности и повсеместного внедрения разнообразных сервисов на основе Web-технологий появились новые потенциальные векторы атак, привлекающие повышенное внимание злоумышленников. Стал четко формироваться отдельный подкласс уязвимостей в сетевых приложениях, полностью написанных на скриптовых языках и активно использующих в своей работе базы данных. Для них определились новые жаргонные названия, такие, как PHP Inclusions, CrosSite Scripting, SQL Injections. Сегодняшние новостные сводки Bugtraq полны отчетов, шутливо озаглавленных: Summary Daily Web-Based Applications Security Vulnerabilities.

Когда хакер-исследователь изучает исходные тексты интересующего его приложения или, если таковые недоступны, листинги дизассемблера, найденные места, содержащие перечисленные ошибки, подвергаются тщательному анализу для оценки вероятности их использования.

Часто по ряду причин детальный разбор внутренностей абстрактной системы невозможен (понятие "система" трактуется здесь как программный код либо иное программно-аппаратное решение), и для исследователя она представляет лишь "черный ящик" с множеством входов/выходов (рис. 2). Но и даже в таком, с виду тупиковом, варианте беспроигрышной тактикой, позволяющей выявить наличие брешей, остается универсальная схема "запрос — ответ", или получение слепков реакций изучаемой системы на специально сформированные входные данные, с дальнейшим их накоплением, систематизацией и скрупулезным анализом на финальной стадии. Бинарная структура самих запросов, в частности, определяется типом прощупываемого объекта и иной спецификой, зависящей от изначально сформулированных требований к проводимому исследованию.

Рис. 2. Анализ "черного ящика": проявление ошибки типа format string в популярном IMAP-сервере.

На основании собранной информации и построенной с ее помощью статистической модели в ряде случаев есть все шансы написать полнофункциональный "эксплойт" под конкретную уязвимую систему. Разумеется, подобная методика много сложнее, чем анализ запутанных исходных кодов, и помимо больших временных затрат и терпения требует высочайшей профессиональной подготовки.

В современном динамичном мире глобальная Сеть стала тем связующим звеном, каким в XIX веке был междугородный телеграф, с той лишь разницей, что теперь в единое целое объединены сотни мегаполисов, гигантские объемы информации ежесекундно пульсируют по искусственным артериям планеты, а влияние этого технологического эксперимента ощущает на себе каждый человек. Как любой живой организм не обходится без паразитирующих вирусов, так и неосязаемое пространство Сети невозможно без злокачественных образований в том или ином виде.

Сегодня криминальная активность виртуального мира все чаще нацелена на обычных пользователей, не подозревающих, что против них совершается нечто противозаконное. Но подобная тенденция нисколько не уменьшает количества попыток проникновения на защищенные серверы крупных корпораций, где самое ценное — это промышленная информация и внутренний документооборот компании. Отчетливо наблюдается разделение труда в сообществе андерграунда: специализация одних — уязвимости серверного ПО, для других объектом повышенного внимания становится клиентское ПО, такое, как Web-браузеры, популярные почтовые агенты, разнообразные сетевые службы Windows как самой распространенной пользовательской ОС и, разумеется, самый лакомый кусок — стек TCP/IP (рис. 3). Цена критических ошибок, нелегально предлагаемых в Интернете, достигает 5000 долл.

Рис. 3. Сайт, распространяющий эксплойты уязвимостей.

По заверениям Microsoft (http://www.microsoft.com/technet/community/columns/cableguy/cg0905.mspx), с выходом ОС следующего поколения Windows Vista произойдет смена сетевого ядра, отлаженного временем и миллионами компьютеров, на абсолютно новое под кодовым названием Next Generation TCP/IP stack, существенным нововведением в котором будет полная поддержка протокола IPv6. Однако не стоит надеяться, что при подобном подходе общая архитектура системы станет более безопасной и избавится от старых ошибок, даже пройдя многочасовые лабораторные тесты.

В подтверждение этой точки зрения уместно привести некоторые выдержки из Bugtraq, датированные периодом весна-лето 2006 г. В них упоминаются (MS06-025) Microsoft Windows RRAS Buffer Overflow Vulnerability, критическая уязвимость в службе Windows Routing and Remote Access, по степени опасности сопоставимая с печально известными "дырами" в DCOM RPC (MS03-026) и LSASS(MS04-011), а также (MS06-036) Vulnerability in DHCP Client Service Could Allow Remote Code Execution, критическая уязвимость в TCP/IP-стеке Windows (и это спустя пять лет после релиза!).

Соответствующие эксплойты не получили дальнейшего масштабного распространения (в виде составной части червей либо "троянцев") лишь из-за технических сложностей реализации успешной атаки.

Вывод напрашивается сам собой: в отшлифованных годами внутренностях Windows критические ошибки встречаются до сих пор! Что же преподнесет нам релиз Vista?

Тестирование систем IDS

На сегодняшний день не существует общепринятых методик тестирования "действительных" способностей IDS-подсистем, аналогичных антивирусным тестам EICAR. Наиболее показательным, на наш взгляд, могло бы быть тестирование в условиях воздействия реальных угроз*** на стендах под защитой соответствующих продуктов.

Осенью 2006 г. в "Лаборатории Касперского" было проведено внутреннее тестирование различных средств обеспечения безопасности. В нем использовались наиболее актуальные эксплойты, воздействующие на самые разные приложения, от сервисов Windows (рис. 4) и серверных компонентов до сетевых игр. Результаты исследования представлены в отчете "Сравнительное тестирование систем предотвращения вторжений" (http://www.kaspersky.ru/downloads/word/idscomparison.doc).

Рис. 4. Denial of Service. Эффект от воздействия сетевого эксплойта на незащищенную систему.

***

Система обнаружения вторжений должна рассматриваться всего лишь как компонент широкого комплекса превентивных мер, по сути как часть защитного механизма из невзаимозаменяемых программных решений, обеспечивающих информационную безопасность. В ближайшем будущем в связи с возрастающей вычислительной мощностью и реализацией эффективных математических алгоритмов стоит ожидать распространения систем обнаружения вторжений на основе поиска аномалий с применением нейросетей качественно иного уровня.

Источники дополнительной информации

  1. Arpanet history 1957-1990, http://www.jmusheneaux.com/21bb.htm.
  2. Sumit Siddharth. Evading NIDS, revisited. SecurityFocus.com, 2005-12-06, http://www.securityfocus.com/infocus/1852.
  3. Kevin Timm. Strategies to Reduce False Positives and False Negatives in NIDS. SecurityFocus.com, 2001-09-11, http://www.securityfocus.com/infocus/1463.
  4. Андрей Беляев, Сергей Петренко. Системы обнаружения аномалий: новые идеи в защите информации. Экспресс-Электроника, 2004-02, http://www.citforum.ru/security/articles/anomalis.