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

 

Нажми на кнопку — получишь результат

В центре нашего внимания оказался инструмент с замечательным названием Low Orbital Ion Cannon (LOIC) и различные его производные. Простая как две копейки утилита, доступная массам и способная генерить трафик и нагрузку на заданный сайт. Но главное, что появилось у атакующих, — возможность распространять готовое к употреблению средство для участия в атаке, ссылку на которое можно предложить всем сочувствующим перед началом DDoS в социальных сетях, чатах, имиджбордах и других каналах связи. От участников потребуется минимальная настройка под себя — и можно объявлять начало.

 

Что же происходит внутри?

Стоит отметить, что LOIC — не единственный инструмент «бунтарей без причины» и используется не одна его вариация. Кратко рассмотрим весь арсенал.

JS LOIC

JS LOIC атакует случайными HTTP-запросами. Тут есть сигнатура: стоит неверный referer того сайта, откуда программа запускалась, и URI, сформированный совершенно неестественным для любого веб-ресурса образом. Мы видим внутренний LOIC'овский номер запроса и отправленное протестующим сообщение. Чего стоит это отфильтровать? Да ничего. Тут даже поведенческий анализ не нужен.

LOIC UDP

Поговорим про стандартный LOIC UDP. Ничего особенного. Утилита шлет UDP-пакеты длиной 48 байт на HTTP-порт. Какие проблемы защититься от этого? Что вообще должен делать UDP-пакет на вашем www-сервере? Стройте access-листы. Другая вариация: LOIC TCP открывает честное TCP-соединение и засыпает его нерелевантным мусором. Какие проблемы с этим могут быть? Опять же никаких: бюджетируйте ресурсы, ограничивайте размеры данных и буферов. Веб-серверы nginx, Varnish все это умеют.

LaOIC HTTP

Следующий вариант, самый классический,— LOIC HTTP. А тут вообще нечего ловить. Принцип у него простой: GET '/' так быстро, как мы только сможем, да еще и заголовки невалидные. С точки зрения защиты, такие запросы до вашего бэкенда доходить в принципе не должны, если ваше приложение правильно построено.

SLOWPOST

Вот еще такой интересный инструментарий Anonymous — OWASP/SLOWPOST. Открываем соединение и шлем данные с задержкой так долго, как только можно, чтобы занять ресурсы воркера на стороне сервера. Атака старая — ничего нового здесь нет. Почитайте, как нужно писать TCP-приложения, например здесь:
bit.ly/tcpmanual.

HOIC

Есть еще относительно новый инструментарий HOIC (High Orbit Ion Cannon) c забавными апгрейдами. Атаки в этом инструменте можно скриптовать, можно добавлять список юзер-агентов и рефереров, которые будет проставлять пушка, чтобы сбить защищающую сторону с толку и не дать построить стратегию по паттернам. Пользователю даже предлагается сделать список URL, которые затем пушка выберет случайным образом. Впрочем, отбиться все равно не так сложно.

 

Почему злободневно?

Итак, что стоит за так называемым социальным DDoS? LOIC / HOIC / JS LOIC / OWA / SLOWPOST — технически нового тут ничего нет. Обычный коммерческий DDoS, на самом деле, гораздо лучше скоординирован, технически более совершенен. Имеем четкий и уверенный тренд к движению в сторону full browser stack: наличие Flash'а, умения понимать cookie, редиректы, JavaScript. На зараженной машине запускается реальный браузер, который начинает делать реальные запросы! Но при этом про них почему-то молчат. Все говорят про LOIC. А все потому, что появился самый важный фактор — социальность.

Почему же это работает на техническом уровне? А все потому, что имеем ужасающий дизайн веб-приложений, в том числе правительственных структур, плюс плохой дизайн инфраструктуры. Заметьте, Anonymous не атаковали Facebook. Потому что без шансов (по крайней мере в плане DDoS). Хорошо построились ребята, молодцы. Google тоже атаковать бессмысленно, правильно выстроились, Яндекс, наверное, можно, но придется приложить титанические усилия.

