Найти тему
Matthew76

Виды DDoS атак и методы борьбы с распределенным отказом в обслуживании.

Что же такое DDoS и как от него защититься? Аббревиатура DDoS - это сокращение от Distributed Denial of Service (распределенный отказ в обслуживании). Это когда несколько зараженных компьютеров (речь о тысячах) отправляют на сервер множество запросов, с которыми он, в последствии, не может совладать и обработать. Обычно цели злоумышленников являются сайты и серверы и необходимости их "падения".

Сразу скажу, что универсальных мер защиты нет, т.е. поставить что то с коробки и это работает - не существует. Всегда, при защите сервиса - нужен комплексный подход.

С ДДоС атаками владельцы серверов сталкиваются каждый день.

А вы знаете какие типы DDoS-атак бывает? Рассказываю:

Большинство всех атак имеют смешанный характер, отсюда и невозможность универсального решения. Я выделяю 1ый тип атак - по модели OSI, 2ой - по протоколам и 3ий по механизму воздействия.

Статистика DDoS-атак по протоколам в первом квартале 2023 года
Статистика DDoS-атак по протоколам в первом квартале 2023 года

Опишу основные атаки по протоколам:

Атака IP-Null

Если рассматривать технические стандарты всемирной сети, то заголовок IP-пакета содержит в себе сведения об используемом протоколе транспортного уровня в отведенном для него поле "Protocol". Злоумышленник устанавливает значение этого поля равным нулю. Этот прием позволяет отправлять пакеты в больших количествах, не беспокоясь, что они остановятся на границе с фаерволом или маршрутизатором.

SYN-флуд

Излюбленный хакерами вид атаки, который строится на алгоритме трехэтапного рукопожатия TCP. Злоумышленник генерирует пакеты с большой скоростью, которые запрашивают соединение с сервером, НО содержат поддельный адрес источника. Сервер посылает пакет в ответ, и ждет отклик, который не приходит, потому что адрес изначально был поддельный. Но сервер уже выделил память для установки сессии. А память ограничена. Таким образом, постепенно SYN-flood занимает всю память таблицы соединений и не может вовремя обработать легитимных клиентов или вовсе "ложится"

Алгоритм трехэтапного рукопожатия
Алгоритм трехэтапного рукопожатия

UDP-флуд

А этот тип атаки чем то похож на SYN-flood, но использует большое количество udp пакетов от различных IP-адресов. Эти фальсифицированные UDP-пакеты переполняют сетевое оборудование и провоцируют перегрузку интерфейсов. Они утилизируют всю полосу пропускания.

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

Ping of death

Этот метод атаки был широко распространен в середине 1990-х годов. Он относится к DoS атаке (атака с одного источника). Во всем мире принято так, что один пакет эхо запроса (ping) будет равен 64 байта ну и + 20 байт заголовка. А по стандарту IPv4 (RFC 791) - суммарный объем пакета не должен превышать 65535 байт. Таким образом, если приходит пакет, по объему превышающий эти показатели, возникают сбои переполнения памяти и система не может отправлять ответы вообще.

IPv6 тут кстати не очень поможет, у которой суммарный объем пакета может быть намного больше, потому что хакеры отправляют фрагменты искаженных пакетов и система жертвы у себя пытается их собрать, но при сборке размер пакета получается слишком большим, что ведет к переполнению памяти и сбою работы

А казалось бы, такой безобидный пинг :)

Пинг сделал свое дело
Пинг сделал свое дело

Атака медленными сессиями

Хакер устанавливает TCP сессию между жертвой и своим ботом. Когда сессия активна, ее удерживают открытой с помощью пакета, который оставляют без ответа. Такие действия начинают расходовать системные ресурсы. И сервер-жертва расходует все свои резервы на поддельные сессии с ботами.

Ботов у хакера может быть не десятки и не сотни. В декабре 2021 года был обнаружен крупнейший ботнет в истории интернета. С его помощью хакеры проводят DDoS-атаки мощностью более 1Тбит/с и длительностью несколько суток.

Едем далее. На очереди у меня классификация относительно модели OSI

1ый уровень - физический

Канал работает с данными типа "биты" передача двоичных данных. Собственно пропускаем этот уровень, потому что под атакой может быть только искусственное воздействие.

2ой уровень - канальный

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

MAC-flood attack
MAC-flood attack

Еще не устали? Дальше - больше и интереснее

3ий уровень - сетевой

На этом уровне начинается общение маршрутизаторов и коммутаторов, расположенных в разных сетях. Тут происходит преобразование мак адресов в сетевые адреса. Главная задача этих действий, это построить оптимальный путь для передачи между устройствами.

Злоумышленники научились использовать этот канал, взяв за основу ICMP-flood, чтобы перегрузить ICMP сообщениями целевую сеть. Необходимо это для перегрузки пропускной способности и ограничения числа запросов именно по ICMP протоколу, которое возможно обработать.

4ый уровень - транспортный

