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

本文深入探讨ntds.dit文件在Active Directory中的作用,介绍了如何利用卷影拷贝服务提取ntds.dit,以及密码哈希的加密与解密过程。通过ntdsutil.exe、vssadmin、vssown.vbs和diskshadow等工具,详细阐述了ntds.dit的抓取方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

件。那么什么是ntds.dit呢?

ntds.dit文件是一个数据库,用于存储Active Directory数据,包括有关用户对象,组和组成员身份的信息。它包括域中所有用户的密码哈希。通过提取这些哈希值,可以使用诸如Mimikatz之类的工具执行哈希传递攻击,或使用诸如Hashcat之类的工具来破解这些密码。这些密码的提取和破解可以脱机执行,因此将无法检测到。一旦攻击者提取了这些散列,它们便可以充当域上的任何用户,包括域管理员。

前言

在活动目录中,所有的数据都保存在ntds.dit中。ntds.dit是一个二进制文件,存储位置为域控制器的%SystemRoot%\ntds\ntds.dit。ntds.dit中包含用户名、散列值、组、GPP、OU等与活动目录相关的信息。它和SAM文件一样,是被操作系统锁定的。在一般情况下系统运维人员会利用卷影拷贝服务(volume Shadow Copy Server,VSS)实现ntds.dit的拷贝,VSS本质上属快照(Snamshot)技术的一种,主要用于备份和恢复(即使目标文件被系统锁定)。

 

一般域环境内最重要的三个文件如下:

ntds.dit文件位置: C:\\Windows\\NTDS\\NTDS.dit

system文件位置:C:\\Windows\\System32\\config\\SYSTEM

sam文件位置:C:\\Windows\\System32\\config\\SAM

ntds.dit深入剖析

Active Directory域数据库存储在ntds.dit文件中(默认情况下存储在c:\ Windows \ NTDS中,但通常存储在其他逻辑驱动器上)。AD数据库是一个Jet数据库引擎,它使用可扩展存储引擎(ESE)提供数据存储和索引服务。通过ESE级别索引,可以快速定位对象属性。ESE确保数据库符合ACID(原子,一致,隔离和持久)–事务中的所有操作都已完成或不执行。AD ESE数据库非常快速且可靠。

注意:Microsoft还将Jet数据库用于Exchange邮箱数据库。

Active

Directory通过基于LRU-K算法的缓存将部分ntds.dit文件加载到(LSASS保护的)内存中,以确保最常访问的数据在内存中,以提高性能,从而第二次提高读取性能。数据库更改是在内存中执行的,然后写入事务日志,然后稍后对数据库文件进行延迟提交。检查点文件(edb.chk)会跟踪到此刻写入的事务。

“版本存储”是从内存中读取数据时对象实例的副本,这使得无需更改读取数据即可执行更新(ESE事务视图)。读取操作完成后,该版本存储实例将结束。

尽管Active Directory由三个目录分区(域,配置和架构)组成,但这只是数据库数据的抽象视图。ntds.dit文件由三个主要表组成:数据表,链接表和SD表。

数据表

数据表包含Active Directory数据存储中的所有信息:用户,组,特定于应用程序的数据,以及安装后在Active Directory中存储的任何其他数据。可以将数据表视为具有行(每个代表对象的实例,例如用户)和列(每个代表模式中的属性,例如GivenName)。)。对于模式中的每个属性,表均包含一列,称为字段。字段大小可以是固定的或可变的。固定大小的字段包含整数或长整数作为数据类型。可变大小字段通常包含字符串类型,例如Unicode字符串。数据库仅分配可变大小字段所需的空间:1个字符的Unicode字符串为16位,10个字符的Unicode字符串为160位,依此类推。

用于存储对象的数据库空间取决于为其设置值的属性的数量和值的大小。例如,如果管理员创建了两个用户对象(User1和User2),仅在其上设置了最小属性,然后向User2添加了10个字符的描述,则User2空间比User1空间大80个字节(20个字节)。10个字符的字节数,以及新生成的属性上的元数据)。

数据库记录不能跨越数据库页面;因此,每个对象被限制为8 KB。但是,对象的某些属性值不能完全计入此限制。长度可变的长值可以存储在与对象记录不同的页面上,仅留下9字节的引

### 卷影复制服务 (Volume Shadow Copy Service, VSS) 的功能 卷影复制服务允许创建文件系统的快照,即所谓的“卷影副本”,这些副本可以在不影响原始数据的情况下用于备份或其他操作。通过这种方式,即使应用程序正在写入磁盘上的某些文件,也可以获得一致的数据视图。 #### 创建卷影拷贝 为了创建 C 盘的卷影拷贝,可以使用 `vssadmin` 工具执行如下命令: ```bash vssadmin create shadow /for=C: ``` 这条指令会触发一次即时的卷影复制过程,并返回新创建的阴影副本 ID[^1]。 #### 访问卷影副本中的文件 一旦有了有效的阴影副本 ID 或者知道其路径(例如 `\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy5`),就可以从中读取特定文件并将其保存到其他位置。对于 NTDS 数据库文件 (`ntds.dit`) 来说,可以通过下面的方式进行复制: ```batch copy "\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy5\windows\NTDS\ntds.dit" "c:\ntds.dit" ``` 这一步骤使得可以从卷影副本中提取出指定时间点的状态下的重要系统文件,这对于灾难恢复场景特别有用。 #### 删除不再需要的卷影副本 当完成所需的操作之后,应该清理掉不必要的卷影副本以释放存储空间。同样利用 `vssadmin` 命令实现这一点: ```bash vssadmin delete shadows /for=C: /quiet ``` 此命令将会静默移除所有针对 C 驱动器建立起来的卷影副本记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值