Обзор DDoS-атак Рунета: 9:1 в пользу примитива

в 7:54, , рубрики: ddos-атака, hll, qrator, Блог компании Highload Lab., ботнет, информационная безопасность, системное администрирование, метки: , , , ,

Отчетная статья по семинару «DDoS-атаки и защита от них» (RIGF, 14 мая 2012, Москва)

Спикер: Артем Гавриченков, ведущий разработчик сети фильтрации трафика Qrator
Тема доклада: DDoS-атаки в 2011-2012 гг.: характер и тенденции

Приведем обзор DDoS-атак за последние полтора года и поговорим о том, чего следует бояться, а чего нет. Начнем с тривиальной статистики, данные которой основаны на клиентской базе HLL: к сожалению, ни одна компания не имеет универсального всевидящего ока. Итак, за 2011-2012 гг. мы стали очевидцами более 2 500 DDoS-атак.

Обзор DDoS атак Рунета: 9:1 в пользу примитива

No Time for losers

ICMP/UDP/SYN/ACK-флуд составляет всего 18%. Средняя мощность атаки – 300 Мбит/c. Более 1 Гбит/c имели 40 инцидентов. Наибольший суммарный трафик атаки на полосу – 56 Гбит/c – зафиксирован на интернет-магазин магнитных игрушек в июле 2011 года. Атака была частично направлена и на наш домен, есть основания полагать, что атакующие пытались обрушить Qrator целиком, «размазав» трафик атаки по сети.

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

The Champions!

Преступники отдают предпочтение высокоуровневым атакам транспортного и прикладного уровня (82%). Они рассчитывают на исчерпание ресурсов сервера в рамках установленных TCP-соединений, поэтому важно количество IP-адресов, участвующих в атаке. Интеллектуальные атаки на приложение коварны тем, что даже при наличии стратегии защиты вы скорее всего потеряете некую, пусть мизерную, часть легитимных пользователей.

Не менее 50% атак Layer 7 – это «долбежка» в один URI, интеллектуальных атак всего около 10%. Первый массовый робот, который имел хорошо написанный сетевой стек с HTTP и JS и грамотно осуществлял переходы по сайту, – это Minerbot, атаковавший прошлой осенью немецкие и российские сайты e-commerce. Количество ботов с полноценным сетевым стеком (TCP, HTTP/1.1, JS) неуклонно растет, особенно в дорогих заказных атаках. Вероятно, индустрия движется в сторону использования полноценных браузеров для выполнения DDoS-атак.

Обзор DDoS атак Рунета: 9:1 в пользу примитива

Отметим еще одну пренеприятнейшую тенденцию – владельцы ботнетов стали кооперироваться. За год Qrator детектировал 4 атаки, осуществляемые одновременно несколькими ботнетами с различными стратегиями нападения. Вспомним громкие случаи с «Эхо Москвы» (3 ботнета) и Хабрахабром (4-5).

Keep on fighting – till the end

С января по декабрь 2011 года максимальная продолжительность атаки составила 486 часов. Как это было? Ботнет из стран СНГ и Балтии атаковал интернет-магазин кедровых бочек. Первые трое суток он пытался пробить защиту, но разочаровавшись, пошел зарабатывать деньги где-то еще. Зато как только мы начинали разблокировку IP-адресов, он тут же возвращался. Атакующий держал двух-трех ботов, и как только запрос проходил, то вызывал еще 5 000. В таком режиме ботнет может функционировать вечно, осуществляя атаки на несколько сайтов при минимальных ресурсах.

When I get older I will be stronger

Обзор DDoS атак Рунета: 9:1 в пользу примитива4 декабря 2011 года выяснилось, что о ресурсах ботнета заботятся не все. Максимальная продолжительность DDoS-атаки достигла 1228 часов. Если бы slon.ru/ не находился под защитой, то он бы лежал 2 месяца. В течение пары часов на сайт зашло более 200 тысяч ботов преимущественно из стран Южной и Юго-Восточной Азии. Таким образом, атака поставила еще один рекорд в истории Qrator – по размеру ботнета. И хотя она уже не приносила никакого результата, атакующий все равно держал трафик, причем ботов было очень много. Но самое интересное, что, по всей видимости, этот же самый ботнет размером порядка 182 000 машин вернулся на slon.ru/ и на tvrain.ru/ 6 мая 2012 года, причём пересечение «декабрьского» и «майского» стоп-листов составило около 500 IP-адресов. За полгода ботнет из пары сотен тысяч машин обновился почти полностью – либо же на самом деле он в разы больше.

Кстати, при атаках 4 декабря 2011 года мы ожидали, что ботнеты будут пересекаться: ведь громили схожие по идеологии СМИ. Однако пересечения замечено не было. Зато в мае мы четко видели, как один ботнет работал и против российских, и против армянских СМИ.

Give me freedom, give me fire

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

