В этой статье мы представляем Grandoreiro — латиноамериканский банковский троян, нацеленный на Бразилию, Мексику, Испанию и Перу. Он демонстрирует необычные усилия своих авторов по уклонению от обнаружения и эмуляции, а также прогресс в развитии модульной архитектуры.

Мы наблюдали, что Grandoreiro распространяется исключительно через спам. Авторы обычно используют поддельные обновления Java или Flash, но недавно, что неудивительно, мы заметили, что их спам также использует страх вокруг COVID-19.

Мы назвали это семейство вредоносных программ по его самой заметной характеристике — его бинарные файлы раздуваются до нескольких сотен мегабайт. Разработка идет довольно быстро, и изменения и дополнения функций происходят очень часто. В этом посте мы сосредоточимся на самом примечательном.

Характеристики

Grandoreiro — это еще один банковский троян из Латинской Америки, написанный на Delphi, который мы выявили в ходе нашего исследования. Grandoreiro активен как минимум с 2017 года, нацеливаясь на Бразилию и Перу, а в 2019 году расширился на Мексику и Испанию (см. Рисунок 1 для текущей карты обнаружений). Тот факт, что он атакует своих жертв, отображая поддельные всплывающие окна, которые пытаются убедить жертв раскрыть конфиденциальную информацию, не должен удивлять никого, кто читал предыдущие статьи серии.
.

Рисунок 1. Карта обнаружений ESET для Grandoreiro.

Grandoreiro, как и любой другой латиноамериканский банковский троян, использует функциональность бэкдора, умея:

  • манипулировать окнами
  • обновлять себя
  • перехватывать нажатия клавиш
  • симулировать действия мыши и клавиатуры
  • перенаправлять браузер жертвы на выбранный URL
  • выходить из системы жертвы или перезагружать машину
  • блокировать доступ к выбранным веб-сайтам

Постоянство обеспечивается созданием файла .LNK в каталоге автозагрузки Windows. Важно отметить, что Grandoreiro использует тот же алгоритм для расшифровки своих внутренних строк, что и Casbaneiro. Мы полагаем, что это связано с обменом информацией между авторами банковских троянов в Латинской Америке.

Grandoreiro собирает следующую информацию о своих жертвах:

  • имя компьютера
  • имя пользователя
  • версия и разрядность операционной системы
  • установлено ли приложение Diebold Warsaw GAS Tecnologia (популярное в Бразилии приложение для защиты доступа к онлайн-банкингу)
  • список установленных продуктов безопасности

В некоторых версиях он также крадет учетные данные, хранящиеся в браузере Google Chrome, и данные из Microsoft Outlook.

Авторы Grandoreiro, похоже, очень быстро разрабатывают банковский троян, поскольку мы наблюдаем как минимум несколько новых версий каждый месяц. Мы также подозреваем, что они одновременно разрабатывают как минимум два варианта.

Авторы, кажется, сосредоточены в основном на двух областях. Первая — сокрытие фактического адреса C&C с использованием алгоритма генерации доменных имен (DGA), описанного в следующем разделе. Вторая — создание модульного банковского трояна. Это интересный подход, поскольку авторы сначала ввели отдельные формы Delphi для каждого целевого банка (что довольно распространено), но в последнее время даже создали отдельные DLL для каждого целевого банка. Мы не видели такого подхода ни в одном другом латиноамериканском банковском трояне, который мы анализировали.

DGA

DGA Grandoreiro использует две строки (префикс и суффикс), жестко закодированные в бинарном файле, и локальную дату в качестве входных данных. Эти значения обрабатываются простым алгоритмом, дающим результат в виде https://sites.google[.]com/view/%DATA%, где %DATA% — сгенерированная строка (мы предоставляем псевдокод на Рисунке 2). Домен и порт C&C используются как заголовок сайта, как вы можете видеть на Рисунке 3. Обратите внимание, что на основе DGA для каждого дня требуется новый сайт. Мы наблюдали, что некоторые варианты также используют пользовательский алфавит base64.

