Автор: Пользователь скрыл имя, 08 Декабря 2011 в 11:14, курсовая работа
Системы обнаружения сетевых вторжений и выявления признаков компьютерных атак на информационные системы уже давно применяются как один из необходимых рубежей обороны информационных систем. Разработчиками систем защиты информации и консультантами в этой области активно применяются такие понятия (перенесенные из направления обеспечения физической и промышленной безопасности), как защита "по периметру", "стационарная" и "динамическая" защита, стали появляться собственные термины, например, "проактивные" средства защиты.
Если
же говорить непосредственно о модулях
обработки данных, то, следуя логике
предыдущего раздела, каждая сигнатура
атаки в представленной схеме
обработки информации об атаке является
базовым элементом для
Сценарий
атаки в этом случае представляет
собой граф переходов, в аналогичный
графу конечного
Преимущества такого подхода очевидны — в случае раздельной обработки различных этапов атаки появляется возможность распознавать угрозу еще в процессе ее подготовки и формирования, а не на стадии ее реализации, как это происходит в существующих системах. При этом, элементной базой для распознавания может быть как сигнатурный поиск, так и выявление аномалий, использование экспертных методов и систем, доверительных отношений и прочих информационных, уже известных и реализованных, сетевых и локальных примитивов оценки происходящего в вычислительной среде потока событий.
Обобщающий
подход к анализу позволяет
Рисунок 5. Схема интегрального обнаружения компьютерных атак
Распределенные атаки выявляются путем агрегации данных о поступающих атаках и подозрительных действиях и сопоставления шаблонов и статистической фильтрации. Таким образом, оповещение о подозрительных действиях в компьютерных системах происходит на нескольких уровнях:
Ядро
системы обнаружения
Для поиска сигнатур в сетевых пакетах используются правила, формирующие перечень опций (паспорт), по которым осуществляется проверка поступающих сетевых пакетов. Существующие системы (как, например, Snort или PreludeIDS, которая использует правила Snort) применяют строчный вид описаний таких правил:
alert tcp $HOME_NET
1024:65535 ->
$EXTERNAL_NET 1024:65535
(msg:"BLEEDING-EDGE TROJAN Trojan.Win32.Qhost C&C Traffic Outbound
(case1)";
flow:established;
dsize:>1000;
content:"|00 00 00 28 0a 00 00 02 0f|Service Pack 1|00|";
classtype:trojan-activity;
reference: url,/www.viruslist.com/en/
sid:2007578;
rev:1;
)
Такой вид более удобен для быстрой машинной обработки, но менее пригоден для человека. Кроме того, в нем отсутствуют возможности для расширения функциональности, которые заложены в XML-подобных реализациях сигнатурных баз. Например, простая "скобочная" (от англ. brace-like) конфигурация позволяет записать ряд управляющих переменных и описать правила в гораздо более приятной и понятной визуальной форме, сохраняя возможность для легкого расширения функциональности. Так, определение фаз атак, защищаемых объектов и совершаемых в сети событий может выглядеть следующим образом:
type_defs {
alert = 1;
warning = 2;
fail = 4;
}
srcdst_defs {
HOME_NET = 195.208.245.212
localhost = 127.0.0.1
}
proto_defs {
tcp = 1;
udp = 2;
tcp-flow = 10;
}
phase_defs {
port_scanning = 1;
exploiting = 2;
icmp_sweeping = 3;
ftp_bouncing = 4;
shell_using = 5;
dir_listing = 6;
file_opening = 7;
}
А
секция определения угроз
treat_defs
= {
treat {
name = file-unauthorised-access;
id = FUAC;
msg = "message in english";
}
}
Кроме указанных в гибкой форме угроз, фаз атак и защищаемых объектов, интегральная обработка информации, связанная с выявлением угроз информационной безопасности, позволяет ввести также сервис-ориентированный подход к обнаружению атак, формируя автоматическим или ручным способом описания сетевых и локальных служб, а также приоритезируя важность, с точки зрения обеспечения должного уровня, информационной безопасности и жизнедеятельности информационной инфраструктуры сети.
service_defs
= {
service {
name = pop3;
msg = "";
rulesets = "backdoors, pop3scanners";
security_tolerance = 3
life_insurance = 5
}
}
Сами же правила выглядят, например, следующим образом:
ruleset {
name = backdoors;
rule {
id = 0x1000;
type = alert;
proto = tcp;
src = localhost;
dst = 195.208.245.0/24:2000;
msg = "service:\:what is bad in this alert";
options = AP,vice_versa;
contains = "|0a0a0d03|";
phase = exploiting;
treat = file-unauthorized-access;
revision = 1;
}
}
Здесь учитываются как классические признаки события (тип события, протокол обнаружения, источник и объект воздействия, краткое сообщение), так и добавочные — фаза атаки, тип угрозы, к возникновению которой относится данное событие. При этом сами правила могут быть сгруппированы в наборы, пригодные затем для связывания их с установленными в защищаемой системе сетевыми и локальными службами.
Если же вернуться к эффективности проверки правил в системах обнаружения сетевых атак, то следует отметить следующий факт. На текущий момент все правила в системах СОА проверяются следующим образом (см. Рис. 6). Проверка неоднородных правил происходит раздельно, правило за правилом, при этом однородные операции над пакетами выполняются все время порознь. Такой подход не позволяет эффективно распараллелить обработку сетевых пакетов, полностью использовать возможности нескольких конвейеров на современных процессорах, а также оптимизировать поиск частично похожих правил-сигнатур.
Рисунок 6. Неэффективный способ проверки
Для того чтобы ликвидировать эти недостатки, предлагается однородные операции сводить в единые списки со ссылками на исходные правила (см. Рис. 7). Параллельность обработки в этом случае достигается за счет использования "корзин" и "штрафных мячей" (каждое правило имеет пустую корзину, а за каждое совпадение шаблона или другой части правила в корзину добавляется один мяч; при достижении определенного количества мячей правило считается совпавшим). Единство списков позволяет убрать неэффективные, совпадающие в разных правилах, шаблоны.
Рисунок 7. Метод послойной проверки
Однако есть минус и такого подхода, когда, например, шаблоны связаны друг с другом (вот пример такого шаблона: найти первое вхождение, затем относительно него через несколько байт проверить наличие определенной бинарной последовательности). Правда, таких правил — подавляющее меньшинство (даже если судить по общепринятым правилам популярной СОА Snort), что позволяет вынести их в отдельный класс распараллеливаемых методов и использовать в них любые простые методы последовательной проверки.
Помимо
преимущества в распараллеливании
процесса поиска сигнатур, становится
возможным применение методов одновременного
поиска многих сигнатур в сетевом
потоке за один проход (можно, например,
построить один большой конечный
автомат для большинства
Экспериментальные проверки различных вариантов реализации методов одновременного поиска многих сигнатур показали, что наиболее быстрой оказывается реализация большого конечного автомата, модифицированного таким образом, чтобы он позволял "пропускать" однородные ошибки — пропуски и вставки произвольной длины, а также ошибки замены (в результате модификации сигнатуры, что является довольно частым явлением, с целью ее сокрытия от СОА).
Наиболее сложные в проверке правила (шаблоны) можно предварительно компилировать в бинарные подключаемые модули (как это сделано, например, в системе RealSecure IDS).
Заключение
Современный
подход к построению систем обнаружения
сетевых вторжений и выявления
признаков компьютерных атак на информационные
системы полон недостатков и
уязвимостей, позволяющих, к сожалению,
злонамеренным воздействиям успешно
преодолевать системы защиты информации.
Переход от поиска сигнатур атак к
выявлению предпосылок
Кроме
того, такой переход должен способствовать
повышению эффективности