六步实施虚拟机逃逸, 拿下VMware ESXi 虚拟化管理程序完全控制权

空城:) 发布于 26 天前 1214 次阅读 无~ 1103 字 最后更新于 26 天前 预计阅读时间: 5 分钟


AI 摘要

这篇文章详细介绍了通过串联多个漏洞实施虚拟机逃逸攻击VMware ESXi虚拟化管理程序的过程,整个攻击分为6个步骤。首先禁用VMware原生驱动以获取硬件直接访问权限;接着利用“自带易受攻击驱动程序”技术加载恶意驱动至Windows内核;随后通过HGFS文件拖放请求泄露VMX进程内存地址;再将Shellcode写入VMX进程内存并劫持执行流;然后实现虚拟机逃逸,打破虚拟机与宿主机隔离边界;最后安装VSOCKpuppet后门组件,建立隐蔽通信链路以远程控制ESXi主机。整个过程利用了CVE-2025-22224(9.3分,任意写入漏洞逃逸至内核)、CVE-2025-22225(8.2分,任意写入漏洞逃逸至内核)、CVE-2025-22226(7.1分,HGFS越界读取导致VMX内存泄露)等漏洞,该攻击工具包可适配5.1至8.0版本的155个ESXi系统版本。

  黑客通过串联多个漏洞成功实施虚拟机逃逸, 整个攻击过程总共分为6个步骤,包括:禁用VMware驱动、加载漏洞驱动、泄露VMX内存地址、VMX地址写入Shellcode、虚拟机逃逸、安装VSOCKpuppet。在这个攻击过程中,黑客利用的漏洞信息如下:

CVE编号
CVSS评分
漏洞描述
CVE-2025-22226
7.1
HGFS越界读取导致VMX内存泄露
CVE-2025-22224
9.3
任意写入漏洞导致从VMX沙箱逃逸至内核
CVE-2025-22225
8.2
任意写入漏洞导致从VMX沙箱逃逸至内核

(1).禁用VMware驱动

黑客首先上传了一个主控程序:exploit.exe,该程序执行后会禁用VMware原生驱动程序以获取硬件的直接访问权限,其执行流程如下:

(2).加载漏洞驱动

禁用VMware驱动后,黑客再利用“自带易受攻击驱动程序”(BYOVD)技术,将一个未经签名的恶意驱动程序MyDriver.sys加载至Windows内核中,虚拟化管理程序一旦存在漏洞,攻击者就能够突破客户机虚拟机的限制,进而攻陷主机上承载的所有业务负载。其执行流程如下:

(3).泄露VMX内存地址

黑客首先在虚拟机内通过HGFS发起一次看似正常的文件拖放请求,但在其中嵌入一段精心构造的约50KB数据Payload,VMX进程在宿主机侧解析该请求时因漏洞触发越界读取,从而把自身内存中的一部分数据一并返回给攻击者,这些被泄露的数据中包含了 VMX 进程内部的内存指针(如 0x7ff…),黑客控制的组件(如MyDriver.sys)据此获得了VMX在宿主机内存中的真实地址,最终实现了对VMX位置的精准定位,为后续更高权限的操控或逃逸打下基础。其执行流程如下:

 

(4).将Shellcode写入VMX

在已经掌握了VMX内存位置之后,由黑客控制的组件(如MyDriver.sys)就可以把一段包含恶意逻辑的代码写入到VMX进程的内存空间中,并通过篡改关键函数指针或回调地址,把原本应当执行的正常流程“重定向”到这段新写入的代码上,从而使VMX在后续运行时自动跳转并执行这些被植入的指令,结果就是VMX的内存里同时存在了攻击者的代码以及指向它的控制指针,VMX 自身的执行流被悄悄劫持并受攻击者控制。其执行流程如下:

(5).虚拟机逃逸

当恶意代码已经被植入并接管了VMX的执行流后,原本只应在 Windows 虚拟机内部运行的指令就会被VMX带到了更高权限的宿主机上下文中执行,从而打破虚拟机与宿主机之间的隔离边界,使攻击逻辑从来宾系统“跳”到了ESXi主机上运行,这一步标志着虚拟机逃逸真正发生。其执行流程如下:

(6).安装VSOCKpuppet

黑客利用攻击代码通过触发VMCI回调让VMX执行已被劫持的流程,在宿主机内核中定位并获得vmkernel的关键地址以完全脱离沙箱限制,随后以内核级权限把一个后门组件VSockpuppet写入系统并注册到服务体系中,这款恶意软件通过虚拟套接字VSOCK实现通信, 该接口是一种专为主机与客户机交互设计的高速通信通道。黑客劫持这一通道后,构建出一条隐秘的命令执行链路,彻底绕过了传统的网络监控手段。

     黑客通过修改inetd配置并重新加载服务把它绑定到端口,再利用VSock在虚拟机与宿主机之间建立隐蔽通信,最终攻击者就可以从虚拟机侧直接远程连接并控制ESXi主机本身。其执行流程如下:

这款攻击工具包被设计成一把 “通用密钥”,可适配涵盖5.1至8.0版本的155个ESXi系统版本