Альянс богов – 64-битный Зевс и Tor в помощь

Чем больше людей переходит на 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. Одно такое правило выглядит следующим образом:

Оно означает, что когда жертва заходит на страницу онлайн-банкинга, и 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 пополняет не такие уж и плотные ряды вредоносных программ, которые имеют аналогичный функционал.

Постинги на схожие темы 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *