Статья Часть 1. DDoS на сетевых уровнях OSI: принципы работы и векторы атак

1784817586978.webp


Что вас ждет в статье:

Введение

1. Модель OSI и уязвимости нижних уровней
1.1. Канальный уровень (L2)
1.2. Сетевой уровень (L3)
1.3. Транспортный уровень (L4)

2. Механизмы DDoS-атак: как это ломается на практике
2.1. Volumetric и Protocol: два способа убить сервер
2.2. Механика SYN-flood: исчерпание таблицы соединений
2.3. Механика ICMP-flood: Истощение ресурсов CPU
2.4. Уровень L2 и MAC-флуд: Переполнение CAM-таблицы коммутатора

3. Методология детектирования и подготовка к работе с IDS Suricata

4. Архитектура интеграции и логика написания правил


Заключение

Введение

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

1. Модель TCP/IP и уязвимости нижних уровней

Чтобы понять механику атак, достаточно представить стек протоколов TCP/IP. В этой структуре каждый уровень выполняет свою задачу, а процессы на верхних этажах полностью изолированы от технических деталей нижних. Например, веб-приложение обрабатывает пользовательские данные и не участвует в процессах кадрирования, маршрутизации или физической коммутации. Однако любая критическая аномалия на сетевом, транспортном (L3–L4) или канальном (L2) уровнях работает как цепная реакция: она мгновенно ломает доставку пакетов, из-за чего прикладной уровень со всей его логикой и интерфейсами полностью теряет связь с внешним миром.
В этой статье мы спустимся на нижние уровни сетевого стека и пройдем последовательно снизу вверх.


L4Транспортный (TCP / UDP)
L3Сетевой (IP / ICMP)
L2Канальный (Ethernet)

Важная мысль для понимания:
Каждый раз, когда вы отправляете сообщение в сеть, оно проходит процедуру инкапсуляции. Ваше сообщение оборачивается в TCP-сегмент (L4), тот упаковывается в IP-пакет (L3), а IP-пакет запечатывается в Ethernet-кадр (L2). На каждом из этих уровней есть методы для DDoS.

1.1. Канальный уровень (L2)

Уровень L2 — это ваша домашняя или офисная локальная сеть. Здесь устройства еще ничего не знают про глобальный интернет. Они общаются внутри одного помещения, используя вшитые заводские MAC-адреса.

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

В чем уязвимость: Коммутаторы по своей природе невероятно доверчивы. У них нет паспортистов или фейсконтроля. Если в порт прилетает кадр, свитч безоговорочно верит тому, что написано в полях «Отправитель» и «Получатель». Кроме того, память для CAM-таблицы строго ограничена.

Главные векторы атак:
1. MAC-flood: при реализации этого вектора в порт коммутатора направляется высокоскоростной поток кадров со случайно сгенерированными, несуществующими MAC-адресами отправителя, и, соответственно, память коммутатора мгновенно забивается этим мусором. Что делает свитч, когда его таблица переполнена? Он переходит в режим защиты и превращается в глупый хаб (концентратор) — начинает транслировать вообще весь входящий трафик на вообще все свои порты. В итоге, это не только парализует локальную сеть лавиной паразитного трафика, но и позволяет злоумышленнику, находящемуся в том же сегменте, беспрепятственно перехватывать и анализировать чужие конфиденциальные данные.
2. ARP-spoofing: чтобы узнать MAC-адрес соседа по IP, устройства шлют в сеть запрос: «У кого IP 192.168.1.1? Отзовитесь!» - arp request. При атаке в сеть отправляется ложный ответ: «Этот IP у меня, вот мой MAC!». Вся сеть начинает отправлять пакеты на компьютер злоумышленника, думая, что шлет их на роутер, а в итоге трафик всей сети начинает идти через устройство злоумышленника, которое выдает себя за легитимный шлюз. Законные сервисы теряют связь, а личные данные перехватываются на лету.
3. STP-атаки: служебный протокол STP защищает сеть от опасных петель трафика. При атаке на этот протокол в сеть засылаются фейковые управляющие кадры с максимальным приоритетом. Остальное сетевое оборудование верит этой информации и начинает считать атакующий компьютер «самым главным коммутатором». Вся сеть замирает и начинает судорожно перестраивать маршруты с нуля. Пока железки разбираются в новой карте дорог, передача любых пользовательских данных полностью останавливается на несколько минут.


1.2. Сетевой уровень (L3)

