В декабре 2025 года специалисты компании Huntress зафиксировали сложную кибератаку, целью которой стала эксплуатация уязвимостей в гипервизоре VMware ESXi. Расследование показало, что злоумышленники использовали мощный набор инструментов, который, вероятно, был разработан как эксплойт для нулевых уязвимостей (zero-day) более чем за год до их публичного раскрытия компанией VMware. Анализ артефактов указывает на разработчика, действующего в китайскоязычной среде, что добавляет инциденту геополитический контекст.
Описание
Изначально злоумышленники получили доступ к корпоративной сети через скомпрометированный VPN-шлюз SonicWall. Несмотря на сложность последующей атаки, именно устаревший или уязвимый VPN стал слабым звеном в защите. Этот случай лишний раз доказывает, что фундаментальные меры безопасности по-прежнему критически важны. После получения доступа злоумышленники переместились по сети, используя учетные данные администратора домена, и вышли на контроллеры домена.
На основном контроллере домена была развернута специальная утилита, названная исследователями MAESTRO. Она координировала сложную многоэтапную атаку по "побегу" из виртуальной машины (VM escape). Сначала с помощью стандартной утилиты devcon.exe отключались драйверы VMware VMCI (Virtual Machine Communication Interface). Это необходимо для получения эксклюзивного низкоуровневого доступа к аппаратному интерфейсу VMCI. Затем, используя открытый инструмент KDU (Kernel Driver Utility) для обхода проверки цифровой подписи драйверов (Driver Signature Enforcement, DSE), в память ядра загружался вредоносный неподписанный драйвер MyDriver.sys.
Именно этот драйвер содержал основную логику эксплуатации. Его работа начиналась с определения точной версии ESXi на хосте через специальные команды VMware Guest SDK. Это важно, так как эксплойт использовал таблицу из 155 предварительно рассчитанных смещений в памяти, охватывающих версии ESXi с 5.1 по 8.0. После этого драйвер, используя уязвимость в подсистеме HGFS (Host-Guest File System), осуществлял утечку памяти из процесса VMX (Virtual Machine Executable), что позволяло обойти защиту ASLR и вычислить базовый адрес этого процесса.
Получив возможность читать и писать память VMX, эксплойт размещал в ней два этапа шелл-кода и бэкдор - исполняемый ELF-файл для Linux, названный VSOCKpuppet. Путем перезаписи служебного указателя функции и отправки специального сообщения через VMCI злоумышленники заставляли процесс VMX выполнить свой шелл-код. Первый этап шелл-кода искал в памяти ядра ESXi необходимые структуры, а второй - разворачивал бэкдор на самом гипервизоре.
Бэкдор VSOCKpuppet отличался высокой скрытностью. Он устанавливал соединение с атакующими не по обычной сетевой инфраструктуре, а через интерфейс VSOCK, предназначенный для высокоскоростного обмена между виртуальными машинами и гипервизором. Трафик VSOCK невидим для межсетевых экранов и сетевых систем обнаружения вторжений (IDS). Для взаимодействия с бэкдором злоумышленники использовали специальный клиент для Windows, который также был обнаружен в их арсенале.
Анализ путей сборки (PDB-путей) в эксплойтах пролил свет на происхождение инструментария. Так, путь к драйверу MyDriver.sys содержал папку с названием на упрощенном китайском: «全版本逃逸--交付» («Побег для всех версий - поставка»). Дата в пути (19 февраля 2024 года) указывает, что эксплойт был собран более чем за год до публикации бюллетеней безопасности VMware в марте 2025 года, что подтверждает его статус потенциального нулевого дня. При этом инструкция по использованию клиента была на английском, что может говорить о подготовке инструмента для широкого распространения или продажи.
Эксперты Huntress с умеренной уверенностью связывают использованные техники с тремя уязвимостями, исправленными VMware в марте 2025 года: CVE-2025-22226 (утечка памяти через HGFS), CVE-2025-22224 (повреждение памяти через VMCI) и CVE-2025-22225 (произвольная запись, позволяющая выйти из песочницы VMX). Конечной целью атаки, вероятно, было развертывание программ-вымогателей (ransomware) на всех виртуальных машинах хоста, однако действия были пресечены командой реагирования Huntress и Центром управления безопасностью (SOC).
Этот инцидент служит серьезным напоминанием об угрозах для виртуальной инфраструктуры. Во-первых, изоляция виртуальных машин не является абсолютной, и уязвимости гипервизора ставят под угрозу все рабочие нагрузки на хосте. Во-вторых, критически важно агрессивно обновлять ESXi, особенно учитывая, что эксплойт поддерживал множество устаревших версий. В-третьих, мониторинг сети имеет слепые зоны, такие как трафик VSOCK, поэтому необходимо отслеживать аномальные процессы на самих хостах ESXi, например, с помощью команды "lsof -a". Наконец, защитникам следует внимательно следить за техниками использования уязвимых легитимных драйверов (Bring Your Own Vulnerable Driver, BYOVD) для обхода систем безопасности.
Индикаторы компрометации
SHA256
- 2bc5d02774ac1778be22cace51f9e35fe7b53378f8d70143bf646b68d2c0f94c
- 37972a232ac6d8c402ac4531430967c1fd458b74a52d6d1990688d88956791a7
- 4614346fc1ff74f057d189db45aa7dc25d6e7f3d9b68c287a409a53c86dca25e
- c3f8da7599468c11782c2332497b9e5013d98a1030034243dfed0cf072469c89
- dc5b8f7c6a8a6764de3309279e3b6412c23e6af1d7a8631c65b80027444d62bb
YARA
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | rule MyDriverSys { meta: author = "RussianPanda" description = "Detects the malicious driver - MyDriver.sys" hash = "c3f8da7599468c11782c2332497b9e5013d98a1030034243dfed0cf072469c89" date = "12/31/2025" strings: $s1 = "SetGuestInfo 7 11111111" $s2 = "found ESXi%d.%d build-%d" $s3 = "current build is not surpported" condition: uint16(0) == 0x5A4D and all of them } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | rule VSOCKpuppet { meta: author = "RussianPanda" description = "Detects VSOCKpuppet payload" hash = "c3f8da7599468c11782c2332497b9e5013d98a1030034243dfed0cf072469c89" date = "12/31/2025" strings: $s1 = "received command:%s" $s2 = "MCISock_GetAFValue failed" $s3 = "recv_response failed" $s4 = "send_msg_len failed" condition: uint32(0) == 0x464C457F and all of them } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | rule MAESTRO { meta: author = "RussianPanda" description = "Detects MAESTRO payload" hash = "37972a232ac6d8c402ac4531430967c1fd458b74a52d6d1990688d88956791a7" date = "12/31/2025" strings: $s1 = "devcon.exe disable \"PCI\\VEN_15AD&DEV_0740\"" $s2 = "devcon.exe disable \"ROOT\\VMWVMCIHOSTDEV\"" $s3 = "Open SymbolicLink Failed" wide $s4 = "Done!!!" ascii wide condition: uint16(0) == 0x5A4D and all of them } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | rule GetShellPlugin { meta: author = "RussianPanda" description = "Detects GetShell Plugin (client)" hash = "4614346fc1ff74f057d189db45aa7dc25d6e7f3d9b68c287a409a53c86dca25e" date = "12/31/2025" strings: $s1 = "InfDefaultInstall.exe .\\vsock.inf" $s2 = "InfDefaultInstall.exe .\\vmci.inf" $s3 = "invalid SERVER_CID:PORT" condition: uint16(0) == 0x5A4D and all of them } |