Он использует протоколы UDP и TCP, а также обрабатывает и транспортирует пакеты данных между узлами связи. Этот уровень контролирует поток информации и выявляет ошибки. В случае их обнаружения отправляет данные повторно. Тут можно увидеть CRC ошибки

В транспортном уровне хакеры создают условия, при которых превышаются пороговые значения по ширине канала и количеству доступных подключений. Самые распространенные типа DDoS-атак - Smurf и SYN-flood

Далее идут высокоуровневые атаки. В этих методах уже больше логики.

-6

5-й уровень — сеансовый

Пятый уровень управляет взаимодействием между приложениями, а также устанавливает и завершает соединение, синхронизирует задачи операционной системы.

В пример можно привести слабые места программного обеспечения через протокол Telnet, что может привести к потере доступа над сервером у администратора.

6-й уровень — представления

Уровень кодирует/декодирует данные и адаптирует их для человека или машины, в понятном им виде. Сюда входят видеоданные, аудиоданные, изображения и текст. Между 6 и 7 уровнем модели OSI находится SSL-протокол. Он обеспечивает клиенту безопасное соединение с сервером и предоставляет возможность взаимной проверки подлинности.

Опять же, злоумышленниками будет использован флуд, но уже SSL пакетами. Эти пакеты генерируются в искаженном виде, и посланы в большом количестве. Таким образом тормозят ресурсы, так как проверка шифрованных SSL-пакетов занимает много времени.

7-й уровень — прикладной или уровень приложений

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

Самый простой пример - это использование HTTP флуда. Хакер посылает запросы на подключение, на ввод логинов, на заказ товара, загрузку видео и т.д. В то же время, настоящие легитимные пользователи не могут попасть на сайт, так как он перегружен мусорными запросами.

В ботнете может быть устройства умного дома. Даже чайник, который кипятит воду с утра, может быть заражен, и в любой момент начать отдавать поддельные запросы по указанию хакера.
-7

Классификация DDoS-атак по механизму действия

Первая группа - это атаки, направленные на переполнение канала связи, иными словами любимые хакерами различные типы флуда.

DNS-амплификация

У публичного DNS-сервера запрашивают данные о домене и направляют его ответ на атакуемый сервер. Запрос генерируется таким образом, чтобы в ответ вернулось как можно больше данных.

Фрагментированный UDP-флуд

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

ICMP-флуд

На сервер-жертву посылается большое количество поддельных ICMP-пакетов с широкого диапазона IP-адресов. Цель злоумышленника — заполнение канала сервера-жертвы потоком поддельных запросов.

NTP-амплификация

Атакующий многократно отправляет запрос monlist на NTP-сервер, одновременно подменяя свой IP-адрес на адрес сервера-жертвы. Ответ monlist может содержать список до 600 последних клиентов. Цель атаки — небольшим запросом отправить большой поток UDP-трафика на сервер-жертвы.

NTP-флуд

Хакер генерирует большое количество поддельных NTP-запросов с широкого диапазона IP-адресов. NTP-сервер пытается обработать все запросы, тем самым тратя системные и сетевые ресурсы.

Фрагментированный ACK-флуд

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

Ping-флуд

Разновидность ICMP-флуд, нацеленная на выведение из строя сервера, с помощью утилиты ping.

UDP-флуд с помощью ботнета

Алгоритм атаки схож с обычным UDP-флудом, за исключением одного —  пакеты генерируются ботами. Системные ресурсы заполняют нецелевым трафиком и они выходят из строя.

VoIP-флуд

На сервер-жертву отправляют большое количество поддельных VoIP- пакетов с широкого диапазона IP-адресов. Сервер тратит все ресурсы, чтобы обработать как поддельные, так и легитимные запросы.

Флуд медиа-данными

Злоумышленник отправляет большое количество поддельных пакетов с видео- или аудио-данными на сервер-жертву. Сетевое оборудование вынуждено тратить вычислительные ресурсы на их обработку.

Атака широковещательными UDP-пакетами

Кибератака строится на отправке UDP-пакетов с подмененным IP-адресом, в расчете на то, что каждый из этих пакетов будет отправлен каждому из клиентов этой сети.

Фрагментированный ICMP-флуд

На сервер-жертву направляется поток фрагментированных ICMP-пакетов максимального размера. Полоса забивается мусорным трафиком, и возникает опасность исчерпания вычислительных ресурсов.

DNS-флуд

На атакуемый DNS-сервер направляется масса DNS-запросов с широкого диапазона IP-адресов. Сервер-жертва не может определить, какой из пакетов пришел от легитимного пользователя, а какой — нет, и вынужден отвечать на все запросы.

-8

Группа атак, которые используют уязвимости стека сетевых протоколов

Атаки с модификацией поля TOS

Атакующий создает иллюзию перегруженности сети, и сервер самостоятельно ограничивает пропускную способность для подключений. Для этого хакеры используют поля TOS и ECN в IP-пакетах.

ACK-флуд

Злоумышленники отправляют на сервер-жертву фальсифицированные ACK-пакеты, не принадлежащие ни одной из сессий в списке соединений сервера. Атакуемый сервер не может определить принадлежность поддельных пакетов и выходит из строя.

