Выявление аномалии в сетевом трафике

Обнаружение аномалий сетевого трафика на основе дискретного вейвлет-анализа с применением статистических критериев и критерия Фишера для выбросов дисперсий. Парсинг .pcap-файлов и визуализация. Блок-схемы алгоритмов функций main, analysis, koef, disp.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 22.03.2018
Размер файла 295,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

Федеральное государственное бюджетное образовательное учреждение высшего образования

МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ

Кафедра «Информационная безопасность и автоматизация»

Курсовая работа

по дисциплине «Моделирование систем защиты информации»

Выявление аномалии в сетевом трафике

Выполнил:

студент группы БИБ1301

Неклесова М.Д.

Москва 2017

Оглавление

Задание

1. Теоретическая часть

1.1 Методика обнаружения аномалий

1.2 Парсинг .pcap-файлов и визуализация

2. Практическая часть

2.1 Описание модулей

2.2 Блок-схема алгоритма функции int main(int, char *)

2.3 Блок-схема алгоритма функции analysis

2.4 Блок-схема алгоритма функции koef

2.5 Блок-схема алгоритма функции disp

2.6 Описание функции main

2.7 Описание функции analysis

2.8 Описание функции koef

2.9 Описание функции disp

3. Результаты работы программы

3.1 Сценарий 1

3.2 Сценарий 2

3.3 Сценарий 3

3.4 Сценарий 4

3.5 Сценарий 5

Вывод

Библиографический список

Приложение

Задание

Используя образец трафика (дамп трафика и его описание каждый студент готовит индивидуально), содержащий атаку конкретного типа, выполнить следующие действия.

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

2. На основе анализа массива визуализировать исследуемые трафик, построив график зависимости объема трафика, переданного в единицу времени. Разрешение графика выбирать из условия, что построение осуществляется используя 10000 точек (число точек можно варьировать в пределах 10%).

3. Используя, известные методы обнаружения аномалий, определить временной интервал, которому соответствует атака либо ее начало. Ширина временного интервала не должна превышать 5% от длины выборки.

4. (Дополнительно) Оценить скорость работы метода обнаружения атаки и сформулировать усовершенствованный алгоритм, способный существенно быстрее выполнять обнаружение атаки, либо ее начала (как минимум в 10 раз быстрее)

Исследуемый файл был создан в ходе исследовательской работы в Чешском Техническом Университете в Праге, целью которого являлось изучение большого количества трафика ботнет-сети.

Трафик анализировался в течение 5 дней 23 часа 12 минут (с 1 января 1:00 до 7 января 00:12 2017года).

Зараженный компьютер (IP 10.0.2.112) отправляет HTTP пакеты, имитирующие подключение к Microsoft.

Заражен 1 января в 21:28:34 [через 73 714с], аномалия остановлена 3 января ~15:40[через 151 946с считая с начала].

Данный файл имеет объем 353 МБ и содержит 389 804 пакета.

1. Теоретическая часть

1.1 Методика обнаружения аномалий

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

Применение «скользящих окон» позволяет увеличить надежность обнаружения даже незначительных аномалий. Известно, что плотность спектральной мощности временного ряда «трафик -- время» при наличии аномалий имеет пики на определенных частотах.

Вейвлет-анализ позволяет обнаружить аномалии трафика на основании различий спектров обычного и аномального трафика. Будем считать окно W1 «окном сравнения», а окно W2 -- «окном обнаружения». Пусть размер каждого окна w1 и w2 выбранных временных единиц соответственно, причем w1 > w2. Тогда в произвольный момент времени t начало окна W2 будет находиться в точке t, в нем будут содержаться w2 значений трафика от t-w2 до t, а в окне W1 -- w1 значений от t-w2-w1 до t-w2. Выполняя БВП для выборок внутри каждого из окон в каждый момент времени ti, будем получать на некотором масштабном уровне j набор коэффициентов для окна W1 -- аппроксимации {a1x; a2x; a3x; …anx}t;j и детализации {d1x; d2x; d3x; …dnx}t;j, для окна W2 -- аппроксимации {a1y; a2y; a3y;…amy}t;j и детализации {d1y; d2y; d3y;…dmy}t;j. Причем количество коэффициентов n на уровне j в окне W1 будет определяться выражением n = w1/2J , в окне W2 -- выражением m = w2/2J. Эти коэффициенты будут проверяться по статистическим критериям, и на основе принятия или отклонения статистических гипотез будет выноситься решение о кардинальном различии в анализируемых параметрах между окнами W1 и W2, а, следовательно, наличии аномалий или же наоборот -- их отсутствии.

