VCenter详解
vCenter 详解
本文定位:从零讲清 vSphere 体系(ESXi Hypervisor + vCenter 管理平面)的架构与攻击面,逐层深入指纹识别、高危漏洞利用、后渗透(凭证窃取、vpxuser 解密、SAML 伪造)、ESXi 持久化与勒索 TTP,最后给出检测与加固方案。
建议配合:本地用 Workstation 虚拟机搭一套 ESXi 7.0/8.0 + vCenter Server(vCSA) 动手复现。
一、基础
1.1 vSphere 全景
vSphere 是 VMware 的虚拟化平台品牌,实际由三层组成:
| 组件 | 角色 | 攻击者视角 |
|---|---|---|
| ESXi | 裸金属 Hypervisor,承载所有虚拟机 | 拿下一台 = 拿到其上所有 VM 的磁盘/内存/控制台 |
| vCenter Server | 管理平面,集中管理多台 ESXi(集群、HA、DRS、迁移、模板) | 拿下 = 拿到整个数据中心:所有主机、所有 VM、所有密钥 |
| vSphere Client | Web 管理界面(HTML5,7.0 起唯一入口) | 未授权 RCE 漏洞最集中的暴露面 |
一句话理解层级关系:
1 | vCenter Server (vCSA, 一台特殊的VM) |
关键认知:vCenter 在红队评估中的价值等同于域控,甚至更高。
- 它是虚拟化域的”大脑”:持有每台 ESXi 的管理凭据(vpxuser)、SSO 身份库(vmdir)、整库 VM 清单与加密密钥托管。
- 很多企业把 vCenter 直接加进 AD 域,或用域账号绑定 SSO,vCenter 又常常与备份(Veeam)、监控(vROps)、日志(vRLI)联动 —— 一条天然的横向链。
- vCenter 自身也是一台 VM,磁盘就在自家 datastore 上,可以”自己偷自己”。
vCenter 有两种部署形态:
- vCSA(vCenter Server Appliance):预打包的 Photon OS 虚拟机,7.0 起唯一支持的形态。本文默认按 vCSA 讲。
- vCenter for Windows:6.x 时代存在,7.0 起废弃 —— 但老环境仍可能遇到,思路一致(服务跑在 Windows 上,后渗透换成 Windows 那一套)。
1.2 ESXi 架构
ESXi 不是 Linux。它是 VMkernel 微内核 + BusyBox 用户态的组合,体积极小、默认不开 SSH、没有常规包管理器 —— 但该有的攻击面一点不少:
1 | ┌─────────────────────────────────────────────────────────┐ |
要点:
- hostd:ESXi 的大脑,443 端口上的完整 vSphere API 实现。只要 443 通,就算 SSH 关闭、shell 禁用,API 能做的事情一样不少(列 VM、开关机、快照、读写 datastore、启停服务)。
- vpxa:vCenter 装到主机后自动部署的代理,以 vpxuser 身份与 hostd 通信。vpxuser 是每台被 vCenter 管理的主机上真实存在的超级管理员账号,密码由 vCenter 随机生成并定期轮换,明文/可解密形态托管在 vCenter 侧。
- VMX / World:每台 VM 是一个 VMX 进程(World),
esxcli vm process list能看到 World ID,勒索软件就是按 World 强杀 VM 的。 - datastore:VMFS/NFS 卷,挂载在
/vmfs/volumes/。一个 VM 的目录里典型文件:vm.vmx(配置)、vm-flat.vmdk(裸磁盘)、vm.vmsn(快照内存)、vm.nvram、vmware.log。vmx 的 annotation 字段经常被运维写上账号密码注释,这是老牌的翻车点。 - ESXi 无传统包管理,软件以 VIB(vSphere Installation Bundle) 形式安装 —— 这既是官方更新机制,也是持久化后门的主要载体。
- 没有第三方杀软常驻(8.0 起支持 Carbon Black Workload sensor,但绝大多数环境没部署),所以传统思路里 ESXi 被称为”杀软真空区”。
1.3 vCenter 架构
vCSA 是一台 Photon OS 虚拟机,里面跑着一堆 VMware 自研服务(由 vmon-cli / service-control 统一管理)。红队需要关心的核心服务:
| 服务 | 作用 | 攻击价值 |
|---|---|---|
| vpxd | vCenter 核心守护进程,vSphere API 后端,管理所有 ESXi 连接 | 持有 vpxuser 加密密码的解密逻辑;其配置文件含 DB 凭据 |
| vmdird (vmdir) | VMware Directory Service,即 SSO 身份库,本机 LDAP(389/636) | 存所有 SSO 用户、密码哈希、IdP 签名证书私钥 |
| STS (vmware-sts) | Security Token Service,签发 SAML 断言 | 拿到签名证书私钥 = 可伪造任意 SSO 用户登录(Golden SAML) |
| VCDB (vPostgres) | PostgreSQL(VCDB 库),存全部清单/权限/密码密文 | 直接 SQL 查 vpxuser 等加密凭据 |
| vsphere-ui | HTML5 客户端 Tomcat | 历史多次未授权 RCE 的宿主(21972/21985) |
| analytics (ceip) | 客户体验计划/日志收集 | CVE-2021-22005 未授权写文件 → root |
| VAMI (applmgmt) | 5480 设备管理界面 | root 凭据登录,可改网络/开 SSH/看备份 |
1 | vSphere Client(443 /ui) ──▶ reverse proxy ──▶ vsphere-ui / vpxd / sts / analytics ... |
关键文件系统路径(root 视角):
1 | /etc/vmware-vpx/vpxd.cfg # vpxd 主配置(DB 连接信息等) |
1.4 认证体系
vSphere 的认证体系分三层,攻击时必须分清”打的是哪一层”:
- SSO(vmdir):vCenter 自己的身份库,默认域为
vsphere.local,默认超级管理员administrator@vsphere.local(安装时设密码)。SSO 用户与 AD 无关,除非做了身份源集成。 - AD 集成:vCenter 可把 AD 作为身份源(LDAPS 绑定 / 集成 Windows 认证 / 7.0U3+ 的 Identity Federation)。此时:
- 绑定用的服务账号凭据会持久化在 vCenter 内(vmdir / vpxd 配置),拿下 vCenter 往往能直接拖出高权限域账号;
- vCenter 本机也可能加入了域,拥有机器账号(如
VC01$)。
- vpxuser:vCenter 在每台 ESXi 上创建的本地管理员账号,仅用于 vpxd 管理主机。密码加密存储在 VCDB,解密密钥硬编码在 vpxd 二进制里(见 4.3)。即使主机开了 Lockdown Mode,vpxuser 的 API 访问依然有效。
登录入口对照:
| 入口 | 端口 | 认证对象 |
|---|---|---|
vSphere Client /ui | 443 | SSO(vsphere.local 或 AD) |
vSphere API /sdk(SOAP) | 443 | SSO |
| VAMI | 5480 | vCSA root( appliance 级,非 SSO) |
| ESXi Host Client | ESXi:443 | ESXi 本地账号(root/vpxuser…) |
| SSH | 22 | vCSA root / ESXi 本地账号 |
1.5 端口与文件
vCenter Server(vCSA)
| 端口 | 服务 | 说明 |
|---|---|---|
| 443/tcp | HTTPS 反向代理 | vSphere Client(/ui)、vSphere API(/sdk)、SSO(/sts,/sso)、analytics、vAPI 全走这里 |
| 80/tcp | HTTP | 跳转 443 |
| 22/tcp | SSH | 默认关闭,VAMI/DCUI 可开启 |
| 5480/tcp | VAMI | 设备管理界面(root 登录) |
| 389/636 | vmdir LDAP/LDAPS | 仅本机/受信网络,SSO 身份库 |
| 5432 | PostgreSQL | 仅本机,VCDB |
| 8080 | Tomcat HTTP | 内部(vsphere-ui 等) |
| 9443 | 旧 Web Client | 6.x 遗留 |
ESXi
| 端口 | 服务 | 说明 |
|---|---|---|
| 443/tcp | hostd HTTPS | vSphere API + ESXi Host Client,最核心攻击面 |
| 80/tcp | HTTP | 跳转 443 |
| 22/tcp | SSH | 默认关闭 |
| 902/tcp | vmware-authd | 远程控制台/主机间认证 |
| 427/tcp,udp | SLP (slpd) | 历史 RCE 源(CVE-2019-5544/2020-3992/2021-21974),7.0U2 起默认禁用 |
| 5988/5989 | CIM (sfcbd) | 7.0 起默认禁用 |
| 8000/tcp | vMotion | 迁移流量 |
ESXi 关键文件与目录
1 | /etc/vmware/esx.conf # 主机主配置 |
二、侦察
2.1 指纹识别
现代企业虚拟化面大量暴露公网(尤其 VPN 替代方案、外包运维需求),测绘语法:
| 平台 | 语法 |
|---|---|
| Fofa | app="VMware-vCenter" / app="VMware-ESXi" / body="com.vmware.vsan" |
| Hunter | web.title="vSphere" / web.title="ESXi" |
| Shodan | product:"VMware ESXi" / http.html:"VMware vCenter" |
| ZoomEye | app:"VMware vCenter" |
HTTP 指纹要点:
- vSphere Client 登录页标题含 “VSPHERE CLIENT”(7.x/8.x),路径
/ui/; - ESXi Host Client 标题含 “VMware ESXi”,路径
/ui/#/host; GET /sdk返回 SOAP 端点 XML(vimServiceVersions.xml可看 API 版本);/websso/SAML2/metadata返回 SSO 元数据,泄露实体 ID 与 SSO 域名;- 5480 出现即确认 vCSA。
1 | # 快速判型 |
端口扫描:
1 | # vCenter |
区分 vCenter 与独立 ESXi:vCenter 的 /ui 登录后是清单树;ESXi 的 /ui 只有单台主机。端口上 5480 几乎是 vCSA 的标志。
2.2 版本识别
1 | # ESXi Host Client 页面自带 build 号(登录页HTML里有 build-XXXXXXX) |
拿到 build 后对照 VMSA 通告确定缺口。重点盯三个历史家族:
- vSphere Client 插件系列(21972 / 21985 / 22005,2021);
- ESXi OpenSLP 系列(5544 / 3992 / 21974,2019-2023,勒索软件最爱);
- vCenter DCERPC 系列(20888 / 37079 / 37080,2023-2024,近年在野)。
2.3 弱口令
| 位置 | 默认/常见弱口令 |
|---|---|
vCenter SSO administrator@vsphere.local | 安装时设置;历史版本默认过 vmware;弱口令字典必测 |
| VAMI root (5480) | 6.x 时代默认 vmware;弱口令必测 |
| ESXi root (443/SSH) | 安装时设置;实战中大量 root/vmware123、root/Root123、与设备管理口同密码 |
| vpxuser | 密码随机,不可爆破,只能从 vCenter 侧解密 |
ESXi dcui | 控制台 UI 账号,默认锁定 |
注意:SSO 有账号锁定策略(默认 5 次失败锁 15 分钟?不同版本策略不同),对 administrator@vsphere.local 喷洒要克制;实战更常见的是先打别的入口拿凭据,再回来撞库(运维复用密码极其普遍,尤其 vCenter root / ESXi root / 堡垒机密码)。
已获得低权限 SSO 账号后(比如钓鱼拿到的只读账号),要立刻检查:
- 权限是否挂错(大量环境把管理员角色错配给普通用户);
- Global Permissions 是否泄露;
- 能否看 VM 控制台(
VirtualMachine.Interact.ConsoleInteract)。
2.4 域内定位
进了内网(拿到一台域机器)后,定位虚拟化资产:
1 | # 常见主机名 |
线索价值排序:
- vCenter 加入了域 → 机器账号
VC01$,且 LDAPS 身份源的绑定账号大概率是高权限服务账号,拿下 vCenter = 直接拖域凭据; - SSO Administrators 组里挂了 AD 安全组 → 打到该组成员的机器 = 拿到 vCenter 管理员;
- Veeam 备份服务器凭据库里必然存着 vCenter/ESXi 凭据(另一条经典链:Veeam → vCenter)。
三、漏洞利用
3.1 vCenter 漏洞
| CVE | 年份 | 条件 | 类型 | 影响 | 备注 |
|---|---|---|---|---|---|
| CVE-2021-21972 | 2021 | 未认证 | 文件上传→RCE | root | vROps 插件 uploadova,利用最多 |
| CVE-2021-21973 | 2021 | 未认证 | SSRF | 探测内网 | 与 21972 同批次 |
| CVE-2021-21985 | 2021 | 未认证 | JMX 反序列化→RCE | root | vSAN health 插件 |
| CVE-2021-22005 | 2021 | 未认证 | 任意文件写→RCE | root | analytics 服务 |
| CVE-2023-20867 | 2023 | 已认证(有 Guest Ops 权限) | 认证绕过 | VM 内执行 | Tools 命令执行鉴权缺陷 |
| CVE-2023-20888/20889 | 2023 | 20888 未认证 | DCERPC 堆溢出→RCE | root | 443 暴露 |
| CVE-2024-37079/37080 | 2024 | 未认证 | DCERPC 堆溢出→RCE | root | 在野利用,勒索组织常用 |
| CVE-2024-37085 | 2024 | 已认证(非管理员) | 权限提升 | 管理员 | DCERPC 访问控制缺陷 |
服务架构注:vCSA 上绝大多数服务以 root 运行(服务间没有降权),所以以上 RCE 全部直接落 root shell —— 这也是 vCenter 漏洞危害普遍拉满的原因。
3.2 ESXi 漏洞
| CVE | 年份 | 条件 | 类型 | 备注 |
|---|---|---|---|---|
| CVE-2019-5544 | 2019 | 未认证 | OpenSLP 堆溢出→RCE | 427 端口,2020 年末在野 |
| CVE-2020-3992 | 2020 | 未认证 | OpenSLP UAF→RCE | 同上 |
| CVE-2020-4004~4010 | 2020 | 已认证 | USB 控制器系列→VM逃逸 | VMSA-2020-0027 |
| CVE-2021-21974 | 2021 | 未认证 | OpenSLP 堆溢出→RCE | ESXiArgs 勒索软件入口 |
| CVE-2021-22015 | 2021 | 已认证(shell管理员) | sudo 配置缺陷→root | 本地提权 |
| CVE-2023-20900 | 2023 | 未认证 | OpenSLP DoS | 信号:环境里有老旧ESXi |
| CVE-2023-20867 | 2023 | 经vCenter已认证 | Guest Ops 鉴权绕过 | VM内低权执行 |
| CVE-2024-22252/22253 | 2024 | 已认证 | XHCI USB UAF→沙箱逃逸 | VM→VMkernel |
| CVE-2025-22225 | 2025 | 已认证(VM内) | 堆溢出→逃逸至VMkernel root | 在野利用(VMSA-2025-0004) |
VM 逃逸类漏洞实战权重较低(需要先有 VM 内立足点 + 主机开着对应虚拟硬件),但勒索/APT 组织(如利用 2025-22225 的行动)已经证明其在野可行性。
3.3 周边组件
| 组件 | CVE | 说明 |
|---|---|---|
| Workspace ONE Access / Identity Manager | CVE-2022-22954 | Freemarker SSTI 未认证 RCE,与 vCenter 共享 SSO 生态 |
| Workspace ONE Access | CVE-2022-22972 | 管理控制台认证绕过 |
| vRealize/vROps | CVE-2021-21975 | 未认证 SSRF,可窃取管理凭据 |
| Veeam Backup & Replication | CVE-2023-27532 等 | 凭据库未授权读取 → 拿 vCenter/ESXi/域凭据 |
| VMware Horizon | CVE-2022-22966 等 | 连接服务器侧攻击面 |
现实攻击链里,Veeam→vCenter 和 vROps→vCenter 出现频率不亚于直接打 vCenter:备份/运维组件存储着整套虚拟化凭据。
3.4 重点利用
CVE-2021-21972(vROps 插件任意文件上传 → root)
vSphere Client 的 vRealize Operations 插件暴露 /ui/vropspluginui/rest/services/uploadova,接收 tar 包并以 .. 路径穿越解压,可写任意文件(服务以 root 运行):
1 | # 1. 构造tar:把webshell写到 STS 服务的 webapps/ROOT 下(常见公开PoC落点) |
也可直接写 /root/.ssh/authorized_keys 拿 SSH。受影响:6.5/6.7/7.0 各早于修复版本。探测:对 /ui/vropspluginui/rest/services/uploadova 发空 POST,返回 500/400 而非 404 即可能存在。
CVE-2021-22005(analytics 任意文件写 → root)
analytics(CEIP)服务提供遥测接收接口,_i 参数可控制写入路径(经典公开 PoC 走 /etc/cron.d,由 root cron 执行):
1 | # 探测 |
影响 6.5/6.7/7.0(analytics 服务开启即受影响,默认开启)。该漏洞自动化利用门槛极低,2021 年后长期霸榜实战。
CVE-2021-21985(vSAN health 插件 JMX RCE → root)
vSphere Client 的 vSAN health check 插件把 REST 请求代理到内部 JMX MBean,未认证即可反射调用 → Runtime.exec:
1 | POST /ui/h5-vsan/rest/proxy/service/&vsanProviderUtils_setVsanHealthService HTTP/1.1 |
公开 PoC(GitHub 搜 CVE-2021-21985)内置了从命令执行到启用 ESXi SSH 的多条利用链。影响 6.5/6.7/7.0。
CVE-2021-21974(ESXi OpenSLP 堆溢出 → root)
老版本 ESXi(6.5/6.7/7.0 早期)427 端口的 SLP 服务存在堆溢出,未认证 RCE。2023 年起被 ESXiArgs 勒索软件大规模在野利用:
1 | # 探活 |
打完记得先 sleep 确认服务没崩,落地首选写 authorized_keys(网络稳定)。
CVE-2024-37079/37080(vCenter DCERPC 堆溢出)
vCenter 7.0/8.0 的 DCERPC 协议实现(443 暴露)存在多个堆溢出,未认证 RCE,2024 年中起被勒索组织在野利用。此类漏洞利用复杂度高,实战更常见的是等公开 PoC 成熟后批量打;红队评估中更现实的价值是:驱动客户升级 + 检测验证。
VM 逃逸:CVE-2025-22225
ESXi 7/8 VMX 沙箱逃逸(堆溢出 → VMkernel 权限),微软威胁情报团队发现并证实在野利用。需要 VM 内已执行代码。红队场景意义:证明”单台 VM 沦陷 → 整台主机沦陷”的路径存在,推动客户部署 vTPM/Secure Boot/Trust Authority 与及时补丁。
四、vCenter 后渗透
拿到 vCenter root(无论从哪个 CVE 进来)之后,目标只有三个:偷凭据、接管身份、铺持久化。
4.1 立足点
1 | # vCSA = Photon OS,root shell 后先看基本盘 |
日志位(既是信息源也是后续清理/对抗对象):
1 | /var/log/vmware/vpxd/vpxd.log # 核心 |
4.2 凭证收集
系统级
1 | cat /etc/shadow # vCSA root 哈希(SHA-512 crypt,可离线爆破,但root已是你的) |
VCDB(Postgres)直连
1 | # 找DB凭据 |
SSO 身份库(vmdir)
1 | # 离线解析主文件(文件模式600,root可读) |
data.mdb 里能拿到的三样东西:全部 SSO 用户与哈希(加盐哈希,可尝试离线破解弱口令)、IdP 签名证书+私钥(4.4 的核心)、AD 身份源绑定信息(若集成了 AD)。
AD 集成凭据
vCenter 以 AD 为身份源时,用于查询 AD 的绑定账号(往往是有”读全部AD”权限的服务账号,甚至 Domain Admin)凭据会持久化在 vCenter 内:
1 | grep -riE "bind|ldap|domain" /etc/vmware-vpx/ /usr/lib/vmware-vpx/ 2>/dev/null | grep -iv binary | head -30 |
若 vCenter 加入了域,/etc/krb5.keytab 存在机器账号密钥,可离线提取用于 Kerberos 操作(如 S4U2Self 枚举、针对该机器账号的攻击)。
4.3 vpxuser 解密
原理:vpxd 为每台 ESXi 生成随机 vpxuser 密码,用对称加密后存入 VCDB(vpdx_user 表),解密密钥硬编码在 vpxd 二进制中。社区已有成熟解密脚本(GitHub 搜索 vpxd decrypt / vcenter password extractor),输入为:DB 凭据 + 密文,输出为明文。
1 | # 流程总结(细节以所用脚本为准) |
拿到某台主机的 vpxuser 明文后,它就是该 ESXi 的完整管理员:Lockdown Mode 不影响 vpxuser,SSH 关闭也不影响 API。
1 | govc about -u 'vpxuser@esxi01' -k=true # 直接以主机API身份连 |
为什么这招致命:vCenter 域里可能有几十台 ESXi,每台一个 vpxuser,一次解密、全集群沦陷,且不需要知道任何人的登录密码。
4.4 SAML 伪造
原理(horizon3.ai 公开研究):SSO 登录时 STS 用自签名证书私钥签发 SAML 断言;该私钥就存在 vmdir(data.mdb)里。拿到私钥就能自己签发”我是 administrator@vsphere.local“的断言,完全绕过密码与登录流程。
1 | # 1) 从 vmdir 提取 IdP 签名证书+私钥(root shell 下) |
特点与对抗要点:
- 不需要改密码就能修:只要私钥还在,改 SSO 管理员密码无效;必须轮换 STS 证书;
- 伪造断言不经过 STS 签发流程 →
sts.log里没有对应 issuance 记录,但登录会话真实存在 —— 这是核心检测点(见 6.1); - 同一套 SSO 还被 vROps/vRLI/HCX 等产品联邦信任 → 私钥 = 整个 VMware 产品族的通行证;
- 断言有效期较短(分钟级),但工具可随时重签,等价于持久后门。
4.5 接管数据中心
有了 SSO 管理员(或 vpxuser),用 govc(go 写的 vSphere CLI)把环境摸透:
1 | export GOVC_URL='https://administrator@vsphere.local:Passw0rd@vcenter.corp.com' |
高价值动作:
1 | # 查看某VM的配置(vmx注释/加密状态/宿主机) |
Guest Operations 是被严重低估的横向神器:vCenter 管理员 + 任一 VM 的本地账号 = 通过 VMware Tools 在所有能连的 VM 上批量执行命令(Windows/Linux 通吃,流量混在正常 Tools 通道里)。配合从内存/磁盘里翻到的域管凭据,一步到位。CVE-2023-20867 更是证明了 Tools 通道鉴权可被绕过。
4.6 偷磁盘与内存
vCenter 管理员可以浏览/下载任意 datastore 文件 —— 包括 vCenter 自己的 VMDK 和所有业务 VM 的磁盘:
1 | # 列出VM所在数据store文件 |
拿到 VMDK/内存后的经典后续:
- 挂载 Windows VM 磁盘 → 提取
NTDS.dit+SYSTEM(域控盘)→ DCSync 级别的域凭据获取; - 拉取
.vmsn/.vmem(快照内存)→strings/Volatility → 直接翻出登录态用户的明文/NTLM 凭据; - 挂载 vCenter 自己的盘 → 离线拿 SSO 证书私钥与 shadow(无 root shell 的替代路径)。
4.7 打向 AD
汇总”vCenter → Domain Admin”的已验证路径:
| 路径 | 前提 | 说明 |
|---|---|---|
| AD 身份源绑定凭据 | vCenter 集成 AD | vCenter 内持久化的域服务账号,直接拿来打域 |
| 域管账号登录过 vCenter | SSO 含 AD 身份源 | 内存/哈希不可得(vmdir独立),但凭据复用:vCenter root 密码常与域内服务复用 |
| Guest Ops → 域控 VM | vCenter管理员 + 任一域VM本地账号 | 通过 Tools 通道在 DC 上执行 → DCSync |
| 偷 DC 的 VMDK/快照 | datastore 访问 | 离线提取 NTDS.dit,离线打域 |
| Veeam 侧链 | 环境有 Veeam | vCenter 凭据库 → 域备份凭据,一鱼两吃 |
4.8 持久化
- SSO 后门账号:新建
svc-vmware-backup之类的 SSO 用户并加入 Administrators(UI/API 均可,名字混在真实服务账号里极难发现); - SAML 私钥:只要不轮换证书,随时可重签断言(最强持久化,且不新增任何”用户”);
- root SSH 公钥:vCSA
/root/.ssh/authorized_keys; - 计划任务/服务:Photon OS systemd unit 或 cron(正常 Linux 那套);
- 恶意插件:向 vCenter 注册自定义插件(进阶玩法,检测成本高);
- 备份投毒:VAMI 备份任务带走的配置里塞后门(异地重启后依然生效)。
清理痕迹主要涉及:/var/log/vmware/vpxd/、sso/、vsphere-ui/logs/、/var/log/audit/,以及 vCenter 事件库(Web UI 的 Recent Tasks / Events)—— 但日志清理本身会在 audit/remote syslog 留痕,规范化的环境必然能感知。
五、ESXi 后渗透与横向
5.1 标准动作
1 | # 基本信息 |
5.2 常用命令
1 | # VM电源控制 |
5.3 持久化
账户与 SSH
1 | # 1) SSH公钥(注意ESXi的路径与Linux不同!) |
VIB 后门
ESXi 的软件包机制是 VIB,接受级别默认 VMwareCertified,但 root 可调低并强制安装无签名包:
1 | esxcli software acceptance set --level=CommunitySupported |
VIB 可以携带 payload 落到 /opt/、注册 init 脚本(/etc/init.d/)、甚至替换系统组件 —— 是 ESXi 上最”正规”的持久化通道(官方补丁也这么走,混合在更新流里极难察觉)。社区有现成的 VIB 构建工具(VMware 官方 vibauthor 及各开源实现)。
启动项与计划任务
1 | # 开机脚本(ESXi经典持久化位,重启后自动执行) |
5.4 日志规避
1 | # 阻断主机对外syslog(切断蓝队视线) |
合规提示:真实授权评估中,日志规避必须写入 RoE(Rules of Engagement)并获得书面许可;勒索模拟演练同理。
5.5 VM 级攻击
1 | # 1) 抓活VM内存(含内存的快照会生成 .vmsn/.vmem) |
5.6 勒索 TTP
2023 年起大量勒索家族(ESXiArgs、LockBit、BlackCat、Akira、Qilin…)推出 ESXi 加密器,标准作业流程高度一致:
1 | # 1. 入口:CVE-2021-21974(SLP) / 弱SSH / VPN无MFA |
CISA/ENISA 曾发布 ESXiArgs 部分恢复脚本(利用其加密实现缺陷可免钥恢复部分数据)。防御侧结论:SLP 禁用 + SSH 收紧 + 补丁 + 集中日志,四件事挡掉 90% 的 ESXi 勒索。
5.7 攻击链全景
全链路图
1 | ┌─────────────────────────────────────────────┐ |
路径前提对照
| 攻击路径 | 前提 | 隐蔽性 | 破坏性 |
|---|---|---|---|
| Web 未授权 RCE → vCenter | 版本未修复 | 低(WAF/日志可见) | 无 |
| vCenter root → vpxuser 解密 | vCenter root | 高(纯本地) | 无 |
| vCenter root → SAML 伪造 | vmdir 读取 | 极高(无新增账号) | 无 |
| ESXi 弱口令/API | 凭据或CVE | 中 | 无 |
| Guest Ops 批量执行 | VC管理员+VM凭据 | 高(走Tools通道) | 无 |
| 快照抓内存 | 主机/VC权限 | 中(快照事件可见) | 低 |
| VIB/rc.local 持久化 | ESXi root | 高 | 重启才验证 |
持久化对比
| 位置 | 手段 | 检测难度 | 存活条件 |
|---|---|---|---|
| vCenter | SSO后门用户 | 低(用户列表可见) | 一直 |
| vCenter | SAML私钥 | 高 | 证书不轮换 |
| vCenter | root公钥/cron | 中 | 系统不重装 |
| ESXi | authorized_keys | 低 | 系统不重装 |
| ESXi | VIB | 高(需审计vib列表) | 系统不重装 |
| ESXi | rc.local.d/local.sh | 中 | 系统不重装 |
| vCenter备份 | 配置投毒 | 极高 | 异地恢复时引爆 |
六、检测与防御
6.1 日志与检测
日志源
| 日志源 | 路径/方式 | 关注点 |
|---|---|---|
| vpxd.log | vCenter /var/log/vmware/vpxd/ | 会话建立、主机任务、异常API调用 |
| sts.log | /var/log/vmware/sso/ | SAML签发记录(伪造断言无签发却有登录→铁证) |
| vsphere-ui 日志 | /var/log/vmware/vsphere-ui/logs/ | Web请求、插件异常 |
| hostd.log | ESXi /var/log/hostd.log | API调用、任务执行 |
| shell.log / auth.log | ESXi /var/log/ | shell命令、SSH登录 |
| vmkernel.log | ESXi | VIB安装、内核事件 |
| vCenter Events | API/UI | UserLoginSessionEvent、VM任务、权限变更 |
| 集中日志 | syslog→SIEM | 所有上述日志外发,防本地清除 |
攻击行为 → 检测信号
| 攻击行为 | 检测信号 |
|---|---|
| SAML伪造登录 | sts.log 无签发记录但出现新会话;非常规来源IP的管理员登录 |
| vpxuser解密后直连主机 | hostd.log 中 vpxuser 从非vCenter IP登录;vpxa.log 异常 |
| 新增SSO管理员 | vCenter 事件”用户已添加到组 Administrators”/vmdir变更审计 |
| VIB后门安装 | vmkernel.log 安装事件、esxcli software vib list 定期基线比对 |
| rc.local/local.sh 变更 | 文件完整性监控(ESXi无原生FIM,需外置或定期哈希基线) |
| Guest Ops滥用 | vCenter 事件流中 Tools 相关操作事件;VM内 Sysmon 观察 vmtoolsd 子进程 |
| 批量VM强杀/加密 | esxcli vm process kill 事件、vmkernel 大量IO、hostd进程消失告警 |
| datastore批量下载 | vpxd.log 中批量 FileManager 任务;存储流量基线突增 |
| OpenSLP探测 | UDP 427 异常流量(应默认关闭,出现即告警) |
6.2 加固清单
基础卫生(挡掉绝大多数实战攻击):
- 补丁:跟进 VMSA,重点验证 2021-21972/21985/22005、2023-20888、2024-37079/37085 已修复;
- 关闭无用服务:SLP(
/etc/init.d/slpd stop && esxcli network firewall ruleset set -r CIMSLP -e 0)、CIM、SSH、shell 全部默认关; - ESXi Lockdown Mode:Normal 起步,运维成熟后上 Strict;确保 DCUI 密码强且有人掌握;
- 口令与MFA:SSO 管理员强口令+定期轮换;vSphere Client/VAMI 接 MFA(身份联合或网关层);禁用密码复用(尤其 root 与域账号);
- 网络分段:管理网独立 VLAN/防火墙区,仅堡垒机可达;公网暴露零容忍;
- 最小权限:禁用普通用户的 Guest Operations 权限;datastore 浏览权限收敛;禁用 MOB;普通运维不给 Administrator 角色。
进阶:
- 集中日志:vCenter/ESXi syslog → SIEM,6.1 的检测规则落进去;vCenter 开启事件流转发;
- 文件完整性基线:定期比对
authorized_keys、/etc/rc.local.d/local.sh、VIB 列表、vmdir 管理员组成员; - VM 加密 + 正确的密钥架构:外部 KMS + vSphere Trust Authority(密钥不下发 vCenter,拿下 vCenter 也解不了盘);注意 Native Key Provider 密钥在 vCenter 内,安全等级不同;
- ESXi Secure Boot + TPM 2.0(7.0U2+):防内核级篡改/后门 VIB;
- ESXi 侧检测:Carbon Black Cloud Workload 等专用 agent(8.0 支持);
- 备份策略:3-2-1 + 不可变副本(勒索场景的最终底牌),备份服务器(Veeam)单独加固打补丁;
- 供应链联动:Veeam/vROps/vRLI 一并纳入补丁与权限治理(它们存着 vCenter 凭据)。
6.3 应急响应
- 隔离:拔管理网(注意:直接断电可能丢 VM 状态,优先网络隔离);
- 取证:先导日志(vpxd/sts/hostd/shell/auth)与事件库,再动手恢复;
- 身份重建:轮换 STS/SSO 证书(只改密码没用!)、重置 administrator@vsphere.local、审计全部 SSO 用户与权限;
- 主机重建:沦陷的 ESXi 建议重装(VIB/rc.local 后门清理成本高于重装),至少完成 VIB 审计、authorized_keys 清理、local.sh 校验;
- 凭据全量轮换:vpxuser 随 vCenter 重置自动轮换;vCenter root、SSO 全体用户、域内可能泄露的账号;
- VM 排查:检查快照/磁盘是否被克隆外带(看流量与任务记录),VM 内排查 Guest Ops 执行痕迹;
- 复盘:缺口映射回 6.2 清单。
七、误区与面试
7.1 常见误区
- “vCenter 只是个网页管理台” —— 它是身份库+凭据库+密钥托管+全集群控制面的合体,价值等同 Tier-0。
- “ESXi 没开 SSH 就安全” —— 443 上的 hostd API 才是完整攻击面;SSH 只是冰山一角。
- “打了补丁就完事” —— 弱口令、Lockdown 未开、Guest Ops 滥权、MFA 缺失,哪个都不需要漏洞。
- “vpxuser 是普通账号” —— 每台主机上的完整管理员,密码托管在 vCenter 里等人解密。
- “VM 加密能防勒索” —— Native Key Provider 密钥就在 vCenter;未部署 Trust Authority 的加密形同虚设。
- “快照可以当备份” —— 勒索软件优先加密/删除 .vmsn;快照与备份是两个概念。
- “vCenter 沦陷后改 SSO 密码即可” —— SAML 私钥不轮换,改密码无效。
- “Guest Operations 权限无伤大雅” —— 等于”对所有 VM 的命令执行权”,是横向的捷径。
- “vCenter 打不到域” —— AD 身份源绑定凭据、机器账号、凭据复用、DC 磁盘,路径多得是。
- “ESXi 没杀软所以没法检测” —— 集中 syslog + SIEM 规则 + 外置 FIM 完全可覆盖。
- “内网隔离了就打不到 ESXi” —— 管理网与办公网互通、VPN 无 MFA 是常态,先画清网络再说隔离。
- “vCenter 重装即恢复” —— 证书、SSO、备份、ESXi 侧后门都要处理,否则二次沦陷。
- “只监控 443” —— 902(authd)、427(SLP)、5480(VAMI)、8000(vMotion)都在攻击面内。
- “SAML 伪造只影响登录页面” —— 拿到的是完整 vSphere API 权限,且波及所有联邦产品。
- “有现成 PoC 就能打” —— 版本/插件状态/服务配置决定成败;懂 SSO/vpxd 架构才能判断利用条件与后渗透路线。
7.2 面试题库
基础架构
- vSphere/vCenter/ESXi 三者关系?
ESXi 是 Hypervisor,vCenter 是集中管理平面(vCSA 为 Photon OS 虚拟机),vSphere Client 是 Web 入口。vCenter 通过 vpxa/vpxuser 管理各主机。 - vCenter 的核心服务有哪些?
vpxd(核心API)、vmdir(SSO/LDAP 身份库)、STS(SAML 签发)、VCDB(Postgres 清单库)、vsphere-ui(Web 客户端)、VAMI(5480 管理)。 - SSO 的作用是什么?默认管理员是谁?
统一身份认证(vmdir 存储),默认administrator@vsphere.local,默认 SSO 域 vsphere.local。 - vpxuser 是什么?为什么重要?
vCenter 在每台 ESXi 上创建的管理账号,密码随机且定期轮换,加密存于 VCDB,解密密钥硬编码在 vpxd;拿到它即可 API 层面完全接管对应主机。 - ESXi 上 hostd 和 vpxa 的区别?
hostd 是主机自己的完整 API 守护(443);vpxa 是 vCenter 部署在主机上的代理,代表 vpxd 与 hostd 通信。
信息收集
- 如何从外网识别 vCenter 与独立 ESXi?
标题(VSPHERE CLIENT / VMware ESXi)、路径(/ui、/sdk、5480)、/websso 元数据、build 号(HTML 或 vimServiceVersions.xml)。 - 如何确定 ESXi 版本与可利用漏洞?
登录页 HTML 中的 build-XXXXXXX、vmware -vl,对照 VMSA 通告与修复版本矩阵。 - 427 端口为什么值得重点关注?
SLP 服务,历史多个未认证 RCE(5544/3992/21974),是 ESXi 勒索的主流入口;7.0U2 起默认禁用,出现即老旧。 - 内网如何定位虚拟化资产?
DNS 命名约定、AD 计算机对象属性、网络扫描(443/902/5480 组合特征)、文档与共享中的配置文件。
漏洞利用
- CVE-2021-21972 的根因与利用路径?
vROps 插件 uploadova 接口 tar 解压路径穿越 → 任意文件写(root 上下文)→ 写 webshell(如 /sts/ 下)或 authorized_keys。 - CVE-2021-22005 为什么利用门槛低?
analytics 遥测接口参数控制写入路径,单个 POST 即可写 /etc/cron.d 等位置,无需构造复杂内存破坏。 - 为什么 vCenter 的 Web RCE 普遍直接是 root?
vCSA 服务架构不做服务级降权,vpxd/vsphere-ui/analytics/STS 等均以 root 运行。 - CVE-2021-21974 的利用条件与实战意义?
老版本 ESXi 开放 SLP(427),堆溢出未认证 RCE;是 ESXiArgs 等勒索软件的实际入口。 - ESXi 的 VM 逃逸漏洞需要什么前置条件?
VM 内代码执行 + 虚拟硬件开启(USB/XHCI 等)+ 主机未修复;代表如 CVE-2020-4004 系列、CVE-2025-22225。 - CVE-2023-20867 的影响是什么?
vCenter 侧 VMware Tools Guest Operations 鉴权绕过,持有相应权限的用户可在 VM 内执行本应受限的操作。
后渗透
- 拿到 vCenter root 后必看的五个点?
/etc/shadow 与 .ssh、VCDB(vpxd 凭据与 vpdx_user)、vmdir data.mdb(哈希+IdP证书)、AD 集成配置、vpxd.cfg。 - vpxuser 密码解密需要哪些材料?
VCDB 凭据(vpxd.cfg/vcdb.properties)+ vpdx_user 表密文 + vpxd 内硬编码密钥(社区脚本内置)。 - SAML 伪造登录的原理?
提取 vmdir 中 STS 的签名证书私钥,自行签发 administrator 的 SAML 断言提交给 /ui,绕过密码与 STS。 - 为什么改 SSO 管理员密码无法防御 SAML 伪造?
断言验证基于证书签名而非密码;必须轮换 STS 证书。 - Guest Operations 横向的原理与前提?
通过 vSphere API 经 VMware Tools 在 VM 内执行程序;前提是 vCenter 权限 + VM 内账号(或利用 20867 类缺陷);流量走 hostd→tools 通道,不依赖 VM 网络连通。 - 如何在不登录 VM 的情况下获取 VM 内凭据?
内存快照(.vmsn/.vmem)strings/取证分析;或克隆磁盘离线挂载提取 SAM/NTDS/shadow。 - 从 vCenter 到 Domain Admin 的路径有哪些?
AD 身份源绑定凭据提取、Guest Ops 打 DC、偷 DC 磁盘离线取 NTDS.dit、凭据复用、Veeam 侧链。 - vCenter 沦陷后如何”自己偷自己”?
vCenter 管理员通过 datastore 浏览/download 下载 vCenter VM 自身 VMDK,离线提取 SSO 证书与系统凭据。
ESXi 后渗透
- ESXi 上 SSH 公钥持久化的正确路径?
/etc/ssh/keys-root/authorized_keys(ESXi 特有路径,与常规 Linux 不同)。 - VIB 持久化的原理与检测?
降低接受级别后强制安装无签名包,可带 payload 与 init 脚本;检测靠 VIB 列表基线比对与 vmkernel 日志。 - rc.local.d/local.sh 持久化有什么坑?
文件必须以exit 0结尾且语法正确,否则重启后失效;ESXi 重启还会重置 cron 文件。 - 勒索软件在 ESXi 上的标准 TTP 流程?
枚举 VM → 按 World 强杀 → 杀 hostd/vpxa/sfcbd → 遍历 /vmfs/volumes 加密 vmdk/vmx/vmsn → 留勒索信。 - Lockdown Mode 的两种模式与绕过认知?
Normal(DCUI 仍可进)/ Strict(连 DCUI 都限);它限制的是”非 vpxuser 的直接主机管理”,vpxuser 不受影响 —— 主机层隔离不能替代 vCenter 层安全。 - VM 加密密钥托管在哪?什么架构下 vCenter 拿不到密钥?
默认 Native Key Provider 在 vCenter 内;外部 KMS + vSphere Trust Authority 下密钥仅下发 ESXi,vCenter 无法解密。
检测响应
- SAML 伪造登录的核心检测点?
sts.log 无签发记录与登录会话不匹配;管理员登录来源基线外;配合 vmdir 管理员组变更审计。 - vpxuser 被滥用的检测信号?
hostd/vpxa 日志中 vpxuser 会话来自非 vCenter IP、非 vpxa 指纹的 API 调用。 - ESXi 无原生 EDR 时如何检测入侵?
syslog 集中化 + SIEM 规则(shell 命令、VIB 安装、防火墙变更、vm process kill)+ 外置 FIM 基线。 - vCenter 沦陷后的恢复为什么必须重装/重建主机?
VIB、local.sh、authorized_keys、cron 等持久化点清理成本高且易漏;重装是确定性恢复。 - 如何防止 vCenter 成为单点 Tier-0 风险?
管理面分段+MFA、最小权限、Trust Authority 密钥架构、补丁与集中日志、备份不可变副本。 - 红队评估中,虚拟化面测试的合法边界如何界定?
RoE 明确允许的主机/账户/操作(含快照、内存抓取、持久化演练)、避开生产 VM 的破坏性操作、日志规避需书面许可、全程留痕可审计。
附录:速查表
A.1 信息收集
1 | # 判型与版本 |
A.2 漏洞利用
1 | # CVE-2021-21972 |
A.3 vCenter 后渗透
1 | # DB凭据 |
A.4 ESXi 后渗透
1 | vmware -vl; vim-cmd vmsvc/getallvms; esxcli vm process list |
A.5 检测与加固
1 | # ESXi 关闭 SLP / CIM |
免责声明:本指南仅供合法授权的安全测试、安全研究与学习使用。请遵守当地法律法规,未经授权对任何系统实施上述操作均属违法行为。因不当使用本文内容造成的任何后果,与作者无关。