Идентификация сканеров в 1Р-сетях статистическим методом
Бредихин С. В., Костин В. И., Щербакова Н. Г.
Институт вычислительной математики и математической геофизики СО РАН
1. Введение
Известно, что сети, построенные на IP-протоколах, регулярно подвергаются различным процедурам зондирования с целью определения текущего состояния сетевых устройств. В результате выполнения этих процедур определяются адреса устройств, доступных в изучаемой зоне, протоколы или сервисы, которые они поддерживают. Зондирование проводится с разными целями. Например: поисковые системы изучают информационные серверы с целью обнаружения нового контента; p2p клиенты находят своих коллег; системные администраторы проводят ревизию сети с целью своевременного обнаружения уязвимых компьютеров и принятия превентивных мер защиты.
Ничего предосудительного в этих исследованиях нет до тех пор, пока информация, полученная в результате зондирования, не попадает к злоумышленникам. Они ищут незащищенные компьютеры для несанкционированного размещения на них своих, как правило, вредоносных, программ. Для поиска подходящих компьютеров используется «сетевая разведка», в результате проведения которой можно получить не афишируемую информацию о составе сетевых устройств и текущие характеристики их настроек.
Одним из видов сетевой разведки является сканирование доступных ip-адресов и (или) tcp/udp-портов [1]. Для этого используются специальные программы, которые, например, могут определять, по каким tcp/udp-портам устройства исследуемой зоны настроены на «слушание» (от англ. listening). Эти порты являются уязвимым точками сети, поскольку, как правило, через них осуществляется неконтролируемый доступ - вторжение. Такой тип сканирования далее будем называть tcp/udp сканированием.
В связи с этой угрозой, системным администраторам желательно знать, как действуют сканеры и каковы их сильные и слабые места, чтобы если не предотвратить, то зафиксировать попытки сканирования и, возможно, вторжение. Последствия вторжения могут быть весьма неприятными, например, заражение компьютера и приведение его в состояние «зомби» или атака сетевого устройства путем организации непрерывного потока запросов, что может блокировать его работоспособность.
Далее, под сканером мы будем понимать сетевой компьютер (хост), на котором функционирует какая- либо программа сканирования. Вопрос о том, как корректно отличить нормальное поведение активного хоста от хоста, осуществляющего вторже-
ние, является фундаментальной проблемой любой системы обнаружения сетевых аномалий.
На этапе проектирования алгоритма для обнаружения процесса сканирования возникает ряд трудностей. Во-первых, нет четкого определения активности. Например, считать ли сканером активное устройство, делающее попытки установить tcp-соединения с небольшим количеством сетевых устройств, если известно, что часть попыток неуспешна. Во-вторых, не определено, какая степень детализации объекта сканирования требуется. Например, это множество портов одного локального адреса или это один порт множества смежных адресов. В-третьих, априори неясно, сколько времени требуется наблюдать за работой хоста, прежде чем принять решение, является ли он сканером. И, наконец, что считать враждебным сканированием. В конечном счете, считать ли процесс сканирования безопасным или нет, решать сетевым администраторам.
2. Базовые системы NIDS
В состав системы защиты сети от несанкционированного доступа (NIDS - аббревиатура от Network Intrusion Detection System), как правило, входят подсистемы, выявляющие процедуры враждебного сканирования. Программы этих подсистем анализируют поступающий в сеть трафик. Методы, заложенные в основу алгоритмов анализа поведения сетевых устройств, можно условно разделить на две основные группы. Первая группа использует метрику - N подозрительных событий за время T, так называемые базовые методы, вторая использует методы теории вероятностей и математической статистики.
Среди систем NIDS лидируют две - Snort (M. Roesch, 1998) и Bro (V. Paxson, 1998). В состав обеих входят подсистемы обнаружения сканеров. Исследуемым материалом является «сырой» трафик, собираемый с помощью функций библиотеки libpcap. Далее будем использовать следующие обозначения: протокол - protocol, адрес источника -src_ip, адрес получателя - dst_ip, порт источника - src_port, порт получателя - dst_port.
2.1. Система Snort [2] является de-facto стандартной системой для обнаружения несанкционированного вторжения. Snort может в реальном времени производить анализ трафика и протоколов, чтобы предотвратить атаки различных типов. Предварительно в Snort закладывают знания об активных устройствах исследуемой сети, т. е. заранее формируется множество адресов сетевых устройств, являющихся легальными, активными
© 2008 Бредихин С. В., Костин В. И., Щербакова Н. Г.
Проблемы информатики, №1, 2008 г.
источниками и получателями данных. Например, такими устройствами являются dns, proxy и web серверы. Эти знания позволяют ускорить работу системы и сократить число ложных результатов. Snort использует специальный язык, определяющий набор правил для анализа трафика.
В основу подсистемы выявления сканирования заложено предположение, что сканер не имеет информации о хостах сканируемой сети, поэтому большинство его обращений к устройствам сети будет неуспешным. Далее мы будем рассматривать только tcp/udp сканирование. Выявление сканеров производится на уровне препроцессоров. Препроцессор flow, получая сырой трафик, собираемый с помощью функций библиотеки libpcap (Unix), отслеживает неправильно сформированные пакеты, используемые при так называемом «скрытом сканировании», и формирует потоки записей на основе пяти полей IP пакетов {protocol, src_ip, src_port, dst_ip, dst_port}. Препроцессор следующего уровня анализирует потоки на предмет выявления сканирования и вырабатывает сигналы тревоги. В первых версиях системы препроцессор portscan посылал сигнал тревоги, если
- хост с адресом src_ip совершал N попыток установить соединение с хостами защищаемой сети, используя при этом P различных портов за T секунд в случае использования tcp протокола;
- хост с адресом scr_ip совершил N попыток контактировать с хостами защищаемой сети, используя при этом P различных портов за T секунд в случае использования udp протокола.
В обоих случаях это могут быть попытки типа: один src_ip -> одному dst_ip или один src_ip -> многим dst_ips. Пороги N, P и T являются конфигурируемыми параметрами. В более поздних версиях системы (текущая версия 2.8.2) для обнаружения сканирования на втором этапе используется препроцессор sfportscan. Следует заметить, что в Snort заложена возможность исключать штатные и включать пользовательские препроцессоры.
Препроцессор sfportscan определяет следующие типы tcp/udp сканирования:
- portscan one->one - хост с адресом src_ip активно обращается к разным портам хоста dst_ip;
- decoy one->one - один хост активно обращается к разным портам хоста dst_ip, используя при этом в качестве адреса источника собственный адрес src_ip и вымышленный (spoofed);
- distributed portscan - хосты с разными адресами src_ips обращаются к разным портам одного хоста с адресом dst_ip;
- portsweep - хост с адресом src_ip обращается к разным хостам с адресами dst_ips, используя один и тот же порт назначения.
Пользователь может задать один из уровней защиты: «low», «medium» и «high». Если выбран уровень low, то для src_ip рассматриваются только неудачные попытки (N) контактировать с хостами защищаемой сети за определенный интервал T. По прошествии интервала T посылается сообще-
ние, и счетчик сбрасывается. Этот уровень почти не дает ложных результатов. Если выбран уровень medium, то рассматриваются все попытки контактировать с хостами защищаемой сети за время T. При этом по прошествии интервала T также посылается сообщение, и счетчик сбрасывается. Если выбран уровень high, то счетчики ведутся непрерывно, а сообщения посылаются по прошествии T. Таким способом выявляется медленное сканирование.
Во время работы препроцессор ведет счетчики, значения которых приводятся в сообщениях. Priority Count -сколько плохих ответов (отказ или нет ответа) получено данным src_ip. Connection_ Count - счетчик активных соединений для данного хоста, ведется для адресов источников и адресов назначения. Эта мера информативна для tcp-соединений. IP_Count - счетчик числа хостов с адресами src_ips, которые пытались контактировать с данным dst_ip; значение счетчика может быть небольшим для сканирования тира one->one и может быть большим для активных хостов и распределенного сканирования. Port_Count - счетчик портов dst_ports, по которым производились попытки контактировать с хостом dst_ip; этот счетчик, совместно с IP_Count используется для различения сканирования one->one и decoy one->one. Scanned/Scanner IP Range - в случае сканирования типа portsweep (один к многим) сохраняется диапазон сканируемых адресов, в случае portscan (один к одному) диапазон адресов сканеров.
Пользователи имеют возможность настроить механизм обнаружения сканеров применительно к своей сети (сетям) следующим образом:
(а) определять множество адресов, за которыми следить; множество адресов, которые не считать сканерами; множество адресов, которые не считать сканируемыми. Это можно сделать как априори, так и в результате наблюдения за сигналами тревоги.
(б) Следить за соотношениями Connection Count /IP Count, Port Count/IP Count, Connection Count/Port Count для выявления ложных сигналов тревоги. Соотношение Connection Count/IP Count должно быть как можно более высоким для сканирования типа portscan и низким для сканирования типа portsweep. Соотношение Port Count/IP Count должно быть высоким для portscan и низким для portsweep. Соотношение Connection Count/ Port Count должно быть низким для portscan и высоким для portsweep. Большое значение счетчика Priority Count является хорошим показателем как для portscan так и для portsweep, если только не используется экранирование.
(в) Если это не помогает, снизить уровень защиты.
Таким образом, метод выявления сканирования, используемый системой Snort, относится к базово-
му типу. При создании анализатора сканирования авторы ориентировались на выявление всех вариантов сканирования, определенных в классической утилите сканирования Nmap [3].
2.2. Система Bro [4] - это открытая автономная система пассивного мониторинга, предназначенная для выявления подозрительной активности. Данные о трафике собираются с помощью функций библиотеки libpcap. Концептуально Bro делится на два уровня.
На первом уровне, например, происходит фильтрация плохо сформированных пакетов, определение, для каких протоколов прикладного уровня передавать все пакеты на следующий уровень для проведения тщательного анализа, а для каких собирать только информацию о tcp/udp сессиях. Обработка tcp/udp пакетов происходит следующим образом. Если встречается запрос на установление tcp-соединения, то, если по прошествии таймера T не было получено ответа, соединение будет иметь статус connection_attempt. Если в ответ получено подтверждение, то статус будет connection_established, который может измениться на connection_finished, если сессия закончится в рассматриваемый период. Если получен отказ, то статус будет connection_rejected. Сохраняются времена начала и конца сессии, количество переданных и полученных байтов. В случае udp, если хост с адресом src_ip посылает запрос устройству с адресом dst_ip, используя при этом порт источника src_port и порт назначения dst_port, то считается, что устанавливается псевдо-соединение, которое будет иметь статус «udp_reply», если от dst_ip будет получен соответствующий ответ, иначе статус будет «udp_request». Результаты работы первого уровня передаются на следующий уровень, в который закладывается политика обеспечения безопасности. Мы не будем останавливаться на способах взаимодействия уровней и языке задания правил безопасности.
Подсистема выявления сканирования, Scan Analyzer, функционирует на втором уровне. В подсистему, также как и в случае Snort, могут закладываться знания о легально активных хостах и адресах назначения, к которым происходит многочисленные обращения. Система Bro различает два типа сканирования: сканирование адресов и сканирование портов. Для каждого типа сканирования определяется свой набор порогов активности, и если величина активности превышает один из этих порогов, то система генерирует соответствующее этой величине сообщение, например, предупреждение или сигнал тревоги. Scan Analyzer выявляет кроме того, попытки взломать сервер с помощью подбора имени пользователя и пароля, на которых мы не будем останавливаться.
Сканирование адресов: удаленный хост с адресом src_ip пытается установить tcp-соединения с определенным количеством адресов назначения или, в случае udp протокола, пытается контактировать с определенным количеством адресов на-
значения. В общем случае не прослеживается, чем закончилась попытка установить соединение; для выделенных протоколов, таких как ftp и telnet, определенных на первом уровне, внимание уделяется неудачным попыткам. Для выявления сканирования IP адресов ведутся две таблицы: distinct_ peers [src_ip, dst_ip], где сохраняется информация обо всех различных парах взаимодействующих адресов, если появилась новая пара, то увеличивается счетчик в таблице addr_count[src_ip], где ведется учет, со сколькими различными адресами взаимодействовало устройство с данным src_ip. Если это количество превысило один из заданных порогов, посылается уведомление. По умолчанию используется шкала порогов {100, 1000, 10000}, т. е. уведомление посылается по превышению 100, затем по превышению 1000 и т.д. Информация собирается и для сканирования, инициированного локальными устройствами. Для них определяется своя шкала порогов, по умолчанию {1000, 10000}.
Сканирование портов: для каждого src_ip ведется таблица distinct_ports[src_ip, dst_port], где сохраняется информация о том, по каким портам назначения dst_port контактировал src_ip. Вторая таблица port_count[src_ip] хранит информацию о количестве портов назначения для данного src_ip. Если это количество превысило один из заданных порогов, посылается уведомление. По умолчанию порог равен 25. Заметим, что информация собирается безотносительно к адресу назначения. Если порог превышен, Scan Analyzer начинает собирать информацию, к какому адресу назначения относится порт. Эта информация позволяет уменьшить количество устройств, ложно принятых за сканеры, однако это дорогостоящая мера.
В подсистеме выявления сканирования намеренно не учитывается фактор времени, чтобы не пропустить «тонкие» сканеры, например такие, которые в течение короткого промежутка времени работают интенсивно, а затем подолгу не проявляют активность.
Заметим, что на текущий момент Scan Analyzer не способен выявлять распределенное сканирование. Пороги, адреса назначения и адреса источников, которые следует игнорировать при выявлении сканирования, задаются при настройке Scan Analyzer с помощью инициализации переменных, scan variables. Scan functions определяют, что следует предпринять, если обнаружено сканирование со стороны src_ip. Например, если при настройке указано, что можно рвать коннективность и src_ip не попал в число тех, с кем нельзя ее прерывать никогда, то она будет прервана. Система Bro позволяет принимать кардинальные меры борьбы с злоумышленниками.
Таким образом, методы выявления сканирования, используемые в Bro, также как и в Snort, можно отнести к базовым. Хотя Bro выявляет не все виды сканирования, является ресурсоемким и основывается на статических порогах, наличие шкалы порогов и отсутствие временных рамок де-
лают его достаточно привлекательным. Базовые методы показывают хорошие результаты в случае массированного, методичного сканирования. Однако выбор порога является камнем преткновения в базовых методах.
3. Расширение базовых систем и вероятностные подходы
Базовые методы имеют недостатки. Трудно правильно выбрать порог, а от этого зависит число устройств, ложно принятых за сканеры, и число не выявленных сканеров. Также трудно выявить сканеры, которые посылают запросы в случайном темпе или используют большие временные задержки в своей работе. Такое поведение невозможно выявить с помощью метрики N/T. Возникает необходимость в более изощренных методах выявления аномального поведения сетевых устройств.
В рассматриваемых нами примерах предполагается, что известно «нормальное» состояние сети, т. е. распределение вероятностей обращений к активным сетевым устройствам и сервисам. Например, вероятности обращений к адресу P(dst_ip), порту P(dst_port) или совместная вероятность P(dst_ip, dst_port). Тогда, если устройство с адресом src_ip обращается к какому-либо устройству с адресом dst_ip и использует в качестве порта назначения dst_port, а P(dst_ip, dst_port) мала, то устройство попадает в число подозреваемых. Основная трудность состоит в том, какие именно вероятности, условные вероятности и совместные вероятности хранить, тем более что нужно собирать информацию в течение длительного периода времени. Рассмотрим работы, в которых предлагаются различные подходы к решению этой задачи.
3.1. Авторы [5] особое внимание уделяют изучению медленных сканеров, к которым не применимы базовые методы. Вводится основополагающее понятие footprint - количество различных комбинаций dst_ip/dst_port, т. е. след, который оставляет источник. Здесь и далее параметр1/параметр2 означает, что параметр2 фиксирован, а параметр1 меняется. Авторы предполагают, что сканер ищет конкретные сервисы, предоставляемые хостами данной сети, т. е. сканируется большое количество адресов по небольшому количеству портов. Самый простой подход (первая мера) состоит в подсчете числа различных комбинаций, используемых источником.
Однако сканеры зачастую интересуются портами, открытыми на определенных хостах, по этим данным они, например, идентифицируют операционную систему исследуемого хоста. Поэтому необходимо следить и за комбинациями dsp_port/dst_ ip (вторая мера), т. е. иметь полную информацию о деятельности источника. В качестве третьей меры авторы предлагают рассматривать количество обращений к закрытым портам, т. е. рассматривать комбинации dsp_port/dst_ip, где порты не поддерживаются dst_ip или не доступны для src_ip. И,
наконец, рассматривается метрика, которая обобщает идею наблюдения за закрытыми портами.
Предполагается, что априори известно распределение нормального трафика защищаемой сети по хостам и портам, т. е. если в пакете встречается данная комбинация dst_port/dst_ip, обозначим ее х, то известна вероятность ее появления P(x). Определим индекс аномальности пакета (или события), содержащего пару х через отрицательный логарифм правдоподобия: A(x) = -log(P(x)). Индекс аномальности множества X = xv x2,.. определим как A(X) = £xeXA(x). Таким образом, чем больше необычных комбинаций использует сканер, тем быстрее он будет обнаружен. Заметим, что здесь игнорируется тот факт, что распределение вероятностей зависит от времени суток.
Понятие индекса аномальности события используется в модели Spice [5], состоящей из двух компонент: сенсора и коррелятора. В задачу сенсора входит определение индекса аномальности наблюдаемых событий. События с высоким значением этого индекса передаются коррелятору, который группирует их и генерирует отчеты об обнаруженных аномалиях.
Индекс аномальности события определяется на основе таблиц вероятности отдельных элементов, условных и совместных вероятностей. Например, для каждой четверки (dst_port, dst_ip, src_port, src_ip) вычисляется вероятность ее появления и сохраняется в таблице. Однако такая таблица будет слишком объемной, кроме того, если процент нормального трафика высок, то будет много ложных тревог. Поэтому можно рассматривать вероятности различных комбинаций этих параметров, например, P(dst_port), P(src_port, dst_port), P(dst_ ip, src_ip, src_port). Для определения независимости между случайными величинами предлагается использовать графическую модель - байесовскую сеть [6].
Коррелятор объединяет события в группы. Функция, определяющая насколько связанны между собой события et и e2 имеет вид:
f(ei,e2) =C1h1(ei,e2) + C2h2(ei,e2) + - + Ckhk(ei,e2)' где c , ... ,ck- константы, а h, ... , hk- эвристические функции, отражающие, каким образом события объединяются между собой при сканировании, они строятся на основании знаний о поведении сканеров. Например, проверяется, используется ли один и тот же адрес источника, порт назначения, сеть назначения; как соотносятся времена событий, адреса назначения, порты назначения; как соотносятся ближайшие события; как растет значение порта источника по сравнению с ростом адреса назначения и т.д. Сильно связанные между собой события (значение функции f() превосходит заданный порог) объединяются в подгруппы. Слабо связанные между собой группы не рассматриваются.
Работу коррелятора можно представить как построение графа, в вершинах которого находятся события, а ребра отображают связи между ними.
Для того, чтобы добавить новое событие (вершину) к графу, требуется просчитать, насколько связано это событие с каждым из уже имеющихся узлов. Поскольку число узлов может оказаться большим, то для выполнения этой операции используется метод «имитации отжига» [7]. Индекс аномальности группы событий - это сумма индексов событий. Если сумма превысила некоторый порог, то посылается отчет о группе аномальных событий.
Таким образом, сенсор принимает решение на уровне пакетов, а коррелятор объединяет пакеты в группы. Частично это можно сделать с помощью генерации потоков (netflow), в которых пакеты агрегируются в группы на основе содержимого полей пакета. Однако не все связи между событиями можно определить с помощью потоков, например, распределенное сканирование.
Модель Spice [5] была частично реализована в системе SPADE (Statistical Packet Anomaly Detection Engine). Рассматривались только tcp пакеты с флагом SYN, как считающиеся наиболее информативными. Препроцессор flow, входящий в Snort и включенный в эту систему, преобразует сырой трафик и формирует структуры данных, содержащие нужные поля. SPADE обеспечивает возможность выбора, на основании каких данных будет определяться аномальность пакетов. Это либо одна из совместных вероятностей P(src_ip, src_port, dst_ip, dst_port), P(src_ip, dst_ip, dst_ port), P(dst_ip, dst_port), либо байесовская сеть, определяющая, как связаны между собой параметры src_ip, src_port, dst_ip, dst_port. Поскольку выбор порога является узким местом методики, SPADE предоставляет возможность регулирования порога в зависимости от нагрузки сети. Кроме того, отчеты об аномальности могут поступать как на основе периодичности, так и на основе некоторых статистических характеристик.
Для определения качества используемой методики введены две метрики: производительность (efficiency) и эффективность (effectiveness). Производительность - это отношение количества выявленных эталонных сканеров (true positives), к количеству адресов источников, определенных алгоритмом как сканеры (all positives). Эффективность - отношение количества выявленных эталонных сканеров (true positives) к количеству эталонных сканеров (trues). Отметим, что определенные здесь метрики качества алгоритма используются в работах других авторов, например, в [8].
Для проверки работы SPADE использовался специально подготовленный блок данных трафика, в котором были выявлены эталонные сканеры. Затем результаты SPADE были проанализированы с использованием различных значений параметров: порогов и вероятностных мер. Было выявлено, что между производительностью и эффективностью существует обратная связь: если повышается эффективность, то понижается производительность. Результаты показали, что методика дает хорошие результаты при правильно выбранных параметрах.
Следует заметить, что низкая производительность приемлема для SPADE, при условии, что пакеты будут переданы на следующий уровень, который выявит часть ложных тревог.
Использование двухступенчатой структуры в модели Spice представляется интересным подходом, позволяющим производить тщательный анализ данных. Однако Spice предполагает достаточно большой объем предварительной работы по объединению событий в группы.
3.2. В работе [9] предлагается совместить возможности базовых методов и метода определения аномальности, предложенного в [5]. В базовом варианте для выявления сканирования учитывается весь трафик, инициированный устройством с адресом src_ip за определенный период времени, а в [5] аномальность определяется на основе обращения к редко используемым комбинациям dst_ip/dst_ port. Однако если сканер действительно зачастую использует редкие пары, то обратное неверно. В результате, во-первых, небольшое количество обращений к редко используемой паре приводит к тому, что источник определяется как сканер, во вторых, обращение к часто используемой паре будет иметь большую степень правдоподобия, и сканер будет пропущен.
Рассматриваются две новых характеристики, отличающие поведение сканера от поведения обычного хоста. Во-первых, если рассмотреть взаимодействие сканера с устройством с адресом dst_ip и использованием порта назначения dst_port, то для сканеров, в отличие от обычных хостов, при этом зачастую не используется более трех пакетов, так как сканеры либо запрашивают неактивный сервис, либо в случае активного намеренно не завершают процедуру установления соединения. Поэтому предлагается рассматривать только входящие потоки, содержащие менее 4 пакетов. Во-вторых, большинство сканеров последовательно перебирает адреса одной и той же подсети, в отличие от нормальных хостов, обычно использующих случайный набор адресов назначения при поиске. Поэтому можно рассматривать сканирование не отдельных адресов, а подсетей. Предлагается вести счетчик для адреса источника src_ip, использующего комбинацию dst_ip/dst_port в рамках подсети (сканирование подсетей).
Кроме использования эвристических предположений предлагается использование так называемой «usage based» схемы, подобной используемой в [5]. Отслеживается история контактов для адреса источника src_ip в рамках временного интервала, но оценивается каждое взаимодействие с уникальным адресом dst_ip по порту dst_port по-разному. Для устройства с адресом src_ip рассматриваем число обращений к некоторому порту dst_port. Если устройство с адресом src_ip впервые контактирует с устройством с адресом назначения dst_ip с использованием данного порта назначения, то к индексу аномальности ScanScore
■ ^ " src_ip
прибавляется не единица, как в базовом методе, а
1/1+lg(countdst.p/dst_por), где count - число различных источников, обращавшихся к этой паре. Таким образом, учитывается, часто ли используется такая пара, например, обращение к веб-сайтам, которые используются многими, будет иметь меньший вес, чем редко используемая случайная комбинация. Кроме того, в данном методе, наряду с понятием time window (время, в течение которого ведется наблюдение), используется понятие connection window, т. е. сохраняется информация об N контактах для каждого источника, это позволяет правильно оценивать сканеры с низкой скоростью сканирования. Хост с адресом src_ip объявляется сканером, если суммарный индекс аномальности ScanScore за время time window или connection
src_ip 1
window превосходит заданный порог.
Проведение экспериментов выявило, что предлагаемые подходы позволяют улучшить характеристики по сравнению с классическим базовым подходом. Обозначим через Bk базовый подход, через Hk- подход с использованием обоих эвристических предположений (k - порог, пороги одинаковые при двух подходах) и через U - «usage based» (здесь порог свой). Если классический базовый метод Y событий за время time-window расширялся возможностью следить за N = connection-window адресами назначения, то базовый метод показывал достаточно хорошие результаты. Обозначим через N_trues количество выявленных сканеров, а через N_false количество ложно принятых за сканеры. Использование эвристического метода Hk несколько уменьшило N_trues, но значительно сократило N_false. Использование метода U значительно увеличило N_trues, оно самое высокое, при этом N_false стало немного выше, чем при использовании Hk, но ниже, чем при базовом методе. Таким образом, расширение базового метода позволило значительно снизить количество ложных тревог.
3.3. В работе [10] для выявления сканирования рассматривается поток пакетов между защищаемой сетью и внешним миром. В процессе анализа трафика строятся две таблицы. В одной таблице собираются все пары (src_ip, dst_ip), в другой - все пары (src_ip, dst_port). Эти таблицы используются для определения необычности распределения использования адресов или портов назначения. С вероятностной точки зрения ставится цель выявить, у какого источника распределение P(dst_ip\src_ip) значительно отличается от P(dst_ ip) для всех источников. Аналогично, распределение P(dst_port\src_ip) отличается от общей вероятности P(dst_port).
Пусть D - множество адресов назначения защищаемой сети, с которыми был контакт извне, а D е D - множество адресов, с которыми контактировал src_ip. Соответственно, рассматриваются все множество портов P и множество портов P , используемых src_ip.. Пусть n(dst_ip.) - количество источников, которые контактировали с dst_ip. в рассматриваемой выборке. Определим априорную вероятность нормального контакта с dst_ip. :
P (dst ip) =n (dst ip)/ Z ,. n n (dst ip),
normv —ry sv —ry die D sv —rv
здесь суммирование производится по всем адресам назначения, с которыми был контакт.
В противоположность этому для атакующего устройства, которое с равной вероятностью может обращаться к любому адресу назначения, определяем вероятность:
PJdstip) = 1/\D\.
Аналогично определяются вероятности P (dst_port ) и P (dst_port ).
normv —1 . atty —1 j
В предположении, что достижение каждого адреса является независимым событием, определяются вероятности контакта с множеством адресов назначения D для нормального хоста и атакующего Pnorm(Dj) и Patt(Di). В общем виде формулы выглядят так:
P(D) =P(D={dst_ip1, dst ip, ... })*P(\Di\).
Здесь вероятность контактировать с конкретным множеством адресов умножается на вероятность P(\Di\) контактировать с множеством адресов данной мощности. Это делается для того, чтобы внести дополнительную характеристику, в предположении, что атакующий обращается к большому количеству адресов/портов в отличие от нормального хоста. В свою очередь,
P(D. = {dstip , dst_ip2, ... })
определяется через произведение вероятностей контакта с каждым отдельным адресом. Мы не рассматриваем вопрос, насколько достоверны априорные вероятности и не будем приводить точные формулы.
Если для некоторого адреса источника src_ip зафиксировано множество адресов назначения Di, такое что P (D) > P (D), адрес объявляется ска-
attv v normv г' 1
нером. На практике вычисляются отрицательные логарифмы правдоподобия:
L (D) = —ln( P (D )); L t(D ) = -ln(P t(D )).
norm norm att att
И, если для src_ip верно неравенство L„orm(D) - Latt(D) > 0, то устройство с адресом src_ip объявляется сканером.
В предложенном методе учитывается как нестандартное использования адресов или портов, так и обращения к большому числу адресов и портов. Остается невыясненным, как определять вероятность доступа к устройствам, к которым еще никто не обращался. Более того, нет оценки, достаточно ли различаются, например, вероятности контакта с множеством адресов назначения для нормального и атакующего хостов, чтобы на их основании сделать предположение о том, является ли хост сканером.
4. Метод последовательного анализа
Модели, о которых пойдет речь ниже, основаны на «Последовательном анализе» (ПА) А. Вальда (1902-1950) [11] - способе проверки статистических гипотез, при котором необходимое число наблю-
дений не фиксируется заранее, а определяется в процессе самой проверки. Метод ПА позволяет ограничиться значительно меньшим числом наблюдений, чем при способах, в которых число наблюдений фиксировано заранее. Одно из главных утверждений [11] состоит в том, что процедура ПА в случае двух простых альтернативных гипотез и наличии однородной независимой выборки оптимальна по числу шагов.
Оставляя в силе вышесказанное предположение, сформулируем суть метода ПА. Пусть X -случайная величина, а х1,..., хп , ... - последовательность независимых и одинаково распределенных наблюдений за X. Допустим, что относительно этого распределения имеется два предположения. Гипотеза Н0 - наблюдения распределены с плотностью р0(х), а гипотеза Н1 - наблюдения распределены с плотностью р1(х). После каждого наблюдения предоставляется выбор из трех возможных решений: принять Н0 и закончить наблюдения, принять Н1 и закончить наблюдения, не принимать ни одну из гипотез и продолжить наблюдения.
Решающая процедура 5* определяется следующим образом. Фиксируются два порога: верхний А и нижний В, такие что 0 < В < 1 < А . Пусть выполнено п наблюдений (п=1,2,...). Обозначим через Ьп (х1,..., хп) отношение правдоподобия:
^(х'.....х")-п ^ ■
Процедура 5 на шаге п такова: если
Ьп (х1,..., хп) > А , то принимается гипотеза Н1 и процесс наблюдения заканчивается; если
Ьп (х1,..., хп) < В , то принимается гипотеза Н0 и процесс наблюдения заканчивается; если
В < Ьп(х1,...,хп) < А , то выполняется еще одно наблюдение, вычисляется новое отношение правдоподобия Ьп+1(х1,..,хп+1), для которого вновь применяется 5*.
Эта процедура характеризуется вероятностями ошибок и средними числами наблюдений:
а = а(А, В) = Р{ принята Н1 / верна Н0} -ошибка первого рода,
в = в (А, В) = Р{ принята Н0 / верна Н1} -ошибка второго рода;
п0 - п0(А,В) - Е(п/Н0), п1 - п1(А,В) - Е(п/Н1), где п - число наблюдений (случайная величина) до принятия окончательного решения, а Е - математическое ожидание. Зададим желаемые вероятности ошибок первого и второго рода а0 и в0 и воспользуемся тремя результатами из [11].
Во-первых, фактом, что среди всех решающих правил 5', обладающих свойством
«(¿■^«о. Р(З') <р0,
последовательный критерий отношения вероятностей 5* имеет минимальные средние числа наблюдений:
п0(8") < п0(8<), п1(8') < П1(8<).
Во-вторых, вместо А и В можно использовать приближенные значения:
А' = 1-1, В' = в
а 1 -а
В третьих, формулами для вычисления среднего числа наблюдений, которые зависят от параметров p0(x), pl(x), а и p.
Таким образом, задав параметры а, р, p0 и р1 можно построить алгоритм принятия той или иной гипотезы за конечное число шагов.
5. Модели на базе метода последовательного анализа
Известно несколько моделей (и алгоритмов на их основе), базирующихся на методе ПА, для выявления сканеров в ip-сетях [8, 12]. Исходными данными этих алгоритмов является информация о трафике, зафиксированная в точках наблюдения. На основании анализа этих данных необходимо определить множество ip-адресов сетевых устройств, которые предположительно являются сканерами. Поскольку единой модели поведения сканеров не существует, в каждом случае исследуется своя модель поведения.
Наше внимание привлек подход, представленный в работе [8]. Рассматриваемые в ней модель и алгоритм TRW не только используют эвристические предположения по поводу поведения сканеров, но и применяют метод проверки предположений на основе оптимального метода последовательного анализа [11], связывающего пороги с ошибками первого и второго рода.
5.1. Модель TRW
В основе модели TRW (Threshold Random Walk) [8] лежит предположение о том, что сканеры чаще, чем не сканеры, предпринимают попытки установить tcp-соединения с несуществующими сетевыми устройствами (ip-адрес назначения не используется) или попытки запросить несуществующие сервисы (tcp-порт назначения не используется).
Рассматривается фрагмент сети; ip-адреса устройств, входящих во фрагмент, считаются локальными адресами. Исследуются tcp-соединения, проходящие через контрольные точки, отделяющие фрагмент от глобальной сети. При проверке работы соответствующего алгоритма исходными данными являлась предварительно собранная информация о tcp-сессиях, полученная с помощью системы Bro [4], установленной в точках наблюдения. Если рассматривать трафик в реальном времени, то при поступлении первого пакета на установление tcp-соединения нельзя сразу определить, будет ли соединение успешным. Однако
в случае небольшого размера исследуемого фрагмента сети можно хранить данные о том, какие сетевые устройства активны и какие сервисы они обслуживают.
Будем считать, что произошло событие, если удаленный хост с адресом src_ip произвел первую с начала времени наблюдения попытку установить ^р-соединение с локальным хостом с адресом dst_ ip. Попытка считается успешной, если соединение установлено, и неуспешной, если получен отказ или не было получено ответа.
Для каждого удаленного адреса src_ip рассматривается последовательность наблюдений за событиями. Результат наблюдения на шаге i характеризует случайная величина У., определяемая следующим образом: У. - 0, если попытка соединения успешна, и У1 -1, если попытка соединения неуспешна. Итак, для каждого src_ip строится последовательность наблюдений У1, У2,...
Определяются две гипотезы: гипотеза Н1 состоит в том, что устройство с адресом src_ip является сканером, а гипотеза Н0 - что устройство с адресом src_ip не является сканером.
Анализируя последовательность наблюдений У1,У2,... необходимо за конечное число шагов сделать заключение, какая из гипотез верна для устройства с адресом src_ip.
Предположим, что если гипотеза Н. верна, то случайные величины У. | , /= 1, 2,... , ]= 0, 1, независимы и одинаково распределены. Обозначим через Ру I ] условную вероятность случайной величины У. при верности гипотезы И. . Выразим распределение Бернулли для У.:
Р[Уг. = 0| Н 0] =в0, Ру = 1| Н 0] = 1 -в0, ру = 0| Н,] = е„ Ру = 11Н] = 1 -в!.
Из предположения о том, что попытка установить соединение более успешна для не сканеров,
чем для сканеров, ясно, что в0 >в1.
Следуя методике ПА, определим отношение правдоподобия для вектора событий У=(У1,...,Уп):
-РУАНА
MY) = П
1РУ\ио
(1)
Тогда неравенства для порогов выглядят следующим образом [11]:
1-р
а
Ло
1-а
Приблизительную оценку для числа наблюдений N , требуемых для принятия решения, можно выразить в виде формул:
E[N\H0]:
а In—+ (1- а)1п ^ Р
а_ 1
e0hA+(i-6
Pln^ + (1-P)ln E[N\H1]= а
а
1- -0.
-00
1- р
1- а
1- ■0!
e.in^+a-ejin
1 0О 1-е»
(2)
Механизм принятия решения основан на пошаговом обновлении значения Л(У) и сравнении полученного значения Л(У) с верхним и нижним порогами п и п0 соответственно. Если Л(У) > п , то принимается гипотеза Н1. Если Л(У) < г/0, то принимается гипотеза Н0. Если Т|0<Л(У)<Г|1 , то продолжаем наблюдение, т. е. переходим к рассмотрению следующего события. Величина Л(У) осуществляет так называемое случайное блуждание между величинами г/0 и .
В работе [8] через в обозначена вероятность обнаружения сканера:
/3=Р{ принята Н1/ Н1}.
Соответственно, вероятность ошибки второго рода Р{ принята Н0/Нх} = \- р.
Видно, что число шагов зависит от четырех параметров: а, в, 90, 9j. Таким образом, определив эти параметры и проводя пошаговое вычисление отношения правдоподобия для каждого удаленного src_ip за конечное число шагов можно принять решение, какая из гипотез справедлива.
В работе приведены результаты исследования, позволяющие рационально задать значения а, р,
90 , 0j. В рассматриваемом блоке данных предварительно было выделено множество эталонных сканеров, обозначим его TRUESCAN. Это множество ip-адресов сканеров, которые желательно выявить с помощью предлагаемого алгоритма. Для оценки алгоритма используются приведенные в п. 3.1 характеристики: производительность и эффективность. Сформулируем их в терминах гипотез.
Производительность P - отношение количества ip-адресов, правильно распознанных как сканеры (принадлежат множеству TRUESCAN) к общему количеству ip-адресов, которые алгоритм определил как сканеры:
принята гипотеза И1 / верна гипотеза Н1 принята гипотеза И1
Эффективность E - отношение количества ip-адресов, правильно распознанных как сканеры (принадлежат множеству TRUESCAN) к общему количеству эталонных сканеров:
принята гипотеза Их / верна гипотеза Их |TRUESCAN|
По этим параметрам алгоритм сравнивается с Bro и Snort. Выясняется, что TRW показывает наивысшую эффективность при производительности выше, чем 0.96.
5.2. Модель TRWSYN
Эта модель [12] является модификацией модели TRW и предназначена для обнаружения сканеров в транзитной сети. Для его работы: во-первых, не требуется априорных знаний о реакции хостов на запрос на установление tcp-соединения; во-
вторых, он пригоден для сети с ассиметричной маршрутизацией.
В данной модели, также как и в TRW, рассматриваются попытки устройства с адресом src_ip установить tcp-соединение с устройством с адресом dst_ip. Но статус tcp-соединения определяется не на основе одного пакета с флагом SYN, а на основе последовательности пакетов.
В качестве исходных данных рассматривается последовательность потоков. Сырые данные группируются в потоки (flows) на основании следующих правил: пакет принадлежит потоку, если поля его tcp/ip заголовка соответствуют фиксированной пятерке {src_ip, dst_ip, src_port, dst_port, protocol}; время, в которое появился первый пакет, соответствующий пятерке, считается временем начала потока; поток считается завершенным, если истек установленный таймер; временем завершения потока является время появления последнего пакета. Заметим, что при проверке работы алгоритма исходные данные, также как и в случае TRW, были собраны предварительно. Это делалось намеренно, для того, чтобы иметь возможность определить множество «реальных» сканеров, с которым можно сравнивать результаты работы алгоритма.
Обозначим через flow.src_ip, flow.dst_ip, flow. pkts и flow.flag адреса источника и назначения, количество пакетов в потоке и tcp-флаги соответственно. В модели TRWSYN считается, что произошло событие для потока flow.src_ip, если поток закончился. Если flow.src_ip содержит один tcp-пакет с флагом SYN, то соединение считается неуспешным (Y=1). Если flow.scr_ip содержит несколько пакетов или один пакет без флага SYN, то соединение считается успешным (Y=0). На самом деле, реальное соединение может быть и неуспешным, но без этой погрешности алгоритм не применим к транзитной сети.
В алгоритме TRWSYN основной цикл для вычисления значения Л^) для каждого flow.src_ip выглядит следующим образом: если
(flow.pkts > 1) или
(flow.pkts == 1 и flow.flag != SYN)),
то Л^) = Л^)*P[Y- = °IH] ,
т = °IH °]
иначе, если (flow.pkts= = 1) и (flow.flag==SYN),
то Л (7) = Л(7 )*
т=i\H1]
P[Yi = ЦН °]
Механизм принятия решения относительно каждого scr_ip выглядит так: если Л(7) >пР то хост с данным scr_ip считается сканером, а если Л(7) <п0, то хост с данным scr_ip не считается сканером.
5.3. Модель TAPS
В основе модели TAPS (Time-based Access Pattern Sequential Hypothesis Testing) [12] лежит предположение о том, что сканеры имеют боль-
шую пропорцию соотношения 1р-адресов к портам или, наоборот, портов к ip-адресам в сравнении с не сканерами. В качестве механизма порождения событий используются временные интервалы. Мотивация выбора истечения заданного интервала времени как события базируется на наблюдении, что атакующим устройствам необходимо поддерживать определенную скорость сканирования.
Задаются два параметра T - временной интервал и k - параметр соотношения. В качестве исходных данных рассматривается последовательность потоков. Каждые T секунд происходит событие. Рассмотрим некоторый src_ip и все flows, попавшие в интервал, для которых flow.src_ip=src_ip. Подсчитываем количество различных адресов назначения flow.dst_ip, обозначим его #ip , и количество различных портов назначения flow.dst_port,
обозначим его #port.
# ip # port Если - > k или - > к,
# port # ip
то событие успешное (Y. =1); (3)
# ip ¿у, # p0rt ¿у
если -< к и -< к ,
# port # ip
то событие неуспешное (Y. =0). (4)
На основании полученных данных вычисляется отношение правдоподобия (1) и сравнивается с заданными порогами.
Алгоритмы TAPS и Snort зависят от скорости канала передачи данных. Этот фактор учитывается с помощью коэффициентов k/T (#ip/#port за T секунд) для TAPS и N/T (#ip за T секунд) для Snort. Для высокоскоростных каналов фактор выше, чем для низкоскоростных. Для Snort приходится выбирать разные коэффициенты в зависимости от скорости канала, чтобы получить хорошие результаты. В случае TAPS, в основе которого лежит метод последовательного анализа, эта зависимость гораздо ниже. Фактически можно пользоваться одной и той же величиной k/T для каналов с разными скоростями передачи
Для оценки алгоритма определяются три характеристики:
— коэффициент успеха R - отношение количества обнаруженных реальных сканеров к общему количеству реальных сканеров (то же, что эффективность E);
— коэффициент ложного обнаружения R+ -отношение количества не сканеров, объявленных как сканеры, к общему количеству реальных сканеров;
— коэффициент потерь R~ - отношение количества пропущенных сканеров к общему количеству реальных сканеров.
По этим коэффициентам сравниваются алгоритмы, реализующие модели Snort, TRWSYN и TAPS. Выясняется, что TAPS имеет наивысший коэффициент R при самых низких значениях
Rf+ и Rf-. Далее следует TRWSYN, Snort оказался самым неэффективным. Следует заметить, что рассматривалась ранняя версия Snort, где для выявления сканирования вычислялось только соотношение N/T.
6. Модификация алгоритма TAPS
Для обнаружения сканирующих устройств мы предлагаем модификацию алгоритма, предложенного в модели TAPS [12], который интересен по трем причинам. Во-первых, он не предполагает априорных знаний об исследуемом участке сети. Во-вторых, он расширяет базовый подход, делая выбор метрики N/T не столь критичным. В-третьих, мы обладаем опытом использования такой метрики для выявления «зомбированных» (инфицированных) локальных хостов [13]. Помимо сканеров, обнаруживаемых алгоритмом TAPS, наш алгоритм выявляет «тонкие» сканеры, те которые интенсивно работают в коротком временном интервале, затем делают значительный перерыв и вновь возобновляют сканирование.
6.1 Постановка задачи
Формат исследуемых данных соответствует понятию flow, предложенном в Cisco IOS NetFlow [14]. Данные о трафике непрерывно поступают от маршрутизаторов и накапливаются на рабочей станции в виде блоков значительного объема. В роли коллектора потоков выступает рабочая станция, оснащенная пакетом утилит flow-tools [15] для работы с потоками формата [14] и дополнительными утилитами. Коллектор настроен на агрегирование информации за фиксированный интервал времени M. Результатом работы коллектора являются файлы, состоящие из записей, содержащих нужные для работы алгоритма поля.
Анализируя множество таких записей (блок данных), накопленных за время M, необходимо определить адреса устройств, которые ведут себя «неадекватно». Время для проведения анализа ограничено, не более M, т. е. до получения следующего блока данных, в противном случае результаты устаревают и теряют значимость. Рассматривается только tcp/udp трафик.
6.2 Алгоритм
Наш алгоритм базируется на методе последовательного анализа [11]. Аналогично TAPS событием является истечение временного интервала T, где T < M. Для каждого адреса источника, проявившего активность во время текущего интервала, проверяются соотношения (3) и (4) и пересчитывается отношение правдоподобия (1). В пошаговой нотации наш алгоритм выглядит так:
Входные данные: Блок данных со статистикой, полученной за интервал M. При работе алгоритма анализируются следующие поля записей:
{t1, protocol, src_ip, src_port, dst_ip, dst_port}, где t1 - время начала сбора потока.
Шаг 0. Упорядочиваем блок данных по полю t в порядке не убывания.
Шаг 1. Инициализируем S - множество подозреваемых ip-адресов источников, S_TEMP -множество ip-адресов источников, встретившихся за промежуток времени T, множество сканеров SCAN (верна гипотеза H1) и множество не сканеров - NOTSCAN (верна гипотеза H0). Задаем значения параметров алгоритма T, k, п0 , П , ^о и 9j .
Шаг 2. Рассматриваем первую строку блока данных. Она содержит следующие поля: t1_1, src_ip_1, dst_ip_1, dst_port_1. Задаем значение начальной временной отметки T° : = t1_1.Зафиксируем src_ip_1. Помещаем src_ip_1 в множество S и в множество S_TEMP.
Инициализируем Da1- множество различных значений поля dst_ip, встречающихся в записях, где адресом источника выступает src_ip_1 и Dp1 - множество различных значений поля dst_port, встречающихся в записях, где адресом источника выступает src_ip_1. Каждому адресу источникаsrc_ip_j будем ставить в соответствие множества Da.. и Dp.,
при этом Vi, j (src_ ip_ j = src_ ip_ i <=> i = j).
Помещаем dst_ip_1 в множество Da1, а dst_ port_1 в множество Dp1.
Шаг 3. Если файл закончился, остановка, иначе рассматриваем очередную строку j.
Если src_ ip_ j е SCAN или src_ ip_j e NOTSCAN, то перейти на Шаг 8 - пропускаем строку, иначе: Если src_ ip_ j g S, то помещаем src_ip_j в множество S и в множество S_TEMP и инициализируем соответствующее отношение правдоподобия
Лj := 1.
Если dst_ ip_ j g Daj, то помещаем dst _ip _j в
множество Da .
j
Если dst _ port_ j g Dpj, то помещаем dst _ port _ j в множество Dp..
Шаг 4. Проверяем, истек ли таймер T. Таймер считается истекшим, если выполняется неравенство: (t1_j - T°) > T. Если таймер истек, то
обновляем значение T°, T° := t1_j, и переходим на Шаг 5, иначе переходим на Шаг 3.
Шаг 5. V src_ip_i е S_TEMP (i=1,..\S_TEMP\) производим следующие действия.
(а) Вычисляем мощность соответствующих множеств Da. и Dp.. Обозначим |DaJ = #ip , |DpJ = # port.
(б) Обновляем отношение правдоподобия Лi (1), соответствующее адресу src_ip_i, следующим образом:
# ip # port 1 -9, Если —-> k или —--> k, то A. := Л.
# port (событие успешно)
# ip
i-e„
иначе,
# ip # port 9,
если --¿ k и —-¿ k , то Л. := Л. ■ —
# port # ip 90
(событие неуспешно)
(в) Сохраняем текущее значение Л1.
Шаг 6. V src_ip_i е S_TEMP сверяем соответствующее значение Л( с установленными порогами. Если Л( - n , то добавляем src_ip_i в множество сканеров SCAN, исключаем его из множества S и переходим на Шаг 7. Если Лi ^ п0 , то добавляем src_ip_i в множество NOTSCAN, исключаем его из множества S и переходим на Шаг 7. Иначе переходим на Шаг 7, не производя никаких действий.
Шаг 7. Vi (src_ip_i е S_TEMP) инициализируем множества Dp. := 0 , Da. := 0. Инициализируем множество адресов источников, исследованных за текущий период, S_TEMP := 0.
Шаг 8. Переходим на Шаг 3.
После завершения чтения всех записей блока данных, накопленных за интервал времени M,, программа, реализующая алгоритм, приостанавливает работу до получения следующего блока Mi+1. В результате работы программы над блоком M,, из множества всех адресов источников выделяются два основных множества SCAN и NOTSCAN. Множество SCAN, представляющее основной интерес, содержит ip-адреса сканеров. Для каждого такого ip-адреса доступна дополнительная информация, например, число шагов, затраченных до принятия решения, и тип сканирования (порты/адреса).
6.3 Особенности
В отличие от алгоритма TAPS, анализирующего потоки, построенные в ходе работы, в нашем случае формат исследуемых данных заранее фиксирован и определяется идеологией, предложенной в Cisco IOS NetFlow. Так же как и TAPS, разработанный алгоритм использует механизм временных интервалов, т. е., производит обновление отношения правдоподобия каждые T секунд. При этом в алгоритме TAPS прекращение сетевой активности наблюдаемого устройства с адресом src_ip в рассматриваемый период является показателем того, что устройство ведет себя как безопасный хост, т. е. отношение правдоподобия пересчитывает-ся с Y=0. В предлагаемом алгоритме отношение правдоподобия для ip-адресов, не проявляющих активность за данный промежуток времени, не обновляется. Это позволяет отследить сканеры, которые действуют интенсивно в течение короткого промежутка времени и делают большие перерывы между попытками сканирования. Однако, в свою очередь, это может увеличить количество адресов, для которых вообще не принято решение.
Заметим, что ip-адреса, попавшие в множество не сканеров (NOTSCAN) исключаются из рассмотрения до конца рассматриваемого блока данных. Это создает опасность того, что могут быть пропущены устройства, которые сначала не проявляют аномальной активности, а затем начинают интенсивно сканировать. Поначалу кажется целе-
сообразным не формировать множество NOTSCAN, т. е. фактически перейти к рассмотрению алгоритма с одной гипотезой H1 - «сканер». Однако, как показала практика, применение классического варианта предпочтительнее. Рассмотрение лишь одной гипотезы увеличивает количество шагов и количество ложных сканеров, но практически не расширяет множество обнаруживаемых сканеров. Кроме того, для анализа очередного блока статистики программа перезапускается с пустым множеством NOTSCAN, т. е. ip-адреса, попавшие в это множество, исключается из рассмотрения на небольшой промежуток времени, поэтому риск пропустить активный сканер очень мал.
7. Эксперимент и оценки
7.1 Формат данных
Рассмотрим формат анализируемых данных. Поток (network flow) - это однонаправленная последовательность пакетов между определенным источником и получателем. Подробнее, каждый пакет, проходящий через сетевое устройство, исследуется на наличие ip-атрибутов. Традиционно Cisco IOS NetFlow исследует следующие атрибуты: ip-адрес источника, ip-адрес назначения, порт источника, порт назначения, протокол следующего за ip протоколом уровня, тип обслуживания (TOS), входной интерфейс устройства, с которого поступают пакеты потока и др.
Правила сбора и отсылки потоков для используемой версии 5 Cisco IOS NetFlow таковы. Потоки собираются устройством и считаются завершенными, когда произойдет одно из следующих событий: транспортный протокол указывает на завершение взаимодействия (флаг TCP FIN); трафик не активен в течение 15 с; для потоков, остающихся постоянно активными, поток принудительно завершается через 30 мин. Потоки, генерируемые сетевыми устройствами, инкапсулируются в UDP-дейтаграммы. Пакеты посылаются на рабочую станцию, задающуюся в конфигурации экспортера, либо когда количество потоков превзойдет определенный максимум, либо каждую секунду (выбирается то событие, которое произошло первым).
В нашем случае коллектор настроен на агрегирование информации в течение 30 минут. Результатом работы коллектора являются файлы, состоящие из записей следующего формата:
\ti\t2\src_ip\dst_ip\src_org\dst_org\src_int\dst_ int\src_port\dst_port\protocol\packets\octets\TCP-flags\,
где ti - время начала потока (время появления первого пакета/мс);
t2 - время окончания потока (время появления последнего пакета/мс);
src_ip - ip-адрес источника; dst_ip - ip-адрес назначения;
src_org - индекс организации из некоторого фиксированного множества организаций, к которой принадлежит хост с ip-адресом источника (0 -организация неизвестна);
dst_org - индекс организации - получателя (0 - организация неизвестна);
src_int - SNMP-индекс интерфейса сетевого устройства, по которому поступил поток данных от источника;
dst_int - SNMP-индекс интерфейса сетевого устройства, на который отправляется поток данных;
src_port - tcp/udp порт источника; dst_port - tcp/udp порт назначения; protocol - протокол (поле protocol ip-пакета). packets - количество пакетов в потоке; octets - количество байтов в потоке; flags - аккумулированные флаги (FIN, SYN и RST) tcp-пакетов потока. Если установленных флагов нет или протокол отличен от tcp, в поле flags стоит 0.
7.2 Эксперимент и оценка эффективности работы алгоритма
Для того чтобы оценить работу алгоритма, была создана программа на языке Perl, реализующая этот алгоритм. Анализировался «эталонный» блок данных, собранных за 30 мин наблюдения и содержащий 4,6*106 записей. Этому блоку соответствует 29650 Мбайт реального трафика сети Интернет СО РАН [16].
В отсутствии оракула, способного определить правильность принятия той или иной гипотезы, записи были предварительно исследованы, в результате чего было создано эталонное множество сканеров TRUESCAN. В него мы поместили те и только те ip-адреса устройств, которые проявили себя как сканеры. Множество TRUESCAN строилось в два этапа. Исследовались ip-адреса источников. Пусть #port - количество портов назначения, #ip - количество ip-адресов назначения, зафиксированное в блоке для некоторого src_ip. Если выполняется
# ip # port
- > k или -> (при
одно из неравенств
# port
# ip
этом к выбирается достаточно большим, например,
к1 = 100 ), то помещаем этот ip-адрес в TRUESCAN. Затем, после дополнительного анализа оставляем только те ip-адреса, которые мы признали сканерами. На втором этапе анализируется список ip-адресов сканеров, который получен в результате работы программы, реализующей алгоритм. Те ip-адреса, которые не вошли в эталонное множество на первом этапе, но были признаны сканерами после анализа, добавляются к TRUESCAN. В исследуемом блоке содержалось 267044 различных адресов источников, из них 79 принадлежало множеству TRUESCAN. Следует заметить, что процесс построения эталонного множества требует внимания и значительных временных затрат.
Поскольку не существует общего подхода к определению характеристик алгоритмов распознавания сканирования, были рассмотрены две меры, оценивающие работу алгоритма: эффективность E и производительность P, предложенные в [5].
При параметрах к = 10, T = 10 с, a = 0,01 ,
в = 0,01 , 90 = 0,9 и 91 = 0,1 за время работы программы, равное ~4,5 мин, был получен следующий результат. Выявлено 40 сканеров (|SCAN|), из них 38 входят в TRUESCAN. Устройства, входящие в SCAN, создали 43 Мбайт трафика, что составляет 0,15% от общего трафика блока. Сканеры не генерируют большие объемы трафика, так как в их задачу входит разведка, а не обмен данными. Безопасными были признаны (|NOTSCAN|) 72303 адреса. Для остальных адресов не было принято решение, так как соответствующие устройства не проявили достаточную активность. Количество пересчетов отношения правдоподобия для src_ip до принятия одной из гипотез в среднем выполнялось за три итерации основного цикла алгоритма.
Полученные характеристики алгоритма: P=0,95, E=0,48 свидетельствуют о том, что производительность алгоритма (отношение числа выявленных сканеров к |SCAN|) достаточно высока, т. е. количество ложных тревог невелико. Невысокая эффективность (отношение числа выявленных сканеров к lTRUESCAN\) вызвана тем, что среди не выявленных сканеров основной процент составляют сканеры, которые за короткий промежуток времени сканируют большое количество адресов, а затем не проявляют активность в течение всего рассматриваемого периода. В [5] было замечено, что между производительностью и эффективностью существует обратная связь. Если рассматривать задачу выявления локальных инфицированных хостов, то предпочтение следует отдать высокой производительности. Небольшое время работы алгоритма на блоке данных, собранных за 30 мин, позволяет встроить его в систему анализа «сетевой погоды» [17], функционирующую в режиме реального времени.
7.3 Графическое представление результатов
Здесь представлена графическая интерпретация результатов работы программы, реализующей наш алгоритм, при различных значениях параметров.
Рис. 1 отображает зависимость коэффициента ложного обнаружения R+ (см. п. 5.3) от выбора параметра k при различных значениях параметров 90 и 9j . Таймер во всех случаях выбирался равным 10 с (T=10). Приводятся два графика:
для 90 = 0,9; 91 = 0,1 и для 90 = 0,8; 9j = 0,2. По оси абсцисс откладывается значение k, по оси ординат откладывается R++.
Из рис. 1 видно, что R++, при значениях 90 = 0,9 и
91 = 0,1 ниже, чем при значениях 90 = 0,8 и 9j = 0,2 . Для обоих случаев оптимальное значение параме-
тра к « 10. Рис. 2 отражает зависимость эффективности работы алгоритма Е от выбора параметра к
при различных значениях 90 и 9Г Приводятся два
графика: для 90 = 0,9, 9! = 0,1 и 90 = 0,8 , 9! = 0,2. По оси абсцисс откладывается значение к, по оси ординат откладывается Е. Видно, что при значениях
90 = 0,9 и 9; = 0,1 эффективность выше, чем при
значениях 90 = 0,8 и 9; = 0,2.
На Рис. 3 отражена зависимость количества распознанных эталонных сканеров от выбора параметра к при различных 90 и 9;. Приводятся два графика: для значений 90 = 0,9, 9; = 0,1 и 90 = 0,8 ,
9; = 0,2. По оси абсцисс откладывается значение к, по оси ординат - количество распознанных эталонных сканеров, Sc.
Из Рис. 3 видно, что количество распознанных сканеров при 90 = 0,9 и 9; = 0,1 выше, чем при 90 = 0,8 и 9! = 0,2. Таким образом, можно сделать вывод, что значения параметров 90 = 0,9 и 9! = 0,1
предпочтительнее, чем 90 = 0,8 и 9; = 0,2. Это можно интерпретировать так: чем больше различают-
ся между собой гипотезы, тем лучше результаты работы алгоритма.
Рассмотрим некоторый ip-адрес, принадлежащий множеству TRUESCAN, для которого проводится процедура принятия решения при различных значениях параметров 90 , 9; , а и в. На рис. 4 приведено графическое представление процедуры принятия решения при 90 = 0,9, 9; = 0,1, ошибка первого рода а = 0,01, ошибка второго рода в = 0,01 . По оси абсцисс откладывается количество
п
шагов алгоритма п, по оси ординат - Q= ^У1.
¡-1
Увеличим значения ошибок первого и второго рода и посмотрим, как изменится процедура принятия решения. На рис. 5 приведено графическое представление процедуры принятия решения
при 90 = 0,9, 9; = 0,1, ошибка первого рода а = 0,05 ,
ошибка второго рода в = 0,05. По оси абсцисс откладывается количество шагов алгоритма - п, по оси ординат - Q.
Сравнив рис. 4 и рис. 5, можно сделать вывод, что при увеличении значений ошибок первого и второго рода расстояние между прямым Н0 и Н1
Рис.1. Зависимость Я+ от выбора параметра k
Рис 3. Зависимость количества распознанных сканеров Sc от выбора параметра k
Рис.2. Зависимость эффективности алгоритма E от выбора параметра k
Рис. 4. Процедура принятия решения для данного ip-адреса при ошибках первого и второго рода, равных 0,01
уменьшается, что логично, так как уменьшается точность алгоритма, что может привести к принятию неверной гипотезы, как видно из рис. 5.
Теперь посмотрим, как будет выглядеть диаграмма принятия решения при других значениях
90 и 0j . Пусть 90 = 0,8, 0j = 0,2, а = 0,01, ß = 0,01.
Сравнение рис. 4 и рис. 6 иллюстрирует тот факт, что для принятия решения при значениях
90 = 0,8 и 9j = 0,2 требуется большее число шагов, чем при значениях 90 = 0,9 и 91 = 0,1. То есть уменьшение 90 и увеличение 9j ведет к росту числа шагов. Аналогичные выводы можно сделать, проанализировав формулы (2), оценивающие среднее число шагов.
Заключение
Безусловно, метод определения сканеров, предложенный в модели TRW [8], является перспективным, поскольку он базируется на математической теории, позволяющей определить ожидаемую эффективность соответствующего алгоритма, и не требует длительного первоначального изучения трафика. Подтверждением этого является появление моделей TRWSYN [12], TAPS [12] и модифицированной модели TAPS, в которые заложены эвристические предположения, отличные от [8].
Существуют пути улучшения характеристик модели TRW. Можно расширить эвристические предположения о поведении сканеров. Во-первых, определять параметры более консервативно для некоторых сервисов, например, http, так как http сканер трудно отличить от http proxy. Во-вторых, делать различие между попытками соединения, на которые получен отказ, и попытками, оставшимися без ответа, так как последние больше похожи на «выстрел в темноте». В третьих, внести компоненты корреляции: считать две последовательных неудачных попытки соединения более подозрительным поведением, чем перемежающиеся попытки. Однако это приведет к усложнению ал-
а е 5 4 i 2 1 • к -+-Q -Гипотеза Нй -^гипотеза Н^
-1 • ■1 ^^ 2 4 е е п
Рис. 5. Процедура принятия решения для данного ip-адреса при ошибках первого и второго рода, равных 0,05
горитма и может поставить под сомнение его эффективность.
Главным ограничением, заложенным в рассматриваемую методику, является предположение о независимости наблюдений. Например, количество устройств, ложно принятых за сканеры, было бы меньше, если учитывать факт, что сканеры чаще всего последовательно перебирают адреса подсетей, в отличие от активных хостов. В случае распределенного сканирования также нужно учитывать совместное распределение, что также значительно усложняет алгоритм.
В ряде работ предлагается решать задачу выявления сканеров с применением технологии Data Mining. Например, в [18] утверждается, что известные алгоритмы, в том числе и TRW, который имеет статус «state-of-the-art», страдают от большого числа ложных тревог, так как не отличают от сканирования p2p трафик, трафик веб-поисковиков, а также «backscatter traffic», когда, например, атакуемый сервер отвечает на DoS атаки по вымышленным адресам. Предлагается использовать классификатор для разделения потоков данных на четыре категории: SCAN, P2P, NORMAL, NOISE. Разделение делается на основании информации, полученной во время достаточно длительного наблюдения за трафиком, и ряда экспертных правил. Достоинства этой методики оцениваются с помощью метрик, эквивалентных производительности и эффективности. На экспериментальной основе в [18] утверждается, что характеристики алгоритма на базе Data Mining выше, чем у TRW.
Существуют подходы к созданию систем IDS, основанные на моделировании сетевого поведения, например, с помощью нейронных сетей. Примером может служить работа [19], где предлагаются методы обучения сети для выявления атак типа зондирование, DoS, u2r (user to root), r2l (remote to local). Применяются также и генетические алгоритмы. В работе [20] рассматривается применение такого алгоритма для дифференциации нормального и аномального сетевого соединения. Этот ал-
/ к -+—Q
-Гипотеза #0
^—Гипотеза Я!
4 в а П
Рис. 6. Процедура принятия решения для данного ip-адреса при ошибках первого и второго рода, равных 0,01; 90 = 0,8 ,
9, = 0,2
горитм использует предварительную информацию для построения множества правил, учитывающих различные сетевые параметры и применяемых системой обнаружения вторжения. Для защиты компьютерной системы используются также средства, имитирующие поведение биологической иммунной системы, так называемые иммунные алгоритмы, например [21]. Иммунные процессы, способные к самоорганизации, изучают, распознают, пропускают или отвергают запросы к компьютерной системе.
Следует заметить, проблема интерпретации полученного ответа (адресов устройств из множества TRUESCAN) остается открытой. Можно блокировать эти адреса, например, как в системе Bro [4]. Это применимо для небольших сетей, и в Bro имеется возможность указать, какие адреса никогда не следует блокировать. Отметим, что значительная часть этих адресов может оказаться фальшивой. Существует методика определения фальшивых адресов с помощью «ловушки» Honeypot [22], которая в ответ на попытку соединения предлагает источнику осуществить полную процедуру handshake, которая обычно не заканчивается, если адреса фальшивые. С помощью этой методики можно выявить неиспользуемые ip-адреса, однако это приводит к дополнительной нагрузке и, соответственно, к значительному увеличению времени работы алгоритма, что ставит под сомнение возможность его работы в режиме on-line. Видимо, следует классифицировать сканеры по степени их опасности и определить множество соответствующих порогов, о преодолении которых сообщать системному администратору сети, от которого зависят дальнейшие действия в рамках принятой политики сетевой безопасности.
Литература
1. http://www.iana.org/assignments/port-numbers/
2. http://www.snort.org/
3. http://nmap.org/
4. http://www.bro-ids.org/
5. Staniford S., Hoagland J.A., McAlerney J.M. Practical Automated Detection of Stealthy Portscans. // Journal of Computer Security, Volume 10 , Issue 1-2 (2002). P. 105-136.
6. Niedermayer D. An Introduction to Bayesian Networks and their Contemporary Application. http://www. niedermayer.ca/papers/bayesian/bayes.html/
7. Kirkpatrick S., Gelatt C. D., Vecchi M. P. Optimization by Simulated Annealing // Science, Vol. 220, No. 4598. (May 13, 1983), P. 671-680.
8. Jung J., Paxton V., Berger A.W., Balakrishnan H. Fast Portscan Detection Using Sequential Hypothesis Testing. // Proceedings IEEE Symposium on Security and Privacy, 2004. P. 211-225
9. Ertoz L., Eilertson E., Dokas P., Kumar V., Long K. Scan Detection - Revisited // Technical report AHPCRC 127, University of Minnesota - Twin Cities, 2004. P. 127.
10. Lekie C., Kotagiri R. A Probabilistic Approach to Detecting Network Scans // IEEE/IFIP Network Operations and Management Symposium (NOMS) 2002. P. 359-372.
11. Вальд А. Последовательный анализ. Москва: Физмат, 1960. 328 с.
12. Sridharan A., Ye T., Bhattacharyya S. Connectionless Port Scan Detection on the Backbone // IEEE International Performance, Computing and Communications Conference (IPCCC), 2006. P. 10-20.
13. Бредихин С.В., Щербакова Н.Г. Две компоненты анализа сетевого трафика // Вестник Новосибирского государственного университета. Серия: информационные технологии. Новосибирск, 2008. Т. 6, вып. 1. C. 10-14.
14. http: / / www.cisco.com/ univercd/cc/td/doc / cisintwk / intsolns/netflsol/nfwhite.pdf
15. http://www.splintered.net/sw/flow-tools/
16. СПД СО РАН. Сеть передачи данных Сибирского отделения РАН. Информационные материалы научно-координационного совета целевой программы «Информационно-телекоммуникационные ресурсы СО РАН». Институт вычислительных технологий СО РАН. Новосибирск, 2005. 79 с.
17. Бредихин С.В., Ляпунов В.М., Щербакова Н.Г. Анализатор «сетевой погоды» // Вестник Новосибирского государственного университета. Серия: информационные технологии. Новосибирск, 2005. Т. 2, вып. 1. C. 62-67.
18. Simon G.J., Hui Xiong, Eilerton E., Kumar V. Scan Detection: A Data Mining Approach // Sixth SIAM International Conference on Data Mining, 2006. P. 118-129.
19. Ray-I Chang, Liang-Bin Lai, Wen-De Su, Jen-Chieh Wang, Jen-Shiang Kouh. Intrusion Detection by Backpropagation NeuralNetworks with Sample-Query and Attribute-Query // International Journal of Computational Intelligence Research. Vol.3, No. 1 (2007). P. 6-10.
20. Wei Li. Using Genetic Algorithm for Network Intrusion Detection //Proceedings of the United States Department of Energy Cyber Security Group 2004 Training Conference, Kansas City, Kansas, May 24-27, 2004.
21. Visconti A., Fusi N, Tahayori H. Intrusion Detection via Artificial Immune System: a Performance-based Approach, 2008 // IFIP International Federation for Information Processing, Volume 268; Biologically-Inspired Collaborative Computing; Mike Hinchey, Anastasia Pagnoni, Franz J. Rammig, Hartmut Schmeck; (Boston: Springer). P. 125-135.
22. http://www.dmoz.org/Computers/Security/ Honeypots_and_Honeynets/