Алгоритм обнаружения аномалий по критерию Фишера для выбросов дисперсий

Критерий Фишера предложен для обнаружения изменений в дисперсиях выборок окон W1 и W2. Распределение выборок считается гауссовким. В каждый момент времени (положении окон) t на масштабном уровне j выдвигаются две статистические гипотезы о равенстве дисперсий двух выборок {d1x; d2x; d3x; …dnx}t;j и {d1y; d2y; d3y;…dmy}t;j:

нулевая H0: д2,t,j = д22,t,j

альтернативная H1: д21,t,j ? д22,t,j

Алгоритм обнаружения выбросов в гауссовском процессе на основе анализа аномального изменения дисперсий записывается как

Введем обозначения:

-- выборочная дисперсия выборки последовательности деталей на масштабном уровне j в окне W1;

-- выборочная дисперсия выборки последовательности деталей на масштабном уровне j в окне W2;

-- выборочное среднее выборок последовательности деталей на масштабном уровне j в окне W1;

-- выборочное среднее выборок последовательности деталей на масштабном уровне j в окне W2.

С учетом сделанных обозначений перепишем алгоритм в виде

Нулевая гипотеза опровергается в пользу альтернативной в случае, если Z>(v1;v2), где (v1; v2) -- p-квантиль распределения Фишера с v1=n?1 и v2=m?1 степенями свободы.

1.2 Парсинг .pcap-файлов и визуализация

Термин «Парсинг» обозначает проведение визуального или программно-автоматизированного синтаксического и лексического анализа или разбора какого-либо документа с целью извлечения из него необходимых данных.

Библиотека Pcap (Packet Capture) позволяет создавать программы анализа сетевых данных, поступающих на сетевую карту компьютера. Примером программного обеспечения, использующего библиотеку Pcap, служит программа Wireshark. Разнообразные программы мониторинга и тестирования сети, снифферы используют эту библиотеку. Она предназначена для использования совместно с языками C/C++.

Визуализировать .pcap-файл можно средствами программы Wireshark, построив IO Grapf в меню Statistics. Появится координатная сетка, по оси Х - время, по оси Y - число пакетов.

Исследуемый трафик с шагом дискретизации равным 10 минутам:

Рис. 1

аномалия дисперсия парсинг трафик

2. Практическая часть

2.1 Описание модулей

В ходе работы было создана главная функция main, которая выполняет парсинг .pcap-файла, создаёт вектор специального типа (содержащего время и размер пакета), а затем обращается к функции ANALISIS. Функция анализа выполняет анализ в соответствии с теоретической частью, обращаясь к функциям вычисления коэффициентов (koef) и вычисления дисперсии (disp).

2.2 Блок-схема алгоритма функции int main(int, char *)

Рис. 2

2.3 Блок-схема алгоритма функции analysis

Рис. 3

2.4 Блок-схема алгоритма функции koef

Рис. 4

2.5 Блок-схема алгоритма функции disp

Рис. 5

2.6 Описание функции main

[1] Создается объект pcap, в который средствами библиотеки «pcap.h» загружается исследуемый .pcap-файл. Объект packetCount будет содержать число пакетов в файле.

[2] Осуществляется подсчет количества пакетов (если returnValue=0 то мы настигли конец файла).

[3] Счетчик packetCount подсчитывает число проходов через цикл (количество пакетов).

[4] Создается массив v, в котором будут храниться данные из пакетов (время и размер). Размер массива равен количеству пакетов.

[5] Цикл для определения параметров пакетов .рсар-файла

[6] Извлечение данных из заголовка - длина и временная метка - и запись их в переменную v.

[7] Полученные данные передаются в функцию анализа.

2.7 Описание функции analysis

[8] Инициализация объектов N1 и N2 - количество точек в окнах сравнения и определения; I1 и I2 - номера первого рассматриваемого пакета в каждом из окон; Stap1 и Stap2 - шаги дискретизации для окон W1 и W2; J - уровень разложения в алгоритме.

