窃取 VMware Workstation 密码凭据

VMware Workstation 连接到 ESXi 或 Vsphere 服务器时,您可以选择在计算机上保存连接详细信息,包括密码。下次连接到服务器时,您无需再次输入凭据。

图片[1]-窃取 VMware Workstation 密码凭据-颓废SEC
“记住我”功能

解密流程

我们通过假设凭据保存在本地文件或注册表项中来开始研究。为了准确找到位置,我们使用了 SysInternals 工具中的 Procmon。

我们可以看到,当我们通过工作站添加或删除凭据时,会访问以下文件:

图片[2]-窃取 VMware Workstation 密码凭据-颓废SEC

我们来看看这两个文件:

图片[3]-窃取 VMware Workstation 密码凭据-颓废SEC
文件1
图片[4]-窃取 VMware Workstation 密码凭据-颓废SEC
文件2

这些文件似乎已加密。所以我们需要了解如何解密它们。我们将从preferences-private.ini 文件开始。

让我们来看看这些文件。

该文件包含以下属性:.encoding、encryption.userKey、encryption.keySafe、encryption.data

encryption.userKey 值使用数据保护 API (DPAPI) 加密,可通过第一个常量 ~60 字节元数据识别。

图片[5]-窃取 VMware Workstation 密码凭据-颓废SEC

DPAPI 允许使用当前用户的信息加密数据。因此,只有执行加密的用户才能解密数据。

让我们编写一个使用 Unprotect 函数并尝试解密数据的简单 .Net 应用程序:

图片[6]-窃取 VMware Workstation 密码凭据-颓废SEC

我们执行应用程序并获得解密数据:

图片[7]-窃取 VMware Workstation 密码凭据-颓废SEC

我们得到了一种加密算法类型,AES-256——我们也得到了一个密钥。我们称之为KEY_1

我们现在需要解密在 preferences-private.ini 文件中找到的其他属性的值,即 encryption.keySafe 和 encryption.data。为此,我们需要知道每个属性、使用的算法、初始化向量 (IV) 和密钥。

为了找到这些未知数,我们将使用静态和动态逆向工程分析技术。查看 Procmon 中的调用堆栈向我们展示了哪些 DLL 文件和函数需要访问加密文件。

图片[8]-窃取 VMware Workstation 密码凭据-颓废SEC
© 版权声明
THE END
喜欢就支持一下吧
点赞19 分享