ИНФОРМАТИКА
УДК 519.71
ОБНАРУЖЕНИЕ DDoS АТАК НЕЧЕТКОЙ НЕЙРОННОЙ СЕТЬЮ
И.И. Слеповичев, П.В. Ирматов*, М.С. Комарова*, А.А. Бежин*
Саратовский государственный университет,
кафедра теоретических основ компьютерной безопасности и криптографии;
* Поволжский региональный центр новых информационных технологий, отдел информационных ресурсов и систем
E-mail: [email protected], *[email protected]
В статье анализируется DDoS атака SYN Flood. Предлагается метод для обнаружения атаки этого типа при помощи нечеткой нейронной сети. Приводится модификация алгоритма обратного распространения ошибки, используемая для обучения нейронной сети.
Ключевые слова: DDoS, SYN Flood, нечеткая нейронная сеть, алгоритм обратного распространения.
DDoS Attack Detection Using Fuzzy Neural Network
I.I. Slepovichev, P.V. Irmatov*, M.S. Komarova*, A.A. Bezhin*
Saratov State University,
Chair of Theoretical Basics of Computer Security and Cryptography;
* Volga Regional Center of New Informational Technologies, Department of Informational Resources and Systems E-mail: [email protected], *[email protected]
In this article we analyze SYN Flood type of DDoS attack. We suggest method to detect this attack using a fuzzy neural network. Also we introduce modified back-propagation algorithm for neural network teaching.
Keywords: DDoS, SYN Flood, fuzzy neural network, back-propagation algorithm ВВЕДЕНИЕ
В наши дни распределенные атаки типа отказ в обслуживании (Distributed denial-of-service — DDoS) стали мощным инструментом в руках злоумышленников. Теперь это не просто способ тестирования сети при экстремальных нагрузках, но и средство шантажа владельцев интернет-сайтов. Большая часть таких атак — это атаки, нацеленные на вывод сервера из строя (то есть на отказ в обслуживании) путем посылки большого количества запросов на сервер. В результате канал связи переполняется, и компьютер жертвы не может отвечать на запросы пользователей. Это наносит значительный ущерб владельцам атакованных сетевых служб. На сегодняшний день разработаны методики противодействия DDoS атакам, однако их применение требует значительных материальных и административных затрат [1]. Обнаружение таких атак является непростой алгоритмической задачей, так как не существует простых и универсальных признаков, по которым можно было бы отличить сетевые запросы законопослушных пользователей к ресурсам сервера от запросов, посылаемых на сервер с целью атаки. В данной статье рассматривается абстрактная математическая модель DDoS атаки типа SYN Flood и предлагается способ её обнаружения на ранней стадии с использованием математического аппарата нечетких нейронных
сетей. Стоит отметить, что в данной работе не ставится задача дать универсальный способ обнаружения атак типа отказ в обслуживании, однако на примере этой прикладной задачи демонстрируются возможности математического аппарата нечетких нейронных сетей. Авторами данной статьи была создана программа, анализирующая входящий интернет-трафик и графически отображающая степень уверенности в наличии DDoS атаки.
1. АТАКА SYN FLOOD
Рассмотрим атаку SYN Flood. Целью такой атаки является вывод из строя сетевой службы так, чтобы атакуемый сервер не мог отвечать на запросы «обычных» пользователей. Для этого злоумышленником на адрес жертвы посылается большое количество пакетов данных переполняющих канал жертвы. Точнее, атака ведется на операционную систему с целью переполнения очереди поступающих пакетов. Так как размер очереди пакетов ограничен некоторой величиной N, а на обработку каждого запроса уходит определенное время T, то момент отказа в обслуживании пользователей будет определяться неравенством v > N/T, где v — скорость приходящих пакетов, то есть количество пакетов в секунду, N — длина очереди входящих соединений, T — время ожидания завершения соединения в секундах.
Значительного ущерба можно избежать, обнаружив атаку на ранней стадии. В этом случае у сетевого администратора будет время на принятие мер по предотвращению атаки или мер по минимизации возможного ущерба. Для решения этой задачи необходимо анализировать входящий трафик и если поступающая на сервер очередь пакетов данных имеет признаки начала атаки, сообщить об этом сетевому администратору.
Рассмотрим подробнее параметры очереди входящих пакетов данных, которые мы будем анализировать. Предположим, для анализа мы имеем последовательность из N пакетов. Анализировать будем всю последовательность, а не каждый пакет в отдельности. Существенными для анализа являются такие параметры, как TCP флаги (SYN) (нас интересуют пакеты только с этими флагами), IP адреса отправителя и получателя, направление пакета (входящее или исходящее), время поступления пакета и порт получателя. Также можно учитывать корректность заголовка: поступление большого количества пакетов с некорректными заголовками является одним из признаков атаки. Таким образом, на основе экспериментальных данных, был составлен вектор параметров для анализа, состоящий из следующих компонент:
[Процент пакетов с различными внешними IP адресами, процент пакетов с различными внешними портами, среднее время поступления одного пакета, процент пакетов с некорректными заголовками].
Эксперименты проводились на компьютере с процессором Pentium IV с частотой 3 ГГц, 512 Mb оперативной памяти. Для проведения атак использовалась виртуальная машина VMware с запущенной на ней ОС LINUX Freespire. С помощью виртуальной машины создавалась локальная сеть и сниффер, установленный на хостовой операционной системе, фиксировал параметры трафика. В качестве сниффера использовалась Trial версия программы SoftPerfect Analizer [2].
2. ПОСТРОЕНИЕ НЕЧЕТКОГО КЛАССИФИКАТОРА
Для решения задачи анализа был использован аппарат нечеткой логики и нейронных сетей [3, 4]. Для формализации знаний экспертов о DDoS атаке мы создали пять лингвистических переменных, каждая из которых характеризует одну из компонент вектора параметров. Напомним, что лингвисти-
ческой переменной называют объект вида (В,Т, X, С, М), где В — имя лингвистической переменной, Т — множество наименований нечетких переменных, составляющих лингвистическую переменную, С — синтаксическая процедура, позволяющая оперировать элементами множества Т, М — семантическая процедура, позволяющая переводить значения лингвистической переменной в нечеткую переменную. Далее приведены лингвистические переменные, созданные на основе экспериментальных данных. Процедура С нам не понадобится, поэтому мы пропускаем её в описании переменных.
1. (Время_поступления_пакетов, {«мало», «средне», «велико»}, [0,1000], {/ц(х) = 1+в-0.з(Х-и1),
/12(х) = 1 - 1+в-01з(х+15), /13(х) = е-(х-63)22*0-0252}); 6
2. (Процент_различных_внешних_ip_адресов, {«мал», «велик»}, [0,100], {f21 (x) = 1+e-013(x-75),
f22(x) = 1 - 1+e-0 13(x+25) });
3. (Процент_различных_портов, {«мал», «велик»}, [0,100], {f31(x) = 1+e-31(x-15), f32(x) = 1 —
1 -3)}); 6
1+e-2(x
4. (Процент_пакетов_с_поврежденными_заголовками, {«велик»},[0,100], {f41 (x) =
5. (Степень_уверенности, {«низкая», «средняя», «высокая»}, [0,100], {f51 (x) =
1+e-2(x-5)
г, f53(x) = e-(x-50)22*152}).
1 + e-0- 5(x-75) 5
/52 (х) — 1 1 + е-0-5(х + 25) 5
Нечеткий логический вывод для определения степени уверенности в атаке будет состоять из следующих предикатных правил:
1. Если Время_поступления_пакетов есть «мало» И Процент_различных_внешних_ip_адресов есть «мал» И Процент_различных_портов есть «мал», тогда Степень_уверенности_в_атаке есть «средняя»;
2. Если (Время_поступления_пакетов есть «мало» ИЛИ Время_поступления_пакетов есть «средне») И (Процент_различных_внешних^_адресов есть «велик» ИЛИ Процент_различных_пор-тов есть «велик» ИЛИ Процент_пакетов_с_поврежденными_заголовками есть «велик»), тогда Сте-пень_уверенности_в_атаке есть «высокая»;
3. Если Время_поступления_пакетов есть «велико», тогда Степень_уверенности_в_атаке есть «низкая»;
На основе нечеткого логического вывода был построен нечеткий классификатор со структурой, представленной на рис. 1.
Рис. 1. Схема нечеткого классификатора для обнаружения SYN Flood атак
Здесь символом V обозначен нечеткий ИЛИ-нейрон, символом А — нечеткий И-нейрон, символом S — классический нейрон, X1, X2, X3, X4 — соответствующие входы, а tLittle, tMiddle, tHigh, extraLittle, extraLots, pLittle, pLots, dhLots — функции активации для нечетких переменных Время_поступления_пакетов мало, Время_поступления_пакетов средне, Время_поступления_пакетов велико, Процент_различных_внешних_ip_адресов мал, Процент_различных_внешних_ip_адресов велик, Процент_различных_портов мал, Процент_различных_портов велик, Процент_пакетов_с_пов-режденными_заголовками велик соответвтвенно.
Таким образом, построенный нечеткий классификатор должен по данным, поданным на вход, определять степень уверенности в атаке.
Данная нечеткая система может быть представлена в форме многослойной нейронной сети с прямым распространением сигнала. Указанное представление нечеткого классификатора дает нам возможность использовать такие достоинства нейронных сетей, как обучение и адаптация под конкрет-
1
ную ситуацию. Это может быть полезным в том случае, когда конкретные параметры лингвистических переменных неизвестны и подбирать их приходиться в процессе эксплуатации системы обнаружения атак. Нейронная сеть, реализующая нечеткий классификатор, будет иметь структуру, идентичную представленной на рис. 1. В этой сети присутствуют нейроны следующих видов: И-нейроны, вычисляющие значение функции нейчеткой конъюнкции, ИЛИ-нейроны, вычисляющие значение нечеткой дизъюнкции, нейроны, вычисляющие значения функций принадлежности нечетким множествам, и S-нейроны, вычисляющие выход нечеткого классификатора.
Для обучения этой нейронной сети мы можем использовать любой градиентный метод минимизации целевой функции. В нашей работе был использован метод обратного распространения ошибки.
3. ОБУЧЕНИЕ НЕЙРОННОЙ СЕТИ
Обучение нейронной сети происходит по методу обратного распространения ошибки, который состоит в следующем: на каждой итерации алгоритма обратного распространения весовые коэффициенты нейронной сети модифицируются так, чтобы улучшить решение одного примера. Таким образом, в процессе обучения циклически решаются однокритериальные задачи оптимизации [5].
Классический алгоритм для нашей нейронной сети не подходит, так как в нашей нейронной сети у различных нейронов различные функции активации, и нельзя записать общую формулу, которая бы подошла для всех нейронов сети, поэтому мы модифицировали классический алгоритм для наших целей.
Функция ошибки имеет следующий вид:
Е =2 Е (Ьк - ок )2,
к^ОпЬрпЬз
где к — номер выхода нейронной сети пробегает все возможные выходы, Ьк — желаемый выход, Ок — выход нейронной сети.
Тогда производная ошибки на последнем слое выражается формулой
дЕ = дЕ дБ, = дЕ
— хг
дтг, дБ, дтг, г дБ,' где — вес от нейрона г к нейрону Б, — ^ тк,хк.
кегприЬз
Вычислим значения дЕ дЕ до, д 1 , ,2\ /до,\ 1 д , ,2,, ,„
Щ = ЮТ, Щ = ( ЮТ, 2 £ (Ьк - Ок)21 (4) = 2ю-(Ь>-О<) )(о' (1-О>) = -оп (1-Оп)(Ь'-О,).
, , , у , кеОпгригя ) 4 , у ,
Теперь можно записать формулу подсчета ошибки для остальных слоев:
дЕ = дЕ дБк
^ = ке^гиЖк '
где Бк — это функция конкретного нечеткого нейрона.
Отсюда видно, что первая часть данной формулы, а именно ¿Щ: — это ошибка на предыдущем шаге. Запишем вторую часть для каждого из слоев сети. Для предпоследнего слоя:
дБк дБк до, дтг, до, дтг,
Для второго и третьего слоев, содержащих нечеткие нейроны получим
д к д к
(1)
Для И-нейронов под к будем понимать значение, вычисляемое по формуле
Бк = П (ШкЗ + Хкг - 'ШкгХкг),
ке1при1з
„Известия Саратовского университета.2009. Т.9. Сер. Математика. Механика. Информатика, вып.3 а для ИЛИ-нейронов — значение, вычисляемое по формуле
Sk = ('¿3Жу + '¿+13 Х¿+lj + '¿+23 Х¿+2j + '¿3 Х¿j '¿ + 13Х¿ + lj + +'¿3 Хгу '¿+23 Х^+2у - '¿3 Жу '¿ + 13 Хг + 1у '¿+23 Хг+2у ).
Тогда формула (1) для И-нейрона будет иметь вид
дБк
дшц
¿3
= (1 - Жi) П (Шкз + Хкз - ШкзХкз). (2)
k£Inputs=¿
Для ИЛИ-нейрона формула (1) в случае входного вектора с тремя компонентами, будет иметь вид
дБк
дw¿j
= ^¿3 + '¿+13Ж¿+lj + '¿+23Х¿+2j + Х¿j'¿+13Х¿+lj + Х¿j'¿+23Ж¿+2j - Х¿j'¿ + 13Х¿ + lj'¿+23Х¿+2j). (3)
Для первого слоя получим:
д/1 е_а(х_Ъ) (Ь - ж) д/1 е_а(х_Ъ)а
да (1 + е_«(*_Ъ) )2' дЬ (1 + е_«(*_Ъ))2' (4)
/ = - д/1 / = - / (5) да да ' дЬ дЬ
_ (х — а)2 _ (х — а)2
д/з = е 2ь2 (ж - а) д/з = е 2ь2 (ж - а)2
да = Ь2 ' дЬ = Ь3 ' ( )
где , ^дЪ1, , 1зЪ' ТдсЗ' дз — производные функций активации на первом слое. Так как на первом слое нет весовых коэффициентов, и функция по ж сложная, то эти производные имеют смысл поправки д^Г" в формуле (1).
Поскольку мы вычислили поправку для узлов последнего слоя и выразили поправку для узла более низкого уровня через поправки более высокого, то теперь мы можем посчитать поправку для каждого настраиваемого параметра сети. Имея формулу вычисления ошибки последнего слоя, можно вычислить ошибку предпоследнего и соответственно поправку параметров нейронов этого слоя. И так далее — поправка для нейронов слоя непосредственно вычисляется из значений входов и поправок нейронов следующего за ним слоя. Именно из-за этой особенности вычисления поправок алгоритм называется алгоритмом обратного распространения ошибки.
Таким образом, алгоритм обратного распространения ошибки для нашей нечеткой сети будет следующим.
1. Инициализация сети: весовым коэффициентам и смещениям сети присваиваются начальные значения.
2. Определение элемента обучающей выборки: (<текущий вход>, <желаемый выход>). Текущие входы (жо, х1... х^_1) должны различаться для всех элементов обучающей выборки.
3. Вычисление текущего выходного сигнала: текущий выходной сигнал определяется в соответствии с традиционной схемой функционирования нейронной сети.
4. Настройка синаптических весов.
Для настройки весовых коэффициентов используется рекурсивный алгоритм, который сначала применяется к выходным нейронам сети, а затем проходит сеть в обратном направлении до первого слоя. Синаптические веса настраиваются по формуле
дЕ
'¿3 = '¿3 - п
дw¿j'
где '¿3 — вес от нейрона г или от элемента входного сигнала г к нейрону ], п — некоторая константа, задающая величину шага, — производная функции ошибки по настраиваемому параметру.
Ошибка для последнего слоя:
дЕ
дw¿j
Если нейрон с номером j принадлежит одному из слоев с первого по предпоследний, то
dE _ у, dE dSk
^ _ kJChuddSk ^'
op
где dSk — производная на предыдущем слое, а второй множитель — производная, подсчитанная по формуле для соответствующего нейрона сети. Например, для И-нейрона по формуле (2), а для ИЛИ-нейрона по формуле (3). Поправки для параметров функций принадлежности нечетким множествам, т.е. к первому слою, считаются по одной из соответствующих формул (4)-(6).
4. ПРОГРАММА
На основе вышеизложенной теории нами была создана программа. Программа состоит из:
- модуля классификатора, который может служить для проектирования искусственных нейронных сетей произвольной архитектуры и работы с ними;
- модуля сниффера пакетов, который перехватывает все пакеты, приходящие по протоколу TCP, и осуществляет их фильтрацию;
- модуля анализатора, который получает данные от сниффера пакетов, формирует из них векторы значений для анализа и передает нечеткому классификатору, который осуществляет оценку уровня опасности атаки.
При программировании модуля нечеткого классификатора были созданы классы для моделирования нечетких нейронных сетей, классы для обучения нечетких нейронных сетей по приведенному выше алгоритму.
Архитектура нейронной сети полностью задается через три конфигурационных файла. Два из них задают архитектуру нейронной сети, а третий задает коэффициенты для функций принадлежности нечетких множеств.
Обучение может происходить в двух режимах. В режиме реального времени пользователь выбирает уровень опасности, выступая в роли «учителя», моделирует атаку, и при нажатии кнопки «начать обучение» программа собирает обучающие выборки, с помощью которых обучается нейронная сеть. В режиме работы «из файла» пользователю предлагается выбрать файл, в котором сохранен образ атаки, что позволяет обучать программу не в момент моделирования атаки, а позже. Образы атаки можно подготовить с помощью самой программы. Для этого в программе есть специальные средства.
При тестировании программы нами были созданы ситуации с имитацией атаки на сервер. Программа с обученным классификатором показала хорошие возможности по обнаружению SYN Flood атаки.
ЗАКЛЮЧЕНИЕ
В ходе работы мы рассмотрели проблему определения DDoS атак типа SYN Flood нечеткими нейронными сетями. Был построен нечеткий классификатор, который на основании параметров входящего сетевого трафика может судить о степени уверенности в наличии DDoS атаки на компьютер. Также был предложен алгоритм обучения нейронной сети. В итоге была разработана программа, которая, используя математический аппарат нечеткой логики и нейронных сетей, определяет степень уверенности в наличии атаки.
Библиографический список
1. Paxson V. Bro: A System for Detecting Network Intruders in Real-Time // Computer Networks. 1999. V. 31. P. 2435-2463.
2. SoftPerfect Network Protocol Analyzer - Network sniffer for Windows // http://www.softperfect.com/ products/networksniffer/
3. Круглов В.В., Дли М.И., Голунов Р.Ю. Нечеткая ло-
гика и искусственные нейронные сети. М., 2001. 224 с.
4. Рутковская Д., Пилиньский М., Рутковский Л. Нейронные сети, генетические алгоритмы и нечеткие системы. М., 2006. 452 с.
5. Rumelhart D.E., Hinton G.E., Williams R.J. Learning internal representations by error propagation // Parallel Data Processing. 1986. V. 1. P. 318-362.