Бич для Интернета, или DDOsловно об атаках

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

Давайте вместе разберемся, что же собой представляют современные DDoS-атаки, благо практики по этой теме, особенно за последний год, у нас накопилось немало. Для начала обратимся к базовым терминам: DoS-атака (Denial of Service) — атака, осуществляемая с одного ресурса и направленная на отказ в обслуживании другого ресурса или канала; DDoS-атака (Distributed Denial of Service) — DoS-атака, осуществляемая с разных ресурсов. Теперь давайте вспомним, какие бывают типы DDoS-атак. Думаю, многие слышали только об одном, максимум двух типах DoS-атак, поэтому я уверен, что в статье вы сможете извлечь для себя что-то новое в столь модной сегодня теме, представляющей серьезную опасность для веб-ресурсов. 

Старый добрый SYN-flood

На самом деле история появления DoS-атак восходит к началу 1990-х. Первые упоминания о классической атаке, которая носит название SYN flood, датируются примерно 1992–94 годами, а первое официальное описание относится лишь к 1996-му. Примерно в то же время, а именно в 1994 году, автор этих строк в процессе своих исследований увлекался экспериментами с DoS-атаками на Novell NetWare, а затем в 1995–96 гг. — на Windows 95 и различные UNIX-системы. Суть этой классической атаки заключается в следующем: атакующий генерирует максимально возможное число SYN-запросов на создание TCP-соединения, забивая TCP-стек операционной системы жертвы и не давая возможности никому удаленно подключиться к атакуемой системе. Но так было раньше...

Атака на канал

При атаке на канал ставится задача — полностью забить канал у атакуемого сервиса. Вид трафика может быть, по сути, любой: TCP SYN, полноценные подсоединения, ICMP Ping’и, UDP. Грубая, но действенная атака, ведь канал у большинства ресурсов не превышает 1 Гбит. 

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

В случае DDoS-атаки запросы идут уже не с одного, а разных IP-адресов. Для чего нужен DDoS? Для усиления мощности и усложнения фильтрации. Откуда берутся ресурсы для DDoS-атаки? А это и есть тот самый привычный всем ботнет, который представляет собой набор компьютеров, домашних роутеров (да, да — за этим будущее!) или мобильных телефонов (это реже) — «зомби», массово взломанных злоумышленниками, объединенных в сеть и используемых ими для своих различных целей (вирусные атаки, DDoS, спам, прокси, целевые атаки и т. д.). Атака добрая, старая и до сих пор более чем рабочая. Я абсолютно уверен, что все слышали про эту атаку и многие думают, что это и есть главное оружие сегодняшних досеров. Но это не совсем так, да и за прошедшее время техника DDoS-атак шагнула далеко вперед, а потому мы поговорим о куда менее известных видах атак, которые сегодня активно применяются. 

Отраженная DDoS-атака с усилением 

В данном случае нет устоявшегося названия для этой атаки (Amplification), но, на наш взгляд, этот термин наиболее точно отражает ее техническую сущность. Вот о ней мы сейчас и поговорим. Прежде всего, первый важный момент, на который надо обратить внимание, — эта атака основана на сетевом протоколе UDP (а не TCP, как SYN flood). Специфика протокола UDP состоит в том, что он простой: «не создает» соединение, тем самым не гарантирует доставку пакетов и не осуществляет первичного «рукопожатия», но при этом активно используется многими важными интернет-сервисами, в частности DNS (всем известный, Domain Name Service) и NTP (менее известный, Network Time Protocol), хотя сегодня уже ведутся атаки и с помощью сервисов потокового вещания. Самое главное для нас в данном случае, что нет «рукопожатия», то есть сервис «не проверяет» адрес отправителя. Другими словами, кто угодно может послать UDP-пакет от чьего угодно имени (IP-адреса). Соответственно, атакующий посылает UDP-пакет на сервис (обычно DNS или NTP) от имени жертвы (с ее IP-адреса) и сервис отвечает не на IP-адрес атакующего, а на IP-адрес жертвы. Вот почему и название у атаки — «отражение». Но этого было бы мало для успешной DoS-атаки. В названии присутствует еще слово «усиление». В данном случае у DNS- и NTP-служб есть приятная для атакующего особенность — множитель. Это выглядит следующим образом: атакующий от имени жертвы отправляет на DNS- или NTP-сервер пакет размером 1 кбайт, а DNS- или NTP-сервер отвечает на адрес жертвы пакетом в N-раз больше! Вот это и есть то самое усиление, о котором было сказано в самом начале. Поэтому название «усиленная отраженная DDoS-атака» достаточно точно характеризует техническую суть данного явления. 

Для того, чтобы понимать общий масштаб проблемы, посмотрим на следующие цифры. В случае DNS-сервера множитель может быть от 30 и почти до бесконечности. В случае NTP-сервера — от 10 до нескольких тысяч. Всего в мире примерно 11,5 млн DNS-серверов, из которых 6,2 млн позволяют проводить подобную атаку. В случае NTP — общее число серверов в мире примерно 100 тысяч. Из них позволяют умножать на 10 — 56 тысяч, на 100 — 15,5 тысяч; на 1000 — 10 тысяч NTP-серверов. 

