黑客通过串联多个漏洞成功实施虚拟机逃逸, 整个攻击过程总共分为6个步骤,包括:禁用VMware驱动、加载漏洞驱动、泄露VMX内存地址、VMX地址写入Shellcode、虚拟机逃逸、安装VSOCKpuppet。在这个攻击过程中,黑客利用的漏洞信息如下:
|
|
|
|
|
|
|
HGFS越界读取导致VMX内存泄露 |
|
|
|
任意写入漏洞导致从VMX沙箱逃逸至内核 |
|
|
|
任意写入漏洞导致从VMX沙箱逃逸至内核 |
(1).禁用VMware驱动
黑客首先上传了一个主控程序:exploit.exe,该程序执行后会禁用VMware原生驱动程序以获取硬件的直接访问权限,其执行流程如下:

禁用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系统版本。
Comments NOTHING