Виды DDoS-атак: как именно выводят из строя сервисы
Сложность борьбы с DDoS-атаками обусловлена тем, что могут поражаться разные уровни функционирования атакуемой веб-системы, начиная от сетевого и заканчивая уровнем приложений. Поэтому обнаружить и вовремя принять меры по их отражению не всегда бывает возможным. Однако знание особенностей каждого вида таких атак поможет лучше подготовиться к их отражению и уменьшить возможные потери. Об этом и поговорим в статье.
Уровни атак: L3/L4 против L7
Атаки уровней L3/L4 осуществляются на сетевом (L3) и транспортном (L4) уровнях согласно архитектуре сетевой модели OSI. Их основная цель – перегрузить канал связи, используемый сервером. Их усиление может происходить за счёт сети и её ресурсов, в частности, путём формирования множества запросов от объёмных ботнетов (объединенных в сеть групп ботов). Обычно её легко обнаружить, например, по резкому всплеску трафика в «тихие» часы суток.
Атаки уровня L7 отвечают прикладному уровню модели OSI и направлены на сетевые приложения. Их цель – вывести эти приложения «из строя». «Нападению» могут подвергаться веб-серверы, CMS-системы, разнообразные онлайн-сервисы и другие веб-компоненты, число которых постоянно растёт. Усиление может осуществляться только за счёт машинных ресурсов – CPU, RAM и др. Самая опасная характеристика L7 – сложность обнаружения, поскольку она действует медленно и незаметно. А результат может быть губительным для всей системы.
Рисунок 1. L3/L4 по сравнению с 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.
Рисунок 2. Flood-атаки: SYN и UDP
Усиление (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-флуда.
Рисунок 3. Amplification-атаки: DNS и NTP
Application-атаки (HTTP flood, API abuse)
HTTP-flood относится к DDoS-атакам уровня приложений, о которых мы уже говорили ранее. Детализируем здесь некоторые его характеристики и рассмотрим существующие виды.
HTTP-флуд маскируется под обычный пользовательский трафик и мало зависит от пропускной способности канала связи. Например, «штурм» небольшой интенсивности в 100 запросов в секунду способен вывести из строя множество сайтов среднего уровня. Причём, кэширование на уровне сервера здесь не поможет. Входящие URL динамически изменяются и приложение вынуждено перезагружать контент из БД для каждого запроса с созданием новой страницы. При этом возникает «перегруз» сервера и приложения.
Выделим основные виды HTTP-флуда:
Базовый. Сюда относятся наиболее простые «штурмы», суть которых заключается в периодических попытках получения доступа к одной и той же веб-странице. При этом чаще всего используется один и тот же диапазон IP-адресов источников.
Рандомизированный. Это более сложный тип, когда задействуется большой пул IP-адресов источников и выполняется рандомизация URL.
С обходом кэша. Одна из разновидностей рандомизированного HTTP-флуда, которая действует в обход механизма кэширования приложений.
WordPress XMLRPC. Здесь для проведения атак используется пингбэк WordPress. Это позволяет любой сайт с включенным пингбэком использовать в качестве генератора большого количества случайных запросов. Этот механизм способен значительно увеличить масштаб атаки. Достаточно одного пингбэк-запроса к XML-RPC-файлу, и несколько тысяч сайтов на CMS WordPress станут участниками атаки на стороне спамера.
Рисунок 4. Виды HTTP-флуда
Ещё один вид атак уровня приложений использует уязвимости в API – прикладном программном интерфейсе приложений. К таким уязвимостям, например, можно отнести погрешности в коде, неправильную конфигурацию в любой части API-стёка и другие «слабые места» безопасности приложений. В результате, может быть нарушена работа сервисов, а спамер получит несанкционированный доступ к управлению сайтом.
Чем опасны атаки L7
Выделим наиболее опасные характеристики атак уровня приложений или L7-уровня, которые усложняют борьбу с ними:
- Имитация реальных пользователей;
- Трудности своевременного обнаружения;
- Лёгкость в реализации;
- Наличие множества готовых инструментов для организации атак;
- Разнообразие видов.
Рисунок 5. В чем заключается опасность атак L7
Multi-vector атаки
Этот вид объединяет в себе несколько других видов, например, атаки уровней L3/L4 (сетевой и протокольный уровни) с L7 (уровень приложений). На практике это может быть реализовано в виде комбинации UDP-флуда для перегрузки сети, DNS-амплификации для уменьшения пропускной способности канала и HTTP-флуда для вывода веб-сервера из рабочего состояния. Противостоять подобному «штурму» будет непросто даже для таких «гигантов», как, например, CloudFlare или Google.
Рисунок 6. Многовекторная атака
Вывод: не существует «единого типа DDoS»
Рассмотрев всё разнообразие использующихся на практике DDoS-атак, можно сделать о них несколько выводов:
- Не существует DDoS одного типа;
- Их главная задача – сделать систему неработоспособной;
- Для борьбы с DDoS необходим комплексный подход.
Избежать DDoS невозможно, однако, можно сделать так, чтобы они приносили как можно меньшие потери для любого уровня атакуемой системы.
FAQ
Чем отличаются атаки L3/L4 и L7? L3/L4 действуют на сетевом и транспортном уровнях и перегружают канал связи, их легко обнаружить по резкому всплеску трафика. L7 действует на прикладном уровне, выводит из строя приложения и усиливается только ресурсами сервера (CPU, RAM). Её самая опасная черта — сложность обнаружения.
Что такое SYN-флуд? Это отправка множества SYN-пакетов для установки TCP-соединения без подтверждения ACK. Таблица состояний на сервере переполняется, и он переходит в режим «отказ в обслуживании».
Что такое UDP-флуд? Это массовая отправка UDP-пакетов на сервер. В ответ он вынужден отправлять ICMP-сообщение о недоступности порта, что перегружает сеть и ресурсы сервера. Злоумышленник обычно подделывает IP-адреса отправителей, поэтому ответы идут на чужие адреса.
Что такое amplification-атака? Это атака, в которой малый запрос вызывает значительно больший ответ, например, от DNS или NTP-сервера. Для DNS усиление достигает десятков и сотен раз, для NTP — до 1000 раз, так как в UDP-запросе легко подменить IP-адрес источника.
Почему HTTP-флуд опасен даже при небольшом трафике? Он маскируется под обычных пользователей и мало зависит от пропускной способности канала. Атака в 100 запросов в секунду способна вывести из строя множество сайтов среднего уровня, а кэширование на сервере не помогает: URL динамически изменяются, и приложение каждый раз заново загружает контент из БД.
Что такое атака WordPress XMLRPC? Она использует пингбэк WordPress: сайт с включённым пингбэком становится генератором случайных запросов. Одного пингбэк-запроса к XML-RPC-файлу достаточно, чтобы несколько тысяч сайтов на WordPress стали участниками атаки.
Что такое multi-vector атака? Это комбинация нескольких видов: например, UDP-флуд перегружает сеть, DNS-амплификация уменьшает пропускную способность, а HTTP-флуд выводит веб-сервер из строя. Противостоять ей непросто даже таким гигантам, как Cloudflare или Google.
Можно ли избежать DDoS? Нет, но можно сделать так, чтобы атаки приносили как можно меньшие потери. Для этого нужен комплексный подход, потому что не существует единого типа DDoS.
Что делать владельцу сайта? Выберите VPS и VDS или выделенный сервер, позаботьтесь об администрировании и бэкапах.