Первый в истории релиз Ubuntu Cinnamon дистрибутив
Первый в истории релиз Ubuntu Cinnamon дистрибутив!
16 декабря, 2019
Отказ в обслуживании, классификация DoS атак
Отказ в обслуживании, классификация DoS атак
17 декабря, 2019
Показать все
SУN флуд

Атака, известная как SУN-флуд, пытается превысить число соединений в ТСР/IР-стеке. Протокол ТСР поддерживает надежные соединения, и за каждым из них нужно следить. Этим занимается ТСР /IР-стек в ядре, но он может сохранить ограниченное количество входящих соединений. Извлечь выгоду из этого ограничения позволяет спуфинг.
Атакующий затапливает систему жертвы многочисленными SУN-пакетами с несуществующими адресами отправителя. Каждый такой пакет инициирует ТСР соединение, поэтому машина-жертва рассылает по фальшивым адресам SYN/АСК-пакеты и ждет АСК-ответов. Все наполовину открытые соединения помещаются в специальную очередь, но ее размер ограничен. Так как рассылка проводится по фальшивым адресам, машина не дождется АСК-ответов, которые позволят установить соединение и тем самым удалить записи из очереди. Вместо этого наполовину открытые соединения сами закроются после некоторого ожидания, то есть через относительно длительный временной промежуток.

Пока продолжается наплыв фальшивых SУN-пакетов, очередь ожидающих открытия соединений остается переполненной, что делает практически невозможным получение системой реальных SУN-пакетов и установку ТСР /IР-соединения.
Мы можем написать программу для такой атаки, взяв за основу код программ Nemesis и aгpspoof. В приведенном ниже примере фигурируют уже знакомые вам функции из библиотеки libnet и функции сокетов. В коде Nemesis псевдослучайные числа для различных IР-полей генерирует функция libnet_get_prand ( ). Выбор начального значения для генератора делает функция libnet_seed_prand( ) .
Ниже они будут использоваться аналогичным образом.

synflood


Функция print_ip() преобразует тип u_long, используемый библиотекой libnet для хранения IР-адресов, в ожидаемый функцией inet_ntoa () тип struct. Приведение типов выполняется для компилятора и никак не меняет значений.
Мы воспользовались библиотекой libnet версии 1.1, несовместимой с libnet версии 1 .0. Но программы Nemesis и arpspoof до сих пор работают с версией 1 .0, поэтому я добавил ее в среду LiveCD — она будет применяться в программе synflood.
Для компиляции при наличии библиотеки libnet мы добавили флаг — lnet, как делалось в случае с библиотекой libpcap. Однако в листинге ниже мы видим, что компилятору этого недостаточно:

У нас не указан порядок байтов и имеется синтаксическая ошибка перед строковой константой. Сбой компилятора связан с тем, что мы не задали для библиотеки libnet несколько обязательных флагов ( defines). Их можно увидеть с помощью входящей в библиотеку программы libnet-config.

Подстановкой команд в оболочке BASH можно динамически вставить эти флаги в команду компиляции.

В приведенном примере узел с адресом 192.168.42.88 представляет собой машину с операционной системой Windows ХР, на которой на порте 22 работает openssh cepвep через cygwin. Вывод tcpdump демонстрирует, как указанный узел заполняют фальшивые SУN-пакеты со случайными IР-адресами. Пока наша программа
работает, открыть нормальное соединение на этот порт невозможно.

Некоторые операционные системы (например, Linux) для противодействия SУN флуду используют технику SYN cookies. В этом случае ТСР-стек регулирует исходное число подтверждения для ответных пакетов SYN/ АСК, взяв за основу особенности узла и время (чтобы предотвратить атаки повторного воспроизведения).
ТСР-соединения не активируются, пока не будет проверен последний АСК-пакет для процедуры согласования. Если порядковый номер не совпадает или АСКответ не приходит, соединение не создается. Это предотвращает фальшивые подключения, ведь АС К-пакет требует информации для отправки по адресу исходного SУN-пакета.

Отказ в обслуживании, классификация DoS атак

0
https://fyfor.com/syn-flud/

Автор публикации

не в сети 6 дней

Андрей Ковальчук

6
Комментарии: 6Публикации: 90Регистрация: 09-12-2019

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

18 − тринадцать =

Авторизация
*
*

тринадцать − 7 =

Регистрация
*
*
*
Пароль не введен
*

три × 3 =

Генерация пароля

4 + 10 =