DNS Amplification DDoS: Анатомия атаки и защиты. Часть 1

Автор: | 03/01/2013
 

Статья взята у Blogerator.ru.

Сегодня у нас первая часть большой статьи про устройство ныне печально известной DDoS-атаки через отражение (DNS Amplification). Конечная цель статьи — показать, как можно эффективно бороться с паразитным DNS-трафиком (смотрите вторую часть), для чего сначала рассмотрим основы в первой части статьи, где исследуем механизмы и глубинное устройство этой атаки.

 

анонимус анонимусы маска Anonimous anonymous

 

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

В отличие от других интернет-сервисов DNS является своего рода связующим хребтом для всего Интернета: мало кто задумывается, что сервис разрешения имен косвенно используется фактически во всех других службах и протоколах. Сегодня же реальность такова, что DNS нашел своё применение и в других, в том числе и криминальных целях. Поэтому предлагаю рассмотреть теорию правильной настройки этой службы на практическом примере противодействия генерированию паразитного трафика для распространенной атаки — DNS Amplification DDoS (DAD).

Вызовы сегодняшнего дня

В феврале месяце 2012 года известная хакерская группа Anonymous объявила миру о готовящейся сетевой акции под названием Global Blackout. Она была запланирована на 31 марта, именно в этот день хакеры планировали вывести из строя все 13 корневых DNS-серверов Интернета. Для осуществления этой атаки на базе инструмента AntiSec DHN ими была написана специальная программа «Reflective DNS Amplification», которая, как ожидается, будет запущена сочувствующими в указанный «час X» на десятках тысячах компьютеров по всему миру. Технический смысл сего действия — проведение мощнейшей DDoS-атаки по уже обкатанной схеме, получившей устоявшееся название — «DNS Amplification».

С одной стороны можно вспомнить множество масштабных атак уже вошедших в историю, в том числе выполненных против корневых DNS-серверы с помощью именно этой техники. Несмотря даже на выход из строя нескольких корневых серверов в тех отдельных случаях, ещё никогда не удавалось достичь прекращения работы сразу всех root-серверов. С другой стороны DAD — это именно тот тип атаки, который прочно удерживает неоспоримое лидерство среди наиболее мощных DDoS-атак, проведенных в истории Интернета.

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

Так, 2010 год ознаменовался рекордной по мощности DDoS-атакой в более чем 100 Гб/с, жертвами которой стали не только крупные web-порталы, но и даже отдельные национальные магистральные провайдеры. От разбушевавшейся сетевой стихии серьёзно пострадал один из крупнейших мировых датацентров и несколько AntiDDoS-сервисов, которые были буквально «смяты» при попытке принять на себя A-запись атакуемого домена. В конце концов, тогда под раздачу попала даже сама организация-создатель интернета — DARPA…

Что же это за дьявольский механизм, который поднимает в виртуальном пространстве цунами такой мощности и разрушительности?

Общая схема работы DNS

Чтобы следовать дальше, давайте предварительно в справочных целях рассмотрим общий алгоритм работы DNS (смотрите план-схему ниже).

  • Пользователь запрашивает IP-адрес требуемого ему домена webserver.com у DNS (как правило, предоставляемого провайдером интернет-услуг), обозначим его далее как User Primary DNS Server;
  • Если данный DNS-сервер не авторитативный для запрашиваемого домена, не содержит этот адрес в своём временном кэше, а также работает в рекурсивном режиме (а это справедливо для большей части серверов такого рода) — этот запрос задаётся уже от имени User Primary DNS Server одному из корневых DNS-серверов (Root DNS Server);
  • Если Root Server не обладает данным соответствием, он возвращает для User Primary DNS Server подсказку — адрес другого DNS-сервера, который является управляющим (TLD) для указанной зоны (в нашем случае .com);
  • User Primary DNS Server дождавшись его ответа, итеративно повторяет свой запрос уже к указанному в ответе DNS-серверу .com-зоны;
  • DNS-сервер .com-зоны также может не знать соответствия, и тогда он возвращает в ответ адрес авторитативного для этого домена DNS-сервера — назовем его Domain Primary DNS Server;
  • User Primary DNS Server получив в очередной раз ответ-подсказку, повторяет запрос в указанный адрес — на этот раз уже напрямик к Domain Primary DNS Server;
  • И, наконец, Domain Primary DNS Server возвращает искомое соответствие IP-адреса для указанного домена;
  • После вышеописанной серии итеративных опросов, User Primary DNS Server, наконец-то, успешно возвращает значение IP-адреса для домена webserver.com своему клиенту, завершив обслуживание рекурсивного запроса.

Конечно, это лишь примерная схема работы DNS (в данном случае её стандартный рекурсивный вариант), в реальной жизни всё может работать с некоторыми отличиями в зависимости от особенностей настройки каждого конкретного сервера.

 

DNS схема работы рекурсивного ДНС алгоритм разбор иллюстрация

 

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

Динамика работы DNS Amplification

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

Ситуация драматически меняется, если совместную игру начинают «организованные преступные группировки» из десятков тысяч (или как в описанном выше случае  — миллионов) зомбированных компьютеров со всего мира.

 