Задача этого уровня — вытащить пакет из локальной сети и доставить его через тысячи километров и сотни чужих серверов прямо к цели.

В чем уязвимость: Протокол IP создавался в эпоху, когда в интернете все друг друга знали. В заголовке IP-пакета есть поле «IP отправителя», но протокол не умеет проверять, действительно ли пакет отправлен с этого адреса. Это открывает дорогу для эксплуатации доверия.

Главные векторы атак:

1. IP Spoofing: Злоумышленник генерирует трафик, но в поле «Отправитель» прописывает IP-адрес своей жертвы. Зачем? Чтобы отправить короткие запросы на миллионы серверов по всему миру, и эти миллионы серверов одновременно ответили жертве. Жертву просто сдувает лавиной ответов, которые она не заказывала, если, конечно, на обратном пути не встретятся препятствия в виде ферволов.

2. ICMP-flood: Протокол ICMP нужен для диагностики (команда ping). Но если отправить на сервер не один пинг, а миллиард пакетов огромного размера с кучи зараженных компьютеров, сетевая карта сервера захлебнется.

3. IP Fragmentation Flood: если пакет слишком большой, роутеры режут его на кусочки (фрагменты). Атакующий узел намеренно отправляет куски пакетов со сломанной логикой — например, со смещением, которое накладывается друг на друга. Операционная система жертвы тратит колоссальные ресурсы процессора, пытаясь собрать этот безумный пазл, и в итоге может намертво зависнуть.

1.3. Транспортный уровень (L4)

На четвертом уровне данные превращаются в структурированный диалог. Здесь живут два главных протокола: TCP и UDP.

Почему этот уровень — лакомый кусок для атак? Чтобы начать общение по TCP, клиент и сервер должны выполнить трехэтапное рукопожатие (3-way handshake). Сервер обязан быть вежливым: на каждый запрос на подключение он должен выделить кусочек своей оперативной памяти, чтобы помнить, с кем он сейчас пытается подружиться.

Как этим пользуются:

1. SYN-flood: посылается пакет SYN. Сервер выделяет память, записывает сессию в буфер и отвечает пакетом SYN-ACK. Однако финальный пакет ACK от клиента так и не поступает. Сервер вынужден удерживать выделенные ресурсы памяти в режиме ожидания. В условиях атаки поток таких незавершенных запросов исчисляется миллионами. В результате доступный буфер под новые подключения полностью исчерпывается, и система начинает отбрасывать запросы легитимных пользователей.

2. UDP-flood: В UDP нет рукопожатий. Хакер просто засыпает сервер миллионами UDP-пакетов на случайные порты. Серверу приходится тратить ресурсы: принять пакет, распаковать, посмотреть на порт, понять, что за этим портом ни одно приложение не следит, и сгенерировать ICMP-ответ об ошибке. Канал связи полностью забивается служебным мусором.

3. RST/ACK-flood: Хакер отправляет миллионы фальшивых пакетов с флагами сброса соединения (RST) или подтверждения (ACK). Межсетевые экраны на стороне жертвы вынуждены сверять каждый такой пакет со своей таблицей активных сессий. База данных фаервола перегружается, и он сам становится точкой отказа, блокируя весь трафик.


1784817844436.webp

Схема трехэтапного рукопожатия TCP и атака SYN-flood

2. Механизмы DDoS-атак: разбор методов

По сути, есть два способа положить сервер — либо залить канал под завязку, либо заставить ядро ОС захлебнуться. Всё остальное — это вариации и комбинации этих двух принципов.

2.1. Volumetric и Protocol: два способа убить сервер

Все атаки нижних уровней можно глобально разделить на два типа по характеру воздействия: объемные (Volumetric) и протокольные. Они преследуют разные цели и используют разные механизмы истощения ресурсов.

Volumetric-атаки: это классическое оружие атакующих. Цель — тупо забить пропускную способность вашего интернет-канала. Представьте, что у вас труба шириной 1 Гбит/с, а вам туда заливают 10 Гбит/с. Абсолютно неважно, насколько мощный у вас сервер — пакеты легитимных пользователей просто физически дропаются еще на стороне провайдера, так как они не влезают в трубу.

Для таких атак идеально подходят уровни L3-L4, особенно протокол UDP с подменой IP. Здесь часто применяется метод усиления (Amplification):

1784817991075.webp


Хакер отправляет короткий запрос к уязвимому серверу в интернете, а сервер-усилитель возвращает ответ, который в 50–100 раз превышает размер запроса.

