Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Программная реализация лабораторного стенда



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

В первый модуль входят следующие функции:

- void Initialize_setting();

- void Number_of_Interface_for_Sniffer();

- string IP_PK();

- string Sniffer(int index_id, string ipv4_str);

- Packet_Info[] Parser(string name_file).

Функция void Initialize_setting() отвечает за настройку параметров лабораторного стенда по умолчанию.

Функция void Number_of_Interface_for_Sniffer() является функцией определения доступных сетевых интерфейсов на персональном компьютере. Number_of_Interface_for_Sniffer()запускает анализатор трафика, расположение которого указано в области «Настройка программы» в поле «Путь к WinDump». Результатом работы данной функции является выпадающий список (checkbox) «Сетевой интерфейс» (см. Рисунок)

Рисунок 19. Результат работы функции определения сетевого интерфейса

Функция string IP_PK() получает IP-адрес компьютера, на котором запущен лабораторный стенд. Определение адреса происходит через параметр командной строки ipconfig.

private string IP_PK()

{

ProcessStartInfo cmd = new ProcessStartInfo(@" cmd.exe" );

 

/// процесс cmd.exe с параметром " ipconfig"

cmd.Arguments = @" /C ipconfig";

 

/// скрываем окно запущенного процесса

cmd.StandardOutputEncoding = Encoding.GetEncoding(866);

cmd.WindowStyle = ProcessWindowStyle.Hidden;

cmd.RedirectStandardOutput = true;

cmd.UseShellExecute = false;

cmd.CreateNoWindow = true;

 

/// запускаем процесс

Process proc_ipconfig = Process.Start(cmd);

 

/// считываем переменную

StreamReader srIncoming = proc_ipconfig.StandardOutput;

string ipconfig = srIncoming.ReadToEnd();

 

/// закрываем процесс

proc_ipconfig.Close();

 

///ищем IPv4 в строке ipconfig

///

return ip;

}

Функция string Sniffer(int index_id, string ipv4_str) запускает анализатор трафика в режиме прослушивания сетевого трафика на сетевом интерфейсе с номером index_id для компьютера с IP-адресом ipv4_str. Номер сетевого интерфейса определяет пользователь, выбрав одну из записей выпадающего списка «Сетевой интерфейс». Параметр ipv4_str является результатом запуска предыдущей функции string IP_PK(). WinDump запускается с параметрами, описанными в пункте «Описание входных данных» данного раздела. По окончанию своей работы функция возвращает строковую переменную, которая содержит путь к файлу с данными о трафике. Функция Packet_Info[] Parser(string name_file) в качестве входного параметра принимает данный путь. Перед тем, как начать сбор трафика, функция Sniffer запускает параллельный поток void thread_time(), который следит за временем захвата пакетов. В исполняемом коде программы прописано, что превышение времени захвата трафика в 120 секунд влечет за собой автоматическое завершение данной функции. Интервал в две минуты выбран из расчета, что лабораторный стенд является средством для помощи в обучении студентов. Он может быть изменен при необходимости в исходном коде программы.

private string Sniffer(int index_id, string ipv4_str)

{

int kolvo_packets = Convert.ToInt32(KolichestvoPacketov.Text);

string name_file = Application.StartupPath.ToString() + " \\log_.txt";

 

/// Сниффер

ProcessStartInfo cmd_1 = new ProcessStartInfo(@" cmd.exe" );

cmd_1.Arguments = " /c " + textBox_windump.Text + " -i" + index_id + " -s 0 -c " + kolvo_packets + " -vv -n ip host " + ipv4_str + " > " + name_file;

 

/// скрываем окно запущенного процесса

cmd_1.StandardOutputEncoding = Encoding.GetEncoding(866);

cmd_1.WindowStyle = ProcessWindowStyle.Hidden;

cmd_1.RedirectStandardOutput = true;

cmd_1.UseShellExecute = false;

cmd_1.CreateNoWindow = true;

 

/// параллельный поток считает время

Thread my_thread = new Thread(thread_time);

my_thread.Priority = ThreadPriority.AboveNormal;

my_thread.Start();

Process proccess_1 = Process.Start(cmd_1);

proccess_1.WaitForExit();

if (exit_cmd == 0) exit_cmd = 1;

 

richTextBox_data.Text += " Захват пакетов окончен \n";

richTextBox_data.Text += String.Empty.PadLeft(30, '=') + " \n";

 

if (exit_cmd == 1)

return name_file;

else return " ";

}

 

Packet_Info[] Parser(string name_file) – функция преобразования данных сетевого трафика из файла в массив данных Packet_Info[]. Класс Packet_Info является пользовательским типом данных. Поля данного класса представляют собой поля заголовков IP и TCP пакетов. В Таблице приведен пример для записи входного файла

11: 11: 50.236378 IP (tos 0x0, ttl 128, id 9821, offset 0, flags [DF], proto: TCP (6), length: 41) 192.168.1.5.3546 > 173.194.122.193.443: ., cksum 0xaf6c (correct), 274325955: 274325956(1) ack 3778425421 win 256

