Hesperbot: новый банковский троянец

Не Zеus-клон, без регистрации, но с SMS!

Сегодня, когда исходные коды таких троянцев, как Zeus и Carberp, публично доступны вирусописателям, исследователей вредоносного ПО крайне сложно удивить чем-то новым. Хотя вирусописатели на андеграундных площадках преподносят свои детища как нечто новое, практически все новые банковские троянцы похожи друг на друга как две капли воды. Hesperbot выделяется из бесконечного числа Zeus-клонов. Все началось этим летом...

В августе 2013 года новый троянец предпринял попытку атаковать пользователей чешских интернет-банков. Злоумышленниками был выбран следующий метод распространения: пользователь получал письмо, якобы от чешской почты. Письмо содержало ссылку, ведущую на поддельный сайт. Причем адрес поддельного сайта (www. ceskaposta.net) был очень похож на адрес настоящего (www.ceskaposta.cz). По ссылке пользователь скачивал архив с вредоносным файлом — дроппером. Имя файла имело двойное расширение и иконку Adobe Reader, к примеру, одним из названий было zasilka.pdf.exe.

АНАЛИЗ ТРОЯНЦА

Файл дроппера содержит в себе два компонента: соrе_х86 и соrе_х64 для 32-битной и 64-битной версии Windows. Основная цель дроппера — внедрить соrе-компонент в процесс explorer.exe. Для этого он использует разные техники, в зависимости от обнаруженного установленного security-ПО. Одна из таких техник — знаменитый PowerLoader-трюк внедрения в Windows Explorer посредством использования WinAPI-функции SetWindowLong. Данную технику подробно описал мой коллега Александр Матросов в одном из прошлых номеров.

Основная функция внедренного соrе-компонента — это связь с сервером. В теле троянца зашит адрес вредоносного сервера, если в течение некоторого времени к серверу так и не удается подключиться, то троянец начинает генерировать адреса для связи с помощью специального алгоритма. Сделано это для того, чтобы злоумышленники могли беспрепятственно продолжить управление своим ботнетом, если домен основного сервера будет заблокирован.

Для связи с сервером Hesperbot использует HTTPS-протокол, данные передаются с помощью POST-запроса в бинарном виде. Интересно, что помимо стандартной информации о зараженном компьютере и версии ОС троянец передает на сервер список активных смарт-карт, установленных на компьютере. Это говорит о том, что Hesperbot направлен в том числе против тех, кто заинтересован в дополнительной защите при использовании интернет-банкинга.

В ответе сервера может содержаться следующая информация: конфигурационный файл; дополнительные модули; новая версия троянца.

Помимо этого, сервер может передавать ссылку или тело вредоносного файла с целью запуска на зараженном компьютере. К примеру, один из таких файлов — Win32/Spy.Agent. ОЕС, который предназначен для кражи контактов из почтовых клиентов: Thunderbird и Outlook. Таким образом Hesperbot собирает email-адреса для дальнейшего распространения.

После загрузки троянец сохраняет модули и конфигурационный файл в специальные файлы-контейнеры, предварительно шифруя их с помощью алгоритма шифрования Twofish. В качестве ключа используется хеш от различных значений типа имени компьютера, версии ОС, даты установки ОС и так далее. Тем самым достигается эффект «привязки» файла-контейнера к определенному компьютеру. Ресерчер, который будет исследовать файлы-контейнеры с конфигурационным файлом и плагинами, сможет расшифровать их, только если он обладает подробной информацией о зараженной машине.

ДОПОЛНИТЕЛЬНЫЕ МОДУЛИ

Модули, как и соrе-компонент, скомпилированы для 32- и 64-битных ОС. На данный момент известно о семи дополнительных модулях: keylog — кейлоггер; hvnc — создает скрытый VNC-сервер; sch — вспомогательный модуль для установки и удаления хуков; socks —создает SOCKS5 прокси; nethk — перехватывает трафик; httphk — парсит НТТР-протокол; httpi — модуль, ответственный за формграббинг и веб-инжекты.

Все модули, в том числе соrе-компонент, имеют свой vtable-интерфейс с функциями, которые доступны для использования из других модулей.

Наиболее интересна для нас связка из модулей nethk — httphk — httpi, которая отвечает за перехват трафика, кражу данных форм и веб-инжекты.

После появления исходных кодов Zeus в открытом доступе практически каждая банковская малварь использует так называемую технику man-in-the-browser (MITB). Суть этой техники заключается в следующем: троянец перехватывает высокоуровневые функции для отправки и приема данных, например InternetWriteFile/ InternetReadFile для Internet Explorer, таким образом у троянца появляется возможность читать и изменять данные, передаваемые между браузером и сервером. Троянцу даже не нужно возиться с расшифровкой HTTPS-протокола — дело в том, что данные перехватываются в момент ДО и ПОСЛЕ их шифрования. Однако при сплошных плюсах этого метода есть у него и ограничение: в каждом браузере эти функции реализованы по-разному. Так что злоумышленники вынуждены изучать внутреннюю архитектуру каждого браузера, причем иногда, как в случае с Google Chrome, для того чтобы добиться необходимого результата, им приходится перехватывать не экспортируемые функции. А если учесть нынешнюю моду на частые обновления браузеров, то таким вирусописателям не позавидуешь.