Для окна сравнения W1:

[9] Создание массива для окна W1 по количеству точек N1, в котором будут находиться данные после дискретизации с шагом Stap1.

[10] Цикл прохода по исходным данным, начиная с I1 пакета и с шагом Stap1.

[11] Создаем объект sump, который будет содержать среднее значение из каждых Stap1 точек (для более точной дискретизации).

[12] Цикл проходит Stap1 точек и подсчитывает сумму всех значений.

[13] В значение каждого из N1 коэффициента (на нулевом уровне разложения) записывается среднее значение среди Stap1 точек.

Также на данном этапе осуществляется вывод на экран времени при начале и завершении цикла для наглядного представления временного диапазона окна.

[14] Результаты используются функцией подсчета коэффициентов koef, которая записывает в переменную sum значение суммы коэффициентов на J-ом этапе разложения и возвращает массив коэффициентов, а также их количество n.

Для окна определения W2 коэффициенты рассчитываются по тому же алгоритму.

[15] Инициализация объектов: dx - выборочное среднее выборок последовательности деталей на масштабном уровне J в окне W1; dy - выборочное среднее выборок последовательности деталей на масштабном уровне J в окне W2;

[16] Для вычисления параметра Z воспользуемся функцией вычисления выборочной дисперсии disp, в которую в качестве параметров передаём коэффициенты на J-ом этапе разложения, их количество и выборочное среднее выборок последовательности деталей на масштабном уровне J в окне.

[17] Зададим квантиль распределения Фишера P, который выбираем из таблицы в соответствии со степенями свободы v1=n?1 и v2=m?1.

[18] Сравним значение, вычисленное по алгоритму обнаружения выбросов в гауссовском процессе на основе анализа аномального изменения дисперсий, Z с квантилем распределения Фишера P. Если оказалось, что Z>P, то можно сделать вывод, что отрезке времени окна W2 присутствует аномалия.

2.8 Описание функции koef

[19] Выполняем инициализацию переменных: n - количество коэффициентов на J-ом этапе разложения; sum - сумма коэффициентов на J-ом этапе разложения; koefJ[N] - массив коэффициентов детализации на J-ом уровне разложения.

[20] Выполняем расчет итогового количества коэффициентов на J-ом уровне разложения.

[21] Организация цикла для прохождения всех уровней от 1 до J. На каждом уровне число коэффициентов в два раза меньше, чем на предыдущем, так как осуществляется группировка по два.

[22] Расчет коэффициентов детализации по алгоритму Малла. Цикл для группировки коэффициентов по два и их дальнейшей записи в массив koefJ.

[23] Для вычисления коэффициентов детализации вычитаем два соседних числа в ряду и делим на .

[24] Если уровень разложения равен заданному J, то вычисляется сумма всех коэффициентов детализации на данном уровне (для дальнейшего вычисления выборочного среднего выборок).

2. 9 Описание функции disp

[1] Блок подразумевает суммирование квадратов всех значений разностей входного массива dis и выборочного среднего значения ().

[2] Результат (то есть значение дисперсии) получаем путём деления полученной суммы на n-1.

3. Результаты работы программы

3.1 Сценарий 1

I1 - номер первого пакета для окна сравнения W1

I2 - номер первого пакета для окна определения W2

Stap1 - шаг дискретизации для окна сравнения W1

Stap2 - шаг дискретизации для окна определения W2

Рис. 6

3.2 Сценарий 2

Изменив параметры окна определения наблюдаем аномалию в диапазоне времени 1 945,95 - 4 733,5 мин

Рис. 7

3.3 Сценарий 3

Задав другие параметры окна определения наблюдаем аномалию в диапазоне времени 1 057,82 - 2 216 мин

Рис. 8

3.4 Сценарий 4

Увеличив номер первого пакета для окна определения W2 и уменьшив шаг дискретизации наблюдаем аномалию в диапазоне времени 1 198,6 - 2 055,92 мин

Рис. 9

3.5 Сценарий 5

Изменив параметры окна определения наблюдаем аномалию в диапазоне времени 568,125 - 1 625,011 мин

Рис. 10

Вывод по работе сценариев

Воспользуемся программным продуктом Wireshark. Для графика зададим дискретизацию, равную 1мин.