def dga(prefix, suffix): ts = get_current_time() mid_data = "%02d/%02d/%04d" % (ts.day, ts.month, ts.year) mid_data = b64encode(mid_data) mid_data = mid_data.replace("==", "") return "https://sites.google.com/view/" + prefix + mid_data + suffix

Рисунок 2. Псевдокод DGA Grandoreiro

Рисунок 3. Пример сайта Google, созданного авторами Grandoreiro (перевод: «Название вашей страницы»)

Конфигурационные данные

В старых версиях Grandoreiro рядом с банковским трояном распространялся небольшой файл .ini, служивший примитивным конфигурационным файлом, содержащим только идентификатор версии и индекс в таблице в бинарном файле, который определял, какой C&C сервер должен использоваться.

В последнее время механизм конфигурации был изменен и теперь хранится в реестре Windows по пути HKCUSoftware под ключами с именами вроде %USERNAME% и ToolTech-RM. Эти имена, а также имена содержащихся в них значений часто меняются, но содержащаяся информация включает:

  • идентификатор, уникальный для каждой жертвы (сгенерированный через CoCreateGuid API)
  • имя и путь исполняемого файла
  • геолокация жертвы (полученная через http://ipinfo.io/json)
  • строки, необходимые для создания и удаления файла .LNK в автозагрузке
  • заметки, специфичные для устройства жертвы (оператор C&C предоставляет их, если есть, через команду бэкдора)
  • флаги, указывающие, что действие уже выполнено, например:
    • кража учетных данных, сохраненных в Google Chrome
    • кража данных Outlook

Связь с C&C

Grandoreiro реализует связь со своим C&C сервером с использованием SDK RealThinClient. Этот компонент использует протокол, работающий поверх HTTP. После подключения к серверу Grandoreiro выполняет рукопожатие, а затем периодически проверяет наличие команд каждые несколько секунд. Если троян пропускает проверку, сервер разрывает соединение.

Как мы описали в нашей презентации на Botconf в декабре 2019 года, и как недавно сообщалось SonicWall, есть очень интересная особенность в первой «команде», полученной от C&C сервера. Это всегда список всех подключенных в данный момент жертв, включая всю собранную информацию об их машинах, как вы можете видеть на Рисунке 4. Обратите внимание, что не все жертвы идентифицируются строкой одинакового формата. Из-за быстрой разработки Grandoreiro эта строка часто меняется, но скомпрометированные различными вариантами жертвы по-прежнему подключаются к одному и тому же C&C серверу.

Рисунок 4. C&C сервер отвечает на первоначальное подключение Grandoreiro списком подключенных в данный момент жертв.

Распространение

Спам кажется единственным методом распространения Grandoreiro. Спам-письма содержат ссылку, ведущую на веб-сайт, предлагающий поддельные обновления Flash или Java (см. Рисунок 5). Обратите внимание на красную стрелку в левом нижнем углу, адаптированную для веб-браузера Google Chrome, но отображаемую и в других браузерах. Мы также видели, как Grandoreiro использует страх вокруг COVID-19 (см. Рисунок 6), как мы уже объявляли в нашем аккаунте @ESETresearch в Twitter.

Рисунок 5. Веб-сайты с поддельными обновлениями Flash (слева) и Java (справа) (левый флажок означает, что пользователь согласен с условиями; текст справа призывает пользователя установить последнюю версию Java, чтобы избежать проблем с безопасностью и уязвимостями)

Рисунок 6. Поддельный веб-сайт COVID-19. Нажатие на видео приводит к загрузке ZIP-архива (перевод: «Строительство 2 больниц за 7 дней: ускоренное видео показывает строительство больницы в Китае за 7 дней»)

В отличие от большинства латиноамериканских банковских троянов, Grandoreiro использует довольно короткие цепочки распространения. Для разных кампаний он может выбирать разные типы загрузчиков, как мы иллюстрируем на Рисунке 7. Эти загрузчики часто хранятся на известных общедоступных сервисах онлайн-обмена, таких как GitHub, Dropbox, Pastebin, 4shared и 4Sync.

Рисунок 7. Возможные варианты цепочек распространения Grandoreiro (разные цвета показывают разные пути, которые может принять цепочка). Финальный ZIP-архив может быть зашифрован, а в некоторых случаях также защищен паролем.

Финальная полезная нагрузка — это ZIP-архив, который обычно шифруется алгоритмом, показанным на Рисунке 8, и в значительном числе случаев мы видели, что он также защищен паролем.

def decrypt_archive(data_enc, key): data_dec = list() for (i, c) in enumerate(data_enc): d = c ^ (~(key >> (i % 32))) & 0xFF data_dec.append(d) return data_dec

Рисунок 8. Псевдокод алгоритма расшифровки архива, используемого Grandoreiro

Распространение финальной полезной нагрузки в ZIP-архиве очень распространено среди этих банковских троянов, но в случае Grandoreiro оно имеет особое значение, как вы увидите в следующем разделе.

Padding бинарных файлов

Подавляющее большинство образцов Grandoreiro используют очень интересное применение техники padding бинарных файлов. Эта техника заключается в увеличении размера бинарных файлов, и мы видели, как ее использовали даже более изощренные вредоносные программы. Мы также наблюдали, что другие латиноамериканские банковские трояны иногда используют ее, но только в самой простой форме — добавление большого количества мусора в конец бинарного файла.

Grandoreiro выбирает другой подход — простой, но очень эффективный. Секция ресурсов PE-файла дополняется (обычно 3) большими BMP-изображениями, делая каждый бинарный файл размером не менее 300 МБ. Обратите внимание на Рисунке 9, что размер всего EXE составляет 425 МБ, в то время как размер кода — всего 4 МБ, а размер секции .rsrc — 419 МБ (98,5% от общего размера). Изучив содержимое секции .rsrc, мы видим три изображения размером 112 МБ, 112 МБ и 105 МБ соответственно (занимающих 78,5% размера секции). Примеры таких изображений мы приводим на Рисунке 10.

Рисунок 9. Детали бинарного файла Grandoreiro. Слева показано несколько бинарных файлов Grandoreiro. Остальные показывают детали одного такого файла.

Рисунок 10. BMP-изображения, используемые Grandoreiro для padding бинарных файлов. Их художественный «стиль» предполагает, что авторы вредоносных программ создают их вручную.

Из-за структуры этих BMP-файлов сжатие бинарного файла в ZIP-архив дает файл размером всего несколько мегабайт, что значительно упрощает распространение полезной нагрузки. BMP-файлы часто меняются, скорее всего, для предотвращения обнаружения. Изображения, показанные на Рисунке 10, взяты из трех разных сборок Grandoreiro. Видимые сходства позволяют нам полагать, что авторы обновляют изображения вручную.

Давайте рассмотрим возможные последствия этой техники, поскольку, несмотря на ее простоту, она удивительно эффективна. Лимит размера загружаемого файла на VirusTotal был изменен до 550 МБ в 2019 году, но раньше составлял 256 МБ, поэтому жертва не могла сканировать файл с помощью этой платформы. Работа с таким огромным файлом в целом сложнее, что замедляет любой автоматизированный или ручной анализ. В то же время очень трудно избавиться от этих больших изображений, сохраняя при этом действительный PE-файл, а при удалении всей секции .rsrc теряется интересная информация, такая как поддельные всплывающие окна.

Самозащита и анти-эмуляция

Для латиноамериканского банковского трояна Grandoreiro использует на удивление большое количество уловок для уклонения от обнаружения и эмуляции. В этом разделе мы расскажем о самых заметных, которые появились в нескольких недавних версиях, которые мы анализировали.

Diebold Warsaw GAS Tecnologia и Trusteer — это известное программное обеспечение для защиты банковского доступа, популярное в Латинской Америке. Каждый банковский троян, описанный до сих пор в нашей серии, внедрял какую-либо проверку на наличие этих программ. Grandoreiro не исключение, он:

  • перехватывает API LdrLoadDll и LoadLibrary(Ex), чтобы предотвратить загрузку DLL, принадлежащих этим продуктам
  • проверяет, не загружены ли уже какие-либо из этих модулей
  • пытается завершить их работающие процессы (на основе имен процессов)
  • блокирует Diebold Warsaw на уровне брандмауэра
  • пытается нарушить работу Trusteer, изменяя его путь к файлу (см. Рисунок 11)
  • изменяет ACL на основном бинарном файле Trusteer, выполняя эту команду дважды:
    • cacls %PROGRAM_DATA%; TrusteerRapportstoreextsRapportCerberusbaselineRapportGH.dll» /T /E /C /P user:perm
    • с user:perm, установленным на Todos:N, а затем Everyone:N

Рисунок 11. Простой BAT-скрипт, используемый Grandoreiro для изменения пути к файлу Trusteer в надежде сделать его неисполняемым

Кроме того, он также отслеживает хуки на важных функциях. Если такая функция начинается с 0xE9 (ассемблерный опкод для инструкции jmp), троян перезагружает функцию из соответствующей библиотеки. На основе имен окон и процессов он также проверяет наличие таких инструментов, как RegMon, RegShot, Wireshark и Process Explorer. Он пытается избежать отладки, вызывая API IsDebuggerPresent и настраивая хук через SetWindowsHookEx, который возвращает ERROR_ACCESS_DENIED при событии WH_DEBUG.

Grandoreiro также использует технику повышения привилегий, описанную более подробно здесь. Метод заключается в регистрации бинарного файла в качестве обработчика по умолчанию для файлов .MSC, а затем запуске такого файла. Таким образом, бинарный файл будет выполнен с повышенными привилегиями. Эта техника больше не работает на исправленных системах из-за исправления, выпущенного в 2017 году.

Наконец, Grandoreiro обнаруживает две виртуальные среды — VMWare через специальный порт ввода-вывода и Virtual PC через инструкцию vpcext. Оба метода подробно описаны здесь (методы 1 и 2).

Спам-инструмент

В ходе нашего расследования мы обнаружили инструмент, используемый для спам-кампаний Grandoreiro. Это не инструмент, который автоматически регистрирует большое количество учетных записей электронной почты, как в случае с Amavaldo и Casbaneiro; он фактически используется для создания и отправки спам-сообщений. Для этого он использует SDK EASendMail.

Помимо основной цели, инструмент настраивает постоянство с помощью ключа реестра Windows Run и отключает UAC. Наиболее вероятный сценарий — злоумышленники распространяют этот инструмент среди некоторых жертв через Grandoreiro.

Включен небольшой компонент бэкдора, который используется для получения конфигурационных файлов. Эти файлы определяют, как будут выглядеть электронные письма, на что они будут ссылаться или куда будут отправлены. Полный список конфигурационных файлов и их назначение приведены в Таблице 1.

Таблица 1. Список конфигурационных файлов, используемых спам-инструментом Grandoreiro

Имя файла Назначение Описание
ID.txt Нет Похоже, не используется для спам-писем
html.txt Шаблон тела письма Шаблон для тела письма (включая плейсхолдеры — они заменяются значениями из других конфигурационных файлов)
assunto.txt Шаблон темы (assunto = тема) Шаблон для темы (аналогично html.txt для тела письма)
nomes.txt Список поддельных имен Заменяет плейсхолдер [NOME] в шаблонах
link.txt Список вредоносных URL Письмо будет ссылаться на один из них
lista.txt Список получателей Письмо будет отправлено всем им
login.txt Список имен пользователей Информация, необходимая для входа в учетную запись электронной почты, которая будет использоваться для отправки писем
senha.txt Список паролей #rowspan#
smtp.txt Адрес SMTP-сервера #rowspan#

Как видите, инструмент не полностью автоматизирован, а полностью полагается на конфигурационные данные. Это показывает более низкий уровень сложности. Его реализация показывает сходство с банковским трояном Grandoreiro, поэтому мы считаем, что он написан теми же авторами.

Заключение

В этой статье нашей серии мы сосредоточились на Grandoreiro, латиноамериканском банковском трояне, известном своими атаками на Бразилию, Мексику, Испанию и Перу. Мы упомянули аспекты, типичные для этого типа банковских троянов, такие как написание на Delphi, наличие функциональности бэкдора, нацеленность на Латинскую Америку и использование поддельных всплывающих окон для атаки на своих жертв.

Новой особенностью Grandoreiro является его большие усилия по уклонению от обнаружения. Это включает множество техник для обнаружения или даже отключения программ защиты банковских операций. Он также использует очень специфическое применение техники padding бинарных файлов, которую мы раньше не видели, что затрудняет избавление от padding при сохранении действительного файла.

Спам представляется эксклюзивным методом распространения Grandoreiro. Письма содержат ссылку, которая ведет жертв на поддельные веб-сайты, созданные операторами. Хотя они обычно используют простые механизмы, такие как поддельные обновления Flash или Java, мы также видели, как они используют текущий страх перед COVID-19.

Grandoreiro демонстрирует сходство с другими банковскими троянами, ранее описанными в этой серии, в основном с Casbaneiro, с которым он разделяет алгоритм расшифровки строк.

По любым вопросам обращайтесь к нам по адресу threatintel@eset.com. Индикаторы компрометации также можно найти в нашем репозитории GitHub.

Индикаторы компрометации (IoC)

Хеши

Банковский троян Grandoreiro

SHA-1 Описание Название обнаружения ESET
40FBC932BD45FEB3D2409B3A4C7029DDDE881389 Более старая версия Grandoreiro (2017) Win32/Spy.Grandoreiro.A
7905DB9BBE2CB29519A5371B175551C6612255EF Grandoreiro Win32/Spy.Grandoreiro.AE
BD88A809B05168D6EFDBA4DC149653B0E1E1E448 Grandoreiro Win32/Spy.Grandoreiro.AJ

Grandoreiro Win32 загрузчики

SHA-1 Описание Название обнаружения ESET
7C2ED8B4AA65BEFCC229A36CE50539E9D6A70EE3 Grandoreiro загрузчик Win32/TrojanDownloader.Banload.YJR
27A434D2EF4D1D021F283BCB93C6C7E50ACB8EA6 Grandoreiro загрузчик Win32/TrojanDownloader.Banload.YLZ
28D58402393B6BCA73FF0EAC319226233181EDC9 Grandoreiro загрузчик Win32/TrojanDownloader.Banload.YJB
42892DF64F00F4C091E1C02F74C2BB8BAD131FC5 Grandoreiro загрузчик Win32/TrojanDownloader.Banload.YMI

Спам-инструмент Grandoreiro

SHA-1 Описание Название обнаружения ESET
BCED5D138ACEADA1EF11BFD22C2D6359CDA183DB Спам-инструмент Grandoreiro Win32/Spy.Grandoreiro.AD

Реестр Windows

  • HKCUSoftware%USER_NAME%
  • HKCUSoftwareToolTech-RM

User-Agent

  • h55u4u4u5uii5

Имена файлов

  • %INSTALL_DIR% *
    • MDL_YEL_01.dll
    • MDL_BLU_BR_02.dll
    • MDL_SIC_BR_03.dll
    • MDL_SANT_BR_04.dll
    • MDL_ITA_BR_05.dll
    • MDL_BRADA_BR_06.dll
    • MDL_SICCB_BR_07.dll
    • MDL_SAFRA_BR_08.dll
    • MDL_ORIGI_BR_09.dll
    • MDL_NORDES_BR_10.dll
    • MDL_BANEST_BR_11.dll
    • MDL_BANEZE_BR_12.dll
    • MDL_AMAZON_BR_13.dll
    • MDL_UNICRE_BR_14.dll
    • MDL_BRB_BR_15.dll
    • MDL_WUPDATE_BR_001.dll

* %INSTALL_DIR% — это путь, по которому установлен Grandoreiro

Техники MITRE ATT&CK

Тактика ID Название Описание
Первоначальный доступ T1192 Фишинговая ссылка Цепочки распространения Grandoreiro начинаются с ссылки в письме, ведущей на поддельный веб-сайт.
Исполнение T1106 Исполнение через API Grandoreiro выполняется через API WinExec или WScript.Shell.Exec.
Стойкость T1060 Ключи автозапуска / папка «Автозагрузка» Grandoreiro обеспечивает стойкость, создавая файл .LNK в папке автозагрузки.
Повышение привилегий T1088 Обход контроля учетных записей пользователей (UAC) Grandoreiro обходит UAC, регистрируясь как обработчик по умолчанию для файлов .MSC.
Обход защиты T1009 Заполнение бинарного файла Grandoreiro вставляет большие BMP-файлы в свой раздел .rsrc, чтобы сделать бинарные файлы намного больше.
T1089 Отключение инструментов безопасности Grandoreiro пытается отключить программное обеспечение Diebold Warsaw и Trusteer для защиты банковских операций.
T1140 Деобфускация/декодирование файлов или информации Grandoreiro распространяется в ZIP-архиве, который обычно требует расшифровки.
T1222 Изменение разрешений файлов и каталогов Grandoreiro изменяет ACL для Trusteer, чтобы отключить его.
T1036 Маскировка Загрузчики, распространяющие Grandoreiro, маскируются под поддельные файлы установки обновлений.
T1112 Изменение реестра Grandoreiro хранит свою конфигурацию в реестре Windows.
T1064 Скриптинг Grandoreiro реализует некоторые этапы цепочки распространения с помощью VBScript.
T1497 Обход виртуализации/песочницы Grandoreiro обнаруживает VMWare и Virtual PC.
Доступ к учетным данным T1503 Учетные данные из веб-браузеров Grandoreiro крадет учетные данные из браузера Google Chrome.
T1081 Учетные данные в файлах Grandoreiro анализирует файлы Outlook .pst для извлечения адресов электронной почты.
Обнаружение T1010 Обнаружение окон приложений Grandoreiro обнаруживает различные инструменты безопасности по именам окон.
T1083 Обнаружение файлов и каталогов Grandoreiro обнаруживает защитное ПО по путям в файловой системе.
T1057 Обнаружение процессов Grandoreiro обнаруживает инструменты безопасности по именам процессов.
T1063 Обнаружение ПО безопасности Grandoreiro определяет наличие продуктов для защиты банковских операций.
T1082 Сбор информации о системе Grandoreiro собирает информацию о машине жертвы, такую как %USERNAME%, %COMPUTERNAME% и названия продуктов.
Сбор данных T1056 Захват ввода Grandoreiro способен перехватывать нажатия клавиш.
Командование и управление T1483 Алгоритмы генерации доменов (DGA) Grandoreiro генерирует свой адрес C&C с помощью DGA.
T1071 Стандартный протокол прикладного уровня Сетевой протокол Grandoreiro реализован RealThinClient и работает поверх HTTP.
Эксфильтрация T1041 Эксфильтрация через канал команд и управления Grandoreiro отправляет полученные данные на свой C&C-сервер.

Читать полный анализ на WeLiveSecurity →