O трендах и тенденциях в DDoS-атаках рассказывает создатель Highload Lab и сети фильтрации трафика QRATOR Александр Лямин. Интервью мы брали еще в начале года, но изменилось пока немногое
DDoS-атаки появились на заре интернета. Знакомство с ними для меня лично началось во время проекта IT Territory в 2003 году, когда игра только стартовала. Она имела достаточно агрессивную рекламную кампанию, в ответ на которую тут же прилетел DDoS от конкурентов. Скажу честно, я растерялся. Больше всего из-за того, что компания, которая оказывала хостинг-услуги, не просто не смогла, а не пожелала бороться с атакой. Ее представители сказали, что это не их проблема.
Буквально за ночь мы переосмыслили структуру приложения и перестроили его. Ресурс поднялся, но атака перестала работать на уровне приложения. Злоумышленники перевели атаку на сетевой уровень, в результате чего отключилась вся сеть компании, предоставляющей
Компания, которая, казалось бы, должна заботиться о клиентах, не сделала ничего. И не потому, что она плохая и
Самые популярные DDoS-атаки — это, конечно, атаки, организованные с помощью ботнетов. Это доступный способ сделать атаку распределенной.
Стоимость атаки сильно зависит от того, как она реализуется. Исполнителем может выступать студент, который сам что-то написал и готов поработать за пиво, а может и организованная группировка.
Есть типы атак, которые могут стоить, по слухам, полмиллиона рублей и больше. Мы выделяем атаки базового типа: до пяти тысяч ботов, проведение на уровне приложения, одна стратегия. Для исполнителя тут нет ничего сложного — получил WMZ, нажал кнопку, пошел пить пиво. Это стоит примерно $30–100 в сутки. Но есть и атаки другого рода, когда видно, что работает команда, и работает она 24/7 — на результат. Если у нее не получается добиться результата, она постоянно переключает режимы атаки, меняет стратегию, пытается найти уязвимое место и прорваться. Конечно, такое стоит далеко не $100 в сутки.
Россия выделяется среди других стран гораздо более изощренными атаками. Европейцы в шоке от того, насколько сложны наши атаки. Например, к нам недавно обратилась одна компания, которая работает на российском рынке, но все ее информационные структуры расположены в одном из ведущих европейских дата-центров. Когда компания к нам обратилась, дата-центр испытывал серьезные проблемы и был недоступен. Мы подготовились к приему компании на своей сети и прогрели карантинное оборудование, ожидая чего-то экстраординарного, ведь дата-центр «умер»! Каково же было наше удивление, когда мы увидели, что, хотя атака проводится на уровне выше среднего, она не представляет собой ничего особенного.
Законодательство крайне слабо в вопросах привлечения к ответственности за DDoS, из-за чего злоумышленники чувствуют себя фактор безнаказанными. Для квалифицированного программиста проведение DDoS-атак на заказ становится абсолютно безопасным прибыльным делом, доход от которого может превышать текущие зарплаты на рынке в десятки раз.
Мотивы для DDoS — это, как правило, деньги и просто личная неприязнь. De facto мы живем в информационном обществе. Скорость распространения информации влияет на него прямым образом. Заблокировав источник информации, можно необратимо повлиять на общество. Соответственно, DDoS — это эффективное средство блокировки какого-либо источника информации на необходимое время.
В качестве примера можно привести сайт Slon.ru. Сайт работал, всё грузилось, но атака не спадала. Такие атаки называют комбинированными. Когда они к нам пришли, она велась на сетевом уровне, на полосу. Когда злоумышленники увидели, что заполнение полосы вообще не дает результата, началась атака application-уровня. В ботнет, использовавшийся для проведения атаки, входило порядка 200–270 тысяч ботов.
Наиболее подвержены DDoS-атакам достаточно узкие направления интернет-бизнеса с высокой конкуренцией. Хороший пример — пиратские клоны Lineage II. Такие сервисы — вообще отдельная история, ведь они являются чисто коммерческими. Если в два часа ночи к тебе в ICQ стучится кто-то и, допустив восемь орфографических ошибок в четырех предложениях, требует (!), чтобы ты немедленно ему помог, можно не сомневаться, что это он! Администратор пиратки Lineage!
DDoS-атакам подвергаются и те сайты, где трудно их ожидать. У нас, например, есть такой внутренний мем — «кедровые бочки». Онлайн-магазин, который, не поверите, продает кедровые бочки, подвергся серьезной DDoS-атаке. Это очень узкий, высококонкурентный вид деятельности, которая, видимо, приносит хорошую прибыль.
Техническая сторона DDoS
Зачем вообще нужно классифицировать атаки? Чтобы понять, разложить по полочкам их механизм работы и предпринять адекватные контрмеры.
Наши коллеги по цеху пытаются как-то классифицировать атаки. На одном сайте можно найти и ICMP spoof, и DNS amplification, и TCP SYN flood, TCP RST flood — парни перечисляют техники проведения атак. Много страшных букв, которые для обычного пользователя никакого смысла не несут. Такая классификация нас не устраивает.
Мы классифицируем атаки очень просто: атаки на приложения, атаки на канальную полосу (скорость измеряется в гигабитах/с), атаки на сетевую инфраструктуру (скорость измеряется в пакетах в секунду), атаки на транспортный уровень (стек TCP/IP).
Самая мякотка — это уровень приложения. Почему? Потому, что у атак уровня приложения плечо максимально. Плечо атаки — это отношение ресурсов, необходимых на стороне атакующих, к ресурсам, необходимым на стороне приложения (на стороне защищающихся).
Возьмем какой-нибудь средний интернет-магазин. Можно найти ссылку, обычную ссылку, определенное количество обращений в секунду к которой убьет этот магазин напрочь. Таких приложений много, и для того чтобы их убить, иногда и ботнет не нужен — достаточно сотового телефона даже не с EDGE, а с GPRS. Четыре-пять запросов в секунду, и приложение выкидывается в outflow и не может выйти оттуда до перезагрузки сервера. Этим обусловлена популярность атак на уровне приложений.
Еще есть транспортный уровень — атаки, направленные на сам стек TPC/IP. К этому типу относятся атаки типа SYN-флуд, RST-флуд или FIN-way — модная сейчас атака с некорректным закрытием соединения, которая, кстати, тоже эксплуатирует уязвимость спецификации протокола, а не реализации.
К наиболее популярным методикам относится DNS amplification. Достаточно найти любой сетевой сервис IDP based без handshake, послать пакет размером N с фальсифицированным источником и в ответ получить пакет N x K. В таком случае для реализации распределенной атаки нужно иметь список IP-адресов, на которых есть эти сервисы, один очень хорошо подключенный сервер на гигабите, который выдаст набор пакетов в эти «отражатели» с поделанным IP-адресом жертвы. Пакет отправится к жертве и снизит до нуля ее пропускную способность и выведет ее из рабочего состояния. Речь идет о сервере DNS — UDP 53, где можно сделать такую штуку, как рекурсивный запрос по зоне. Сам по себе он небольшой, а вот ответ на него будет длинным. Чтобы дополнительно увеличить коэффициент K атаки, достаточно «подкормить» эти сервера каким-нибудь большими фальшивыми доменными зонами. Получая их рекурсивно, с поддельным адресом жертвы, можно увеличить K в разы. Второй вариант — это NTP, протокол синхронизации времени, который тоже имеет уязвимости подобного рода при плохо сконфигурированных серверах.
Атака типа SYN-флуд появилась одновременно с TCP-протоколом. Первое упоминание о ней я встретил, по-моему, в 1982 году. Как ни странно, она эффективна по сей день. История развивается по спирали. Сто-пятьсот SYN-запросов в секунду — это, конечно, этап давно пройденный. В настоящее время при наличии достаточных процессинговых мощностей можно легко превзойти и цифру в 10 млн пакетов в секунду.
В момент отправки пакета с запросом на соединение партнер должен сгенерировать sequence-номер (а это требует вычислений, так как он должен быть случайным, криптостойким числом) и создать в своем стеке определенною запись. На это нужны ресурсы, ресурсы и еще раз ресурсы. На то, чтобы послать пакет, сгенерировав его трафик, требуется существенно меньше ресурсов, чем на действия, выполняемые на стороне сервера. Получаем плечо атаки.
Проблема существует внутри самого протокола, в его спецификации. Когда разрабатывался TCP/IP-стек, никто не думал, что интернет разрастется до таких масштабов по количеству узлов, достигнет таких скоростей и, что немаловажно, будет прокачивать через себя столько денег.
Существуют атаки, которые не используют ботнеты. Распределенную атаку можно провести и с помощью механизма отражения. Классика жанра — атаки DNS amplification с отражением и увеличением мощности.
Атаки на инфраструктуру затрагивают всё, что лежит вокруг сетевой инфраструктуры: протоколы маршрутизации и само оборудование, если менеджмент-модули имеют открытый IP-адрес.
Что такое атаки на сетевом уровне? Просто залить полосой в 56 Гбит — это clustery sort называется. Это последнее средство, когда ничего уже не помогает. Такие атаки очень дороги и чрезвычайно разрушительны не только для самой жертвы, но и для всех, кто «стоит рядом». Как правило, они не могут продолжаться дольше двух-трех суток, так как начинают доставлять проблемы даже источникам атаки — сетям, с которых она производится.
Базовые атаки, совершаемые с помощью ботнетов, которые насчитывают около 200 ботов и ничего, кроме «get корень», не умеют, в принципе не должны представлять собой проблему для грамотно написанного ресурса.
О защите от DDoS
От любой атаки можно защититься. Мы в этом не сомневаемся.
Обычно, когда на клиента начинается DDoS-атака,
Когда к нам приходит клиент, мы объясняем, что ему необходимо перевести DNS на наш IP-адрес (которой мы ему выделяем). Также, чтобы избежать атаки на прямой IP клиента, который уже засвечен в сети, необходимо его как минимум поменять, а как максимум — поменять этот IP и дополнительно скрыть с помощью настроек iptables или файервола все IP-адреса, кроме наших.
Как только перестраивается DNS, начинается фильтрация. А дальше происходит самое интересное — обучение фильтров. Обычно мы задаем для себя планку: после двух часов под атакой ресурс клиента должен начать работать. И в целом ее выдерживаем.
Система защиты нашего сервиса Qrator основана на множестве математических построений. Как обычно отвечает Яндекс на вопрос «а как у вас поиск устроен?»? Да просто! Берем текст, токенчики, разделители, строим индескы, ранжируем. У нас примерно то же самое, только мы решаем задачу по анализу и фильтрации трафика. Ее решением занято множество людей.
Поведенческий анализ — один из наиболее эффективных методов фильтрации трафика. Мы рассматриваем сайт как дерево переходов. В узлах дерева находятся странички, а в ребра мы закладываем вероятность перехода и задержку при переходе. В основе лежит тот простой факт, что роботы и люди видят веб-страницы по-разному. Когда времени на обучение достаточно, люди «натаптывают» в этих переходах определенные уплотнения — тропинки. Всё посетители, которые из них выпадают, с той или иной вероятностью являются роботами. Вроде бы всё просто. С другой стороны, если прикинуть, какие объемы памяти и вычислительные ресурсы понадобятся для обработки, ты поймешь, что, наверное, при текущих вычислительных мощностях это не так-то просто.
Если клиент приходит к нам уже под атакой, обучаться на атаке… не невозможно, но сложно. Часто это требует мониторинга со стороны инженера. Именно поэтому за подключение под атакой мы вынуждены брать некоторую дополнительную плату.
Мы рекомендуем подключаться к нашей сети до DDoS-атаки. Конечно, мы стараемся минимизировать время обучения под атакой. У нас оно составляет не неделю, как у Cisco Guard (это наш железный конкурент, который снят с производства), а всего несколько часов.
Любой, кто скажет, что false positive у него ноль, — шарлатан. Ложные срабатывания (когда в черные списки попадают легитимные посетители), к сожалению, неизбежны. Хотя бы потому, что есть прокси, есть NAT’ы, есть просто люди, которые ведут себя не как обычные пользователи. Классический пример — администраторы сайтов. Администратор может нагрузить сервер, как 30, 40 и даже 100 пользователей.
К Cisco Guard у нас была одна претензия: когда к нему подключаешь атакуемый сервис, то независимо от того, есть там инженер или нет, первые сутки сервис работает так, что лучше бы он не работал вообще. Отсюда стало ясно, что от DDoS-атак невозможно защищать на прикладном уровне, не понимая семантику протокола приложения. Семантический анализ обязателен, как и поведенческий.
Мы отчетливо понимаем, что «серебряной пули нет»: то, что будет хорошо работать в одних ситуациях, не будет работать в других. Классификатор Qrator — это сложный набор алгоритмов, которые образуют систему голосования. Инструментарий мы стараемся развивать и дописывать и, надеюсь, найдем еще какие-нибудь эффективные методы в ближайшее время. Кое-какие задумки уже есть.
Примерно в один миллион долларов обойдется железка от Arbor, способная почистить 10 Гбит. Плюс человек, плюс канальные емкости… При этом атаки скоростью выше 10 Гбит/c мы наблюдаем примерно раз в месяц-полтора.
Мы склонны выделять два типа полос: активные и пассивные. В активноц полосе можно терминировать и проанализировать любое TCP-соединение и принять по нему решение. Полоса пассивная — это полоса, для управления которой нужно задать бит-маску, по которой будет резаться трафик. Таким образом, что-то интеллектуальное там порезать нельзя. Если говорить об активной полосе, то почти все наши поставщики трафика при необходимости блокируют UDP с определенного адреса, все ICMP или ICMP по определенной сигнатуре. На такой полосе мы спокойно проживали 57 Гбит. Уверены, что можем проживать и больше. Такие атаки не вызывают особых проблем, кроме необходимости оплачивать эту полосу, то есть мы говорим о цифре более 100 Гбит для пассивной полосы. Как следует из ситуации с DDoS-атаками на российском рынке, этого вполне достаточно.
Преимущество Qrator (как сервиса) перед купленным Arbor состоит в том, что наше решение не является точечным. Сеть построена по BGP-AnyCast, мы выбираем для установки точек исключительно магистральных операторов. Мы не ставим точки на public exchange просто потому, что это не гарантирует качества сервиса. Сеть развивается благодаря нашим собственным алгоритмам моделирования. Мы строим ее так, чтобы можно было распределять нагрузку на элементы сети более-менее равномерно.
Внутри точки присутствия система тоже масштабируема. Точка — это не одна «железка», их несколько. Есть карантинное оборудование, на которое «приземляются» некоторые атаки.
Мы создали модель, позволяющую математически рассчитать, как распределится трафик по интернету при появлении определенных анонсов BGP. Это позволяет нам гармонично развиваться и строить сеть, которую действительно можно балансировать по узлам.
Мы не завязаны на одного оператора связи и стараемся распределять риски по всем операторам, с которыми работаем.
Мы долго пытались разобраться с TCP/IP-стеком, смотрели на Free BSD и Linux и в итоге пришли к выводу, что стек в его теперешнем состоянии нам совершенно не нравится. У нас есть своя облегченная версия TCP/IP, которая очень хорошо себя ведет на текущих короткоживущих протоколах, быстрых TCP-соединениях.
Мы не скрываем, что узел фильтрации работает под управлением Linux. Линкус — это такой контейнер, в котором осуществляется управление платформой и выполняются математические преобразования, необходимые для поведенческого анализа. Существенная часть TCP-стека живет в самой TCP-карте, поэтому, собственно, у нас получились такие хорошие показатели скоростиобработки пакетов. Один наш узел фильтрации в состоянии перелопатить 6 Гбит трафика.
От атак базового уровня защититься можно. Для этого нужно обязательно иметь выделенный
Мы пытались писать статьи на Хабре и рассказывать на отраслевой конференции, как самостоятельно защититься от атак базового уровня. Но, к сожалению, это не возымело никакого эффекта.
О ботнетах
DDoS — это один из способов монетизации ботнета, но далеко не самый прибыльный. Еще есть спам, фрод, скликивание рекламы и так далее.
Я перечислил свойства ботнета на слайде для одной достаточно старой презентации. Когда я делал тот слайд, он казался мне абсолютно правильным:
- Жадность. Ботнет старается нанести приложениям как можно больше вреда за единицу времени.
- Ущербность. Ботнет не являет браузером. Это некий HTTP-стек, встроенный в червь. Как правило, он не умеет ставить корректные заголовки, не обладает JS-движком или обладает в ограниченном виде.
- Самосохранение. Ботнет — ценный ресурс, и любые действия, приводящие к сокращению его размера приносят прямые финансовые убытки атакующим. Ботнет старается не производить действий, которые могли бы его демаскировать и отразиться на материнской системе.
- Транснациональность. Ботнеты раскиданы по всему «шарику».
- Конечность.
Пару лет назад мы первый раз увидели медленный ботнет, который не был жадным... Он делал один абсолютно легитимный запрос раз в пять минут. Мы удивились, но при этом ботнет, насчитывавший 75 тысяч ботов, всё же доставлял проблемы. Попробуйте-ка отфильтровать ЭТО.
Сейчас из всех пунктов, перечисленных выше, остался только один — желание ботнета самосохраняться. Ботнеты уже давно не жадные, не тупые и не ущербные. Сейчас мы имеем дело с полноценными минимизированными веб-браузерами с Java-скриптами, редиректами, cookies.
Раздать команды членам 20-тысячного ботнета с учетом того, что инициатором соединений является сам бот, — задача не самая тривиальная. Как правило, контрольные панели, к нашему удивлению, пишутся на том же самом LAMP Stack (Linux, Apache HTTP Server, MySQL и PHP). До 2010 года разворачивание ботнета-пятитысячника в направлении ресурса жертвы занимало 30–40 минут.
В 2010-м управление ботнетами начали организовывать с помощью P2P. Ребята стали просто супербыстро раздавать команды: в течение пяти-шести минут ботнет, насчитывающий 10-20 тысяч ботов, может распространить команду внутри себя и развернуться на ресурс.
Ботнеты стараются как можно более точно имитировать поведение пользователей, чтобы затруднить их обнаружение и фильтрацию, выделение тела ботнета и блокировку.
Например, не так давно был всплеск активности ботнета MinerBot, который добывает BitCoin. Он приходит на титульные страницы без реферера, случайным образом, переходит по ссылкам и действительно создает проблемы для решений вроде Cisco и Arbor. Они не в состоянии отфильтровать MinerBot, потому что он не обладает ни одним из тех изъянов, на обнаружение которых ориентированы эти решения.
Ботнеты также перестали быть транснациональными — загрузки легко продают по регионам. Первый раз мы такое увидели в 2009 году, когда к нам «пришел» ботнет на 1500 голов, и все чистое СНГ.
«Засыпающий ботнет» — так мы называем довольно модную атаку. Ботнет обнаруживает, что он весь зафильтрован, раздает команду и централизовано прекращает атаку. После этого рандомный член ботнета посылает тестовые запросы в ожидании, когда фильтр отключится. Как только он отключается, атака в течение трех-пяти минут возобновляется в полном объеме. Это опасно тем, что подобная атака может длиться бесконечно — никаких ресурсов, с точки зрения ботовода, она не потребляет.
Разные ботнеты здорово отличаются друг от друга. Сама техника атак постоянно меняется.
С ботнетами-миллионниками наблюдается очень интересная ситуация. В последние несколько лет существенно возросло количество тех, кто хотел бы обзавестись своим ботнетом. Простой эксперимент: поставим Windows XP SP1 на честный IP-адрес. Сколько он проживет до того, как на него что-нибудь «приземлится», даже если не открывать веб-бразуер? Максимум пять минут. Есть много команд, которые борются за увеличения тела ботнета, а само предложение уязвимых систем крайне ограниченно. Соответственно, количество ботнетов растет, а вот их размеры медленно, но верно снижаются. Ботнеты уже начинают пересекаться, то есть один компьютер является членом нескольких ботнетов сразу.
Ботнетов на десятки миллионов компьютеров становится всё меньше и меньше. Ими обладают совсем уж джедаи. :)
У нас нет возможности делать реверс-инжиниринг кода ботнета, потому что у нас нет административных возможностей по изъятию его тела и, самое главное, у нас нет своих специалистов, способных делать обратный инжиниринг кода, ориентированного на Windows-системы.
О Highload Lab
Идея заниматься DDoS-атаками возникла у нас еще в МГУ. Мы посмотрели, как обстоят дела с устойчивостью к внешним воздействиям у правительственных ресурсов и с устойчивостью веб-приложений в России в целом. Стало понятно, что наши услуги, скорее всего, будут востребованы. Ведь отвалившийся интернет-магазин — это проблема только его владельца, но отвалившаяся налоговая инспекция — это проблема всей страны.
Начать исследования — это была моя личная инициатива. Университет предоставил инфраструктуру, я на свои деньги закупил оборудование.
В 2008 году у нас возникла идея. В 2009 году появилась бета-версия продукта, которую мы обкатывали в режиме открытой беты большую часть 2010 года. Мы принимали у себя на площадке любой терпящий бедствие проект. Стало ясно, что с этой задачей мы справляемся неплохо, даже располагая ограниченной университетской инфраструктурой. Мы, к примеру, помогли газете «Ведомости». Было здорово. :)
К коммерциализации нас подтолкнула необходимость: в июне 2010 года, когда максимальная емкость университетской сети составляла 10 Гбит, на нас упала атака в 12,5 Гбит. Атака показала, что фильтры справляются, и мы легко сможем преодолеть и более мощную атаку, но нужны канальные емкости. Это ценный и дорогой ресурс, но проигрывать тоже не хочется… У нас были какие-то свои накопленные средства, на которые и были закуплены канальные емкости. Также было закуплено дополнительное оборудование.
Нам повезло с запуском — у нас был замечательный стресс-тест. То есть 1 сентября я по плану как раз поставил последнюю точку входа, а 2 сентября к нам пришел Хабрахабр под атакой 6 Гбит. Мы получили бесплатный стресс-тест.
Трафик — это одна из наших главных статей расходов. Его тратится не просто много, а очень много.
Компания работает в нескольких направлениях: мы разрабатываем на заказ высоконагруженные веб-приложения и консультируем по вопросам их создания. Второе направление, самое перспективное для нас, самое динамично развивающееся, — это наш «коробочный» продукт, система фильтрации трафика Qrator. В него мы инвестируем практически всё, что зарабатываем.
На данный момент в нашей компании работает 12 человек. В нетехнический штат входят восемь инженеров и четыре других сотрудника. Двое из них внештатники из Москвы. В начале года, если всё пойдет хорошо, мы хотим пригласить в компанию еще двух инженеров. Так же как и Яндекс, мы ищем математиков, которые могут программировать, работать с данными (структурированным и плохо структурированными).
К сожалению, мы не занимаемся реверс-инжинирингом, но видим, что каждая атака имеет свою сигнатуру и логику.
Мы существуем уже полтора года. Это было не самое легкое время. В какие-то моменты было очень тяжело и финансово, и морально. Но за это время мы выяснили, какие вопросы возникают при эксплуатации сервиса, поняли, как формировать тарифную стеку. Поскольку услуга новая, никто не знает, как ее продавать. Все предложения на рынке имеют те или иные изъяны.
Highload Lab прибыльна. В этом году мы провели серьезные технические изменения — разработали новую версию своих специализированных сетевых процессоров — и активно развививали партнерство со всеми заинтересованными компаниями: хостинг-компаниями, телекомами.
Одна из наших целей — обеспечить защиту для мелкого бизнеса. Это самая незащищенная от атак прослойка. Многие компании берут за защиту от DDoS-атак от 50–100 тысяч, и, если мелкий бизнес столько заплатит, он разорится. Для предприятий малого бизнеса у нас есть специальный тариф — 5000 рублей. Но это не значит, что по более низким расценкам мы работаем хуже. На всех наших тарифах используется одна и та же система, качество фильтрации везде одинаково.
Мы предельно аполитичны. Во время выборов нашими клиентами были «Слон», New Times, golos.org, «Эхо Москвы», «Новая газета» СПБ, Forbes, Public Post, «Ведомости»… В общем, мы приняли под свое крыло всю оппозицию. Но даже с большим удовольствием мы бы поработали с тем же ЦИК. Но ЦИК к нам не пришел.
Единственный критерий для нас — ресурс должен обязательно соблюдать все законы. Мы принципиально не связываемся с сайтами, содержащими пиратский контент, имеющими нацистскую или порнографическую направленность, с фарма-партнерками и прочей интернет-грязью.
Мы подумали, что если бы нам удалось создать систему, построение и функционирование которой обходилось бы дешевле, чем проведение атаки, способной убить эту систему, то мы бы ликвидировали экономическое плечо атаки. Атаковать стало бы невыгодно. Исходя из этого, мы и строили идеологию развития нашего решения.
Впервые опубликовано в журнале «Хакер» от 02/2012.
Автор: XakepRU