Pentera Labs 的高级安全研究员 Yuval Lazar 发现了一个信息泄露漏洞,该漏洞影响了超过 50万台运行默认 vCenter Server 部署的设备。
考虑到其潜在的全球影响,这一发现至关重要。根据VMware的数据,超过 80% 的虚拟工作负载运行在VMware技术上,包括财富500强和财富100强公司。vCenter 为管理企业环境中的虚拟化主机提供的便利性为网络犯罪分子提供了集中访问权限,并有可能对组织造成大面积攻击。
在完整的攻击流程中,攻击者可以完全接管一个组织部署在混合基础设施中的ESXi和由hypervisor托管和管理的虚拟机,从端点访问到vCenter客户端的主机。
目前,VMware发布了一个补丁。
背景
VMware vCenter Server 安装在全球数十万个组织中并用于管理其一些最关键的资产和核心系统,是网络罪犯的高优先级目标。一旦受到攻击,vCenter 为在企业环境中管理虚拟主机提供的便利性将被攻击者利用,提供集中访问和大面积的攻击。
结合最近关于针对 ESXi 的 Python 勒索软件报告,Pentera Labs发现了一个新的信息泄露漏洞。目前该漏洞已被命名为 CVE-2022-22948,调查结果也报告给了VMware。
完整的攻击向量
本文中描述的漏洞是导致 ESXi 接管的关键攻击链的一部分。在完整的攻击向量中,研究人员可以看到对具有 vCenter 客户端的主机的初始端点访问有助于完全接管组织的 ESXi。
攻击技术详解
从初始访问到完全接管服务器:
Pentera Labs认为,安全程度不是由单个漏洞或安全团队发现或修补漏洞的能力来衡量的。更确切地说,组织的安全状况取决于该漏洞是否可以被直接利用,或者在整个攻击操作中与前面的漏洞连接在一起。
在 VMware vCenter 漏洞的情况下,攻击者可以接管运行 vCenter 应用程序的主机,以及部署在混合基础架构中的所有 ESXi 服务器以及由管理程序托管和管理的虚拟机。
最近关于勒索软件团伙加密大量虚拟机的报告证明了将这种载体添加到其 TTP 库中的重要性。
漏洞检测
Pentera Labs 研究人员通过进一步增强其现有的用于识别、提升、利用和推进攻击操作的攻击框架。与往常一样,Pentera 的方法是假设攻击者的观点,并确定攻击者可以利用关键漏洞的方式。
研究人员使用名为“vpshere-ui”的低权限用户(“cis”组的成员)获得了对 VMware vCenter 新实例的 shell 访问权限。到目前为止,一切都很顺利。
在对vCenter客户端的研究中,研究人员找到了一个包含客户端postgresDB的明文登录凭证的文件: “/etc/vmware-vpx/vcdb.properties”,属于 “cis” 组的任何用户都可以访问该文件。
换句话说,任何属于 “cis”组的用户都可以连接到vCenter的Postgres数据库。
有了 PostgresDB 凭证,就可以开始对PostgresDB进行检查。可以使用以下命令连接到数据库,充分利用 vcdb.properties 中的凭据:
/opt/vmware/vpostgres/current/bin/psql -d VCDB -U vc -w
这样,研究人员就发现它包含有关 ESXi 和 vCenter 的大量信息,包括有关存储在其上的数据中心和虚拟机的信息。例如:
/opt/vmware/vpostgres/current/bin/psql -d VCDB -U vc -w -c 'SELECT user_name, password FROM vc.vpx_host;'
通过VCDB查询ESXi上的虚拟机信息
另一个表是' vpx_host ',包含名为' vpxuser '的用户及其密码短语的详细信息。vpx_host表为每个被管理的ESXi保存一条记录,每个记录包含一个名为 “vpxuser” 的用户和一个唯一的密码短语。
因此,研究人员使用以下命令来检索密码短语:
接下来,将要探索“vpxuser” 。
原来“vpxuser”是在ESXi和vCenter之间第一次连接时自动创建的高级特权用户。
“vpxuser”用户是在ESXi上默认创建的,按照最小权限原则设计,无需使用root用户即可由vCenter管理。用户是通过一个名为“vpxd”的进程创建的,该进程负责ESXi和vCenter之间的通信。
没有很多关于这个用户的信息,但是研究人员在ESXi上的“passwd”文件上发现了一条关于它的注释。“passwd”文件通常用于跟踪有权访问系统的用户,它包含有关用户帐户的信息。研究人员能够从文件中收集关于用户“vpxuser”的大量信息。最终,正是这个描述引导研究人员找到了下一个发现——“VMware VirtualCenter管理帐户”
这样,研究人员就可以开始使用 IDA 调查“vpxd”进程,以便更好地理解“vpxuser”及其密码是如何在PostgresDB中创建和记录的。
研究人员的第一步是使用 IDA 的“字符串”选项卡搜索字符串“VMware VirtualCenter 管理帐户”,以查看该字符串在何处被引用。此搜索导致了与在 ESXi 上创建用户相关的功能。这样,研究人员可以识别创建密码的函数,如下图所示。
深入“create_random_password”函数,研究人员发现了 Random_Crypto (open-vm-tools) 的使用,这表明该用户的密码是随机创建的。
研究人员知道密码必须保存到 vCenter 的 PostgresDB 中,因为它是在第一次连接时随机生成的,并且是下一步通信所必需的。然而,正如研究人员之前在数据库中看到的,密码不是以明文形式保存的。而是用 base64 编码的,但编码的短语是不可读的,所以研究人员假设它也是加密的。
解密 vpxuser 密码
因此研究密码的创建、加密、编码以及最终保存在数据库中的过程就十分有必要。
最终,研究人员找到了加密功能,发现它使用了OpenSSL对称EVP通用加密方法。
OpenSSL 对称加密 EVP
对称加密使用相同的密钥对信息进行加密和解密。通过使用对称加密算法,数据被转换为任何不拥有密钥的人都无法理解的形式。
EVP 函数为 OpenSSL 加密函数提供高级接口。为了使用 EVP 执行对称加密或解密,你需要知道:
算法——可以使用几种类型的加密算法,例如块算法或流算法。正如后来发现的,AES_256_CBC是这里使用的算法。
密钥——你需要拥有密钥来解密消息。
初始化向量(IV)——初始化向量是与密钥结合使用的随机数,作为加密数据的方式。这个数字有时被称为随机数。IV用于避免数据加密过程中的重复,使得使用字典攻击的黑客不可能通过发现模式来解密交换的加密消息。
所以现在研究人员知道了对称加密是什么样的,让我们回过头来确定密码创建方法。由于 IV 是随机的,研究人员推断它可能也保存到了数据库中。而且它是!一旦我们找到了IV创建的函数,这就把我们引向了解密函数!
在找到解密对称加密所需的所有3个先决条件后,就可以继续进行了:
算法——研究人员只知道算法是 AES_256_CBC。
IV——研究人员发现密码短语的前 16 个字节是 IV。
密钥——研究人员发现加密密钥是提前创建的,并保存到文件“/etc/vmware-vpx/ssl/symkey.dat”中。
如上所述, “/etc/vmware-vpx/ssl/symkey.dat”文件只有高权限用户才能访问,所以研究人员还需要一种方法,以便可以获得 root 权限来读取它。幸运的是,由于研究人员之前已经发现了 CVE-2021-22015(文件上传漏洞)。
一旦研究人员提取了密钥,研究人员就拥有了解密密码所需的所有要素。研究人员编写了一个 python 脚本来提取明文密码,并获得了 ESXi 的高权限凭据!
总结
1.登录到 vCenter 的 PostgresDB。
2.找到 vpxuser 的编码和加密密码,这是一个在 ESXi 与 vCenter 之间的第一次连接时自动创建的高权限用户。
3.对 vpxuser 的创建进行逆向工程,以设计一种用于解密 vpxuser 密码的方法。
4.利用 vScalation (CVE-2021-22015),Pentera Labs 还发现了一种特权升级方法,用于获取解密 vpxuser 密码所需的 root 特权。
5.解密后,受感染的 root 帐户 vpxuser 确认完全接管 ESXi 服务器。
参考及来源:
https://www.pentera.io/blog/information-disclosure-in-vmware-vcenter/
原文来源:嘶吼专业版