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

Автор: | 03/01/2013
Click to rate this post!
[Total: 0 Average: 0]

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

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

 

 

Когда-то давным-давно, в те далекие времена, когда все в Интернете доверяли друг другу, когда было нормальным отвечать на любой сторонний запрос по сети — «нет проблем, пожалуйста, можешь пользоваться моим сервисом, если тебе это нужно», — была задумана и спроектирована замечательная интернет-служба — 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 (в данном случае её стандартный рекурсивный вариант), в реальной жизни всё может работать с некоторыми отличиями в зависимости от особенностей настройки каждого конкретного сервера.

 

 

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

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

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

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

 

 

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

  • 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: спецсвязь для ботнета

Ботнет — это большая распределенная система, где на первый план всё чаще выходит надежный механизм обратной связи, который позволил бы держать постоянную связь с управляющей головой ботнета (говоря на сленге ботостроителей — с «папой»). Времена использования для отправки управляющих команд классического 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

Loading