Hesperbot использует другой подход, так называемый man-in-the-middle — «человек посередине». Троянец создает прокси-сервер с адресом 127.0.1.1 и перенаправляет все подключения через него. Чтобы достичь этого, он перехватывает низкоуровневые функции работы с сетью в библиотеке mswsock.dll. При каждой инициализации коннекта браузер начинает подключаться к прокси вместо реального сервера, в то же время внутри прокси Hesperbot создает тред, который отвечает за связь с настоящим пунктом назначения. Таким образом, между браузером и сервером появляется новая сущность — прокси под управлением троянца. Весь трафик между браузером и прокси шифруется сертификатом троянца, а трафик между прокси и сервером — с помощью настоящего сертификата. Чтобы браузер не сообщал пользователю о том, что используется недоверенный сертификат, троянец перехватывает функции проверки сертификата.

Теперь, когда у Hesperbot благодаря модулю nethk есть доступ к «чистому», нешифрованному трафику, в дело вступает следующий модуль — httphk. Он используется для парсинга HTTP-протокола и вызывается всякий раз, когда в модуле nethk скапливается достаточно данных для дальнейшей отправки браузеру или серверу. В зависимости от текущего состояния НТТР-протокола httphk вызывает различные callback-функции в модуле httpi. Перед отправкой прокси-сервером данных на настоящий сервер вызывается httpi_request_callback, после приема данных с настоящего сервера, но перед передачей полученных данных браузеру — httpi_ response_callback.

Httpi_request_callback используется для форм-граббинга, кражи данных веб-формы. Всякий раз, когда модуль httpi получает POST-запрос, в котором content-type равен application/x-www-form-urlencoded или text/plain, Hesperbot посылает этот запрос на сервер злоумышленников. Дополнительно перед отправкой на свой сервер троянец сверяет сервер получателя с блэклистом из конфигурации, для того чтобы не заддосить свой сервер POST-запросами переписки в фейсбуке или твиттере :).

В зависимости от содержимого конфигурационного файла Hesperbot может начать видеосъемку экрана пользователя, причем на видео троянец пытается запечатлеть положение курсора. Скорее всего, таким образом троянец крадет информацию о текущем балансе пользователя и пытается украсть пароль, введенный с экранной клавиатуры.

Httpi_response_callback используется для веб-инжектов, внедрения своего HTML-кода в контент страницы. При вызове этой функции троянец сверяет URL текущего сайта со списком в конфигурационном файле, и, если URL совпадает, троянец изменяет контент по своему усмотрению.

Обычно для веб-инжектов используется следующий сценарий. Пользователь заходит на сайт своего интернет-банкинга. В этот момент Hesperbot уже внедрил свои JavaScript-фэйлы, которые после ввода пользователем логина и пароля сообщают ему, что банк улучшил свою защиту, внедрив мобильное приложение. Пользователю необходимо выбрать модель и производителя своего телефона и ввести его номер. После этого на телефон приходит короткая ссылка, перейдя по которой пользователь может скачать мобильный компонент троянца.

МОБИЛЬНЫЙ КОМПОНЕНТ HESPERBOT

На данный момент были изучены мобильные компоненты Hesperbot для следующих ОС: Android, Symbian, BlackBerry. Все эти версии обладают общей функциональностью. При запуске приложение генерирует код, который нужно ввести на странице активации. Данная страница внедрена с помощью веб-инжектов. После ввода кода в телефон пользователь должен ввести ответ, выданный мобильным приложением, обратно на сайт. Таким образом происходит привязка аккаунта в интернет-банкинге к конкретному номеру телефона владельца этого аккаунта (злоумышленникам заранее неизвестно, будет ли скачано и запущено данное приложение).

После активации мобильное приложение может управляться посредством SMS. Мобильный компонент поддерживает следующие команды:

On — начать работу в режиме пересылки SMS-сообщений;

Off — закончить работу в режиме пересылки SMS-сообщений;

Uninstall — удалить себя с телефона.

После принятия команды On поступающие на телефон SMS, необходимые, например, для подтверждения транзакции, начинают пересылаться на номер злоумышленников. Для обеспечения скрытности мобильный троянец шифрует текст SMS перед отправкой.

ЗАКЛЮЧЕНИЕ

Мораль сей басни такова: плохие дяди плотно нацелились на твои денежки. Многофакторная авторизация им в этом мешает, поэтому они с каждым разом все плотнее подбивают к ней свои клинья. Не попадайся!