Затем можно отметить временные окна, которые получались в ходе работы, а также нанесём на изображение трафика известное время начала (73 714с=1 228мин) и конца (151 946с=2 532,42мин) аномалии.

Рис. 11

Можно сделать вывод, что сценарий 3 сработал наиболее точно и аномалия имела место быть в течение промежутка времени от 1 057,82 минут до 2 216 мин от начала отсчёта трафика.

Библиографический список

1. Шелухин О.И., Сакалема Д.Ж., Филинова А.С. Обнаружение вторжений в компьютерные сети (сетевые аномалии). Москва. Горячая линия-Телеком. 2013. 220c.

Приложение

Файл my.h

#include <string>

#include <iostream>

#include <pcap.h>

#include <conio.h>

#include <vector>

#include <math.h>

#include <time.h>

using namespace std;

const struct packetData

{

double time;

bpf_u_int32 length;

};

void ANALYSIS(vector<packetData> &v, int len);

double* koef(double *a, const int N, double &sum, int &n1, int J);

double disp(double* a, int n, double dx);

Главная функция

#include <my.h>

int main(int argc, char *argv[])

{

string file = "2017-06-07_capture-win12.pcap";

char errbuff[PCAP_ERRBUF_SIZE];

pcap_t * pcap = pcap_open_offline(file.c_str(), errbuff);

struct pcap_pkthdr *header;

const u_char *data;

u_int packetCount = 0;

while (int returnValue = pcap_next_ex(pcap, &header, &data) >= 0)

packetCount++;

vector<packetData> v(packetCount);

pcap = pcap_open_offline(file.c_str(), errbuff);

packetCount = 0;

while (int returnValue = pcap_next_ex(pcap, &header, &data) >= 0)

{

v[packetCount].length = header->caplen;

v[packetCount].time = ((double)header->ts.tv_sec + (double)header->ts.tv_usec / 1000000); //переведём время в double для удобства

packetCount++;

}

cout << "Pcap was parsed...\n";

ANALYSIS(v, packetCount);

_getch();

}

Функция анализа

#include <my.h>

void ANALYSIS(vector<packetData> &v, int len)

{

//создаем и заполняем массив для первого окна

const int N1 = 7680; //количество точек в окне сравнения W1

const int N2 = 7168; //количество точек в окне определения W2

int I1 = 1000; //номер первого рассматриваемого пакета для окна сравнения W1

int I2 = 300000; //номер первого рассматриваемого пакета для окна определения W2

int Stap1 = 18; //шаг десктретизации для окна сравнения W1

int Stap2 = 12; //шаг десктретизации для окна определения W2

int J = 8; //уровень разложения для алгоритма

double sum1 = 0; // объект суммы коэффициентов детализации для окна сравнения W1

double sum2 = 0; // создаем объект суммы коэффициентов детализации для окна определения W2

int n = 0; //объект количества коэффициентов для окна сравнения W1 (30)

int m = 0; //объект количества коэффициентов для окна определения W2 (28)

double *a = new double[N1];

for (int i = I1, j = 0; j < N1; i = i + Stap1, j++)

{

int sumpp = 0;

for (int pp = i; pp < i + Stap1; pp++)

sumpp = sumpp + v[pp].length;

a[j] = sumpp / Stap1;

if (j == 0) cout << endl << "Time range W1: " << v[i].time << "-";

if (j == (N1 - 1)) cout << v[i].time << " sec";

}

double* a1 = koef(a, N1, sum1, n, J);

//аналогично вычиляем коэффициенты для второго окна

double *b = new double[N2];

for (int i = I2, j = 0; j < N2; i = i + Stap2, j++)

{

int sumpp = 0;

for (int pp = i; pp < i + Stap2; pp++)

sumpp = sumpp + v[pp].length;

b[j] = sumpp / Stap2;

if (j == 0) cout << endl << "Time range W2: " << v[i].time << "-";

if (j == (N2 - 1)) cout << v[i].time << " sec";

}

double* b1 = koef(b, N2, sum2, m, J);

double dx = sum1 / n;//выборочное среднее выборок последовательности деталей на масштабном уровне j в окне W1

double dy = sum2 / m;//выборочное среднее выборок последовательности деталей на масштабном уровне j в окне W2

// считаем Z по формуле

double Z = disp(b, m, dy) / disp(a, n, dx); //функции выборочных дисперсий выборки последовательности деталей на масштабном уровне j в окне

// квантиль распределения Фишера выбираем из таблицы (степени свободы 29 и 27)

double P = 1.8751306955;

// вывод результатов на экран

cout << endl << "I1= " << I1 << endl << "I2= " << I2 << endl << "Stap1= " << Stap1 << endl << "Stap2= " << Stap2;

cout << endl << "\nZ=" << Z << endl << "P(Fisher)=" << P;

if (Z > P) cout << endl << " Anomaly was detected!!!" << endl;

else cout << endl << " There were NO anomalies " << endl;

}

