В апреле 2025 года наша команда в рамках проведения Compromise Assessment в одном из органов исполнительной власти обнаружила вредоносный файл в каталоге с резервной копией ViPNet:
C:\Users\Администратор\Desktop\*\full_backup\ViPNet Administrator\*\ccc\update_bad\
driv_fsa\driv_fsa.lzh//driv_fs.lzh//msinfo32.exe
Анализ файлов из архива driv_fsa.lzh показал, что пакет обновления ViPNet содержал вредоносный инструментарий, который в процессе выполнения загружал из зашифрованного файла в память атакуемой системы вредоносный бэкдор. Его загрузчик был скомпилирован в ноябре 2021 года. Этот факт вернул нас в 2021 год, когда при расследовании инцидента в инфраструктуре заказчика мы столкнулись с аналогичной картиной. На конференции PHDays-11 в докладе «Как Жуи и Диндин провели прошедший год в России», посвященном инструментарию, а также тактикам и техникам восточно-азиатских APT-группировок за 2021 год, мы уже рассказывали в том числе об этой атаке, где злоумышленники использовали недостаток безопасности в системе обновления ПО ViPNet для доставки и запуска вредоносной полезной нагрузки.
Все новое — хорошо забытое старое. Недавно коллеги из «Лаборатории Касперского» выпустили краткий отчет о бэкдоре, который мимикрировал под обновления ПО ViPNet и использовал аналогичные схему запуска, загрузчик и, возможно, бэкдор.
В связи с новой атакой публикуем подробности нашего расследования из 2021 года, которые помогут лучше выстроить защиту от этой угрозы, а также некоторые сведения, указывающие на то, какие группировки могут стоять за ней.
Краткое содержание отчета:
- Разобрали процесс обновления ViPNet для лучшего понимания механизма запуска бэкдора.
- Описали и сравнили цепочки запуска ВПО из наших реагирований 2021 и 2025 годов. В реагировании 2025 года подменяется не динамическая библиотека, а exe-файл.
- Загрузчик из новой цепочки запуска был скомпилирован в 2021 году и представляет собой интерпретатор байт-кода, который хранится в зашифрованном виде во внешнем файле.
- Вредоносное ПО, доставляемое на ViPNet Client, являлось бэкдором, среди интересных функций которого в том числе есть отключение компонента ViPNet «Контроль приложений», позволяющего следить и регулировать сетевую активность приложений, установленных на системе жертвы.
- В рамках атрибуции предположили, что за использованием таких редких техник и инструментов могут стоять азиатские APT-группировки.
- В результате исследования этой активности мы подготовили ряд рекомендаций для обнаружения и противодействия подобным видам заражения.
Цепочка заражения через обновления ViPNet
Процесс обновления ViPNet Client
Для полного понимания процесса доставки вредоносной полезной нагрузки через ViPNet рассмотрим, как работает его служба обновлений.
Обновление происходит с узла центра управления сетью (ЦУС).
Обновление программного обеспечения отправляется на сетевые узлы в виде файлов формата LZH:

Пакет обновления должен обязательно содержать следующие файлы:
- action.inf — содержит команды, выполняемые для установки обновления.
Для запуска исполняемого файла используется команда extra_command с указанием необходимых аргументов командной строки.
При наличии вложенного архива для передачи управления на него используется команда archive_archive.
- list.data — текстовый файл, содержащий имена всех файлов обновления и соответствующие им контрольные суммы.
- Исполняемый файл обновления или вложенный lzh-архив.

Перед запуском исполняемого файла проверяется наличие у него валидной цифровой подписи, а также факт подписания вендором InfoTeCS:

Расследование из 2021 года
Для того чтобы разобраться в цепочке запуска нового бэкдора, рассмотрим, как выглядел вредоносный пакет обновления в кейсе 2021 года.
В системе обновлений ViPNet Client присутствуют две обнаруженных нами уязвимости. Первая уязвимость BDU:2022-03008 связана с недостаточной проверкой цифровой подписи файлов.
Вторая уязвимость BDU:2022-03009 позволяет атакующим подменить в архиве обновления динамическую библиотеку для запуска атакующими произвольного вредоносного кода.
Обе уязвимости были включены в БДУ ФСТЭК.
В целом эксплоит заключается в том, что при запуске исполняемого файла система обновлений проверяет только запускаемый файл и не проверяет остальные файлы в цепочке выполнения, что позволяет атакующим запустить вредоносный код с помощью подписанного InfoTeCS exe-файла, подверженного DLL Hijacking, и подмененной динамической библиотеки, функции которой импортируются подписанным exe-файлом.