Нетрудно догадаться, что сейчас это главный тренд мощнейших DDoS-атак в мире — просто, дешево и удобно. На сегодняшний день была зарегистрирована рекордная DDoS-атака именно данного типа, с интенсивностью трафика в 400 Гбит/с! Трафик сгенерирован с использованием всего 4529 уязвимых NTP-серверов, размещенных в 1298 сетях. 

DDoS-атака медленными соединениями

Это довольно хитрый тип атак. Одна из типовых — Slow Post. Она направленна на 7-й уровень модели OSI — уровень приложения. Проще всего объяснить ее работу на примере протокола HTTP и запроса POST. Атакующий отправляет HTTP POST-запрос, указывая в нем большой размер пакета (), после чего медленно передает данные по 1 байту. По стандарту HTTP-сервер должен дождаться полной передачи данных (получив содержимое размером байт) и может закрывать соединение только по таймауту. Таким образом, в случае подобной DDoS-атаки медленными соединениями атакуемый сервер открывает огромное количество соединений, катастрофически расходуя свои ресурсы (прежде всего, открытые в системе файловые дескрипторы). Например, наши многочисленные эксперименты показывали, что от подобной атаки тот же Apache «падает» за 1–2 секунды. 

В чем плюс этой атаки? Она достаточно элегантна и не требует генерации огромного трафика, как предыдущих атак. Дело в том, что в отличие от 1995 года, когда многие ОС можно было легко «завалить» SYN flood’ом относительно небольшой мощности, сегодня это уже невозможно. А потому на помощь приходит подобная вариация HTTP-flood’а с использованием медленных запросов, которые в отличие от TCP SYN (ура, за 20 лет вендоры научились их обрабатывать) многие системы до сих пор не умеют корректно обрабатывать. 

«Умные» DDoS-атаки 

Если от первых трех типов атак поможет уберечься внешний сервис защиты от DDoS или специальное сетевое оборудование, что экономит средства потенциальной жертвы — всегда приятно иметь большую красную кнопку «Защита от DDoS» (об этом мы поговорим чуть позже), то в случае «умных» атак так просто уже не защититься. «Умные» DDoS-атаки всегда связаны с атакой на специфичные слабости непосредственно атакуемого приложения, когда из-за тех или иных уязвимостей или специфичных недостатков приложения при атаке «падает» или фронт, или бэк-енд. Это требует предварительного изучения специфики самого атакуемого приложения, но его совершенно свободно можно провести относительно скрытно для жертвы в режиме блекбокс. И когда недостатки, оставленные разработчиками, найдены, то они становятся базой для последующей «умной» DDoS-атаки. Достаточно одного совершенно легитимного запроса с пары десятков машин и сервер (или база данных) «умер». Ну и конечно, не стоит забывать об уязвимостях веб-приложений, эксплуатация которых ведет к DDoS -атаке, когда сервер падает от 1–2 специально сформированных пакетов. 
Типовые примеры подобных «умных» запросов, «убивающих» приложение:
Различные «тяжелые» запросы; выборка больших объемов данных; поисковые запросы
ZIP-бомбы (42 кб архив, который распаковывается в 8.5 петабайт)
XML-бомбы
Подмена параметров при выборке различных данных (например, сказано, что можно выбрать 100 товаров, а атакующий вручную меняет HTTP-запрос и выбирает 999999+ товаров)
и т. д. и т. п. — фантазия опытного хакера воистину безгранична

Цена вопроса

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

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

«Куда же бедному крестьянину податься»? 

На самом деле, как показывает практика, не так страшен черт, как его малюют. Для защиты от атак первых трех видов (Flood’ы всех типов, отраженные усиленные и медленные соединения) достаточно использовать специальное оборудование или, что во многих случаях более обоснованно, — внешний сервис защиты от DDoS. Главное только, чтобы он был качественным. При этом надо четко понимать, что в любом случае, будь то оборудование или сервис, нужно регулярное тестирование, то есть имитация реальных DDoS-атак, чтобы король вдруг не оказался голым. Потому что случаи, как известно, бывают разные, и сегодня сервис защищает, а завтра уже нет. 

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

***
Тема DDoS-атак всегда у меня ассоциируется с фразой: «Все новое — это хорошо забытое старое». DDoS-атаки будут всегда и везде — в любых распределенных системах. Это просто данность, связанная как со спецификой сетей и сетевых протоколов, так и с нюансами их обработки на целевых системах. Понимание как основных принципов DDoS-атак, которые довольно просты и легко объясняются буквально на пальцах, так и методов защиты от атак, сэкономят время и нервы любому ИТ- и ИБ-специалисту и помогут адекватно реагировать и максимально снизить вероятность успешной реализации этой актуальной на сегодняшний день угрозы, ставшей в XXI веке подлинным бичом для популярных интернет-проектов.

Опубликовано 26.05.2014

Похожие статьи