从 Ntds.dit 文件提取密码哈希
Sep 26, 2025
Ntds.dit 文件存储所有 Active Directory 密码哈希,使其成为攻击者的首要目标:攻击者一旦能够提取、破解并利用凭据,就可能实现对整个域的完全控制。常见技术包括卷影复制(volume shadow copies)和 PowerSploit。防御需要对特权组实施严格管控与重新认证,监控可疑访问,并采用具有多层防护能力的工具来检测、阻断并降低暴露面。
由于人们把大量关注放在诸如 Pass-the-Hash(PtH)和 Pass-the-Ticket(PtT)这类基于凭据的攻击上,更严重且更有效的攻击往往会被忽视。有一种这样的攻击涉及从 Active Directory 域 控制器中窃取(外传)Ntds.dit 文件。让我们来看看这一威胁包括什么内容、攻击可以如何实施,以及你如何保护你的组织。
Ntds.dit 文件是什么?
Ntds.dit 文件是一个数据库,用于存储 Active Directory 数据,其中包括有关用户对象、组以及组成员身份的信息。重要的是,该文件还会存储域中所有用户的密码哈希值。提取这些哈希值的网络犯罪分子随后可以使用诸如 Mimikatz 之类的工具执行 PtH 攻击,或使用 Hashcat 等工具离线破解密码。事实上,一旦攻击者提取到了这些哈希值,他们就能够冒充域中的任何用户——包括域管理员。
攻击 Ntds.dit 文件是如何运作的?
第一步是获取一份 Ntds.dit 的副本。看起来并不难,但实际上并非如此,因为该文件一直被 AD 使用,因此处于锁定状态。如果你试图直接复制该文件,就会看到类似这样的错误消息:
可以使用 Windows 内置的功能或借助 PowerShell 库来绕过这一障碍。例如,攻击者可以:
- 通过 VSSAdmin 命令使用卷影复制
- 使用 PowerSploit 渗透测试 PowerShell 模块
- 利用 NTDSUtil 作为 Active Directory 组成部分提供的诊断工具
- 如果域控制器作为虚拟机运行,请利用快照
我们先来逐一了解这两种方法中的前两种。
使用 VSSAdmin 窃取 Ntds.dit 文件
步骤 1:创建卷影子副本:
步骤 2:从卷影子副本中检索 Ntds.dit 文件:
步骤 3:从注册表或卷影子副本中复制 SYSTEM 文件,因为它包含稍后用于解密 Ntds.dit 文件所需的引导密钥:
步骤 4:掩盖你的踪迹:
使用 PowerSploit NinjaCopy 盗取 Ntds.dit 文件
PowerSploit 是一种 PowerShell 渗透测试框架,包含可用于利用 Active Directory 的多种能力。Invoke-NinjaCopy 模块通过读取原始卷,从采用 NTFS 分区的卷中复制文件;这使攻击者能够在不触发任何监控系统警报的情况下访问被 Active Directory 锁定的文件。
步骤 2. 提取密码哈希
一旦攻击者获得了 Ntds.dit 文件的副本,下一步就是从中提取密码哈希。DSInternals 提供一个 PowerShell 模块,可用于与 Ntds.dit 文件进行交互;下面介绍如何使用它来提取密码哈希:
步骤 3. 使用密码哈希完成攻击。
一旦攻击者从 Ntds.dit 文件中提取出密码哈希,他们就可以使用 Mimikatz 等工具执行传递哈希(pass-the-hash,PtH)攻击。此外,他们还可以使用 Hashcat 等工具破解密码并获取其明文值。只要攻击者拿到了这些凭据,就不会再有任何限制,能够用它们做任何事情。
组织如何防范针对 Ntds.dit 文件的攻击?
防御此类攻击、保护组织的最佳方式是限制能够登录域控制器的用户数量。这不仅包括 Domain Admins 和 Enterprise Admins 等高权限组的成员,还包括 Print Operators、Server Operators 和 Account Operators 等较低权限组的成员。应当严格限制上述所有组的成员资格,对成员变更保持持续监控,并且定期进行频繁的重新认证。
此外,请考虑使用监控软件:一方面可以在用户尝试从卷影复制(volume shadow copies)中检索文件时发出告警,另一方面甚至可以阻止此类行为。
Netwrix 解决方案如何提供帮助
Netwrix 提供了多层次的方法来防御 Ntds.dit 密码提取攻击。
检测窃取 Ntds.dit 文件的尝试
Netwrix Threat Manager 是一款用于检测 Ntds.dit 密码提取攻击的有效工具。它会持续监控 Ntds.dit 文件上的意外访问事件,包括:
- 对文件系统中的文件进行直接访问 — 由于在使用过程中 Ntds.dit 文件会被 Active Directory 锁定,攻击者通常无法在不停止 Active Directory 服务的情况下获取该文件。监控用户账户发起的成功访问和被拒绝的访问事件,可以为不需要的访问尝试提供有意义的洞察,因为 AD 服务以 Local System 身份运行。
- 通过卷影复制访问 Ntds.dit 文件 — 即使 Ntds.dit 文件被锁定,攻击者也能够创建整个驱动器的影子副本,并从影子副本中提取 Ntds.dit 文件。
阻止访问 Ntds.dit 文件
Netwrix Threat Prevention 可以同时阻止对文件系统中 Ntds.dit 文件的直接访问,以及通过卷影复制访问该文件。 结果是,即使攻击者停止 Active Directory 来解锁该文件,并拥有完全的管理员权限,他们也将无法直接访问该文件。
主动减少你的攻击面
Netwrix Access Analyzer 帮助你审查并控制对域控制器具有访问权限的管理组,例如 Domain Admins 和 Server Operators。通过严格限制这些组的成员资格,你可以降低攻击者访问 Ntds.dit 文件的风险。
申请 Netwrix Threat Manager 免费试用
分享到
了解更多
关于作者
Jeff Warren
首席产品官
Jeff Warren 负责监督 Netwrix 的产品组合,在安全领域的产品管理与开发方面拥有十多年的经验。在加入 Netwrix 之前,Jeff 曾在 Stealthbits Technologies 领导产品团队;他运用自己作为软件工程师的经验,开发创新且面向企业规模的安全解决方案。凭借亲力亲为的工作方式以及解决棘手安全挑战的能力,Jeff 致力于打造真正可落地、行之有效的实用解决方案。他拥有特拉华大学(University of Delaware)的信息系统(Information Systems)学士学位。