译文声明
本文是翻译文章,文章原作者fortynorthsecurity,文章来源:fortynorthsecurity.com
原文地址:https://fortynorthsecurity.com/blog/powershell-azure-and-password-hashes-in-4-steps/
译文仅供参考,具体内容表达以及含义原文为准
不久前,在这篇文章中了解到用于从 AWS 中运行的域控制器中窃取哈希的工具。于是手动测试了该过程,并且在无需与域控制器本身交互的情况下,成功的提取了密码哈希。一般有如下操作:
PS:或者就使用上述文章中的 CloudCopy 在 AWS 中自动化实现这一过程。
当认识到这种卷影复制方法的滥用对于红队成员是有大用处的,所以特别想知道此方法是否有可能对 Azure 中的域控制器也有同样的效果。
以下方法基于可访问 Azure 中的域控制器的账号权限。
首先,在 Azure 内部部署了 Windows Server 2016 Datacenter
虚拟机,并安装了 Active Directory 角色,并将一个新用户添加到 Active Directory 中,以便后续方便验证哈希。
接下来,通过点击 “Create snapshot” 选项按钮,在 Azure 中为该域控制器拍摄了快照。
在点击 “Create snapshot” 选项按钮后,会进入一个新的页面,为此快照提供一些必要的信息。
真正需要的信息仅仅是快照名称与其所在的资源组。单击底部的 “ Create” 选项按钮创建快照。
创建快照成功后,可以将其装换为可安装的虚拟磁盘。
注意:确保要在其中创建磁盘的区域与快照所在的区域相同。
对于 “Source type” 选项,选择 “Snapshot”,然后 “Source snapshot” 选项则是刚刚创建的快照。
所有的内容都写上内容之后,就创建磁盘。
最后一步是创建一个新的虚拟机(如果在没有多余的正在运行的虚拟机),并将刚刚创建的磁盘连接到该虚拟机。
如果要创建新的虚拟机,只需在配置虚拟机的过程中添加一个额外的数据磁盘即可(确保选择了刚刚创建的包含了哈希的磁盘)。
在创建虚拟机安装号磁盘后,可以像普通文件夹一样,可正常预览。将该磁盘上的 SYSTEM 和 “NTDS.dit” 文件复制到 Debian VM 中的其他地方,并且安装了 Impacket。此时,我们只需要正确的运行 secretsdump.py,可获取密码哈希。
本章节,将使用 Powershell 从 Azure 中完成对域控制器获取哈希的过程。以下方法基于可访问 Azure 中的域控制器的账号权限。
首先,需要将 Azure cmdlet 导入当前的 Powershell 会话中,然后通过 Powershell 向 Azure 进行身份验证。
通过对 Poweshell 会话的身份验证,我们现在可以使用 Azure 特定的 Powershell cmdlet 完成我们想要做的事情。
首先,我们想知道目标虚拟机是在哪一个区域和资源组中运行。则可以使用 Get-AzResourceGroup
cmdlet 列出活动的资源组。
列出结果后,我们可以看到正在使用的资源组名称为 InternalDomain
,它在美国西部 2 地区运行。接下来,可以继续查询在该资源组中运行的虚拟机,可以使用 Get-AzVm
cmdlet 完成。
现在,我们知道在 INTERNALDOMAIN
资源组中有一个名为 Server2016DC
的虚拟机正在运行 Windows Server 2016
系统。自此,我们已经掌握了以创建快照所需信息的命令。我们将从 Get-AzVm
的变量中捕获所需的数据,以创建快照。
接下来,只需要基于 Get-AzVm
的输出,使用 New-AzSnapshotConfig
命令构建快照的配置。配置好之后,只需要执行 New-AzSnapshot
命令,即可创建快照。
创建快照后,接下来要做的就是将快照转换为虚拟磁盘。首先,使用 GET-AzSnapshot
命令来指定要转换的快照,然后使用 New-AzDiskConfig
创建生成一个虚拟磁盘的配置,最后使用 New-AzDisk
创建新的磁盘。
这样,我们的磁盘已经创建完成!!!如果需要验证,可通过登陆到 Auzre 门户站点,查看新创建的磁盘。
剩下的将磁盘连接到虚拟机,获取哈希值,整个步骤,我打算将它留给读者自己完成,这里有一些帮助文档,可帮助读者完成此步骤。
获取到哈希值后,可自行发挥其效果。
此攻击操作,可以通过一些最佳实践来预防:
Microsoft.Compute/snapshots/write
的权限,完整的文档 - 帮助文档。