Таким образом, злоумышленникам оставалось найти такую пару файлов и включить ее в архив обновления:

- Lha.exe — легитимный исполняемый файл, подписанный InfoTeCS и подверженный DLL Hijacking;
- Unlha32.DLL — подмененная динамическая библиотека без цифровой подписи, содержащая вредоносный код, функции которой импортируются файлом Lha.exe.
В 2021 году мы обнаружили несколько вариантов полезной нагрузки, доставляемой на хосты с ViPNet Client и реализующей следующие функции:
- Запуск cmd.exe, исполнение команд, предназначенных для разведки, и отправка вывода на сервер злоумышленников.
- Зачистка файлов журналов VipNet Client.
- Обход компонента ViPNet «Контроль приложений».
- Реализация reverse shell.
-
Сбор файлов с основной информацией, связанной с работой ViPNet Client:
- ключевая информация;
- файлы конфигурации;
- файлы баз данных (электронная почта, настройки ViPNet Client Firewall и др.);
- текстовые файлы и файлы документов в папках InfoTeCS.
- Передача собранных данных посредством сформированного транспортного конверта по сети ViPNet.
Рассмотрим более подробно последний пункт.
Для эксфильтрации собранных данных с узлов без доступа к интернету на подконтрольные атакующим узлы, имеющие такой доступ, использовался транспортный модуль ViPNet MFTP:

Как видно из документации, для передачи информации на подконтрольный хост атакующим требовалось сформировать собственный транспортный конверт и поместить в него собранные данные.
Формирование конверта начинается с копирования жестко закодированных во вредоносный файл имени конверта "m0yi9)$z.ctl" и адресов отправителя/получателя в заголовок конверта.

При наличии журналов MFTP на координаторе имя конверта, закодированное во вредоносный имплант, предоставляет возможность отследить передачу конверта с атакуемого узла на узел подконтрольный злоумышленникам:

Следующий этап заключается в генерации ключа шифрования:

Из листинга функции видно, что ключ представляет собой псевдослучайную последовательность чисел, которая создается с использованием комбинации функций srand и rand. Каждому значению инициализатора (seed) соответствует своя уникальная последовательность чисел.
С помощью сгенерированного ключа собранные атакующими данные шифруются и копируются в конверт. Отметим, что часть собранных данных предварительно помещается в архив с паролем, который жестко закодирован в коде вредоноса.
Таким образом, структура транспортного конверта злоумышленников имеет следующий вид:

Seed помещается в конверт для восстановления ключа шифрования, которым зашифрованы данные, собранные с системы.
После формирования конверта, он помещается в директорию \InfoTeCS\ViPNet Client\out, которая каждые 3 секунды отслеживается транспортной службой MFTP на предмет появления конвертов, и если конверт найден, то отправляет его на узел назначения через координатор.
Расследование из 2025 года
Вернемся к кейсу с новой цепочкой выполнения.
На этот раз архив с вредоносным обновлением выглядел следующим образом:

Команда extra_command из файла action.inf инициирует запуск файла lumpdiag.exe.

Несмотря на то что утилита lumpdiag является легитимной и подписанной InfoTeCS, она подвержена технике подмены выполнения и при запуске с параметром --msconfig позволяет атакующему загрузить подмененный файл msinfo32.exe c исполнением вредоносного кода:

