转储域控制器哈希
一旦我们获得了域管理访问权,从 DC 中提取所有哈希的老方法就是在域控制器上运行命令,并使用 Shadow Volume 或原始拷贝技术提取 ntds.dit 文件。
回顾磁盘卷影复制技术
由于我们确实可以访问文件系统,并且可以作为攻击者在域控制器上运行命令,因此我们希望获取存储在 ntds.dit 文件中的所有域内哈希。不幸的是,该文件不断地被读和写,即使作为系统,我们也无法读取或复制该文件。幸运的是,我们可以利用名为 Volume Shadow Copy Service 磁盘复制服务(VSS)的 Windows 功能,该功能将创建磁盘的快照副本。然后我们可以从该副本中读取 Ntds.dit 文件将其获取出来。并将其从计算机上取消,这包括窃取 Ntds.dit、System、SAM 和 Boot Key 文件。最后,我们需要清理我们的行踪并删除磁盘拷贝:
- C:\vssadmin create shadow /for=C:
- copy \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy[DISK_NUMBER]\windows\system32\config\SYSTEM.
- copy \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy[DISK_NUMBER]\windows\system32\config\SAM.
- reg SAVE HKLM\SYSTEM c:\SYS
- vssadmin delete shadows /for= [/oldest | /all | /shadow=]
NinjaCopy
Ninjacopy 是另一个工具,一旦我们在域控制器上,就可以用来获取 Ntds.dit 文件。Ninjacopy “通过读取原始磁盘卷并分析 NTFS 结构,从 NTFS 分区磁盘复制文件。这将绕过文件 DACL(任意访问控制列表)、读取句柄锁和 SACL(系统访问控制列表)。但你必须是管理员才能运行这个脚本。这可用于读取通常锁定的系统文件,如 NTDS.dit 文件或注册表配置单元。”[http://bit.ly/2HpvKwj]
- Invoke-NinjaCopy -Path “c:\windows\ntds\ntds.dit” -LocalDestination “c:\windows\temp\ntds.dit
DCSync
现在,我们已经回顾了从 DC 提取哈希的老方法,这些方法要求你在 DC 上运行系统命令,并且通常需要在该计算机上删除一些文件,让我们继续讨论新方法。最近,由 Benjamindelpy 和 Vincent Le Toux 编写的 DCSync 引入并改变了从域控制器转储哈希的玩法。DCSync 的概念是它模拟域控制器来请求该域中用户的所有哈希。这意味着,只要你有权限,就不需要运行任何域控制器上的命令,也不必删除 DC 上的任何文件。
但是要使 DCSync 工作,必须具有从域控制器中提取哈希的适当权限。通常是限于域管理员、企业管理员、域控制器用户组以及将复制更改权限设置为允许(即复制所有更改和复制目录更改)的任何人,DCSync 将允许你的用户执行此攻击。这种攻击最初是在 Mimikatz 开发的,可以使用以下命令运行:
- Lsadump::dcsync /domain:[YOUR DOMAIN] /user:[Account_to_Pull_Hashes]
更好的是,DCSync 被引入了 PowerShell Empire 这样的工具,以使其更容易实现。
Empire 模块:powershell/credentials/mimikatz/dcsync_hashdump
查看 DCSync hashdump,我们可以看到 Active Directory 中用户的所有 NTLM 哈希。此外,我们还有 krbtgt NTLM 哈希,这意味着我们现在(或在未来的活动中)可以执行 Golden Ticket attacks(黄金票据攻击)。