Выживаемость ботнетов и DNS

Ботнеты активно используют DNS. В том числе для такой жизненно важной своей функции, как обеспечение связи с центрами управления. Вот в статье по ссылке разобран механизм генерации доменных имён червями ботнета Srizbi. (Текст по ссылке техничный, будет интересен только специалистам.)

Речь о том, что ботнет Srizbi, насчитывающий чуть ли не сотни тысяч машин в своём составе, сперва отключили от центров управления, так как черви ходили за командами на серверы с конкретными IP-адресами (по крайней мере, так пишут те, кто изучал этот ботнет). После того как серверы отключили (поскандалив с провайдерами), внутри ботнета активировался второй механизм установления связи с “центром” – черви принялись генерировать “псевдослучайные” имена доменов по заданному алгоритму и стали пытаться обращаться к сайтам под этими доменами. По логике, такое поведение – это способ восстановить контакт с хозяином: под доменами из последовательности могут быть размещены новые инструкции для ботнета. (Не совсем ясно, впрочем, почему механизм “доменной связи” не был обнаружен исследователями ботнета изначально.)

Вообще, тут интересно отметить несколько моментов, которые, несомненно, определят развитие ботнетов уже в ближайшем, 2009, году.

Скажем, код червя, формирующего ботнет, обязательно доступен аналитикам для изучения, так что создателям ботнетов (квалифицированным, по крайней мере) нужно это понимать и учитывать фактор открытости кода в своих алгоритмах. Так, в описанном только что случае Srizbi, последовательность “связных доменов” была определена при помощи анализа исходного кода червя, после чего оставалось лишь зарегистрировать нужные домены раньше хозяев ботнета и перехватить часть зомби-машин – те из них, которые в данный период времени обратились за новыми инструкциями: понятно, что ботнет обновляется постепенно. Естественно этот эффект учтут разработчики следующего поколения червя.

Использование зашитого в код списка IP-адресов управляющих узлов – это, видимо, уже очень отсталая практика. Отсталость следует из только что описанной “открытости кода”. А современное решение – это как раз использование DNS (странным образом реализованное и в Srizbi). Дело в том, что DNS – это такое универсальное средство для придания хорошей анонимности жизненным сигналам центральной нервной системы ботнета. Заражённые машины находят IP-адреса центров управления не в собственном локальном списке хостов, доступном аналитикам, а в глобальной DNS, анализ которой куда как сложнее.

Как это происходит? Регистрируется некоторый набор доменов второго уровня, возможно, с приватной или, скорее, с вымышленой персональной информацией об администраторе (доступно в самых разных зонах, в том числе в .com, и даже в .ru). Далее в этих доменах создаются зоны на несколько уровней ниже (третий, четвёртый, пятый и т.д.). Имена, понятно, регистрируются в соответствии с алгоритмами, заложенными в ботнет. Получается набор абракадабр, что-то типа f148.hsjo71gh.w2-8xnb.qf297dhna.com. При этом серверы имён, связанные тут с доменами уровнем ниже второго, постоянно изменяют информацию об адресах. То есть запросы по именам доменов ведут на самые разные машины в разные моменты времени (понятно, с учётом особенностей DNS).

А эти машины – вовсе и не центры управления, а такие же зомби, только из другого ботнета, попроще. Машины работают proxy-серверами, перенаправляя запросы на некий, возможно вполне себе официальный, хостинг. На этом хостинге уже работает настоящий центр управления ботнетом. Впрочем, наилучший вариант – какой-либо заражённый сайт, с которого незаметно забирают команды черви ботнета.

Особенность схемы в том, что сложно найти концы: сделав запрос в DNS, можно узнать адрес proxy, за которой скрывается “нервный центр”. Но proxy оказывается лишь чьим-то заражённым компьютером – пользы от такой информации не так уж и много. При этом задействованные компьютеры, как и имена доменов, постоянно меняются, а серверами имён, обслуживающими домены, также могут служить компьютеры-зомби. Таким образом, собранные исследователем сведения о структуре управления ботнетом быстро устаревают. Владелец же хостинга, где расположен центр, оказываясь, так сказать, с другой стороны стены из proxy, лишь видит некий трафик с изменяющегося набора IP-адресов на свои серверы, то есть вообще ничего подозрительного.

Концы хорошо спрятаны.

Можно искать тех, кто настраивает DNS для зловредных доменов, но это весьма непросто уже и для доменов второго уровня: нужно связываться с регистратором, запрашивать данные (а регистратор их так просто не может выдать), проверять полученные данные, убеждаться, что они липовые, и так далее. А для доменов ниже третьего уровня – ситуация ещё сложнее, регистратор их напрямую вообще не контролирует: кто там правит файлы зон – неизвестно.

В принципе, все эти технологии уже освоены. Проблема Srizbi, видимо, в том, что механизмы выживаемости реализованы в нём неполно, по каким-то там внутренним инженерным причинам создателей. Возможно, использовали недостаточно современный комплект библиотек и средств разработки. А вот уже в следующем году, так как в DNS ситуация равным счётом не поменялась (несмотря на все усилия), появятся уже куда более отлаженные библиотеки и модули и, как результат, более живучие ботнеты. А живучий ботнет – это большой ботнет, потому что численность машин-зомби находится в прямой зависимости от времени активной жизни (в контакте с “нервным центром”) одного червя.

Вот.

()

Похожие записки:



Далее - мнения и дискуссии

(Сообщения ниже добавляются читателями сайта, через форму, расположенную в конце страницы.)

Комментарии читателей блога: 3

  • 1. 7th December 2008, 18:48 // Читатель Fedorov Roman написал:

    А почему в качестве центра управления вместо хакнутого официального хостинга не юзать домашний сервер через TOR?

  • 2. 7th December 2008, 20:32 // Александр Венедюхин ответил:

    Домашний сервер – это рискованно для владельцев ботнета. Кроме того, TOR не так уж и анонимен, в этом случае. И как организовать точки входа?

  • 3. 2nd February 2009, 03:10 // Читатель Hernes написал:

    интересный способ для маскировки управляющего сервера
    однако самое узкое звено в управлении ботнетом заключается в том, что алгоритм генерации доменного имени находится в самом боте.