Slowloris: подробный разбор тихой и опасной DDoS-атаки

Slowloris: подробный разбор тихой и опасной DDoS-атаки

Slowloris — тихая угроза, о которой предпочитают молчать админы.

image

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

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

Введение в атаку Slowloris

Когда большинство людей слышат «DDoS-атака», перед глазами встает картина с огромным потоком трафика, заполоняющего канал связи. Однако Slowloris действует иначе: он не стремится «залить» сервер терабайтами данных, а использует минимальное количество HTTP-запросов. Его «изюминка» — это умение намеренно держать соединение «в подвешенном состоянии». Буквально несколькими хорошо продуманными и регулярно обновляемыми HTTP-заголовками атака способна «заморозить» веб-сервер и помешать ему обрабатывать легитимные запросы.

Именно за счет подобной «незаметности» Slowloris настолько эффективен. Огромное количество традиционных систем мониторинга ориентированы на объем проходящего трафика или всплески обращений. Но если атака тщательно дозирована и HTTP-заголовки отправляются медленно, защитные механизмы могут просто не распознать ее как угрозу.

Помимо этого, Slowloris редко затрагивает другие сервисы: он сфокусирован на веб-приложениях и использует тонкости протокола HTTP. В результате, даже если на сервере крутится несколько различных сервисов — почтовый сервер, FTP, SSH, — то, скорее всего, «упадет» только веб-приложение.

Как Slowloris получил свое название

Свое необычное имя атака получила благодаря одноименному медленному примату — лори. Этот зверек славится крайне неспешными движениями, способными усыпить бдительность хищников. Примерно так же действует и атака Slowloris: небольшое количество «лениво» отправляемых HTTP-заголовков незаметно «стравливает» ресурсы сервера, пока тот не перестает отвечать новым клиентам.

Сам подход зародился в среде хакеров и хактивистов, которые стремились обойти фильтры и системы, рассчитанные на массовые высокоинтенсивные DDoS-атаки. Выяснилось, что в ряде случаев небольшой «медленной» активности достаточно, чтобы парализовать веб-приложение.

Принцип действия и роль прикладного уровня

Slowloris эксплуатирует особенности протокола HTTP, относящегося к седьмому уровню модели OSI, также именуемому прикладным. Главная идея — заставить целевой сервер открыть как можно больше соединений, которые не будут завершены. Для этого атакующий отправляет HTTP-запросы по частям и периодически подсылает небольшие фрагменты заголовков, чтобы сервер продолжал думать, что запрос «живой».

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

  • Мало трафика — много проблем: Атака не перегружает канал жертвы, поэтому она остается «в тени» до момента, когда веб-сервер начинает давать сбои.
  • Работа на прикладном уровне: В то время как многие DDoS-атаки нацелены на сетевой или транспортный уровень (Layer 3 и Layer 4), Slowloris «атакует» логику обработки HTTP.
  • Постоянное ожидание: Сервер «ждет» завершения запроса, который целенаправленно не завершается, и удерживает ресурсы для его обработки.

Стоит учитывать, что HTTP-протокол предполагает достаточно гибкую систему взаимодействия: он допускает поступление заголовков небольшими частями. Однако, если подобный «капельный» трафик возникает массово, сервер начинает терять способность своевременно освобождать сокеты и память. По сути, Slowloris использует саму природу HTTP в ущерб серверу.

Технические особенности атаки Slowloris

Технически Slowloris эксплуатирует специфику обработки HTTP-запросов на стороне веб-сервера. В отличие от традиционных DDoS-атак, которые пытаются «задавить» жертву высокими скоростями передачи данных, Slowloris действует «тихо»:

  • Открывает множество полуподключений на веб-сервере.
  • Каждое соединение поддерживается «живым» за счет регулярной отправки фрагментов HTTP-заголовков.
  • Соединения не завершаются, а серверу приходится держать их открытыми, что приводит к истощению ресурсов.

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

Известно, что разные версии High Orbit Ion Cannon (HOIC) и Low Orbit Ion Cannon (LOIC) — популярных инструментов «протестующих» (к примеру, Anonymous или Killnet) — имеют встроенную функцию Slowloris или ее вариации, позволяющую массово создавать «подвешенные» HTTP-соединения.

Уязвимые веб-серверы и критические версии ПО

Подавляющее большинство популярных веб-серверов в какой-то момент были уязвимы к Slowloris. Многие из них получили патчи или обновления, однако существуют версии, которые либо не получили исправлений, либо по-прежнему используются в критических системах:

  • Apache HTTP Server 1.x и 2.x (особенно ранние версии 2.x без патчей)
  • dhttpd
  • Websense (блок-страницы)
  • Flask (сервер разработки, если конфигурация не защищена соответствующим образом)
  • IIS (Internet Information Services) версии 6.0 и ниже
  • Nginx 1.5.9 и более ранние версии
  • BeeWare WAF (некоторые реализации)