RST, FIN-флуд

Сервер-жертва получает поддельные RST- или FIN-пакеты, не имеющие отношения ни к одной из сессий в базе данных сервера.

Атака поддельными TCP-сессиями с несколькими SYN-ACK

Хакер генерирует поддельные сессии несколькими SYN- и ACК-пакетами. Это позволяет обойти механизмы защиты и создать трафик, похожий на легитимный.

Атака с помощью перенаправления трафика высоконагруженных сервисов

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

Атака поддельными TCP-сессиями с несколькими ACK

Этот вариант атаки поддельной сессией выполняется несколькими SYN- и несколькими ACK-пакетами совместно с одним или более RST- или FIN-пакетами.

7ой уровень DDoS атак

HTTP-флуд

Злоумышленник генерирует большое количество запросов, направленных на сервер-жертву, чтобы вынудить его выделять как можно больше ресурсов для обработки вредоносного трафика.

Атака с целью отказа приложения

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

HTTP-флуд одиночными запросами

В отличие от обычного флуда, где злоумышленник атакует сервер-жертву потоком отдельных запросов, этот тип атаки предполагает отправку одного большого пакета, внутри которого одновременно передается 500-600 запросов.

Атака фрагментированными HTTP-пакетами

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

HTTP-флуд одиночными сессиями

Атакующий превышает лимит сессий на стороне жертвы, чтобы беспрепятственно в рамках каждой HTTP-сессии отправлять множество запросов. Цель злоумышленника — заставить сервер выделить как можно больше ресурсов для обслуживания атаки.

-9
Я привел примеры классических атак, с которыми сталкиваюсь каждый день. Есть конечно же и более изощренные виды. Я выделю их в отдельный блок

APT-атака

Эта атака проходит почти незаметно. Цель злоумышленника - найти на устройстве жертвы секретную или любую другую ценную информацию, которую можно использовать в своих целях. Поэтому я настоятельно не рекомендую использовать текстовик с паролями на рабочем столе, с именем "пароли" или "pass", потому что такие файлы парсятся даже без ручного участия хакера.

Тут в ход идет эксплуатация уязвимостей, использование социальной инженерии и другие техники обхода защиты. Хакер незаметно проникает в компьютерную сеть и изучает её длительное время, строя бэкдоры (возможность попасть на сервер жертвы без усилий), отслеживает действия пользователей и анализирует перемещение данных.

Многовекторная атака

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

Атака нулевого дня

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

IP-спуфинг

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

APDoS-атака

APDoS реализует 5-8 векторов атак одновременно. Злоумышленник использует «слепые зоны» атакуемой организации и нападает сразу на несколько уровней сетей.

MITM-атака

Злоумышленник перехватывает трафик и заменяет связь между двумя сторонами, которые считают, что общаются друг с другом без третьих лиц. Атаки особенно распространены в общедоступных сетях Wi-Fi. Например, жертва думает, что работает напрямую с сайтом, в то время как злоумышленник перехватывает все данные, которые были введены: пароль, логин и другие.

-10

Наработки по защите от DDoS атак

На первом месте я бы поставил валидацию заголовков IP-пакета. Тут необходимо проверять заголовки пакетов ICMP, UDP и TCP на соответствие стандартам RFC. Соответственно сбрасывать, которые не соответствуют требованиям. В качестве дополнительной меры, можно сбрасывать пакеты, с параметрами которые не запрещены, но не встречаются в легитимном трафике. Примеры:

  • Нулевой порт источника или назначения
  • Значение ноль в поле Windows size TCP-сегмента
  • Флаги SYN и SYN+ACK в TCP-сегменте с данными
  • Флаг SYN в TCP-сегменте без опций

Далее эффективны инструменты по превышении частоты TCP-подключений.

Можно использовать ограничение как подсчет сессий от ip-адреса, так и в сторону адреса клиента. Соответственно либо сбрасывать при превышении, либо заносить во временный черный список адреса, чтоб не тратить ресурсы на анализ пакета.

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

Минимизация зоны атаки

  1. Настроить firewall сервера. В политиках ни в коем случае нельзя оставлять настройки по дефолту. Важно закрыть все, кроме доверенных адресов и сетей.
  2. Скрыть все реальные IP-адреса инфраструктуры. Периодически их менять.
  3. По возможности отказаться от нешифрованного трафика. Перестать использовать HTTP и перейти на HTTPS. Это важно для безопасности в целом, но и от DDoS защищает — чтобы злоумышленники не смогли подсмотреть ваши пакеты и понять, как вы их формируете, чтобы потом подделать.
  4. Проверить бизнес-логику, чтобы понять, как и куда ваш легитимный клиент должен делать запросы. Так вы научитесь распознавать нелегитимные.
  5. Если на физическом сервере находится не один сервис, важно тщательно разграничить их по ресурсам. Чтобы упавший сервис не мог съесть все ресурсы и повредить другим сервисам.