Функция вычисления коэффициентов

#include <my.h>

double* koef(double *a, const int N, double &sum, int &n1, int J)

{

int n = N;

sum = 0; //сумма коэффициентов в нужном ряду

double *koefJ = new double[N];

n1 = n / (pow(2, J)); //количество коэффициентов

// расчет коэффициентов детализации по алгоритму Малла на уровне 8 (получится 30 и 28 коэффициентов для задачи с размерами окон 7680 и 7168)

for (int i = 1; i <= J; i++)

{

n = n / 2;

for (int k = 0, j = 0; j < (2 * n - 1); j = j + 2, k++)

{

koefJ[k] = (a[j] - a[j + 1]) / (sqrt(2)); // вычитаем два соседних числа в ряду и делим на (sqrt(2))

a[k] = koefJ[k];

if (i == J)

sum = sum + a[k]; // суммирование коэффициентов из последнего ряда a[k]

}

}

return koefJ;

}

Функция вычисления дисперсии

#include <my.h>

//вычисление выборочной дисперсии

double disp(double* dis, int n, double dx)

{

double sum = 0;

double result;

for (int i = 0; i < n; i++)

sum = sum + (pow(dis[i] - dx,2));

result = sum / (n - 1);

return result;

}

Размещено на Allbest.ru


Подобные документы

  • Разработка алгоритма оптимизации коэффициентов дискретного регулятора с законом ПИД по минимуму интегрального квадратичного критерия. Расчёт оптимальных параметров регулятора на основе описанных алгоритмов. Анализ переходных процессов в замкнутой системе.

    практическая работа [1,4 M], добавлен 25.12.2011

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

    курсовая работа [1,3 M], добавлен 30.06.2017

  • Принципы реализации программы проверки статистических гипотез с использованием t-критерия Стьюдента, ее общий алгоритм. Особенности применения двухвыборочного критерия для независимых выборок. Функциональные модели решения задачи для различных функций.

    курсовая работа [644,2 K], добавлен 25.01.2010

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

    контрольная работа [408,8 K], добавлен 23.12.2016

  • Рассмотрение особенностей объявления функций на языке СИ. Определение понятий аргументов функции и их переменных (локальных, регистровых, внешних, статических). Решение задачи программным методом: составление блок-схемы, описание функций main и sqr.

    презентация [125,5 K], добавлен 26.07.2013

  • Понятие алгоритма, его назначение, представление (изобразительные средства для описания), типы, способы записи, схемы. Основные принципы разработки алгоритмов и программ. Характеристика языков программирования. Средства и правила построения блок-схем.

    реферат [87,9 K], добавлен 26.03.2010

  • Шифрование - широко используемый криптографический метод сохранения конфиденциальности информации. Описание схемы шифрования и расшифрования. Структура алгоритмов на основе сети Фейстеля. Скриншоты работающей программы. Скорость работы алгоритмов.

    курсовая работа [545,2 K], добавлен 29.11.2010

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

    контрольная работа [5,6 M], добавлен 14.12.2015

  • Обнаружение аномальных данных в одномерных выборках. Метод D-статистики и Титьена-Мура, графический метод диаграмма "ящик с усами". Описание алгоритмов верификации данных. Руководство для программиста. Анализ данных на основе критерия D-статистики.

    курсовая работа [938,4 K], добавлен 24.06.2013

  • Применение вейвлет-преобразования для сжатия и обработки медицинских сигналов и изображений. Разработка алгоритма автоматизированного выделения PQRST-признаков в сигнале электрокардиограмм с помощью вейвлет-инструментария математического пакета Matlab.

    дипломная работа [4,6 M], добавлен 16.07.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.