译文声明
本文是翻译文章,文章原作者fortynorthsecurity,文章来源:fortynorthsecurity.com
原文地址:https://fortynorthsecurity.com/blog/powershell-azure-and-password-hashes-in-4-steps/

译文仅供参考,具体内容表达以及含义原文为准

0x00 前言

不久前,在这篇文章中了解到用于从 AWS 中运行的域控制器中窃取哈希的工具。于是手动测试了该过程,并且在无需与域控制器本身交互的情况下,成功的提取了密码哈希。一般有如下操作:

  1. 制作 AWS 中域控制器硬盘的快照;
  2. 将快照转换成 AWS 内的卷;
  3. 将该卷挂载到可控制的其他虚拟机上(本例使用 Debian ec2 实例进行测试);
  4. 使用 SecretsDump 之类的工具从安装的卷中获取密码哈希。

PS:或者就使用上述文章中的 CloudCopy 在 AWS 中自动化实现这一过程。

当认识到这种卷影复制方法的滥用对于红队成员是有大用处的,所以特别想知道此方法是否有可能对 Azure 中的域控制器也有同样的效果。

0x01 方法

以下方法基于可访问 Azure 中的域控制器的账号权限。

1.1、在 Azure 中设置 VM

首先,在 Azure 内部部署了 Windows Server 2016 Datacenter 虚拟机,并安装了 Active Directory 角色,并将一个新用户添加到 Active Directory 中,以便后续方便验证哈希。

1.2、拍摄 DC 磁盘快照

接下来,通过点击 “Create snapshot” 选项按钮,在 Azure 中为该域控制器拍摄了快照。

在点击 “Create snapshot” 选项按钮后,会进入一个新的页面,为此快照提供一些必要的信息。

真正需要的信息仅仅是快照名称与其所在的资源组。单击底部的 “ Create” 选项按钮创建快照。

1.3、将快照转换为可安装的虚拟磁盘

创建快照成功后,可以将其装换为可安装的虚拟磁盘。

  • 单击左侧的 "All services" 选项
  • 指定 “compute” 服务
  • 然后选择 “Disks” 选项

  • 在 “Disks” 选项菜单中,选择 “Add” 磁盘,如下图显示:

注意:确保要在其中创建磁盘的区域与快照所在的区域相同。

对于 “Source type” 选项,选择 “Snapshot”,然后 “Source snapshot” 选项则是刚刚创建的快照。

所有的内容都写上内容之后,就创建磁盘。

1.4、将磁盘连接到新的或已运行的虚拟机

最后一步是创建一个新的虚拟机(如果在没有多余的正在运行的虚拟机),并将刚刚创建的磁盘连接到该虚拟机。

如果要创建新的虚拟机,只需在配置虚拟机的过程中添加一个额外的数据磁盘即可(确保选择了刚刚创建的包含了哈希的磁盘)

在创建虚拟机安装号磁盘后,可以像普通文件夹一样,可正常预览。将该磁盘上的 SYSTEM 和 “NTDS.dit” 文件复制到 Debian VM 中的其他地方,并且安装了 Impacket。此时,我们只需要正确的运行 secretsdump.py,可获取密码哈希。

0x02 命令行操作

本章节,将使用 Powershell 从 Azure 中完成对域控制器获取哈希的过程。以下方法基于可访问 Azure 中的域控制器的账号权限。

2.1、设置 Powershell 与 Azure 交互

首先,需要将 Azure cmdlet 导入当前的 Powershell 会话中,然后通过 Powershell 向 Azure 进行身份验证。

通过对 Poweshell 会话的身份验证,我们现在可以使用 Azure 特定的 Powershell cmdlet 完成我们想要做的事情。

首先,我们想知道目标虚拟机是在哪一个区域和资源组中运行。则可以使用 Get-AzResourceGroup cmdlet 列出活动的资源组。

列出结果后,我们可以看到正在使用的资源组名称为 InternalDomain,它在美国西部 2 地区运行。接下来,可以继续查询在该资源组中运行的虚拟机,可以使用 Get-AzVm cmdlet 完成。

2.2、拍摄 DC 磁盘快照

现在,我们知道在 INTERNALDOMAIN 资源组中有一个名为 Server2016DC 的虚拟机正在运行 Windows Server 2016系统。自此,我们已经掌握了以创建快照所需信息的命令。我们将从 Get-AzVm 的变量中捕获所需的数据,以创建快照。

接下来,只需要基于 Get-AzVm 的输出,使用 New-AzSnapshotConfig 命令构建快照的配置。配置好之后,只需要执行 New-AzSnapshot 命令,即可创建快照。

2.3、将快照转换为虚拟磁盘

创建快照后,接下来要做的就是将快照转换为虚拟磁盘。首先,使用 GET-AzSnapshot 命令来指定要转换的快照,然后使用 New-AzDiskConfig 创建生成一个虚拟磁盘的配置,最后使用 New-AzDisk 创建新的磁盘。

这样,我们的磁盘已经创建完成!!!如果需要验证,可通过登陆到 Auzre 门户站点,查看新创建的磁盘。

2.4、将磁盘连接到 VM

剩下的将磁盘连接到虚拟机,获取哈希值,整个步骤,我打算将它留给读者自己完成,这里有一些帮助文档,可帮助读者完成此步骤。

0x03 结论

获取到哈希值后,可自行发挥其效果。

此攻击操作,可以通过一些最佳实践来预防:

  • 确保所有用户都启用了多重身份验证;
  • 确认只有管理员用户才可以查看 Azure 中的敏感系统/数据,并与之交互;
  • 管理员可创建防止用户在 Azure 中制作磁盘快照的规则;
  • 限制 Microsoft.Compute/snapshots/write 的权限,完整的文档 - 帮助文档

点击收藏 | 0 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