Читать книгу «Безопасность вычислительных сетей. Практические аспекты» онлайн полностью📖 — Ивана Андреевича Трещева — MyBook.
image

3. Сетевые атаки
3.1 MAC-флудинг

Флудинг МАС – возможность неправомерного просмотра трафика в сети. Все МАС адреса хранятся на коммутаторах. Если переполнить сеть большим количеством поддельных МАС, то память коммутатора переполняется, и тогда коммутатор «превращается» в концентратор.

Для проверки уязвимости соберем лабораторный стенд по топологии, представленный на рисунке 38. На атакующем компьютере с помощью виртуальной машины был развернут дистрибутив GNU/Linux «Kali Linux». По умолчанию на нем установлена утилита «macof», совершающая MAC-флудинг на коммутатор.

Рисунок 38 – Схема лабораторного стенда


На атакующем компьютере с Kali Linux через терминал запускаем утилиту командой «macof». Через несколько минут после начала флудинга таблица маршрутизации коммутатора переполняется и коммутатор становится концентратором, который передает пакеты всем подключенным узлам в сети.

После этого подключаем к коммутатору две жертвы: PC1 и PC2, между котороми будет проходить Echo-запрос с помощью команды «ping адрес».

В нашем случае IPv4-адрес атакующего имел вид 10.10.1.1, IPv4-адреса жертв: 10.10.1.3 и 10.10.1.6 соответственно. После произведенного MAC-флудинга атакующий компьютер с помощью Wireshark смог перехватить пакеты, предназначенные для других узлов (рисунок 39).


Рисунок 39 – Перехват пакетов


3.2 ARP-спуфинг

Классический пример атак типа «человек посредине». Протокол ARP является уязвимым – отсутствует проверка подлинности ARP-запросов и ARP-ответов. А

Для проверки уязвимости соберем лабораторный стенд по топологии, представленный на рисунке 40. Для ARP-спуфинга воспользуемся программой Cain & Abel.


Рисунок 40 – Лабораторный стенд


В программе (рисунок 41) активируем кнопку «Start/Stop Sniffer».


Рисунок 41 – Активация программы


Перейдем во вкладку Sniffer. Нажмем кнопку «Add to list» (изображение плюса) и укажем диапазон нужных IP-адресов, которые находятся в сети. После этого в списке будут видны IPv4-адрес маршрутизатора (10.10.1.254) и IPv4-адрес жертвы (10.10.1.13). Это показано на рисунке 42.


Рисунок 42 – IPv4-адрес маршрутизатора и жертвы


Перейдем во вкладку ARP. Нажмем кнопку «New ARP Poison Routing» (изображение плюса). В нем необходимо выбрать IPv4-адрес жертвы (рисунок 43). Активируем кнопку «Start/Stop ARP».


Рисунок 43 – Вкладка ARP


На компьютере жертвы откроем сайт, работающем на протоколе HTTP, например, http://olymp.knastu.ru. Вводим любой логин/пароль (рисунок 44). Атакующий получает логин/пароль от жертвы (рисунок 45).


Рисунок 44 – Ввод логина и пароля


Рисунок 45 – Получение логина и пароля жертвы

2 Применение сетевых атак

2.1 Истощение ресурсов DHCP и подмена DHCP-сервера


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


Для проверки уязвимости соберем лабораторный стенд по топологии, представленный на рисунке 46.


Рисунок 46 – Схема лабораторного стенда


На атакующем компьютере с помощью виртуальной машины был развернут дистрибутив GNU/Linux «Kali Linux». Атаку будем выполнять при помощи утилиты «dhcpstarv». Прежде эту программу необходимо установить при помощи команды в терминале – apt-get install dhcpstarv. Для запуска утилиты, необходимо ввести команду – dhcpstarv —i eth0 (где eth0 – порт для выхода в сеть, его узнать можно с помощью команды ifconfig). Данная программа записывает на себя все доступные адреса, поставляемые DHCP сервером. Как результат – сервер не может выполнять свою функцию. На рисунке 47 показана работа программы, а на рисунке 48 продемонстрировано, как заполняются все доступные IPv4-адреса в DHCP-сервере.


Рисунок 47 – Работа программы


Рисунок 48 – Заполнение всех доступных IPv4-адресов в DHCP-сервере


На Kali Linux разворачиваем DHCP-сервер. Для установки вводим команду apt-get install isc-dhcp-server.

После установки производим настройки DHCP-сервера. Перейдем по адресу: /etc/network/interfaces. Пропишем (рисунок 49):

auto eth0

iface eth0 inet dhcp


Рисунок 49 – Настройка DHCP-сервера


Перейдем по адресу: /etc/default/isc-dhcp-server. В строке «#INTERFACESv4=«"» уберем «#» и в скобках впишем eth0. Конечный результат будет выглядеть как на рисунке 50.


Рисунок 50 – Настройка DHCP-сервера


Перейдем по адресу: /etc/dhcp/dhcpd.conf. Ищем строку # This is a very basic subnet declaration. Настраиваем как на рисунке 51.


Рисунок 51 – Настройка DHCP-сервера


В нашем случае для правильной работы следует прописать следующие значения:


• subnet – IPv4-адрес сети;


• netmask – маска сети;


• range – пул адресов, которые будут выдаваться устройству при подключении к DHCP-серверу;


– option routers 10.10.1.10 – шлюз по умолчанию. В нашем случае необходимо указать IPv4-адрес устройства, в котором устанавливается DHCP-

сервер. Эту информацию можно посмотреть в ifconfig;


– option broadcast-address 10.10.1.255 – широковещательный адрес.


Для запуска DHCP-сервера вводим команду /etc/init. d/isc-dhcp-server start (рисунок 52).


