Описание вредоносного ПО

Ymir атакует: изучаем новый шифровальщик

Введение

В ходе недавнего расследования инцидента мы обнаружили новое семейство шифровальщиков, активно используемое злоумышленниками, и назвали его Ymir. Зловред обладает продвинутыми механизмами обхода обнаружения, включая широкий набор операций, выполняемых в памяти путем вызова функций malloc, memmove и memcmp.

В нашем случае злоумышленник получил доступ к системе с помощью команд удаленного управления PowerShell. После этого он установил несколько инструментов для вредоносных действий, включая Process Hacker и Advanced IP Scanner. Ослабив защиту системы, злоумышленник запустил шифровальщик Ymir для достижения своих целей.

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

Анализ

Статический анализ

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

Хэш Значение
MD5 12acbb05741a218a1c83eaa1cfc2401f
SHA-1 3648359ebae8ce7cacae1e631103659f5a8c630e
SHA-256 cb88edd192d49db12f444f764c3bdc287703666167a4ca8d533d51f86ba428d8
Определение типа файла

Определение типа файла

Бинарный файл не имеет признаков упаковки (его энтропия низка). Вызовы таких функций API, как malloc, memmove и memcmp, указывают на то, что он способен выделять память для внедрения вредоносного кода.

Вызов функций для работы с памятью

Вызов функций для работы с памятью

Бинарный файл также вызывает подозрения из-за импорта таких функций, как CryptAcquireContextA, CryptReleaseContext, CryptGenRandom, TerminateProcess и WinExec, из системных библиотек. Эти вызовы API часто встречаются в разных образцах шифровальщиков.

Подозрительный импорт функций зловредом

Подозрительный импорт функций зловредом

Хотя большинство данных образца распаковываются в память во время выполнения, мы нашли полезные индикаторы в строках бинарного файла, такие как имя PDF-файла с требованием о выкупе и его содержимое, расширение зашифрованных файлов, команды PowerShell и ключи, используемые в алгоритмах шифрования, как показано на следующих изображениях.

Содержимое PDF-файла

Содержимое PDF-файла

Команда автоматического удаления PowerShell и ключи шифрования

Команда автоматического удаления PowerShell и ключи шифрования

Злоумышленник использовал компилятор MinGW, нативный порт GNU Compiler Collection (GCC) для Windows.

Строка компилятора

Строка компилятора

В следующей таблице приведены другие полезные строковые индикаторы, которые мы нашли в ходе анализа:

Тип Значение Описание
Строка (команда) powershell -w h -c Start-Sleep -Seconds 5; Remove-Item -Force -Path Выполнение команды автоматического удаления через PowerShell.
Строка (URL-адрес) hxxps://github[.]com/qTox/qTox/releases/download/v1.17.6/setup-qtox-x86_64-release.exe Программное обеспечение (клиент qTox) для связи со злоумышленниками. Встречается в PDF-файле.
Строка 6C5oy2dVr6 Расширение зашифрованных файлов.
Строка (имя файла) INCIDENT_REPORT.pdf Имя PDF-файла с требованием выкупа. PDF-файлы располагаются в различных каталогах.
Строка (дата) D:20240831154833-06’00’ Метаданные даты создания PDF-файла.
Строка x64dbg Имя отладчика.

Интересно, что дата создания PDF-файла совпадает с датой компиляции бинарного файла — 31 августа 2024 года, как показано на изображении ниже.

Время и дата компиляции вредоносного образца

Время и дата компиляции вредоносного образца

Статический анализ также показывает, что PDF-файл с требованием выкупа присутствует в разделе .data бинарного файла. Информация, жестко заданная в файлах такого типа, очень полезна для создания правил обнаружения и индикаторов компрометации.

PDF-файл с требованием выкупа

PDF-файл с требованием выкупа

Достигнув основной функции, вредоносная программа вызывает другие функции для получения нужной информации о системе. Чтобы упростить анализ, мы переименовали одну из функций в Get_System_Information:

Точка входа вредоносного образца

Точка входа вредоносного образца

Функция Get_System_Information

Функция Get_System_Information

Образец собирает системную информацию с помощью следующих вызовов API: GetSystemTimeAsFileTime, GetCurrentProcessId, GetCurrentThreadId, GetTickCount, QueryPerformanceCounter.

Сбор информации о системе

Сбор информации о системе

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

Образец не удаляется при запуске с параметром --path

Образец не удаляется при запуске с параметром —path

При анализе образца мы выяснили, что он содержит код функций, связанных с CryptoPP — библиотекой с открытым исходным кодом на C++, используемой для криптографических операций.