Помимо этого, если задействован TLS (HTTPS), Slowloris-атака может эксплуатировать уязвимости во время TLS handshake. Так, Apache HTTP Server версий 2.2.15 и ранее, а также IIS 7.0 и более ранние вариации в определенных конфигурациях могут быть подвержены «медленному» исчерпанию ресурсов на уровне TLS-сессий.

Почему Slowloris трудно обнаружить

Многие системы обнаружения вторжений (IDS) и межсетевые экраны (firewall) привыкли ориентироваться на характерные признаки «объема» атаки — например, всплеск трафика или резкий рост числа соединений. Slowloris же отличает «дозированность»: нет гигантских скачков, нет неприлично большого числа TCP-пакетов за секунду. Все идет своим чередом, лишь с небольшим перерывом на периодическую отправку новых порций заголовков.

Еще одна проблема: системы логирования HTTP (например, журналы Apache или Nginx) часто записывают информацию только после того, как запрос завершился. Поскольку Slowloris стремится никогда не завершать соединение, в логах просто не появляется детальной записи. Администратор может долго не догадываться о том, что уже несколько десятков «зависших» HTTP-сессий вытесняют легитимных посетителей.

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

Сценарий проведения атаки Slowloris

Типичный сценарий атаки включает ряд шагов, которые могут быть реализованы даже с одной машины, но более эффективно — при координации целого ботнета:

  1. Массовое открытие соединений: Атакующий (или управляющая команда ботнета) инициирует множество HTTP-запросов к целевому серверу. Каждый запрос формируется так, чтобы сервер рассчитывал получить полный заголовок, но не получал его до конца.
  2. Сервер открывает TCP-сессии: Целевой сервер тратит ресурсы на поддержку каждого соединения в состоянии ожидания (например, в состоянии ESTABLISHED или Keep-Alive, в зависимости от конфигурации).
  3. Периодическая отправка заголовков: Чтобы избежать автоматического закрытия «висящих» запросов, атакующий каждые несколько секунд шлет дополнительный фрагмент заголовка (например, часть Host-или Content-Type-полей), таким образом «убалтывая» сервер продолжать ждать.
  4. Достижение лимита соединений: Со временем число доступных соединений иссякает, и сервер перестает отвечать новым клиентам, поскольку все сокеты заняты. Для обычных пользователей ресурс становится недоступен.

При массовом использовании ботнета атака только усиливается. Большое количество IP-адресов усложняет задачу брандмауэров, ориентированных на блокировку по IP, ведь непонятно, какие соединения легитимны, а какие «медленные».

Методы защиты от Slowloris

Полностью исключить вероятность атаки Slowloris невозможно. Слишком уж гибким создан был HTTP-протокол, а значит, есть пространство для манипуляций. Однако существует целый набор мер, которые существенно снижают риск «падения» сервера.

  • Ограничение подключений с одного IP: Многие веб-сервера умеют ограничивать число одновременных подключений от одного клиента. Например, в Apache можно настроить соответствующие параметры или использовать модули типа mod_limitipconn.
  • Использование модулей для Apache:
    • mod_qos: контролирует потребление ресурсов, анализируя заголовки и объем трафика.
    • mod_evasive: предназначен для защиты от DoS-атак путем блокировки IP-адресов, замеченных в множественных запросах.
    • mod_security: обеспечивает расширенную фильтрацию HTTP, распознает аномальные заголовки.
    • mod_noloris и mod_antiloris: специально нацелены на борьбу со стратегией Slowloris.
    • mod_reqtimeout: позволяет ограничить время ожидания и объем заголовков, поступающих от клиента.
  • Обратные прокси и балансировщики нагрузки:

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

  • Веб-аппликационные файрволы (WAF):

    Решения класса WAF (например PT Application Firewall) могут проанализировать поведение соединений и прерывать подозрительно «долгие» сессии.

  • Использование «устойчивых» веб-серверов:

    Переход на архитектуры, менее подверженные «медленному отравлению». Серверы, основанные на неблокирующих потоках ввода-вывода (например, Nginx, Hiawatha, Cherokee, lighttpd), в целом лучше справляются с большим количеством одновременных соединений, поскольку не удерживают каждое соединение в отдельном потоке с отдельными ресурсами.

Дополнительно, администраторы могут включить строгие таймауты ожидания заголовков или пакетов. Например, в Nginx есть директива client_header_timeout, которая помогает обрывать слишком медленные запросы.

Методы обнаружения и мониторинга

Несмотря на «скрытный» характер, Slowloris может быть выявлен вовремя, если использовать комплексный подход к мониторингу:

  • Подробный анализ логов в реальном времени: Можно применять инструменты, которые отслеживают количество открытых соединений (к примеру, netstat или команды ss в Linux) и сравнивают его с нормой.
  • Поведенческий анализ: Несколько соединений с одного IP-адреса, которые «висят» слишком долго, могут быть признаком Slowloris.
  • Интеграция с IDS/IPS: Современные системы наподобие обладают сигнатурами для обнаружения «подозрительно» долгих HTTP-запросов. Однако они требуют регулярного обновления правил.
  • Специальные скрипты мониторинга: Некоторые администраторы пишут собственные скрипты на Python или Bash, которые периодически проверяют активные соединения и выставляют тревожный флаг, если число «висящих» сессий превышает заданный порог.