Рисунок 52 – Ввод команды для запуска DHCP-сервера


После этого DHCP-сервер функционирует и может выдавать IPv4-адреса узлам, которые пытаются подключится к роутеру.

Подключаем другое устройство к роутеру. В нашем случае – это смартфон. После подключения он получает IPv4-адрес из пула адресов, назначенных на DHCP-сервере атакующего (рисунок 53).


Рисунок 53 – Получение IPv4-адреса из пула адресов


IPv4-адрес смартфона в нашем случае: 10.10.1.191 (адрес получен от DHCP-сервера атакующего). IPv4-адрес компьютера, к которому отправляются Echo-запросы для проверки соединения имеет адрес 10.10.1.70, как на рисунке (IPv4-адрес получен от настоящего DHCP-сервера, который был на роутере). На рисунках 54—55 показаны Echo-запросы от одного устройства к другому.


Рисунок 54 – Echo-запросы


Рисунок 55 – Echo-запросы


Во время Echo-запросов Wireshark, запущенный под управлением Kali Linux, получает пакеты, которые передавались от одного устройства к другому. Следовательно, правильно произвести атаку нам удалось.

3. DoS

Основная идея, что большой наплыв пользователей приводит к отказу в обслуживании части из них. Расширение данной атаки – DDOS.

Для реализации нескольких типов DDoS-атак соберем лабораторный стенд по рисунку 56. Атакующих компьютеров необязательно должно быть 10 – можно ограничиться 2—3 компьютерами, которые будут атаковать сервер.

Рисунок 56 – Схема лабораторного стенда


3.1 HTTP-флуд


HTTP-флуд – это наиболее распространенная flood-атака. В ее основе – отсылка HTTP-запросов GET на 80-й порт и, как следствие, переполнение и невозможность обрабатывать новые запросы.

Для реализации этой и последующих типов атак мы воспользуемся программой Low Orbit Ion Cannon. LOIC – программа с открытым исходным кодом, предназначенная для осуществления DDoS-атак, написанная на языке программирования C#.

Запускаем программу на компьютерах атакующих (рисунок 57).


Рисунок 57 – Интерфейс программы Low Orbit Ion Cannon


Настраиваем программу следующим образом:

В «1. Select your target» прописываем в нужную строку либо известный адрес

Нажимаем кнопку «Lock on»; В «3. Attack options» выставляем метод HTTP, количество потоков для атаки, убираем галочку «Wait for reply»; в «2. Ready?» нажимаем кнопку «IMMA CHARGIN MAH LAZER».

Во время атаки сервер жертвы получает огромную нагрузку на процессор. Через некоторое время сервер становится недоступным – появляется 503 ошибка (рисунок 58).


Рисунок 58 – ошибка 503


Реализация в LOIC TCP и UDP flood атак выполняется аналогичным образом: в качестве метода в программе выбирается либо TCP-, либо UDP-атака. Конечно, если злоумышленник получит шелл, то он может реализовать атаку типа недостатка ресурсов переполнив процессор ненужными инструкциями или память ненужными вычислениями.

На рисунке 59 показан скриншот из Диспетчера задач атакованного сервера. Видно, что сервер испытал большую нагрузку во время расчетов.


Рисунок 59 – Диспетчер задач атакованного сервера

Атаки на программное обеспечение


Использование IDA Pro в зада

IDA Pro Disassembler (Interactive DisAssembler) – наиболее популярное средство на рынке сегодня. Это интерактивный дизассемблер, широко использующийся для обратной разработки программ позволяющий итеративно исследовать исходный код, пока не станет ясно, что именно и как делает исследуемая программа.

Существует несколько версий IDA Pro – бесплатная (freeware), стандартная (standard) и расширенная (advanced). Бесплатная версия обладает ограниченными возможностями по сравнению со стандартной и расширенной версиями – поддерживается только архитектура x86 и отсутствует поддержка подключаемых модулей.

1 Использование IDA Pro
1.1 Автоматический анализ

После запуска IDA предлагает 3 варианта продолжения: дизассемблировать новый файл (new), продолжить без загрузки файла (go), открыть ранее дизассемблированный файл (previous). Скриншот окна представлен на рисунке 60.


Рисунок 60 – Окно быстрого старта.


Выберем дизассемблирование нового файла. Загрузим на анализ любой exe. Далее появится окно, изображённое на рисунке 61.


Рисунок 61 – Загрузка файла на анализ.


Иногда после компиляции в файле остаётся отладочная информация. Тогда IDA покажет окно, изображённое на рисунке 62 с предложением загрузить отладочную информацию.


Рисунок 62 – Загрузка отладочной информации.


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

Кроме графового представления существует множество других важных вкладок, доступных в меню View-> subviews: шестнадцатеричное представление, список строк в файле, список имён из библиотек или отладочной информации, список импортированных функций и значений с указанием библиотеки.

Кроме того, в IDA существует возможность представить функцию в виде псевдокода, синтаксис которого копирует синтаксис языка программирования Си. Для просмотра функции в виде псевдокода нужно нажать клавишу F5.


1.2 Ручной анализ

Качественное отличие IDA Pro от других дизассемблеров – интерактивность. Пользователь может сам сообщать дизассемблеру дополнительную информацию.

Рассмотрим метод ручного анализа на практике. Часто бывает так, что IDA не может в автоматическом режиме найти функцию main, которая чаще всего является точкой входа. Эта функция принимает два обязательных аргумента: argc (количество аргументов) и argv (список аргументов). То есть можно косвенно предположить что если функция в программе работает с этими аргументами то она и есть main.

Откроем вкладку списка имён. Нажатием Ctrl+F включаем поиск по именам.