Чем больше людей переходит на 64-битные операционные системы, тем больше 64-битных приложений создаётся разработчиками и больше 64-битных вредоносных файлов появляется «в дикой природе». Мы наблюдаем этот процесс вот уже несколько лет. Действительно, наиболее удобным инструментом для проникновения в 64-битное приложение, например, банковскую программу-клиент, будет 64-битный вредоносный агент. А какая самая известная вредоносная банковская программа? Точно, это ZeuS – «законодатель мод» в мире вредоносного банковского ПО, веб-инжекты которого стали неотъемлемым атрибутом практически любого современного банковского троянца. И рано или поздно 64-битная сборка ZeuS должны была появиться. Но, если честно, мы не ожидали, что это случится так скоро.
Киберпреступники не особо нуждаются в 64-битном ZeuS. Этот троянец используется преимущественно для того, чтобы перехватывать и изменять информацию в браузерах, но в наши дни люди пользуются 32-битными браузерами даже на 64-битных системах.
И вот мы обнаружили образец 32-битного ZeuS, который хранит в себе 64-битную версию троянца. Как оказалось, именно эта 64-битная версия уже «засветилась» в июне 2013-го года. Мало того, указанная в образце дата компиляции — 29-е апреля 2013-го! То есть данный экземпляр уже, как минимум, полгода находится в «дикой природе». К тому же этот образец ZeuS работает через анонимную сеть Tor.
Мы детектируем 32-битные образцы ZeuS, о которых пойдет речь в этом блогпосте, как
Trojan.Win32.Scarsi.uhm — 52d3b26a03495d02414e621ee4d0c04e
HEUR:Trojan.Win32.Generic — b33d3509ce930bcc796a9e2904f426d7
64-битный образец ZeuS, извлеченный из вышеупомянутых 32-битных образцов, детектируется как
Trojan-Spy.Win64.Zbot.a — cc793e5b0df621b8d572cf4e7f26e053
Веб-инжект
Изначальный 32-битный сампл внедряет вредоносный код в целевые процессы, и если такой процесс принадлежит 64-битному приложению, то ZeuS внедряет свою 64-битную версию. Мы проверили, как 64-битная версия троянца работает внутри 64-битного Internet Explorer. Вредоносная программа показала свой обычный функционал – по крайней мере, веб-инжекты сработали, как и в стандартной 32-битной программе.
Адрес странички сервиса онлайн-банкинга одного из банков попал в правила веб-инжектов обнаруженного нами ZeuS. Одно такое правило выглядит следующим образом:
1 2 3 4 5 6 |
data_before <input id="e_finance_login" type="submit" data_end data_inject onclick="return gotoo();" data_end |
Оно означает, что когда жертва заходит на страницу онлайн-банкинга, и HTML-код этой страницы содержит строку, которая определена тэгом «data_before», ZeuS должен вставить дополнительный текст (определен следующим тэгом «data_inject») сразу же после целевой строки. Когда мы на зараженном ZeuS компьютере посетили эту страницу в 64-битном Internet Explorer, то в ее HTML-коде мы увидели дополнение, внедренное вредоносной программой.
Код, внедренный на странице онлайн-банкинга, в 64-битном IE
Вредоносная функция gotoo() определена в другом правиле веб-инжектов и добавляется в HTML-код страницы вместе с остальным вредоносным кодом. В этой функции с веб-страницы собирается информация, интересная злоумышленнику (логин, пароль, значения cookies и другие данные), и затем отправляется на сервер, контролируемый оператором ZeuS.
Ну что ж, мы убедились в том, что 64-битная версия ZeuS работает. Но неужели на 64-битные браузеры перешло столько пользователей, что появилась необходимость в 64-битной версии троянца? Нет, это не так. Согласно нашей статистике, например, с помощью 64-битного IE на сайты в интернете заходит менее 0,01% пользователей. С другой стороны, создание 64-битного ZeuS не кажется каким-то сложным делом: исходники давно доступны, нужно лишь внести некоторые изменения, чтобы код нормально работал с 64-битными процессами, и скомпилировать код в 64-битное приложение.
Возможно, что на самом деле получить работающую версию 64-битного ZeuS злоумышленникам было не так уж и просто. Во всяком случае мы обнаружили ошибку в исследуемом образце троянца: когда ZeuS внедряет свой код в 64-битный процесс программы EMET Notifier, это приводит к краху последнего. Случается это вследствие неправильного вычисления адресов некоторых функций API – отрабатывая в контексте процесса EMET Notifier, ZeuS пытается вызвать функцию WSAStartup, но переменная, которая должна была бы содержать адрес этой функции, указывает не на нее, а на невыделенную память. В итоге это приводит к исключению нарушений прав доступа («Access violation»), и приложение EMET Notifier закрывается.
Крах EMETNotifier вследствие ошибки в коде 64-битного ZeuS
Если создать более-менее стабильную 64-битную версию ZeuS все же было сколько-нибудь трудоемко, то вопрос о целесообразности ее создания становится особенно актуальным. Принимая во внимание, что подавляющее большинство пользователей все еще пользуются 32-битными браузерами, вполне возможно, что создание 64-битной версии ZeuS — это просто-напросто маркетинговый ход. Новая функция по большому счету бесполезна, зато как звучит – поддержка 64-битных браузеров! Это может быть довольно действенным для продвижения вредоносного продукта и привлечения покупателей – операторов ботнетов.
Что интересно, файл конфигурации этого ZeuS содержит длинный список программ, на которые вредоносная программа должна отреагировать, если обнаружит их работающими в зараженной системе. Все программы из списка так или иначе работают с личными данными пользователя, которые могут быть очень интересны киберпреступникам – данные авторизации, сертификаты и т.п. Не забывайте, что ZeuS может перехватывать нажатия клавиш и данные перед шифрованием/после шифрования, которые передаются по сети с помощью некоторых типичных системных функций API. Соответственно, работая внутри этих программ, ZeuS может перехватить и отправить своему хозяину массу ценной информации. Полный список программ приведен ниже:
bitcoin-qt.exe tiny.exe ibank2.exe putty.exe winscp.exe filezilla.exe openvpn-gui.exe openvpn.exe mstsc.exe java.exe javaw.exe Zvit1DF.exe iFOBSClient.exe KLBS.exe vegaClient.exe Pionner.exe cb193w.exe BK_KW32.exe KlientBnk.exe ibconsole.exe CliBank.exe CliBankOnlineUa.exe CliBankOnlineRu.exe CliBankOnlineEn.exe SftMailW.exe SRCLBClient.exe EximClient.exe |
client.exe CbShell.exe CB.exe ARMSH95.exe arm.exe arm_mt.exe asbank_lite.exe bank.exe bank32.exe bbclient.exe bbms.exe bk.exe bnk.exe budget.exe cbank.exe cbmain.exe clb.exe client6.exe clientbk.exe clntstr.exe clntw32.exe cncclient.exe contactng.exe core.exe cshell.exe cyberterm.exe dealer.exe |
dsstart.exe dtpaydesk.exe edealer.exe eelclnt.exe elbank.exe etprops.exe etsrv.exe fcclient.exe ip-client.exe iwallet.exe jscashmain.exe kb_cli.exe lfcpaymentais.exe loadmain.exe lpbos.exe mmbank.exe mstsc.exe mwclient32.exe payments.exe paymmaster.exe pinpayr.exe pkimonitor.exe pmodule.exe pn.exe postmove.exe prclient.exe productprototype.exe |
qiwicashier.exe qiwiguard.exe quickpay.exe rclaunch.exe rclient.exe retail.exe retail32.exe rtadmin.exe rtcert.exe saadm.exe saclient.exe sxdoc.exe termw.exe translink.exe twawebclient.exe uarm.exe ubs_net.exe unistream.exe upofcards.exe uralprom.exe w32mkde.exe wclnt.exe webmoney.exe wfinist.exe winpost.exe wupostagent.exe xplat_client.exe |
Установка
Кроме 64-битной версии и общения с центром управления через сеть Tor, обнаруженный нами образец ZeuS по своей сути мало чем отличается от подобных ему вредоносных программ этого семейства. Он также устанавливается в папки со сгенерированными случайным образом именами в каталоге %APPDATA% под случайно-сгенерированными именами файлов:
Установочные папки ZeuS
Установленный троянец
Локальное хранилище ZeuS
Постоянное присутствие в системе достигается обычным для ZeuS способом – прописыванием себя в ключе реестра Run, связанным с автозапуском программ:
ZeuS регистрирует себя, чтобы запускаться при старте системы
Версия вредоносной программы определена ее автором как 3.0.0.0. Но фактически это ничего не значит. Обнаруженный нами образец — это определенно не третье поколение ZeuS, как, возможно, хотел это представить вирусописатель. Согласно процессу загрузки файла конфигурации рассматриваемый троянец скорее ближе к оригинальному ZeuS версии 2.0.8.9, исходники которого утекли и попали в общий доступ, чем, например, к версии «Цитадель». В «Цитадели» избавились от простого доступа к файлу конфигурации, и центр управления этой ветки ZeuS отдает такой файл только при обращении по соответствующему HTTP POST запросу. В случае же рассматриваемого 32/64-битного ZeuS все еще можно скачать файл конфигурации, просто обратившись на сервер по соответствующему URL. Соответственно, любой, кто знает ссылку на файл конфигурации, может его скачать с помощью браузера, программ wget, curl и т.п.
Тоr
Кроме 64-битного компонента, эта версия ZeuS также несет в своем теле программуtor.exe версии 0.2.3.25. Эта программа запускается не прямым способом: ZeuS запускает системный процесс svchost.exe в приостановленном состоянии, внедряет tor.exe в память процесса, настраивает внедренный код так, чтобы он работал корректно, и восстанавливает выполнение svchost. В результате, вместо системного svchost.exe, процесс на самом деле начинает исполнять tor.exe.
Программа tor.exe под прикрытием лже-процесса svchost.exe создает HTTP-прокси сервер, который слушает входящие соединения на TCP порту 9050.
Тор-прокси, работающий как процесс svchost.exe
Таким образом, если вы, например, настроите браузер на зараженной машине работать через прокси 127.0.0.1:9050, то весь трафик браузера пойдет через сеть Tor. Центр управления этой версии ZeuS расположен на onion домене, доступном только через сеть Tor: egzh3ktnywjwabxb.onion. Так что, когда вредоносная программа обращается к своему центру управления, она соединяется с ним через упомянутый выше прокси-сервер и сеть Tor.
Более того, ZeuS создает на зараженной машине скрытый сервис Tor, запуская tor.exe со следующими параметрами:
-HiddenServiceDir «%APPDATA%torhidden_service»
-HiddenServicePort «1080 127.0.0.1:<случайный порт 1>»
-HiddenServicePort «5900 127.0.0.1:<случайный порт 2>«
Эти параметры задумывались для настройки запуска скрытого сервиса (onion веб-сервер). HiddenServiceDir определяет, где локально расположена конфигурация поднимаемого скрытого сервиса, а HiddenServicePort определяет, как перенаправлять пользователей, подключающихся к вашему onion-домену, на ваш веб-север. Пользователи, скорее всего, будут соединяться с onion-доменом на порт 80, который назначен для протокола HTTP, но ваш веб-сервер, связанный с этим доменом, может принимать соединения и на другом порту.
Допустим, веб-сервер работает на той же машине, где развернут скрытый сервис, и он ждет входящих соединений на порт 1080. Тогда скрытый сервис должен быть запущен с помощьюtor.exe с таким параметром:
-HiddenServicePort «80 127.0.0.1:1080»
Это означает, что когда пользователь заходит обычным способом в браузере на <имя_вашего_домена>.onion, он достигает вашей машины, где tor.exe примет соединение на порт80 и перенаправит трафик на локальную машину на порт 1080, на котором как раз слушает веб-сервер. Таким образом, пользователь соединится с вашим веб-сервером.
Но в случае с ZeuS, скорее всего, никакого веб-сервера на зараженной машине не существует. Так для чего же ZeuS разворачивает скрытый сервис, да к тому же с перенаправлением портов? Ответ кроется в самом ZeuS. Для каждой зараженной системы он создает каталог конфигурации скрытого сервиса Тоr, генерируя уникальный для каждой жертвы приватный ключ, на основе которого получается уникальное доменное имя. В свою очередь, программа tor.exe запускает скрытый сервис с этим уникальным именем onion-домена.
Каталог конфигурации скрытого сервиса, созданный ZeuS
Каталог конфигурации скрытого сервиса, созданный ZeuS
Пример сгенерированного имени onion домена для зараженного хоста
Работая в зараженной системе, ZeuS слушает порты, сгенерированные случайным образом и запомненные при первом запуске вредоносной программы. Оператор ботнета знает имена onion-доменов, ассоциирующиеся с каждой зараженной машиной, так как вредоносная программа отправляет такие имена в командный центр. Таким образом, когда зараженная машина в Cети, оператор может соединиться с ней по уникальному onion-домену через сеть Тоr. Основной целью такого метода является удаленное управление зараженными системами. Например, ZeuS слушает один определенный при запуске tor.exe порт в функции, отвечающей за работу Virtual Network Computing (VNC). Значит, через этот порт троянец предоставляет оператору возможность удаленного управления Рабочим столом жертвы.
ZeuS, работающий через Tor, – не новость. Еще в 2012-м году в ходу были образцы ZeuS с признаками коммуникации через анонимную сеть, когда в результате заражения вредоносной программой в системе поднимался Tor-прокси и разворачивался скрытый сервис Tor. В иИнтернете даже присутствуют пошаговые инструкции, как использовать программу tor.exe, чтобы пускать трафик вредоносных программ семейств ZeuS и SpyEye через сеть Tor, плюс как настроить центры управления троянцами, чтобы они работали на onion-домене. Но эти ранние образцы в большинстве случаев имели имена центров управления localhost или 127.0.0.1, указанные в теле программ. Т.е. эти образцы ZeuS или SpyEye не были жестко завязаны на коммуникацию через Tor. Тогда как версия ZeuS, описываемая в этом блогпосте, имеет адрес командного центра — egzh3ktnywjwabxb.onion, определенный прямо в блоке настроек бота. И программа tor.exe содержится в теле вредоносной программы и запускается самим троянцем. Это означает, что общение через Tor и 64-битная версия – неотъемлемый функционал этого образца ZeuS, заложенный на стадии разработки.
Заключение
Вне зависимости от того, какими помыслами руководствовался автор рассматриваемой версии ZeuS – будь то рекламная уловка или задел на будущее – мы можем официально заявить, что полноценный 64-битный ZeuS существует. И это — новая веха в развитие этого семейства. Более того, эта разновидность ZeuS продемонстрировала еще одно существенное улучшение функциональности – она самостоятельно может общаться через сеть Тоr с центрами управления, располагающимися на onion-доменах. Таким образом, ZeuS пополняет не такие уж и плотные ряды вредоносных программ, которые имеют аналогичный функционал.
Альянс богов – 64-битный Зевс и Tor в помощь