Иногда хакеры идут другим путем. Они не забивают канал гигабитами трафика, а берут количеством пакетов. Эта метрика называется pps (packets per second — пакетов в секунду).

Если серверу прилетает миллион микроскопических пакетов по 64 байта, объем трафика составит всего около 64 Мбайт. Канал свободен. Но операционная система на сервере должна обработать каждый пакет. Процессор моментально уходит в 100% загрузки, обрабатывая сетевой шум, и сервер перестает отвечать на реальные запросы.

1784818018710.webp


На схеме наглядно видно, как утилизация процессора сервера зависит от количества прилетающих пакетов, а не от их веса в мегабайтах. В зоне baseline сеть находится в покое: роутер и коммутатор передают обычный объем служебных кадров. В момент начала атаки (burst) график пакетной плотности уходит вверх, превращаясь в критический пик (peak). В этот момент счетчик на сетевом интерфейсе сервера фиксирует тысячи pps — ядро ОС перегружается аппаратными прерываниями, пытаясь обработать эту лавину, и сервер перестает отвечать.

2.2. Механика SYN-flood: исчерпание таблицы соединений

Протокол TCP — это джентльменское соглашение. Перед обменом данными клиент и сервер выполняют процедуру трехэтапного рукопожатия (3-way handshake). В штатном режиме это выглядит так:
  • Клиент ⭢ Сервер: отправляется пакет с установленным флагом SYN (Synchronize) — «Привет, я хочу открыть сессию, вот мой начальный порядковый номер пакета».
  • Сервер ⭢ Клиент: сервер выделяет структуру памяти под это соединение, записывает его в специальную очередь полуоткрытых соединений (Backlog queue) и отвечает пакетом SYN-ACK — «Привет, запрос принял, выделил ресурсы, жду твоего подтверждения».
  • Клиент ⭢ Сервер: клиент отправляет финальный пакет ACK (Acknowledge) — «Отлично, сессия установлена, начинаем передачу». Только после этого соединение переходит в статус ESTABLISHED.
Механика нарушения работы:
При SYN-флуде злоумышленник отправляет лавину SYN-пакетов, но в поле IP-отправителя прописывает несуществующие или случайные адреса (IP Spoofing). Сервер послушно выделяет ресурсы под каждый запрос, отправляет SYN-ACK в пустоту и переводит соединение в статус SYN_RECEIVED.

По спецификации, сервер обязан ждать финального ACK от клиента довольно долго — обычно от 30 до 120 секунд (пока не сработает тайм-аут). Хакер успевает отправить сотни тысяч таких запросов за секунду. Размер очереди Backlog жестко ограничен операционной системой (например, параметром tcp_max_syn_backlog в Linux). Как только лимит очереди исчерпан, сервер начинает отбрасывать любые новые SYN-пакеты. Для внешнего мира сайт или сервис мгновенно умирает.

2.3. Механика ICMP-flood: Истощение ресурсов CPU

Протокол ICMP предназначен для передачи служебных сообщений и диагностики. Самый популярный тип ICMP-сообщения — Echo Request, который мы отправляем командой ping, и ответ на него — Echo Reply.

В случае ICMP-флуда ботнет заваливает целевой IP-адрес непрерывным потоком запросов Echo Request. Уязвимость кроется в самой логике обработки протокола на уровне ядра ОС:

  • Каждый прилетевший ICMP-пакет генерирует прерывание сетевой карты.
  • Ядро ОС обязано приостановить текущие задачи процессора, переключить контекст, разобрать заголовок пакета, проверить контрольную сумму.
  • Затем ядро должно сформировать зеркальный ответный пакет (Echo Reply), выделить под него ресурсы, вычислить новую контрольную сумму и отправить обратно.

    Если хакер задействует метод отражения, он отправляет ICMP-запросы на широковещательные адреса сторонних сетей, подменив адрес отправителя на IP жертвы. Тогда тысячи компьютеров одновременно начинают отвечать жертве.

2.4. Уровень L2 и MAC-флуд: Переполнение CAM-таблицы коммутатора

Вернёмся в локальную сеть. Коммутаторы — это устройства уровня L2, и, чтобы не пересылать трафик на все порты подряд, коммутатор строит карту сети — CAM-таблицу. В ней записывается простое соответствие: Порт №1 ⭢ MAC-адрес компьютера.

