Исследователи информационной безопасности зафиксировали новую волну атак группировки UAC-0184, нацеленную на украинские военные структуры. В отличие от предыдущих кампаний, злоумышленники заменили легитимное приложение Plane9 на компоненты Microsoft OneDrive, однако внутренняя архитектура загрузчика осталась прежней. Конечным результатом атаки становится развёртывание агента Remcos 7.1.0 Pro - коммерческого инструмента удалённого управления (RAT).
Описание
Исходным вектором атаки служит ZIP-архив spisokszch.zip, содержащий четыре ярлыка LNK с именами, имитирующими изображения (JPG_012.jpg, JPG_013.jpg, JPG_014.jpg) и документ Excel (spisokszch.xlsx). Внутри архива также находится текстовый файл README.txt на украинском языке с инструкцией извлечь файлы на рабочий стол перед открытием. Эта инструкция необходима атакующим, чтобы гарантировать выполнение LNK в предсказуемом окружении, поскольку запуск ярлыков непосредственно из архива может работать по-разному в зависимости от программы-архиватора.
Каждый ярлык запускает cmd.exe с отложенным расширением переменных, после чего восстанавливает строку MSXML2.XMLHTTP из двух фрагментов. Создаётся временный VBScript, который при помощи xmlHttpRequest выполняет HTTP GET-запрос, сохраняет ответ как временный PowerShell-скрипт, запускает его со скрытым окном и удаляет временные файлы. Четыре ярлыка ссылаются на четыре разных URL на сервере 144.31.236[.]240, каждый из которых ведёт на отдельный скрипт .ps1.
Сами PowerShell-скрипты почти идентичны. Они проверяют наличие архива szch45clusterhum.zip; если его нет, скачивают его с того же IP-адреса. Затем распаковывают ZIP в папку MSWinDistro, запускают из неё исполняемый файл ClusterHub.exe и открывают один из файлов-приманок (JPG_012.jpg, JPG_013.jpg и т.д.). Различие между скриптами - только в выбранном файле-подделке.
Внутри архива szch45clusterhum.zip, помимо трёх изображений и документа Excel, находятся основные компоненты загрузчика: ClusterHub.exe, UpdateRingSettings.dll, LoggingPlatform.dll, monitor_base.sym и physicsdesc.map. ClusterHub.exe представляет собой переименованную версию OneDrivePatcher.exe, что видно по внутренним строкам. Это легитимный исполняемый файл, подверженный DLL-подгрузке (sideloading): он загружает UpdateRingSettings.dll, которая на самом деле является вредоносной библиотекой. Второй DLL, LoggingPlatform.dll, вероятно, сохраняет часть оригинальной функциональности OneDrive.
Два файла с расширениями .sym и .map - monitor_base.sym (около 35 КБ) и physicsdesc.map (около 1,36 МБ) - служат контейнерами для следующих стадий. Оба начинаются с большого объёма "заполнителя" (filler), что делает их похожими на текстовые при поверхностном просмотре. Внутри monitor_base.sym по смещению 0x6BD8 находится простая структура: размер раскодированного блока 0x2084 байт и ключ 0x3A12EA50. Применяя сложение этого ключа с каждым 32-битным словом, получается 8324 байта x64-шеллкода. Шеллкод содержит строки IDAT, IEND, PNG, что указывает на задачу поиска PNG-подобных блоков внутри physicsdesc.map.
Файл physicsdesc.map не является валидным PNG, но начиная со смещения 0x4052 содержит 164 последовательных блока IDAT и один блок IEND. Шеллкод сшивает данные всех блоков IDAT, первые 16 байт которых интерпретируются как метаданные. Для текущего образца восстановлены значения: маркер 0xEA79A5C6, ключ XOR 0x54EBEC5E, сжатый размер 0x145E3A, разжатый размер 0x20AE58. После пошагового XOR-декодирования 32-битными словами данные распаковываются алгоритмом LZNT1 (формат сжатия Windows). Итоговый декомпрессированный бандл имеет размер около 2,14 МБ.
Хотя внешние файлы и ключи изменились по сравнению с предыдущим образцом UAC-0184, описанного [анализ] двух вариантов, архитектура осталась идентичной: небольшой контейнер с арифметически кодированным шеллкодом, большой контейнер со структурой IDAT без валидного заголовка PNG, конкатенация блоков, 32-битное XOR, LZNT1 и последующее выполнение через легитимное приложение. Это устойчивый индикатор, который не исчезает при смене имён файлов или хешей.
Декомпрессированный бандл содержит таблицу из 35 именованных модулей, характерных для фреймворка HijackLoader (также известного как IDATLoader). Среди них - LauncherLdr64, модули для создания процессов, работы с планировщиком задач, обхода UAC, взаимодействия с Windows Defender, записи файлов, обратной оболочки и пользовательской инъекции. Из бандла были извлечены восемь полноценных PE-файлов: tcpvcon.exe (утилита Sysinternals), FIXED (утилита на основе Info-ZIP), LauncherLdr64, 32- и 64-битные заглушки tinystub, две DLL tinyutilitymodule и HearthstoneDeckTracker.exe, которая, вероятно, используется в процессе инъекции CUSTOMINJECT.
Финальная полезная нагрузка хранится отдельно в зашифрованном хвосте бандла объёмом около 514 КБ. Первые 200 байт этого хвоста служат ключом XOR циклического применения к оставшимся данным. После обнуления ключевой области получается исполняемый файл, идентифицирующий себя как Remcos Agent 7.1.0 Pro. В ресурсе SETTINGS этого файла обнаружена RC4-шифрованная конфигурация из 58 полей, включая C2-сервер 144.31.236[.]240:27018, имя файла установки remcos.exe, мьютекс Rmc-X5JFP2, пути для логов, снимков экрана и аудиозаписей.
Примечательно, что тот же IP-адрес 144.31.236[.]240 используется для всех этапов доставки: хостинга PowerShell-скриптов, архива szch45clusterhum.zip и управления самого Remcos. Отсутствуют какие-либо домены, редиректоры или промежуточные узлы. С точки зрения операционной безопасности такой подход удобен, но оставляет единый след, связывающий загрузчик, второй архив и финальный маяк.
Файлы-приманки - три изображения с расширением .jpg (на деле повреждённые PNG-заголовки) и документ Excel spisokszch.xlsx - содержат реальные данные украинских военных, касающиеся случаев самовольного оставления части. В Excel-файле перечислены 39 военнослужащих с фамилиями, званиями, датами самовольного отсутствия, номерами приказов и уголовных дел. Наличие такого документа и инструкции на украинском языке однозначно указывает на целевую аудиторию - украинские военно-административные структуры.
По сравнению с предыдущей кампанией, где использовался HTA-загрузчик и бинарник Plane9, новая версия демонстрирует эволюцию инструментария. Внешняя обёртка сменилась с Plane9 на OneDrive, контейнеры переименованы, а конечный пейлоад вместо набора подписанных утилит и компонентов PassMark стал полноценным Remcos. Однако внутренний конвейер загрузки (DWORD-сложение, IDAT-чанки, LZNT1, модульная структура HijackLoader) остался практически неизменным. Более того, внутри нового бандла используется тот же путь %windir%\SysWOW64\input.dll, что и в старом, что указывает на повторное использование внутренних процедур развёртывания.
С практической точки зрения, защитникам следует обращать внимание на архивы, содержащие ярлыки LNK с именами изображений или офисных документов, особенно в комплекте с инструкцией извлечения. Замечены командные строки, включающие cmd.exe /v /c, MSXML2.XMLHTTP, ADODB.Stream, cscript //b и powershell -NoP -W Hidden -ExecutionPolicy Bypass. Подозрительно появление папки MSWinDistro, в которой находятся ClusterHub.exe и сопутствующие DLL, а также файлы .sym и .map с большим объёмом текстового заполнения и последующими IDAT-блоками. Сетевые индикаторы: обращения к 144.31.236[.]240:80 по путям /szch45/... и подключения к порту 27018.
Представленный случай - яркий пример эволюции угроз. Операторы группы UAC-0184 меняют наиболее заметные элементы атаки (способ доставки, имена файлов), но сохраняют дорогостоящую внутреннюю логику загрузчика, разработка которой требует существенных усилий. Обнаружение такой закономерности помогает прогнозировать дальнейшие модификации и строить более устойчивые средства детектирования.
Индикаторы компрометации
IPv4
- 144.31.236.24
- 144.31.236.240
IPv4 Port Combination
- 144.31.236.240:27018
URL
- http://144.31.236.240/szch45/collectivisationgown.ps1
- http://144.31.236.240/szch45/hintprefix.ps1
- http://144.31.236.240/szch45/ritecommunion.ps1
- http://144.31.236.240/szch45/shoutnewspaper.ps1
- http://144.31.236.240/szch45clusterhum.zip
SHA256
- 198995fecc0e38a2749b7e48c54112a959b77878683b726ee36430c4bacec196
- 324e2f2241604e53b88bd590213385abbb2961d3f17debfb4d40e4fa7bd9c4c0
- 3594a835ed3dbf80ac460c0e852fa91baa3b17aadff9c3b40c03eff6b34658d2
- 40079f05ba7cdccac1f62f8e7e1b644bc0a806b58465f5c005725bc54ee73ef1
- 43579dd80314b6de4a1ca4e40b53ef0376a2ab55d50c8368e0b26af0af0d08c7
- 4870337bcd6e3ba0d82ca6a42604c05f1885c87967d0dc120f699d2b19706247
- 56b19b9f63a649e8cfb9a0e4bb73aac52fbc2265e9793a5b976221432d0ba77f
- 6754f3854680767a394b22090f277fc53ec5a242faff54bf233084da5989c3ef
- 68bee500e0080f21c003126e73b6d07804d23ac98b2376a8b76c26297d467abe
- 729e5965e43ff458f6da901536c9a43be52a3820718e2dd5456150e2d73bb97f
- 8e8e43a2f0069f081f5ffb77237faebcda9a46e8f8fd0e128500e74bbc9ea3a5
- 93621d3793198cb00c1a0450e8e3375d6c0de862a8449ab796c894062ae32612
- 95c8f0ac2e427a5637e554c60f649cab1fe55f649fe3aacde3c66fdc6491921b
- a11339f52a3b31d5a1f134e19bfc83d260ccbde4f14b14889bd824cc636c9a93
- a8d0a03543db29d279175c9679eba574dcb7a17e306195a68ab1d033ee2be01c
- ad17e13f05399f0c3a2b13505507a78d8c2dbe2850e507a2d78b9dfa2f5b5e9a
- adf2c6f80229677615358b56f329aba9c3e9e009d9ca6d6deb0b805e6e212dbc
- b02b8547644bbfe77428e59c5ccec56c412e3c83aec44180e59110189a249956
- bb40c9d8c217516a92a18a1bdb080a5af92cfafe81f6751dea665e3e78cb4851
- c0713fd808170f2204a9bc091288e358c5f3266bf99a44f3a36a7ccc03732bb1
- c50bffbef786eb689358c63fc0585792d174c5e281499f12035afa1ce2ce19c8
- c74bb6fb848cdb87c2b4261da1efc078023cdf95aa7b1436c52c26f3a11025af
- da48273d7d4ab1d71ecf50fec0a58884ddb2baf18d872f25cab3637519ef71d7
- fe38e54bedee074825eb3fcbe4824ed203876692a424e0c183e0006b31d1b7a8
- fee96a66a8c143ff4f172963a56a813427a65dad7758834bb3283685a37df633