Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Программная реализация лабораторного стенда
Функционал лабораторного стенда разделен условно на 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
Функция 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; Просмотров: 711; Нарушение авторского права страницы