Функции CryptoPP

Функции CryptoPP

Вредоносный образец содержит заданный список расширений файлов, которые исключаются из шифрования:

Игнорируемые расширения файлов

Игнорируемые расширения файлов

Динамический анализ

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

Переменные среды, загруженные в память

Переменные среды, загруженные в память

Зловред постоянно использует функцию memmove в процессе перечисления подкаталогов и файлов зараженной системы, чтобы позже зашифровать их.

Перечисление каталогов

Перечисление каталогов

Строки с путями в файловой системе жертвы, которые используются для сравнения с распространенными именами каталогов во время выполнения, также загружаются через memmove.

Строки, загруженные через memmove

Строки, загруженные через memmove

В образце используется функция RtlCopyMemory из библиотеки ntdll.dll для загрузки дополнительных библиотек, таких как CRYPTSP.dll, rsaenh.dll, bcrypt.dll и kernelbase.dll.

Загрузка DLL во время выполнения

Загрузка DLL во время выполнения

Зловред применяет алгоритм ChaCha20 для шифрования файлов, добавляя расширение .6C5oy2dVr6 к каждому зашифрованному файлу.

Шифрование ChaCha20

Шифрование ChaCha20

Кроме того, он копирует содержимое PDF-файла из раздела .data и генерирует сообщение о выкупе в формате PDF в каждом каталоге системы, используя функции _write и _fsopen.

Операция записи сообщения о выкупе

Операция записи сообщения о выкупе

Файл с требованием выкупа сообщает жертве о произошедшем с системой и рекомендует связаться со злоумышленниками и договориться с ними. Хотя в сообщении говорится, что злоумышленники украли данные с зараженного компьютера, шифровальщик не имеет сетевых возможностей для эксфильтрации данных. Это позволяет предположить, что они сначала получили доступ к компьютеру и извлекли файлы другим способом, например путем выгрузки данных через HTTP, FTP или в облачное хранилище.

Фрагмент требования о выкупе

Фрагмент требования о выкупе

Мы заметили странную строку — комментарий на языке лингала. Этот язык используется в Демократической Республике Конго, Республике Конго, Анголе и Центрально-Африканской Республике.

Комментарий на лингала, найденный во время выполнения зловреда

Комментарий на лингала, найденный во время выполнения зловреда

Еще один интересный факт: образец ищет PowerShell в каждом подкаталоге, пока использует функцию RtlCopyMemory. Как только зловред находит PowerShell, он удаляет себя с его помощью. В ходе расследования мы скопировали powershell.exe в папку «Рабочий стол», и зловред использовал именно этот экземпляр для самоудаления.

Поиск PowerShell

Поиск PowerShell

На следующей схеме изображен ход выполнения образца. Обратите внимание, что единственным созданным дочерним процессом был powershell.exe, — вредоносная программа запускает экземпляр PowerShell, даже если он уже есть в системе. Затем PowerShell выполняет conhost.exe, который используется для запуска служб в фоновом режиме.

Вредоносные процессы

Вредоносные процессы

Дерево процессов

Дерево процессов

Вредоносная программа вызывает PowerShell с помощью командлета Start-Sleep, ждет пять секунд, а затем использует команду Remove-Item для удаления себя с компьютера, как показано на изображении ниже.

Выполнение команды PowerShell

Выполнение команды PowerShell

Правило YARA

На основе анализа образца мы создали следующее правило YARA для обнаружения этой угрозы. Правило учитывает тип файла, соответствующие строки и импорт библиотечных функций.

Телеметрия

С помощью представленного правила Yara мы обнаружили на одном из порталов анализа угроз аналогичный образец из Пакистана. Мы предполагаем, что злоумышленник использовал VPN или Tor для сокрытия своего IP-адреса. Обнаруженный вариант выглядит как тестовый бинарный файл, отправленный злоумышленниками, чтобы проверить, будет ли он обнаруживаться защитными решениями различных поставщиков. Образец получает параметр --path из командной строки, который указывает на шифруемый каталог. Однако он не шифрует файлы и не генерирует сообщение о выкупе.

Выполнение тестового образца

Выполнение тестового образца

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

Сравнив оба образца, мы пришли к выводу, что финальная версия образца с полной функциональностью шифрования, в отличие от тестового варианта, имеет дополнительные функции, реализованные в новых строках. Сюда относятся расширение, добавляемое к имени зашифрованных файлов ( .6C5oy2dVr6), и содержимое PDF-файла с требованием выкупа.

Сравнение совпадений YARA

Сравнение совпадений YARA

На момент нашего исследования 12 поставщиков защитных решений детектировали эту угрозу, включая «Лабораторию Касперского».

Инцидент с шифровальщиком

Помимо анализа вредоносного ПО, мы также исследовали инцидент в Колумбии, где был получен образец Ymir. Наше расследование показало, что в попытках замести следы злоумышленникам удалось избавиться от важных улик. Мы смогли выяснить, что за два дня до внедрения шифровальщика в нескольких системах была обнаружена новая угроза, связанная со стилером RustyStealer, позволяющая злоумышленникам управлять устройствами, отправлять команды и собирать информацию из скомпрометированной инфраструктуры. Вскоре после этого на контроллере домена была зафиксирована вредоносная активность, включая скомпрометированный доступ с правами различных легитимных пользователей, один из которых имел высокие привилегии. Первоначальный образец RustyStealer был PE-файлом, скомпилированным на языке Rust и развернутым в папке Windows\Temp под именем AudioDriver2.0.exe.

Имя файла AudioDriver2.0.exe
Размер 3 334 144 байт (3,2 МБ)
MD5 5ee1befc69d120976a60a97d3254e9eb
SHA-1 e6c4d3e360a705e272ae0b505e58e3d928fb1387

Этот образец, детектируемый «Лабораторией Касперского» под названием Trojan.Win32.Sheller.ey, способен собирать информацию о файловой системе. Этот образец содержит обфусцированный код, затрудняющий анализ, и включает общие модули, что указывает на возможность вызова функций API, например, из нативных DLL-библиотек Windows.

Образец также подключается к командному серверу 74.50.84[.]181 через порт 443, который, согласно данным «Лаборатории Касперского», используется для хостинга вредоносных файлов с августа 2024 года.

Командный сервер

Командный сервер

Злоумышленники скомпрометировали контроллер домена и использовали его для дальнейшего заражения систем в целевой инфраструктуре. Атакующие использовали скомпрометированные учетные данные, собранные стилером, для перемещения между системами и управления ими через WinRM и PowerShell. Затем они запустили два скрипта, которые, как выяснилось, являются частью вредоносного прокси-сервера SystemBC.

Имя файла 1.ps1 1.ps1
Размер 16239 bytes (15 KiB) 4209 bytes (4 KiB)
MD5 5384d704fadf229d08eab696404cbba6 39df773139f505657d11749804953be5
Путь %windir%\temp\ HKCU\Software\Microsoft\Windows\CurrentVersion\Run

Оба скрипта используют PowerShell для установки скрытого канала связи с IP-адресом 94.158.244[.]69 через порт 443. На основе строк из скриптов, которые нам удалось извлечь, мы создали правила YARA для определения других образцов и командных серверов с такой же кодировкой.

SHA256 Первое обнаружение Место обнаружения Командный сервер Вердикт
8287d54c83db03b8adcdf1409f5d1c9abb
1693ac8d000b5ae75b3a296cb3061c
16.09.2024, 03:24:06 (UTC) Австралия 94.158.24
4[.]69
51ffc0b7358b7611492ef458fdf9b97f121e
49e70f86a6b53b93ed923b707a03
18.08.2024, 18:59:01 (UTC) Украина 85.239.61
[.]60
UDS:Trojan.PowerShell
.Dnoper.posh
b087e1309f3eab6302d7503079af1ad6af
06d70a932f7a6ae1421b942048e28a
17.08.2024, 02:43:55 (UTC) Украина 85.239.61
[.]60
Trojan.MSIL.Dnoper.sb

Один из этих скриптов был найден в нескольких системах в виде блока PowerShell-скриптов на основе другого подхода и с другим командным сервером (5.255.117[.]134 через порт 80). Вероятно, он использовался для эксфильтрации информации из инфраструктуры, судя по следующим жестко заданным функциям и инструкциям:

  • GetServerByFilename,
  • SendFile,
  • SearchRoot.
Функция GetServerByFilename

Функция GetServerByFilename

Скрипт устанавливает связь с командным сервером и отправляет информацию, включая специфический ключ, который помогает злоумышленнику идентифицировать пострадавшую компанию.

URI с уникальным ключом для каждой жертвы

URI с уникальным ключом для каждой жертвы

Информация, отправляемая на командный сервер

Информация, отправляемая на командный сервер

Функция SearchRoot включает цикл, который ищет все файлы в запрашиваемой папке и проверяет их по определенному фильтру: зловред выгружает только файлы размером более 40 КБ, созданные после указанной даты.

Функция поиска

Функция поиска

Поиск файлов

Поиск файлов

Скрипт закодирован по алгоритму Base64 и передается на выполнение следующей команде:

