Оглавление
Введение
В ходе недавнего расследования инцидента мы обнаружили новое семейство шифровальщиков, активно используемое злоумышленниками, и назвали его 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 и ключи, используемые в алгоритмах шифрования, как показано на следующих изображениях.
Злоумышленник использовал компилятор 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 бинарного файла. Информация, жестко заданная в файлах такого типа, очень полезна для создания правил обнаружения и индикаторов компрометации.
Достигнув основной функции, вредоносная программа вызывает другие функции для получения нужной информации о системе. Чтобы упростить анализ, мы переименовали одну из функций в
Get_System_Information:
Образец собирает системную информацию с помощью следующих вызовов API:
GetSystemTimeAsFileTime, GetCurrentProcessId, GetCurrentThreadId, GetTickCount, QueryPerformanceCounter.
Вредоносная программа также содержит ограничения, которые активируются определенными параметрами. Например, параметр
—path отключает процесс самоудаления, позволяя злоумышленнику использовать бинарный файл в других каталогах.
При анализе образца мы выяснили, что он содержит код функций, связанных с CryptoPP — библиотекой с открытым исходным кодом на C++, используемой для криптографических операций.
Вредоносный образец содержит заданный список расширений файлов, которые исключаются из шифрования:
Динамический анализ
Во время работы шифровальщика мы зафиксировали сотни вызовов функции
memmove. Проанализировав данные, мы обнаружили, что образец загружает в память небольшие фрагменты инструкций для выполнения вредоносных действий. На следующем изображении показан фрагмент вредоносной программы, которая загружает переменные среды после вызова memmove.
Зловред постоянно использует функцию
memmove в процессе перечисления подкаталогов и файлов зараженной системы, чтобы позже зашифровать их.
Строки с путями в файловой системе жертвы, которые используются для сравнения с распространенными именами каталогов во время выполнения, также загружаются через
memmove.
В образце используется функция
RtlCopyMemory из библиотеки ntdll.dll для загрузки дополнительных библиотек, таких как CRYPTSP.dll, rsaenh.dll, bcrypt.dll и kernelbase.dll.
Зловред применяет алгоритм ChaCha20 для шифрования файлов, добавляя расширение
.6C5oy2dVr6 к каждому зашифрованному файлу.
Кроме того, он копирует содержимое PDF-файла из раздела
.data и генерирует сообщение о выкупе в формате PDF в каждом каталоге системы, используя функции _write и _fsopen.
Файл с требованием выкупа сообщает жертве о произошедшем с системой и рекомендует связаться со злоумышленниками и договориться с ними. Хотя в сообщении говорится, что злоумышленники украли данные с зараженного компьютера, шифровальщик не имеет сетевых возможностей для эксфильтрации данных. Это позволяет предположить, что они сначала получили доступ к компьютеру и извлекли файлы другим способом, например путем выгрузки данных через HTTP, FTP или в облачное хранилище.
Мы заметили странную строку — комментарий на языке лингала. Этот язык используется в Демократической Республике Конго, Республике Конго, Анголе и Центрально-Африканской Республике.
Еще один интересный факт: образец ищет PowerShell в каждом подкаталоге, пока использует функцию
RtlCopyMemory. Как только зловред находит PowerShell, он удаляет себя с его помощью. В ходе расследования мы скопировали powershell.exe в папку «Рабочий стол», и зловред использовал именно этот экземпляр для самоудаления.
На следующей схеме изображен ход выполнения образца. Обратите внимание, что единственным созданным дочерним процессом был
powershell.exe, — вредоносная программа запускает экземпляр PowerShell, даже если он уже есть в системе. Затем PowerShell выполняет conhost.exe, который используется для запуска служб в фоновом режиме.
Вредоносная программа вызывает PowerShell с помощью командлета
Start-Sleep, ждет пять секунд, а затем использует команду Remove-Item для удаления себя с компьютера, как показано на изображении ниже.
Правило YARA
На основе анализа образца мы создали следующее правило YARA для обнаружения этой угрозы. Правило учитывает тип файла, соответствующие строки и импорт библиотечных функций.
import «pe»
rule Ymir
{
meta:
author = «Kaspersky — GERT»
description = «Yara rule for detecting the Ymir ransomware.»
target_entity = «file»
strings:
$s1 = «powershell -w h -c Start-Sleep -Seconds 5; Remove-Item -Force -Path»
wide ascii nocase
$s2 = «setup-qtox-x86_64-release.exe» wide ascii nocase
$s3 = «6C5oy2dVr6» wide ascii nocase
$s4 = «INCIDENT_REPORT.pdf» wide ascii nocase
$s5 = «D:20240831154833-06» wide ascii nocase
$s6 = «ChaCha» wide ascii nocase
$s7 = «x64dbg» wide ascii nocase
condition:
(3 of ($s*)) and pe.imports(«msvcrt.dll», «memmove»)
}
Телеметрия
С помощью представленного правила Yara мы обнаружили на одном из порталов анализа угроз аналогичный образец из Пакистана. Мы предполагаем, что злоумышленник использовал VPN или Tor для сокрытия своего IP-адреса. Обнаруженный вариант выглядит как тестовый бинарный файл, отправленный злоумышленниками, чтобы проверить, будет ли он обнаруживаться защитными решениями различных поставщиков. Образец получает параметр
—path из командной строки, который указывает на шифруемый каталог. Однако он не шифрует файлы и не генерирует сообщение о выкупе.
Любопытно, что эта тестовая версия исполняемого файла, как и полнофункциональный образец, не удаляет себя при выполнении с параметром
—path. В этом есть смысл, так как злоумышленник может захотеть указать определенные каталоги для атаки.
Сравнив оба образца, мы пришли к выводу, что финальная версия образца с полной функциональностью шифрования, в отличие от тестового варианта, имеет дополнительные функции, реализованные в новых строках. Сюда относятся расширение, добавляемое к имени зашифрованных файлов (
.6C5oy2dVr6), и содержимое PDF-файла с требованием выкупа.
На момент нашего исследования 12 поставщиков защитных решений детектировали эту угрозу, включая «Лабораторию Касперского».
Инцидент с шифровальщиком
Помимо анализа вредоносного ПО, мы также исследовали инцидент в Колумбии, где был получен образец Ymir. Наше расследование показало, что в попытках замести следы злоумышленникам удалось избавиться от важных улик. Мы смогли выяснить, что за два дня до внедрения шифровальщика в нескольких системах была обнаружена новая угроза, связанная со стилером RustyStealer, позволяющая злоумышленникам управлять устройствами, отправлять команды и собирать информацию из скомпрометированной инфраструктуры. Вскоре после этого на контроллере домена была зафиксирована вредоносная активность, включая скомпрометированный доступ с правами различных легитимных пользователей, один из которых имел высокие привилегии. Первоначальный образец RustyStealer был PE-файлом, скомпилированным на языке Rust и развернутым в папке WindowsTemp под именем
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
HKCUSoftwareMicrosoftWindowsCurrentVersionRun
Оба скрипта используют 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.
Скрипт устанавливает связь с командным сервером и отправляет информацию, включая специфический ключ, который помогает злоумышленнику идентифицировать пострадавшую компанию.
Функция
SearchRoot включает цикл, который ищет все файлы в запрашиваемой папке и проверяет их по определенному фильтру: зловред выгружает только файлы размером более 40 КБ, созданные после указанной даты.
Скрипт закодирован по алгоритму Base64 и передается на выполнение следующей команде:
$selfpathpowershell.exe -Version 5.1 -s -NoLogo -NoProfile -EncodedCommand <B64CMD>
Согласно анализу нашей команды 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 (HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem), где пользователю предлагают изучить подробные требования в файле 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
Securelist