Виды DDoS-атак: как именно выводят из строя сервисы
Сложность борьбы с DDoS-атаками обусловлена тем, что могут поражаться разные уровни функционирования атакуемой веб-системы, начиная от сетевого и заканчивая уровнем приложений. Поэтому обнаружить и вовремя принять меры по их отражению не всегда бывает возможным. Однако знание особенностей каждого вида таких атак поможет лучше подготовиться к их отражению и уменьшить возможные потери. Об этом и поговорим в статье.
Уровни атак: L3/L4 против L7
Атаки уровней L3/L4 осуществляются на сетевом (L3) и транспортном (L4) уровнях согласно архитектуре сетевой модели OSI. Их основная цель – перегрузить канал связи, используемый сервером. Их усиление может происходить за счёт сети и её ресурсов, в частности, путём формирования множества запросов от объёмных ботнетов (объединенных в сеть групп ботов). Обычно её легко обнаружить, например, по резкому всплеску трафика в «тихие» часы суток.
Атаки уровня L7 отвечают прикладному уровню модели OSI и направлены на сетевые приложения. Их цель – вывести эти приложения «из строя». «Нападению» могут подвергаться веб-серверы, CMS-системы, разнообразные онлайн-сервисы и другие веб-компоненты, число которых постоянно растёт. Усиление может осуществляться только за счёт машинных ресурсов – CPU, RAM и др. Самая опасная характеристика L7 – сложность обнаружения, поскольку она действует медленно и незаметно. А результат может быть губительным для всей системы.
Flood-атаки (SYN, UDP) — «забиваем канал»
Эти виды «работают» на уровне транспортных протоколов и преследуют цель свести до нуля пропускную способность канала передачи данных. Отсюда и название – Flood (переполнение или избыточность)
SYN-флуд является классическим видом атак этого типа. Суть их действия заключается в отправке на атакуемый сервер множества SYN-пакетов для установки TCP-соединения. Однако его установка никогда не завершается, поскольку со стороны спамера (тот, кто инициировал атаку), в нарушение существующих правил, не отправляется ACK-пакет в ответ на SYN-ACK. В результате, на сервере в специальной таблице состояний создаётся множество записей для всех незавершённых соединений, что ведёт к её переполнению. После этого сервер переходит из рабочего режима обработки запросов в режим «отказ в обслуживании», что равносильно выходу его из строя.
UDP-флуд стал дальнейшим развитием SYN-флуда и сейчас является одним из наиболее распространённых видов DDoS. Его название происходит от названия пакетов типа UDP (User Datagram Protocol), которые в большом количестве отправляются спамером на целевой сервер. В ответ на каждый такой запрос он вынужден отправлять ICMP-сообщение о том, что порт недоступный (Destination Unreachable), что ведёт к перегрузке сети и расходованию производственной мощности сервера (CPU, RAM, ...). В итоге, через какое-то время (в зависимости от интенсивности «штурма») сервер переходит в режим «отказ в обслуживании».
Изощрённость UDP-флуда ещё и в том, что спамер, в большинстве случаев, подделывает IP-адреса отправителей UDP-пакетов или «зомби» (скомпрометированные устройства, составляющие ботнет). В результате, ICMP-ответы сервера перенаправляются на другие адреса и не мешают «зомби» долгое время сохранять свою работоспособность и быть анонимными. Для его осуществления часто используются такие программы, как, например, UDP Unicorn.
Усиление (DNS, NTP) — «увеличиваем трафик в 10–100 раз»
Одними из наиболее губительных по масштабам причинённого вреда, являются «усиленные» или amplification-атаки на DNS-сервера. Теоретически они способны вывести из строя целые сектора Интернет-сети, которые, как известно, привязываются к определённым DNS-серверам. «Штурмы» могут быть осуществлены, как путём захвата системных ресурсов сервера, так и путём «забивания» полосы пропускания канала связи.
Главная их задача – перевести DNS-сервер в режим «Denial of Service» и таким образом вывести его из строя. В этом случае http-запросы на «разрешение» IP-адресов сайтов по их доменному имени не будут приводить к положительному результату, и поэтому сайты будут недоступны для просмотра.
Для проведения «штурма», например, может быть использована атака вида UDP Flood DNS, которая является частным случаем UDP-флуда, направленного на DNS-сервера. При этом обычно используется 53 порт. Суть формируемых к серверу запросов состоит в запросе информации об IP-адресе несуществующего домена. При этом объём ответов DNS-сервера значительно превышает объём поступивших запросов, что может в десятки и даже сотни раз усилить атаку и превратить её в мощнейший DDoS-«штурм» для любого сервера.
Следует отметить, что не все DNS-сервера могут «упасть» под действием таких атак, а только те, которые используют набор протоколов расширений безопасности DNSSEC и неправильно сконфигурированы. Таких серверов в мире насчитывается около 70-ти тысяч, большая часть которых находятся на территории Беларуси, России, Кореи, Чили, Аргентины, Китая и Тайваня. Именно на них направлены основные усилия злоумышленников.
В последние годы значительно возросло число атак на сервера NTP (Network Time Protocol). Они обеспечивают синхронизацию времени по сети с использованием NTP-протокола, являющегося разновидностью UDP-протокола. Вместе с тем, как известно, все UDP-сервисы имеют один существенный недостаток – для любого запроса может быть легко произведена подмена IP-адреса источника пакетов. Это даёт возможность усилить атаку в 1000 раз (!). Этому также способствует большое количество программных инструментов, имеющихся на рынке ПО. Такой вид атаки получил название NTP-флуд, как одна из разновидностей UDP-флуда.
Application-атаки (HTTP flood, API abuse)
HTTP-flood относится к DDoS-атакам уровня приложений, о которых мы уже говорили ранее. Детализируем здесь некоторые его характеристики и рассмотрим существующие виды.
HTTP-флуд маскируется под обычный пользовательский трафик и мало зависит от пропускной способности канала связи. Например, «штурм» небольшой интенсивности в 100 запросов в секунду способен вывести из строя множество сайтов среднего уровня. Причём, кэширование на уровне сервера здесь не поможет. Входящие URL динамически изменяются и приложение вынуждено перезагружать контент из БД для каждого запроса с созданием новой страницы. При этом возникает «перегруз» сервера и приложения.
Выделим основные виды HTTP-флуда:
Базовый. Сюда относятся наиболее простые «штурмы», суть которых заключается в периодических попытках получения доступа к одной и той же веб-странице. При этом чаще всего используется один и тот же диапазон IP-адресов источников.
Рандомизированный. Это более сложный тип, когда задействуется большой пул IP-адресов источников и выполняется рандомизация URL.
С обходом кэша. Одна из разновидностей рандомизированного HTTP-флуда, которая действует в обход механизма кэширования приложений.
WordPress XMLRPC. Здесь для проведения атак используется пингбэк WordPress. Это позволяет любой сайт с включенным пингбэком использовать в качестве генератора большого количества случайных запросов. Этот механизм способен значительно увеличить масштаб атаки. Достаточно одного пингбэк-запроса к XML-RPC-файлу, и несколько тысяч сайтов на CMS WordPress станут участниками атаки на стороне спамера.
Ещё один вид атак уровня приложений использует уязвимости в API – прикладном программном интерфейсе приложений. К таким уязвимостям, например, можно отнести погрешности в коде, неправильную конфигурацию в любой части API-стёка и другие «слабые места» безопасности приложений. В результате, может быть нарушена работа сервисов, а спамер получит несанкционированный доступ к управлению сайтом.
Чем опасны атаки L7
Выделим наиболее опасные характеристики атак уровня приложений или L7-уровня, которые усложняют борьбу с ними:
- Имитация реальных пользователей;
- Трудности своевременного обнаружения;
- Лёгкость в реализации;
- Наличие множества готовых инструментов для организации атак;
- Разнообразие видов.
Multi-vector атаки
Этот вид объединяет в себе несколько других видов, например, атаки уровней L3/L4 (сетевой и протокольный уровни) с L7 (уровень приложений). На практике это может быть реализовано в виде комбинации UDP-флуда для перегрузки сети, DNS-амплификации для уменьшения пропускной способности канала и HTTP-флуда для вывода веб-сервера из рабочего состояния. Противостоять подобному «штурму» будет непросто даже для таких «гигантов», как, например, CloudFlare или Google.
Вывод: не существует «единого типа DDoS»
Рассмотрев всё разнообразие использующихся на практике DDoS-атак, можно сделать о них несколько выводов:
- Не существует DDoS одного типа;
- Их главная задача – сделать систему неработоспособной;
- Для борьбы с DDoS необходим комплексный подход.
Избежать DDoS невозможно, однако, можно сделать так, чтобы они приносили как можно меньшие потери для любого уровня атакуемой системы.