Согласно анализу нашей команды GERT, на момент исследования по этому IP-адресу (5.255.117[.]134) был настроен сервис для выгрузки файлов, собранных с помощью скриптов SystemBC.

Активный веб-сервис

Активный веб-сервис

В то же время на нескольких системах было зафиксировано множество записей бинарных файлов и запусков программ Advanced IP Scanner и Process Hacker.

  • advanced_ip_scanner.exe;
  • processhacker-2.39-setup.exe.

И, наконец, через два дня после первой атаки с использованием RustyStealer злоумышленники развернули шифровальщик Ymir, установив удаленное подключение и внедрив полезную нагрузку. Мы выявили некоторые следы выполнения, в том числе связанные с PowerShell-скриптом для самоуничтожения. Кроме того, часть сообщения о выкупе была задана в строке ключа реестра legalnoticecaption ( HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System), где пользователю предлагают изучить подробные требования в файле INCIDENT_REPORT.pdf.

Часть сообщения о выкупе из реестра

Часть сообщения о выкупе из реестра

Заключение

Прослеживается очевидная связь между ботнетами стилеров, которые служат брокерами доступа, и запуском шифровальщика. Активность зловреда Ymir представляет угрозу для организаций и подтверждает существование новых групп, способных воздействовать на бизнес и предприятия с помощью настраиваемого и продуманного вредоносного ПО. Согласно нашим наблюдениям, брокеры первоначального доступа проникают в организацию и обеспечивают закрепление в системе. Вскоре после этого в целевой системе появляется шифровальщик Ymir. Это новое семейство шифровальщиков полагается на надежную схему шифрования, что делает невозможной расшифровку файлов жертв. Группа, стоящая за этой угрозой, пока не предоставила портал с утечками или дополнительную информацию, но мы продолжим отслеживать их активность. За два дня до инцидента с шифровальщиком системы генерировали оповещения, но отсутствие реакции на критические предупреждения позволило злоумышленникам запустить зловред. Это подчеркивает, что одной платформы для защиты рабочих мест (EPP) недостаточно, и необходима продуманная стратегия реагирования.

Продукты «Лаборатории Касперского» обнаруживают эту угрозу как Trojan-Ransom.Win64.Ymir.gen.

Тактики, техники и процедуры

Ниже приведены тактики, техники и процедуры Ymir, выявленные на основе нашего анализа вредоносного ПО.

Тактика Метод ID
Исследование Поиск файлов и каталогов T1083
Исследование Получение информации о системе T1082
Выполнение Интерпретатор команд и сценариев: PowerShell T1059.001
Воздействие Шифрование данных с целью воздействия T1486
Обход защиты Обход виртуализированных сред и песочницы: на основе времени T1497.003
Обход защиты Устранение индикаторов: удаление файлов T1070.004

Тактики, техники и процедуры RustyStealer:

Тактика Метод ID
Исследование Поиск файлов и каталогов T1083
Исследование Обнаружение процессов T1057
Выполнение Общие модули T1129
Обход защиты Обфусцированные файлы или информация T1027

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

Хэш-суммы файлов
3648359ebae8ce7cacae1e631103659f5a8c630e
fe6de75d6042de714c28c0a3c0816b37e0fa4bb3
f954d1b1d13a5e4f62f108c9965707a2aa2a3c89 (INCIDENT_REPORT.pdf)
5ee1befc69d120976a60a97d3254e9eb
5384d704fadf229d08eab696404cbba6
39df773139f505657d11749804953be5
8287d54c83db03b8adcdf1409f5d1c9abb1693ac8d000b5ae75b3a296cb3061c
51ffc0b7358b7611492ef458fdf9b97f121e49e70f86a6b53b93ed923b707a03
b087e1309f3eab6302d7503079af1ad6af06d70a932f7a6ae1421b942048e28a

IP-адреса
74.50.84[.]181:443
94.158.244[.]69:443
5.255.117[.]134:80
85.239.61[.]60

Ymir атакует: изучаем новый шифровальщик

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

 

Отчеты

CloudSorcerer: новая APT-угроза, нацеленная на российские государственные организации

«Лаборатория Касперского» обнаружила новую APT-угрозу CloudSorcerer, нацеленную на российские государственные организации и использующую облачные службы в качестве командных серверов аналогично APT CloudWizard.

StripedFly: двуликий и незаметный

Разбираем фреймворк StripedFly для целевых атак, использовавший собственную версию эксплойта EternalBlue и успешно прикрывавшийся майнером.

Подпишитесь на еженедельную рассылку

Самая актуальная аналитика – в вашем почтовом ящике