Появилось еще такое свойство, как массовость. Вот представьте, вышли на протесты сто тысяч человек, а некоторым было лень, а другие были в регионах. А сколько миллионов может откликнуться на призыв Anonymous? А теперь умножьте эти миллионы на скорость аплинка DSL-модема. Круглые цифры получаются. Все-таки может быть опасно. Есть еще фактор X. Он состоит в том, что Anonymous — это неоднородная структура с четким разделением: люди-профессионалы (те самые, которые сломали инфраструктуру Sony и увели у них персональные данные) и соучастники, которые ответили на этот призыв и вышли заявить свои протест. Профессионалы организуют, вооружают и наносят основной урон, соучастники создают фоновую нагрузку и численную безопасность.

 

Вредные советы

В Сети можно найти немало советов, как такую атаку погасить. Одна проблема — советы, как правило, вредные.

  • Вредный совет № 1: Фильтровать запросы по паттерну «HTTP/1.0 + заголовок Host». Если они совпадают, с клиентом что-то не так, поскольку в HTTP/1.0 не было имплементировано заголовка Host.

Правда: На самом деле — везде и рядом мы это наблюдаем. Прокси такие вещи умеют и любят делать. Поставите это правило и получите кучу ложных срабатываний (так называемых False Positives). Атака отчасти достигнет своей цели, заблокировав существенную долю легитимных пользователей.

  • Вредный совет № 2: Клевое решение — если пушка выставляет порядок заголовков, нехарактерный для браузеров, давайте делать fingerprinting.

Правда: Тоже, в общем-то, абсолютно бесполезная штука. Opera Mini ставит заголовки совершенно сумасшедшим образом. Получите кучу False Positives.

  • Вредный совет № 3: Пушка ставит нехарактерные двойные пробелы перед заголовками— давайте фильтровать по этому признаку.

Правда: При помощи скриптов этот паттерн атакующие могут легко и просто обойти. Это не должно вызвать никаких проблем.

  • Вредный совет № 4: Поставить mod_security для Apache — что ж, удобно, судя по названию — безопасность гарантирована.

Правда: Если вы пользуетесь Apache, перестаньте это делать, в 2012 году у вас нет на это ни одной причины. Эта штука сломана на архитектурном уровне, полностью починить ее невозможно.

  • Вредный совет № 5: А давайте напишем скрипты для Snort'а и будем ездить regexp'ом по телу пакета?

Правда: А вы посчитайте: во сколько вам обойдется скопировать данные пакета в userland и пропустить через regexp? Задача, конечно, достойная для суперкомпьютеров класса «Ломоносов», но на вашем фронтенде делать этого не рекомендую категорически.

 

Вопрос из зала: anonymous vs. корневые dns?

В марте группа Anonymous собиралась обрушить все корневые DNS-серверы. Реально ли это сделать? Конечно же, нет! Корневые DNS-серверы живут в режиме BGP-anycast, точно так же, как и наша система фильтрации Qrator. По сути, это несколько не связанных между собой серверов, анонсирующих вовне один и тот же префикс. Даже если удастся забить один из каналов одного из серверов, трафик за счет BGP сразу же перераспределится на оставшиеся. Даже если бы Anonymous смогли атаковать ну один-два из этих серверов, остальные бы этого не заметили благодаря тому, что весь трафик от автономной системы-источника, с которой велась бы атака, приходил бы всегда на один и тот же сервер.

 

Полезный совет

Необходимо и достаточно устроить серию тестов на соответствие возможностей клиента с возможностями браузера: редиректы, печеньки, ява-скрипт, плагины. Эльдар Заитов (Eldar Zaitov) написал соответствующий модуль для nginx. Как это использовать и еще 15 полезных рецептов ты можешь прочитать в cookbook'е на страницах рядом.

 

Подведем итоги

Социальный протест де-факто обрел новую форму — электронную. Тренд на повышение четко виден. Скорость распространения или нераспространения информации определяет то, как мы живем. А DDoS является действенным способом ее блокировки. Еще один важный вывод. Любая DDoS-атака имеет радиус «осколочного поражения» и может оказывать негативное воздействие на целые сегменты Сети. Anonymous, глупо рубить сук, на котором сидишь! Интернет вас вырастил — и вы же его и укапываете. Мне непонятно, почему они протестуют, а у меня торренты и «ВКонтакте» плохо открываются :). Нехорошо. Право протеста — это замечательно, главное, чтобы мирных граждан не трогали.

 

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии