Сегодня у нас первая часть большой статьи про устройство ныне печально известной 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-атак, проведенных в истории Интернета.
Каждый новый год, атаки этой разновидности берут все новые, ранее казавшиеся фантастическими высоты по мощности генерируемой ими «волны» трафика.
A-запись
атакуемого домена. В конце концов, тогда под раздачу попала даже сама организация-создатель интернета — DARPA...Что же это за дьявольский механизм, который поднимает в виртуальном пространстве цунами такой мощности и разрушительности?
Чтобы следовать дальше, давайте предварительно в справочных целях рассмотрим общий алгоритм работы DNS (смотрите план-схему ниже).
Конечно, это лишь примерная схема работы DNS (в данном случае её стандартный рекурсивный вариант), в реальной жизни всё может работать с некоторыми отличиями в зависимости от особенностей настройки каждого конкретного сервера. Если вам что-то не ясно, более подробно о механике DNS можно почитать вот здесь или тута.
Внимательно изучив эту стандартную последовательность, мы готовы перейти к рассмотрению уязвимостей и некоторых слабых мест этой схемы на примере сегодняшней DDoS-атаки.
Интересной особенностью именно DAD является то, что здесь, в общем случае, даже не нужно наличие ботнета. Для успешной атаки достаточно самому «сидеть» на относительно быстром канале, после чего использовать эффект «усиления атаки» через описанную ниже DNS-схему.
Ситуация драматически меняется, если совместную игру начинают «организованные преступные группировки» из десятков тысяч (или как в описанном выше случае — миллионов) зомбированных компьютеров со всего мира.
Давайте рассмотрим схему того, как это работает (см. графический алгоритм чуть выше):
Чтобы в многообразии деталей этой многоступенчатой схемы не потерять суть атаки, предлагаю отдельно выделить три ключевых момента, которые делают принципиально возможной реализацию данного сверхэффективного варианта DDoS:
Ботнет — это большая распределенная система, где на первый план всё чаще выходит надежный механизм обратной связи, который позволил бы держать постоянную связь с управляющей головой ботнета (говоря на сленге ботостроителей — с «папой»). Времена использования для отправки управляющих команд классического 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-тунелинга надежно управляются даже из самых глубоких недр тщательно «зафильтрованной» корпоративной сети.
Окончание этой статьи (её вторую часть) — читайте здесь, там мы рассмотрим уже практическую часть борьбы с такого рода интернет-угрозами.
3 комментария
корневых DNS-серверы // опечатка?
За статью - отдельное спасибо.
Оставлю только ссылку, все описание есть выше: http://c-s.net.ua/forum/topic50942s640.html?gopid=489793e;ntry489793;
При удачной настройке iptables nginx попросту блокирует атакующие адреса и они не нагружают системные ресурсы сервера, ну а для решения серьезных проблем нужная хорошая аппаратная защита. Могу порекомендовать ребят из Simplyway.net, отлично справляются как с ддос атаками так и толково шарят в администрировании.