Важно также понимать, что мера «отслеживать все вручную» неэффективна для крупных ресурсов. Здесь нужна автоматизация, которая сможет в реальном времени генерировать оповещения и при необходимости реагировать на подозрительные соединения — блокировать, перенаправлять, ограничивать.

Правовые аспекты и ответственность

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

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

Известные случаи использования Slowloris

Впервые Slowloris «прогремел» в 2009 году, когда группа хактивистов атаковала государственные сайты Ирана после президентских выборов. Суть была в том, чтобы парализовать официальные порталы, но при этом не «ломать» каналы связи протестующих. Медленные запросы хорошо подходили для подобной тактики — они не создавали огромного трафика, который бы мешал общению граждан.

Другой резонансный случай — атака на API Gmail модификацией Slowloris, которую проводила спам-сеть River City Media. Суть заключалась в массовом открытии тысяч медленных соединений и отправке большого количества писем, чтобы обойти фильтры. Это позволило незаметно «просочиться» спам-сообщениям мимо стандартных систем антиспама.

С тех пор Slowloris многократно фигурировал в отчетах по информационной безопасности. Некоторые исследователи отмечают, что «ленивые» атаки зачастую применяются для отвлечения внимания (так называемые «smokescreen-атаки»), пока основная кибератака (к примеру, проникновение в базу данных или кража конфиденциальной информации) остается незамеченной.

Почему Slowloris остается актуальным

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

  • Упор на уязвимости ПО: Медленная атака по-прежнему может «застать врасплох» плохо сконфигурированные или устаревшие веб-серверы.
  • «Узкие» места в инфраструктуре: Если организация не предусмотрела балансировку нагрузки, а сервер обрабатывает все подключения в одном процессе, «медленные» запросы создают очередь, блокирующую других клиентов.
  • Сложность обнаружения: Автоматические системы мониторинга часто заточены на поиск массированных атак, а Slowloris остается на периферии их внимания, используя минималистичный трафик.
  • Низкая стоимость проведения: Для атаки достаточно незначительного канала и простой утилиты, запущенной на любой машине. В случае ботнета общий кумулятивный эффект кратно возрастает.

Кроме того, Slowloris не утратил своей привлекательности для хактивистов и киберпреступников, потому что его можно применять как самостоятельную тактику или как дополнение к более мощной атаке.

Современное состояние и перспективы эволюции

С годами появился целый ряд «форков» (модификаций) Slowloris, расширяющих возможности атаки. Среди них — варианты, использующие WebSockets или HTTPS-соединения с удлиненным handshake. Более того, преступники активно экспериментируют с комбинированными атаками, где Slowloris участвует наряду с другими методами «медленного истощения» (Slow POST, Slow Read и т. п.).

Разработчики веб-серверов, в свою очередь, внедряют улучшения, направленные на более эффективное использование ресурсов: неблокирующие I/O, расширенные механизмы времени ожидания, «дедупликация» подключений от одного IP. Современные версии Apache, Nginx и IIS уже куда труднее «уложить» одним только Slowloris, чем их предшественников пять или десять лет назад.

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

Заключение

Slowloris — пример того, как изящное и недорогое решение может привести к серьезным последствиям в области кибербезопасности. Он не требует огромных ботнетов или пропускной способности, а умело использует механизмы HTTP-протокола для «медленного удушения» сервера.

Чтобы минимизировать риск подобных атак, нужно внедрять многоуровневую систему защиты: от правильной конфигурации веб-сервера и наличия модулей против «медленных» подключений, до применения обратных прокси, балансировщиков, специализированных WAF и систем мониторинга в реальном времени. Организациям также стоит заботиться о том, чтобы их серверы всегда имели актуальные патчи и не содержали устаревших механик, позволяющих Slowloris «процветать».

В эпоху глобальной цифровизации любая атака, лишающая пользователей доступа к ресурсу, способна нанести удар по репутации и финансовому состоянию компании. Атаки типа Slowloris показывают: если веб-сервис не готов противостоять даже малому количеству «медленных» запросов, то в критический момент это может обернуться потерей миллионов. Следовательно, контроль над безопасностью, своевременный апгрейд оборудования и ПО — обязательные составляющие серьезного подхода к защите.

В конечном итоге, атака Slowloris — это напоминание о том, что кибербезопасность не сводится к простому контролю пропускной способности канала. В равной степени важны тонкие настройки, мониторинг и способность быстро реагировать на малозаметные, но крайне опасные формы атак.

Эксклюзивный стрим с хакерами мирового класса

15 апреля в 19:00 Hussein и Niksthehacker раскроют все карты.

Реклама. АО «Позитив Текнолоджиз», ИНН 7718668887