Таким образом, цепочка выполнения из кейса с реагированием 2025 года практически полностью аналогична цепочке из реагирования 2021-го с той лишь разницей, что подменяется не динамическая библиотека, а exe-файл.
MD5 |
12d1f26a5e0b691766fe008dfc30dc58 |
SHA1 |
e34cd687862295f6c930cabf07b69e82981bca5a |
SHA256 |
e08cd152f069c3f5d3a52a06ee8a786c6bbf7f39500efc7412843767a898c9e7 |
File name |
msinfo32.exe |
File type |
PE32 executable for MS Windows 5.01 (GUI), Intel i386, 4 sections |
File size |
6144 bytes (6KB) |
Comp. timestamp |
2021-11-30 15:30:02 UTC |
Судя по SI-меткам файлов загрузчика и полезной нагрузки, вредоносное обновление было доставлено на систему летом 2022 года, поэтому приведенная выше дата компиляции загрузчика достоверна.
Файл msinfo32.exe является загрузчиком уже финальной полезной нагрузки, которая хранится в файле settings.log. По своей сути файл msinfo32.exe является интерпретатором некоторого байт-кода, который хранится во внешнем файле. Это специально сделано для усложнения анализа функциональности импланта. Всего предусмотрено 12 команд и 1024 ячейки памяти по четыре байта в качестве хранения данных. Среди инструкций можно выделить следующие группы: работа с памятью, подгрузка библиотек и функций, вызов функции и одна арифметическая операция сложения. Этого набора достаточно, чтобы загрузить в память полезную нагрузку и передать на нее управление.
Нагрузка же хранится в виде инструкций, которые исполняет msinfo32.exe. Первой командой всегда идет расшифровка всех данных в этом файле. После этого управление передается уже расшифрованным инструкциям. Если внимательно присмотреться к ходу работы байт-кода, то можно увидеть знакомые шаблоны загрузки и разбора данных. Этот подход очень похож на загрузку в память PE-файла. Здесь есть таблица импортов и релокации, присутствует разделение на разные секции кода и данных. Из этого можно сделать вывод, что у злоумышленников есть протектор, который упаковывает исполняемый PE-файл в виде байт-кода, удаляя все заголовки. Это делает анализ исполняемого файла более затруднительным, чем если бы это был полноценный исполняемый файл для Windows.