Механика переполнения таблицы:
Коммутатор конфигурируется динамически: он смотрит на поле "Source MAC" в каждом приходящем кадре и записывает его в таблицу. Хакер использует утилиту (например, macof) и начинает генерировать миллионы кадров в секунду, в каждом из которых генерируется абсолютно случайный, несуществующий MAC-адрес отправителя.

Память CAM-чипа на коммутаторе физически ограничена (обычно от нескольких тысяч до десятков тысяч записей). За пару секунд атаки таблица заполняется мусором полностью. Сетевая железка оказывается в тупике: ей нужно передать легитимный пакет, но в CAM-таблице нет места, чтобы проверить, где находится получатель.

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

Последствие 1: Сетевые интерфейсы всех подключенных устройств забиваются чужим трафиком.
Последствие 2: Хакер, находясь в этой же сети, включает режим promiscuous mode на своей сетевой карте и начинает беспрепятственно читать весь чужой трафик.

3. Методология детектирования и подготовка к работе с IDS Suricata

Чтобы выявить DDoS, не нужно смотреть на каждый пакет. Вычислить такую атаку можно, например, по трем ключевым вещам:
1. В штатном режиме соотношение пакетов SYN к пакетам ACK или FIN стремится к балансу. Если график SYN улетает вертикально вверх, а остальные показатели лежат на нуле — идет SYN-flood.
2. Профили реальных клиентов всегда уникальны (разные размеры пакетов, значения TTL и Window Size). Если на сервер летит поток пакетов, у каждого из которых строго одинаковая длина (например, ровно 120 байт) — это признак работы автоматического генератора трафика.
3. Резкая смена структуры трафика, когда привычные и легитимные веб-запросы (TCP) за считанные секунды полностью вытесняются сплошным потоком мусорных пакетов ICMP или UDP, летящих на случайные порты.

Почему стандартного инструментария недостаточно?

При фиксации атаки администраторы часто совершают фатальную ошибку: запускают утилиты глубокого анализа вроде tcpdump или Wireshark. Снифферы предназначены для поштучного ручного разбора данных. Они пытаются перехватить, декодировать и сохранить на диск каждый пакет. Под нагрузкой в сотни тысяч pps сниффер мгновенно исчерпает ресурсы процессора и оперативной памяти, окончательно заблокировав сервер.
Для высокоскоростного анализа трафика отлично подойдет Suricata — классический представитель систем обнаружения вторжений (IDS, от англ. Intrusion Detection System). Она спроектирована под жесткий пакетный поток, имеет кольцевые буферы памяти и распределяет нагрузку напрямую по ядрам процессора. Suricata проверяет структуру заголовков на лету прямо в ОЗУ, не выводя сырые логи на экран. Ее логика совмещает сигнатурный анализ (поиск известных маркеров хакерских утилит в заголовках) и поведенческий анализ (фиксацию частотных аномалий, например, превышение лимита запросов с одного IP за секунду).

4. Архитектура интеграции и логика написания правил

Теперь — как это настроить и заставить работать. Для начала определимся, куда ставить Suricata в сети.

Режим IDS (пассивный): на коммутаторе настраивается зеркалирование портов (SPAN). Копия трафика отправляется на выделенный интерфейс, где Suricata анализирует его в фоновом режиме. Плюс: если сервер с IDS упадёт, основная сеть продолжит работать.

Режим IPS (активный): Suricata встраивается в ядро Linux через NFQUEUE. Весь трафик проходит сквозь неё. Это позволяет мгновенно сбрасывать вредоносные пакеты, блокируя атаку на подлёте.

Синтаксическая структура правил Suricata:
Движку нужны базы знаний — глобальные сигнатуры (например, ET Open) или кастомные правила.

Заключение

Мы разобрали логику DDoS на L2-L4 сетевых уровнях, изучили метрики аномалий и поняли, как системы класса IDS концептуально подходят к перехвату пакетного флуда.

Не забывайте про вторую часть! Там мы перейдем от теории к делу. Мы поднимем простой стенд прямо на вашем компьютере, создадим свои кастомные правила в файле local.rules и на пару минут побудем в роли злоумышленников. Только простые шаги и готовые команды.


Продолжение здесь
 
Последнее редактирование:
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🧭 Навигатор · ИБ 2026
Не знаешь, какой трек твой?
5 направлений ИБ, реальные зарплаты и точка входа для каждого — в одном треде.
JuniorSenior+
100K → 600K+ ₽ /мес
Открыть навигатор →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab