Украинские военные под прицелом: группировка UAC-0184 использует многоступенчатые атаки с LNK-файлами, HTA и стеганографией в PNG

APT

Эксперты по информационной безопасности фиксируют новую волну атак на представителей Вооружённых сил Украины. Злоумышленники, известные под идентификатором UAC-0184, применяют сложную цепочку заражения, в которой задействованы легитимные утилиты Windows, самодельные загрузчики и стеганографическая маскировка вредоносного кода внутри изображений. Кампания отличается высокой степенью технической проработки и нацелена на кражу документов и данных из мессенджеров.

Описание

Государственный центр киберзащиты Украины CERT-UA уже неоднократно предупреждал о росте активности UAC-0184 в 2024 году. Эта группа использует социальную инженерию - рассылает фишинговые сообщения через мессенджеры и даже сайты знакомств. В качестве приманки злоумышленники предлагают ссылки на якобы уголовные дела, боевые видео или запросы на личное знакомство. Такая тактика давно стала характерной чертой групп, работающих против украинских военных, - например, Gamaredon и APT28. Однако именно UAC-0184, по данным аналитиков, делает ставку на многоступенчатые цепочки заражений с использованием коммерческих и открытых инструментов.

Теперь стало известно, как выглядит одна из таких кампаний изнутри. Аналитики вскрыли образец, который распространялся через тематические украинские названия: файлы "Рапорт", "Таблиця" и "Scan_088.pdf" - на самом деле это ярлыки (LNK). При открытии такого ярлыка он запускал команду через bitsadmin (штатная утилита Windows для фоновой передачи файлов) и загружал HTA-файл (HTML-приложение) с удалённого сервера 169.40.135[.]35. Затем запускался сам HTA-файл через mshta.exe. Загрузка оказалась "гейтированной" - она срабатывала не со всех IP-адресов, что указывает на геофильтрацию или проверку по типу клиента. Исследователям удалось обойти это ограничение и заполучить вредоносный HTA, который, в свою очередь, скачивал ZIP-архив.

Внутри архива находился набор файлов, среди которых выделялся Cluster-Overlay64.exe - легитимная программа Plane9, 3D-визуализатор звука для Windows. Рядом размещались дополнительные библиотеки (DLL) и файлы с расширениями .bin и .lib. Это классический приём DLL-подгрузки (sideloading): под видом безобидного приложения запускается доверенный исполняемый файл, который загружает из папки подменённую или дополнительную библиотеку. В данном случае цепочка выглядела так: Cluster-Overlay64.exe → Plane9Engine.dll → openvr_api.dll → kernel-diag.lib. Файл kernel-diag.lib содержал закодированный шелл-код, который декодировался простым сложением 32-битных слов с ключом, хранящимся внутри самого файла.

После декодирования из kernel-diag.lib извлекался ещё один модуль - evr.dll (Enhanced Video Renderer, компонент Windows для обработки видео). Внутри evr.dll оказался хитрый загрузчик, который обращался к следующему файлу - filter.bin. Этот файл размером более 1,3 МБ с первого взгляда выглядел как бессвязный набор букв. Однако на самом деле это было изображение в формате PNG с нарушенным заголовком (первые байты были заменены мусором), но с настоящими IDAT-чанками (сегментами данных PNG). Шелл-код из evr.dll находил эти чанки, считывал их содержимое и применял XOR-расшифровку с постоянным 32-битным ключом. Анализ частоты повторяющихся значений в данных помог восстановить ключ - 0x227E9BDE.

После XOR-декодирования следовала ещё одна стадия сжатия - LZNT1 (формат сжатия Microsoft NT-LZ77). После распаковки аналитики получили структуру размером около 2 МБ. Первые 0x4F0 байт оказались конфигурацией: там были строки с путями для развёртывания, а также имя исполняемого файла VSLauncher.exe (выбор версии Visual Studio). Вслед за конфигурацией шли восемь вложенных PE-файлов (исполняемых модулей). Среди них - легитимно подписанные утилиты: PassMark Endpoint (сетевая часть программы BurnInTest), Info-ZIP unzip, Microsoft SqlExpressChk и несколько мелких вспомогательных файлов. Ни один из них не содержал жёстко прописанного адреса командного центра (C2). Однако PassMark Endpoint оказался ключевым элементом.

PassMark Endpoint - это сетевая утилита, предназначенная для тестирования производительности сети. Она прослушивает UDP-порт 224.0.0.255:31339 для обнаружения других копий себя в локальной сети (мультикаст), а также устанавливает TCP-соединения на порт 31339. Её функционал включает вызов MiniDumpWriteDump - системной функции для создания дампа памяти процесса. Это крайне подозрительно в контексте атаки: злоумышленники могут использовать программу для снятия дампов памяти других процессов (например, мессенджеров или браузеров) и кражи учётных данных. При этом весь трафик выглядит как обычное сетевое тестирование, а процесс VSLauncher.exe подписан Microsoft, что повышает доверие к нему.

Отсутствие статического C2 не случайно. Аналитики предполагают, что адрес назначения (C2) формируется динамически: либо через ответ от пира в локальной сети (по UDP-запросу), либо через аргумент командной строки, либо через переменную окружения. Таким образом, злоумышленник сначала попадает в сеть жертвы, затем разворачивает этот инструментарий, и лишь потом инструмент сам находит управляющий сервер внутри сети или получает команду от оператора.

Защитникам стоит обратить внимание на несколько сигналов. Во-первых, UDP-трафик на адрес 224.0.0.255:31339 с текстом MSG_EPFIND - однозначный признак размещения PassMark в нехарактерном окружении. Во-вторых, запуск VSLauncher.exe из папки %windir%\SysWOW64\ (или любой другой нестандартной) рядом с файлом input.dll - тревожный звоночек. В-третьих, подозрительны LNK-файлы, содержащие в командной строке bitsadmin /transfer и mshta.exe, особенно с временными именами вида ~tmp(...). Также важно отслеживать загрузку HTA-файлов с IP-адресов без доменного имени. Детектирование этих признаков на ранних стадиях может предотвратить полную компрометацию сети.

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

URLs

  • http://169.40.135.35/dctrpr/agentdiesel.hta
  • http://169.40.135.35/dctrpr/basketpast.hta
  • http://169.40.135.35/dctrpr/slippersuppity.hta
  • http://169.40.135.35/dctrprraclus.zip

SHA256

  • 33e44dea247eaa8b0fc8ed1f8ed575905f6ce0b7119337ddd29863bbb03288b3
  • b811f28b844eff8c1f4f931639bed5bcc41113364fdfc44d7703259457839edb
  • dc6cddc391b373b18f105f49a80ff83d53b430d8dea35c1f1576832fa9fbd2b3
  • df6942dc1a89226359adf1aac597c3b270f4a408214b4f7c2083f9524605e0f7
  • f5ca9c53d1537142889d7172c6643e886b2164233b91f0fc2d41ca010f035372

Комментарии: 0