После расшифровки содержимого settings.log и подготовки всего необходимого для работы бэкдор в виде шелл-кода загружается в память.
Бэкдор может работать как в пассивном режиме, используя bind для прослушивания жестко закодированного в имплант порта, так и в активном режиме, подключаясь к серверу управления, который также закодирован в образец. В нашем случае адрес был приватным.
Приведем некоторые функции бэкдора:
- Сбор информации о системе жертвы.
- Дамп реестра с системы жертвы.
- Загрузка файлов с системы жертвы на сервер злоумышленников.
-
Рекурсивный сбор информации об атрибутах файлов в директории:
- Filename
- FileSizeHigh
- FileSizeLow
- CreationTime
- LastAccessTime
- LastWriteTime
- Запуск произвольного процесса (командная строка запускаемого процесса передается с сервера управления).
- Запуск вредоносных компонентов, переданных с сервера управления (шелл-код передается с сервера управления).
Кроме того, для обхода Reverse Firewall (ViPNet «Контроль приложений»), встроенного в ViPNet, бэкдор посылает на связанный с модулем драйвер ITCSRF.sys код управления, который соответствует API для отключения ViPNet Reverse Firewall.
В импланте из атаки 2021 года присутствовал похожий функционал, но с другим кодом управления, который разрешал сетевую активность конкретному процессу.
Атрибуция
С высокой степенью уверенности мы связываем атаки 2021–2022 годов, упомянутые в статье, с активностью восточно-азиатских APT-группировок BlueTraveller (aka TaskMasters) и TA428. Наши выводы основаны на результатах расследования, проведенного в 2021 году в инфраструктуре заказчика. Тогда мы обнаружили не только вредоносные программы, связанные с ViPNet, но и образцы, которые мы и наши коллеги по отрасли относим к вышеупомянутым группировкам.
Эти образцы включают в себя:
- Webdav-O;
- Dropbox-O;
- Mail-O.
С другой стороны, атаки 2025 года, о которых сообщили на минувшей неделе коллеги по индустрии, мы не можем атрибутировать к конкретным APT-группировкам — для этого слишком мало данных. Но с высокой степенью уверенности считаем, что они также связаны с деятельностью восточно-азиатских APT-групп или группы по следующим причинам:
- Использование непопулярной уязвимости в механизме обновления ViPNet.
- Использование схемы запуска бэкдора вместе с аналогичными загрузчиками (судя по размерам файлов), которые, скорее всего, создаются кастомными протекторами.
- Использование специфического способа хранения и доставки нагрузки (описан ниже).
Загрузчик считывает файл settings.log и расшифровывает его содержимое. Файл начинается с байта 0xFF, за которым следует 16-байтовый ключ. Такой формат хранения зашифрованной нагрузки в отдельном файле мы наблюдаем в последних атаках с применением ShadowPad Light (aka DEED RAT), который традиционно связывают с деятельностью APT-группировок из Азии. В последних версиях ShadowPad Light используется dbindex.dat, в котором первые 16 байтов — ключ для расшифровки. Впрочем, сами алгоритмы шифрования у ShadowPad Light и атак, связанных с VipNet-бэкдором, различаются.
Все это в совокупности позволяет сравнительно уверенно предполагать, что за атаками, которые маскируются под обновления ViPNet, как в 2021-м, так и в 2025-м стоят восточно-азиатские APT-группы или группа.
Заключение
В результате исследования мы описали два кейса заражения через обновления ПО ViPNet и связали эти атаки с деятельностью кластера восточно-азиатских APT-групп. Рассмотренная схема запуска бэкдора показывает нам, что атакующие продолжают использовать особенности работы ПО ViPNet, о которых известно с 2021 года.
Использование исполняемых файлов, которые были подписаны вендором и уязвимы для различных видов хайджекинга, представляет собой ключевой элемент в построении атак через систему обновления ViPNet. Если в продукте все еще есть другие уязвимые файлы, которые можно использовать для создания цепочек выполнения, то в дальнейшем можно ожидать появления новых вариантов атак, подобных тем, которые описаны в нашем материале.
В свою очередь, возможность отправки кодов управления произвольным драйверам ПО ViPNet позволяет атакующим не только изменять настройки Reverse Firewall, но и конфигурировать по своему усмотрению другие механизмы защиты ViPNet.
Рекомендуем обновить все компоненты ПО ViPNet в вашей инфраструктуре, а для выявления описанной активности предлагаем воспользоваться нашим Sigma-правилом.
Кроме этого (на случай, если атакующие все же обнаружат альтернативный способ использования системы обновления ViPNet), для предотвращения запуска вредоносного обновления можно отключить настройку «Устанавливать обновления автоматически» в системе обновлений ViPNet Client. Это затруднит реализацию атаки.
IOCs
File hashes
md5
228266c8badb851579479b33b5cf3d2e
12d1f26a5e0b691766fe008dfc30dc58
2795108e6e1ca8a2d811c1b978b30020
93c3f44afd4d1d076d44ae3f67d412b2
53bab1645294777034358981aaaa7265
5bf6bc3df619baf2a741dc6d6e00eaae
377ce27fcda6f91647d41d5281f94539
3d16413fb33f7a40fc14ea5df0fcb9be
5109455c200344200a7c22ad6826b787
0abdbb52cf46dc4395008a760a93c542
sha1
3f398a34e2f8be89e974356cec0870d4437c8f53
e34cd687862295f6c930cabf07b69e82981bca5a
e65ab742a4b6ca9f122ab804203c276bfcf81584
21004c62e08082570081c7b5bcbe352269328fa8
37e825d8a8c764946d1e4321cc8293b7be7e784e
b2ade74c9293fe3675b1d6394588f11a2339f5a4
6cf6221c55f4fb9f2de07c075a001490f8b80377
573f604c0f3d7e6e85c74953545e8a298ddbe95b
a72230d9daffa77ab1cd0d0a028d9f2588c35c72
74ad2d8e233ffc5a69b8adaf89b0791e165f78f6
sha256
5a4f2f3b842c89c57cccd2b4ec9113eb60c07c9c8e49606913d67435e8400119
e08cd152f069c3f5d3a52a06ee8a786c6bbf7f39500efc7412843767a898c9e7
f8b37b62242b3dc2a2ed7d7dc6c8b6720f39a46065fbf4833abf5193ddcc8f03
3041cc14c2205402b4e29545d884377df52bebcf4707e3dcf4fc54d918be1736
55c124442ae46da20efd8f9d2896f1b2fb27524df5253069205cd4975de52212
e18da2edfd64ca04da8bc1a5dd34b8eb28f40cfabc9ed6cbaf2cbe39f1c6c2b1
df2fac7b998cd57c193ca7775b108aca39b44c39d621367c0e07bbf3324eb203
a33330d8792fa5fbe14e74ab7e5907d0b38c821fd94cd69ccff38605a14d61ce
da0db47ad6a3c2b00db36b20c6c94612ca7edd61a0f57b7f871fef6c561aa88c
36e6a9224c80126bed06a39cbf2d83bf90a72b6a5b719de216dba3131e105f9d
Приложение 1. Расширенная информация по файловым IOCs
Имя файла |
Хэш-сумма MD5 |
Хэш-сумма SHA1 |
Хэш-сумма SHA256 |
Комментарий |
---|---|---|---|---|
driv_fsa.lzh |
228266c8badb851579479b33b5cf3d2e |
3f398a34e2f8be89e974356cec0870d4437c8f53 |
5a4f2f3b842c89c57cccd2b4ec9113eb60c07c9c8e49606913d67435e8400119 |
Архив обновления с вредоносной нагрузкой 2022 года |
msinfo32.exe |
12d1f26a5e0b691766fe008dfc30dc58 |
e34cd687862295f6c930cabf07b69e82981bca5a |
e08cd152f069c3f5d3a52a06ee8a786c6bbf7f39500efc7412843767a898c9e7 |
Загрузчик шелл-кода 2022 года |
settings.log |
2795108e6e1ca8a2d811c1b978b30020 |
e65ab742a4b6ca9f122ab804203c276bfcf81584 |
f8b37b62242b3dc2a2ed7d7dc6c8b6720f39a46065fbf4833abf5193ddcc8f03 |
Зашифрованный шелл-код 2022 года |
action.inf |
93c3f44afd4d1d076d44ae3f67d412b2 |
21004c62e08082570081c7b5bcbe352269328fa8 |
3041cc14c2205402b4e29545d884377df52bebcf4707e3dcf4fc54d918be1736 |
Файл с командами запуска вредоносной цепочки (одинаковый в 2022 и в 2025 гг.) |
driv_fsa.lzh |
53bab1645294777034358981aaaa7265 |
37e825d8a8c764946d1e4321cc8293b7be7e784e |
55c124442ae46da20efd8f9d2896f1b2fb27524df5253069205cd4975de52212 |
Архив обновления с вредоносной нагрузкой 2021 года |
Unlha32.Dll |
5bf6bc3df619baf2a741dc6d6e00eaae |
b2ade74c9293fe3675b1d6394588f11a2339f5a4 |
e18da2edfd64ca04da8bc1a5dd34b8eb28f40cfabc9ed6cbaf2cbe39f1c6c2b1 |
Динамическая библиотека с вредоносным кодом 2021 года |
action.inf |
377ce27fcda6f91647d41d5281f94539 |
6cf6221c55f4fb9f2de07c075a001490f8b80377 |
df2fac7b998cd57c193ca7775b108aca39b44c39d621367c0e07bbf3324eb203 |
Файл с командами запуска вредоносной цепочки 2021 года |
driv_repair.exe |
3d16413fb33f7a40fc14ea5df0fcb9be |
573f604c0f3d7e6e85c74953545e8a298ddbe95b |
a33330d8792fa5fbe14e74ab7e5907d0b38c821fd94cd69ccff38605a14d61ce |
Вредоносный файл для кражи и эксфильтрации данных из вредоносного архива обновлений 2021 года |
driv_api.exe |
5109455c200344200a7c22ad6826b787 |
a72230d9daffa77ab1cd0d0a028d9f2588c35c72 |
da0db47ad6a3c2b00db36b20c6c94612ca7edd61a0f57b7f871fef6c561aa88c |
Интерактивный шелл из вредоносного архива обновлений 2021 года |
driv_config.exe |
0abdbb52cf46dc4395008a760a93c542 |
74ad2d8e233ffc5a69b8adaf89b0791e165f78f6 |
36e6a9224c80126bed06a39cbf2d83bf90a72b6a5b719de216dba3131e105f9d |
Интерактивный шелл из вредоносного архива обновлений 2021 года |
Приложение 2. Правило Sigma
Для обнаружения описанной вредоносной активности можно использовать следующее Sigma-правило:
title: 4RAYS_WIN_MaliciousVipNetUpdate_rule
id: 65cd0e12-a0ed-4428-89b8-42ac18dec130
status: experimental
description: Malicious VipNet update package contains malware sample disguised as msinfo32.exe sample so that attacker can execute search order exe hijack and run arbitrary code
author: SOLAR 4RAYS
date: 2025-04-14
modified: 2025-04-14
logsource:
category: process_creation
product: windows
detection:
MSInfoPath:
Image|startswith:
- c:\windows\system32
- c:\windows\syswow64
- c:\windows\winsxs
ProcessChain:
EventID:
- 1
- 4688
ParentImage|endswith: lumpdiag.exe
Image|endswith: msinfo32.exe
condition: ProcessChain and not MSInfoPath
tags:
- attack.initial-access
- attack.t1195.002
level: high
falsepositives:
- no known false-positives
Суть правила: мы ищем события запуска процесса msinfo32.exe от процесса lumpdiag.exe при условии, что msinfo32.exe расположен не в системных директориях.