Хотя не так давно мы нашли источник одной атаки на интернет-СМИ и передали его IP-адрес владельцу ресурса (который, в свою очередь, передал его правоохранительным органам). Злоумышленник сначала использовал ботнет, но в момент, когда сайт оказался под защитой, он привлек другие ресурсы, включая список анонимных прокси. Некоторые из них оказались не столь уж анонимными и проставляли HTTP-заголовок X-Forwarded-For, в котором, собственно, и находился IP-адрес атакующего сервера. Довольно тривиально, но выясняется, что не все об этом думают. Вероятность ошибки мала: у потенциального исполнителя были найдены личные мотивы.

And if you fall, get up, eh eh

Обзор DDoS атак Рунета: 9:1 в пользу примитиваГоворя о распределении DDoS-атак по месяцам, отметим, что с июня по сентябрь преступники снижают свою активность. По дням недели их усилия распределены практически равномерно с некоторым спадом на выходных. Зато, как правило, на выходных как раз и случаются наиболее мощные атаки на полосу. C чем это связано? Если, допустим, атака в 56 Гбит/c случается во вторник, то есть определенные основания надеяться, что в ближайшее время кто-нибудь из магистральщиков среагирует и мы сможем с ним договориться. В выходные же техподдержка даже крупных провайдеров часто не делает ни х работает менее качественно, чем в будни.

But it's been no bed of roses

Пока что Россию спасает ADSL: на вход большой, на выход маленький. Поэтому много атак на полосу не происходит. Но не забывайте о такой страшилке, как работа IXP, которые всячески игнорируют поступающие к ним abuse request'ы. Как это выглядит? На одного из наших клиентов начинается крупная атака, которая создает проблемы некоторым площадкам, на которых мы расположены. Причем мы видим, что мусорный трафик идет из некоторого Internet Exchange. Чтобы лишний раз не балансировать сеть, мы вначале пишем им вежливый опус вроде «От одного из ваших клиентов идет ICMP-флуд приличного объема, это неправильно, разберитесь».

«Today we faced several Gbps of DoS from your exchange (and at this time it hasn't stopped yet).
It is ICMP traffic with spoofed source addresses.
Our suggestion is that one of your clients uses IPs from other ASes, connected to *^#$^*-IX.»

Ответ мы получаем примерно такой: «Технически ничего поделать не можем. Вообще, мы предоставляем клиенту услугу, он платит нам деньги, может, вы его пустите в null route?»

«*^#$^*-IX only operates the L2 exchange fabric. We are not involved in routing issues ourselves. Please ask your upstream(s) to contact their relevant peers on the exchange in order to investigate this.
One idea is that you could add a null route at the border?»

В null route мы-то его пустим, но тогда он придет к нам не через этот IX, а через «Ростелеком», например. Толку от этого никакого. Мы довольно долго говорим о том, что у провайдеров, IXP и ISP должна быть какая-то сознательность, готовность работать с такими вещами. Но, к сожалению, пока мы ее не очень-то видим.

Choosing your battles

Поговорим о целях атакующих. К традиционным финансы-политика-социальный протест-кража данных-самореклама ботнетов добавилась новая цель – вымогательство биткойнов. Преступники отправляют письмо с требованием выдать определенную сумму в биткойнах, а в случае непослушания угрожают крупной DDoS-атакой. И, как правило, бездействие жертвы действительно сопровождается интеллектуальной атакой на приложение. Все уже, наверное, привыкли к письмам от школьников из серии «Переведите мне 1000$ на Яндекс.Деньги, или ваш сайт будет лежать две недели». Это то же самое, но на качественно новом уровне, и этого уже следует опасаться. А поскольку биткойны не являются официальным платежным средством, то привлечь за вымогательство в данном случае практически невозможно.

Every nations, all around us

Напоследок мы хотим всем напомнить, что не нужно иметь атаку в 6-7 Гбит/c, чтобы сложиться. Опасна как раз таргетированная атака на приложение даже с небольшим ботнетом. До 2010 года борьба с DDoS-атаками для российских веб-приложений заключалась в блокировке зарубежного трафика. Сегодня любой желающий может приобрести ботов с геопривязкой по любым регионам. Да, российские ботнеты немногочисленны, но они есть.

Achtung!

Акцентируем внимание еще на одном важном пункте. Если на приложение пришла атака в 5000 ботов и оно «легло в спячку», то это не значит, что у атакующего не было в запасе дополнительных ботов. Как только ресурс не складывается под небольшой нагрузкой, как правило, 1-2 раза происходит наращивание мощности атаки, бывает и десятикратный прирост. Поэтому готовьте сани летом. И помните, что в случае DDoS-атаки вам придется заплатить за неработающий сайт. Если обычно вы платите провайдеру за 2-3 мегабита, то после инцидента будьте готовы к счету до пяти нулей. Согласитесь, будет обидно.

Let's rejoice in the beautiful game

90% DDoS-атак – это довольно примитивные, безынтересные игры. Численное превосходство «гостей» – не повод для паники. Спасение бегством – не лучшая стратегия. Тренируйтесь загодя, постройте плотную защиту, вооружитесь тактикой, импровизируйте. Играйте по своим правилам. В конце концов, игра идёт на вашем поле.

Автор: 0xLGA

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js