Введение
В ходе недавнего расследования инцидента мы обнаружили новое семейство шифровальщиков, активно используемое злоумышленниками, и назвали его 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 для обнаружения этой угрозы. Правило учитывает тип файла, соответствующие строки и импорт библиотечных функций.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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 и развернутым в папке 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.
Скрипт устанавливает связь с командным сервером и отправляет информацию, включая специфический ключ, который помогает злоумышленнику идентифицировать пострадавшую компанию.
Функция SearchRoot включает цикл, который ищет все файлы в запрашиваемой папке и проверяет их по определенному фильтру: зловред выгружает только файлы размером более 40 КБ, созданные после указанной даты.
Скрипт закодирован по алгоритму Base64 и передается на выполнение следующей команде:
1 |
$selfpath\powershell.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 ( 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 атакует: изучаем новый шифровальщик