Таблица 2 - Данные класса Packet_Info

Поле Packet_Info Значение поля Packet_Info
public int[] time; time[0] = 11; time[1] = 11; time[2] = 50; time[3] = 236378
public string tos; 0x0
public int ttl;
public int id;
public int offset;
public string flag_fragment; DF
public string flag_urgent; -
public string flag_psh; -
public string flag_rst; -
public string flag_fin; -
public string flag_syn; -
public Int64 ack;
public string flag_icmp; -
public string proto; TCP (6)
public int len;
public string IP_ot; 192.168.1.5
public int port_ot;
public string Ip_pol; 173.194.122.193
public int port_pol;
public string checksum; correct
public int win;
public string text; - (сообщение в шестнадцатеричном виде)
public int size_data;
public string seq

 

Функция Parser является завершающей в первом модуле программы.

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

- void TCP_scan(Packet_Info[] packets, string ipv4_str) и int If_TCP_scan(Packet_Info[] packets, int i, string ipv4_str);

- void Port_dos(Packet_Info[] packets, string ipv4_str, int number_port);

- void ICMP_flood(Packet_Info[] packets, string ipv4_str);

- void SMURF_attack(Packet_Info[] packets, string ipv4_str);

- void Land_attack(Packet_Info[] packets, string ipv4_str);

- void Bad_packet_TCP(Packet_Info[] packets, string ipv4_str).

Подробный алгоритм функционирования правил распознавания вторжений представлен в пункте «Сигнатуры атак».

Сигнатура определения SYN-сканирования представлена двумя функциями. If_TCP_scan() подтверждает установление соединения в три шага, описанное в подпункте «TCP-сканирование (SYN)».

Входными данными для всех функций являются IP-адрес компьютера-жертвы и массив данных с характеристиками сетевых пакетов. void Port_dos() также принимает дополнительный параметр – номер порта, который задается в исходном коде программы (по умолчанию, порты № 135, 137, 138, 139 и 445).

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

Целью данного пункта является:

- демонстрация соответствия реализованных функций лабораторного стенда к его назначению;

- демонстрирование реализации исходных требований в лабораторном стенде.

Каждый тест будет представлен наборами исходных данных и ожидаемых результатов работы лабораторного стенда.

Для формирования тестового трафика было использовано стороннее ПО: эмуляторы трафика Cat CARAT и Colasoft Packet Builder, утилита для сканирования сети Nmap и программа, разработанная для помощи в создании сигнатур СОВ и тестирования, Metasploit [19].

Тестирование осуществляется на локальной виртуальной сети, созданной на базе Oracle VM VirtualBox, а также с помощью ПК, подключенного к Интернету.

Объём оперативной памяти, необходимой для работы лабораторного стенда, составляет 19, 7 МВ.

Тест №1

Исходные данные:

- учебный режим (SYN-сканирование);

- тестовый набор из файла «nmap_syn.txt»;

- сохранить результат анализа в файл.

Результат: должно быть обнаружено SYN-сканирование (Рисунок).

Файл «nmap_syn.txt» сформирован с помощью Metasploit (Рисунок). Параметры, с которыми была запущена программа:

nmap –sS 192.168.1.3,

где nmap – название утилиты для сканирования,

параметр -sS – указание на сканирование с помощью SYN-флагов,

192.168.1.3 – IP-адрес компьютера-жертвы.

Рисунок 20. Запуск SYN-сканирования

Рисунок 21. Тест №1

Результат работы программы (отчётные данные):

IP-компьютера: 192.168.1.3

========================================

Открытие файла C: \Users\Anna\Desktop\nmap_syn.txt

Запустили разбор пакетов...

Запустили сигнатуру " TCP-сканирования"...

========================================

========================================

 

ВОЗМОЖНА АТАКА (TCP - сканирование)

 

Сканирование портов c 12: 19: 30.590574 до 12: 19: 31.729807

Количество просмотренных пакетов = 20

========================================

========================================

Статистика:

1. Порт - 22 Кол-во обращений = 2

2. Порт - 53 Кол-во обращений = 2

3. Порт - 80 Кол-во обращений = 2

4. Порт - 111 Кол-во обращений = 2

5. Порт - 113 Кол-во обращений = 2

6. Порт - 199 Кол-во обращений = 2

7. Порт - 256 Кол-во обращений = 2

8. Порт - 3306 Кол-во обращений = 2

9. Порт - 5900 Кол-во обращений = 2

10. Порт - 8080 Кол-во обращений = 2

========================================

Отчет о проверке сохранён в файл Repository.mypr (Рисунок):

Рисунок 22. Содержимое файла Repository.mypr. Последняя запись создана Тестом №1

Тест №2

Исходные данные:

- учебный режим (ICMP-flood);

- тестовый набор из файла «icmp_flood.txt»;

- сохранить результат анализа в файл (Рисунок).

Результат: наличие атаки не обнаружено (Рисунок).