DNS Amplification DDoS DNS dad dns reflect attack схема работы рекурсивного ДНС алгоритм разбор иллюстрация

 

Давайте рассмотрим схему того, как это работает (см. графический алгоритм чуть выше):

  • 1. Атакующий посылает сигнал скомпрометированным компьютерам (ботнет) на начало цикла запросов к DNS;
  • 2. Все зомби-компьютеры начинают выполнять запросы каждый к своему User Primary DNS Server с подделанным обратным IP-адресом (spoofed ip), который указывает на компьютер жертвы;
  • 3. Описание шагов 3-8 опускаем — это серия стандартных итеративных запросов, выполняемая рекурсивным сервером User Primary DNS Server, полностью аналогичных той схеме, которая была описана выше (см. пункты 2-7);
  • 9. Итак, в результате, пакет с IP-адресом для webserver.com должен быть доставлен клиенту User Primary DNS, но реально его “усиленный” вариант будет отправлен на ранее подделанный IP-адрес жертвы.

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

  1. Эффект отражения: использование спуфинга обратного IP-адреса даёт перенаправление всех результирующих пакетов-ответов на заранее заданную жертву.
  2. Коэффициент усиления атаки (amplification factor): этот фактор может достигать при самых благоприятных условиях 73 (в большинстве случаев колеблется между 30-60). Это значит, что на каждый посланный условный 1 байт-запроса — вышеупомянутая схема из неверно настроенных DNS-серверов вернет 30-60 байтов-ответа, что и обеспечивает кратное нарастание DDoS-эффекта при отражении.
  3. Проблема «open resolver»: в большинстве случаев это устаревшая версия DNS-сервера или просто неверно настроенный его экземпляр. Он позволяет не только получать запросы из чужих сетей, выполняя рекурсивные запросы для них, но и посылать ответы без необходимых предварительных проверок. В нашем примере подобным уязвимым сервером выступает User Primary DNS Server.

 

прикол юмор шутка демотиватор DNS Amplification DDoS DNS dad dns reflect attack схема работы рекурсивного ДНС алгоритм разбор иллюстрация

 

DNS: спецсвязь для ботнета

Ботнет — это большая распределенная система, где на первый план всё чаще выходит надежный механизм обратной связи, который позволил бы держать постоянную связь с управляющей головой ботнета (говоря на сленге ботостроителей — с «папой»). Времена использования для отправки управляющих команд классического IRC-канала— ушли в прошлое. Для донесения кодированных посланий теперь чаще всего применяются сервисы типа Twitter (см. рис.3) или p2p-сети. Недостаток такого подхода в том, что современные «ортодоксальные» администраторы часто сосредоточены на фильтрации этих традиционных протоколов (главным образом http), но в большинстве случаев совершенно упускают из вида нестандартные подходы. Например, возможность тунелирования TCP/IP-трафика через стандартные DNS-запросы в целях внешнего управления ботами или троянами сидящими внутри корпоративных сетей.

Именно поэтому это направление получило всплеск такой популярности в последнее время. Для этого существуют удобные шелл-коды, которые по этому же принципу пробрасывают внутрь подобной «защищенной» локальной сети свою консоль управления, чаще всего используя для этого DNS-запросы типа TXT. В этой связи стоит также напомнить о dnscat (эта известная утилита часто упоминается как самостоятельный инструмент, но это лишь часть пакета DNS-утилит nbtools ), созданная специально для этих целей, а также о не менеe известном в узких кругах протоколе NSTX (IP over DNS — NameServer Transfer Protocol). В случае с NSTX решение получается достаточно надежное, максимальный размеры пакетов которые здесь можно передать —512 байт по UDP, которые затем «глубоко в тылу» собираются в полноценные IP-пакеты. Более новый, но аналогичный по идее инструмент — Heyoka, — кроме тунелинга TCP/IP трафика также выполняет спуфинг адресов-источников запросов для самомаскировки. OpenSource-природа этих решений приводит к тому, что принципиальные кодовые части упомянутых программ для тунелирования сегодня обнаруживаются в «личинках» самых разных ботнетов. В частности популярный для Windows пакет Iodine, который в российских условиях часто используется для незаконного «добывания интернета» абонентом, ранее отключенным провайдером за неуплату (DNS, как правило, при этом остаётся рабочим), применяется в коде одной из разновидностей ботнета Gheg. Другая подобная система OzymanDNS — популярна у «специалистов» для надежного проброса своего SSH через служебный DNS-трафик перед самым носом даже у самых строгих сисадминов. Более подробно про DNS-тунелинг у меня можно почитать вот здесь.

В такой схеме единственный минус (который именно для случая ботов не так существенен): DNS-клиент (зомби) может связываться с «папой» только сам и в одностороннем порядке. Статистика собранная при наблюдении подобных «пчелиных улеев» показывает, что «пробив» у подобной схемы чрезвычайно высок, — чаще всего зомби с обратной связью на основе DNS-тунелинга надежно управляются даже из самых глубоких недр тщательно «зафильтрованной» корпоративной сети.

Окончание этой статьи (её вторую часть) — читайте здесь, там мы рассмотрим уже практическую часть борьбы с такого рода интернет-угрозами.

Игорь Савчук © Системный Администратор, 2012