Файл icmp_flood.txt создан ping-запросами между двумя компьютерами с IP-адресами 192.168.1.5 и 192.168.1.3.

Рисунок 23. Тест №2

Рисунок 24. Содержимое файла Repository.mypr. Последняя запись создана Тестом №2

Тест №3

Исходные данные:

- рабочий режим;

- тестовый набор из файла «attack_service.txt»;

- не сохранять результаты анализа.

Результат: обнаружено наличие атаки на сервисы Windows (Рисунок).

Данные файла attack_service.txt созданы через эмулятор трафика Cat CARAT.

Результат работы программы (отчётные данные):

IP-компьютера: 192.168.1.5

========================================

Открытие файла C: \Users\Anna\Desktop\attack_service.txt

Запустили разбор пакетов...

========================================

========================================

 

TCP - сканирование не обнаружено

========================================

========================================

 

- - - ВОЗМОЖНА АТАКА (на порт № 135) - - -

 

На порт № 135 послано 1000 запросов

за промежуток времени c 11: 29: 51.60354 до 11: 29: 51.140196

========================================

========================================

 

Атака на порт № 137 не обнаружена

========================================

========================================

 

Атака на порт № 138 не обнаружена

========================================

========================================

 

 

- - - ВОЗМОЖНА АТАКА (на порт № 139) - - -

 

На порт № 139 послано 1000 запросов

за промежуток времени c 11: 30: 4.801479 до 11: 30: 4.873915

========================================

========================================

 

Атака на порт № 445 не обнаружена

========================================

========================================

 

10: 59: 59.50000 - 11: 30: 4.873915

aтака " ICMP-flood" не обнаружена

========================================

========================================

 

10: 59: 59.50000 - 11: 30: 4.873915

" SMURF - aтака" не обнаружена

 

Проверено 2503 пакетов

========================================

========================================

 

10: 59: 59.50000 - 11: 30: 4.873915

" LAND - aтака" не обнаружена

 

Проверено 2503 пакетов

========================================

========================================

 

10: 59: 59.50000 - 11: 30: 4.873915

Запрещённые комбинации TCP-флагов не обнаружены

 

Проверено 2503 пакетов

 

Рисунок 25. Тест №3

Тест №4

Исходные данные:

- рабочий режим;

- анализ в режиме реального времени;

- сохранить результаты анализа (Рисунок).

Предполагаемый результат: наличие атаки не обнаружено (Рисунок).

Рисунок 26. Содержимое файла Repository.mypr. Записи созданы Тестом №4

 

Рисунок 27. Тест №4

Результат работы программы (отчётные данные):

Запустили функцию определения интерфейса...

Выбран сетевой интерфейс

1.{B4E7D39C-6FFF-45E9-A5E0-9518BFC6083E} (Sun)

========================================

Выбран сетевой интерфейс

4.{29CAC82D-EC33-47A8-8B9A-00846CCF7B79} (USB2.0 to Fast Ethernet Adapter)

========================================

IP-компьютера: 192.168.1.5

========================================

Запустили cниффер...

Захват пакетов окончен

==============================

Запустили разбор пакетов...

========================================

========================================

 

TCP - сканирование не обнаружено

========================================

========================================

 

Атака на порт № 135 не обнаружена

========================================

========================================

 

Атака на порт № 137 не обнаружена

========================================

========================================

 

Атака на порт № 138 не обнаружена

========================================

========================================

 

Атака на порт № 139 не обнаружена

========================================

========================================

 

Атака на порт № 445 не обнаружена

========================================

========================================

 

13: 13: 47.669281 - 13: 13: 50.185270

aтака " ICMP-flood" не обнаружена

========================================

========================================

13: 13: 47.669281 - 13: 13: 50.185270

" SMURF - aтака" не обнаружена

 

Проверено 2999 пакетов

========================================

========================================

 

13: 13: 47.669281 - 13: 13: 50.185270

" LAND - aтака" не обнаружена

 

Проверено 2999 пакетов

========================================

========================================

 

13: 13: 47.669281 - 13: 13: 50.185270

Запрещённые комбинации TCP-флагов не обнаружены

 

Проверено 2999 пакетов

ЭКОНОМИЧЕСКАЯ ЧАСТЬ ПРОЕКТА

Цель экономической части дипломного проекта – показать понимание студентом базовых экономических понятий.

Оценка затрат

Общие затраты составляют сумму специально разработанного программного обеспечения.

В рамках экономического раздела выполнено:

- рассчитана трудоемкость разработки программного продукта с использованием типовых норм времени, предназначенных для нормирования труда специалистов, занятых разработкой программного обеспечения для ЭВМ, и охватывающих такие стадии разработки проектных материалов, как техническое задание, эскизный проект, технорабочий проект и внедрение;

- определена стоимость машинного часа с учетом всех эксплуатационных затрат;

- рассчитаны себестоимость и цена программного продукта;

- проанализирована конкурентоспособность лабораторного стенда;

- определен экономический эффект от использования программного продукта.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-30; Просмотров: 668; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.101 с.)
Главная | Случайная страница | Обратная связь