ActiveDirectory安全攻防(七)

admin 2026-08-17 07:51:56 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文深入分析了ActiveDirectory数据库NTDS.DIT作为核心攻击目标的价值,详细阐述了攻击者如何利用Windows内置的ntdsutil工具结合卷影复制机制,在域控制器运行期间绕过文件锁定创建快照并提取数据库文件及SYSTEM注册表hive。文章进一步揭示了提取后离线破解密码哈希、伪造GoldenTicket等攻击路径,并从监控工具使用、加强物理与虚拟安全、限制工具执行等角度提出了全面的防御策略。核心结论是保护AD不仅需关注逻辑权限,更需防护承载数据库的基础设施安全。 综合评分: 95 文章分类: 漏洞分析,红队,内网渗透,安全建设,安全工具


cover_image

Active Directory 安全攻防(七)

原创

寰宇秘阁 寰宇秘阁

寰宇密阁

2026年7月20日 10:00 安徽

在小说阅读器读本章

去阅读

一、引言

在信息安全领域有一条基本原则:任何人如果获得了一台计算机未加密系统磁盘的访问权限,就等于拥有了这台计算机。这条原则适用于所有 Windows 系统,但当目标是域控制器时,其影响范围会被急剧放大。

对于域控制器而言,这条原则可以进一步延伸为:

任何人如果获取了 Active Directory 数据库,就等于拥有了整个 Active Directory——进而可能控制所有依赖 AD 进行身份验证和授权的文件服务器、数据库服务器、邮件服务器以及其他任何系统。

这并非夸张。Active Directory 数据库文件(NTDS.DIT)中存储了域内所有用户、计算机、服务账户的密码哈希、Kerberos 密钥、信任关系密钥等核心认证数据。一旦攻击者获取了这个文件,他们可以:

  • 离线解密密码哈希:提取所有域用户(包括 Domain Admins、Enterprise Admins、krbtgt 等)的 NTLM 哈希和 Kerberos 密钥
  • 执行 Pass-the-Hash 攻击:使用提取的哈希直接冒充任意用户
  • 伪造 Golden Ticket:利用 krbtgt 账户的密钥伪造任意 Kerberos 票据
  • 修改权限配置:在某些场景下,直接操纵数据库内容来提升低权限账户的权限

市面上存在大量工具可以用于查看和操纵 AD 数据库文件的内容。对攻击者而言,最核心的目标通常是:获取一个高权限账户的凭据,或者将一个低权限账户提升为高权限账户


二、如何获取正在使用中的数据库

理解了 AD 数据库的价值之后,下一个问题自然是:攻击者如何获取这个文件?

AD 数据库文件 NTDS.DIT 默认存储在域控制器的 %SystemRoot%\NTDS\ 目录下(通常是 C:\Windows\NTDS\ntds.dit)。然而,当域控制器正常运行时,这个文件处于 ESE(Extensible Storage Engine)数据库引擎的独占锁定状态,无法像普通文件那样直接复制。

尝试直接复制正在运行的 ntds.dit 文件会收到”文件正在使用”的错误提示。

这就引出了多种绕过文件锁定的技术手段,其中最经典的方式之一就是利用 Windows 内置的 卷影复制(Volume Shadow Copy) 机制。


三、ntdsutil 命令

3.1 ntdsutil 简介

ntdsutil 是 Windows Server 上随 Active Directory 域服务一起安装的内置命令行工具。它最初设计用于 AD 数据库的维护和管理操作,包括:

  • 数据库压缩与完整性检查
  • 权威还原
  • FSMO 角色管理
  • 快照(Snapshot)管理

从 Windows Server 2008 开始,ntdsutil 支持在域控制器运行期间创建数据库快照。这个功能的设计初衷是方便管理员在不停机的情况下备份或检查 AD 数据库的历史状态,但同样可以被攻击者利用来提取数据库文件。

3.2 创建快照

ntdsutil 具有多级子菜单结构,可以交互式执行,也可以将命令串联在一行中执行。

交互式执行方式

C:\> ntdsutil
ntdsutil: activate instance ntds
Active instance set to "ntds".
ntdsutil: snapshot
snapshot: create
Creating snapshot...
Snapshot set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} generated successfully.
snapshot: quit
ntdsutil: quit

单行命令方式

ntdsutil "act inst ntds" "snap c q q"

命令解析:

| 命令部分 | 含义 | | — | — | | act inst ntds | 激活实例 NTDS,建立与 Active Directory 数据库的连接 | | snap | 进入快照管理子菜单 | | c (create) | 创建一个新的快照 | | q (quit) | 退出当前子菜单 |

执行 create 命令后,系统会利用 VSS(Volume Shadow Copy Service) 在特定时间点对整个驱动器创建一个快照。快照数据存储在 System Volume Information 文件夹中。

关于快照容量:可以创建的快照数量取决于磁盘或 SSD 的总容量,以及为快照存储预留的磁盘空间大小。

3.3 列出和挂载快照

创建快照后,需要将其挂载(mount)才能访问其中的文件内容。

列出所有可用快照

ntdsutil
ntdsutil: snapshot
snapshot: list all

快照列表的输出结构需要特别理解:

  • 快照集(Snapshot Set):每个快照首先以完整的快照集形式显示(例如编号 1:),代表该时间点所有相关驱动器的完整集合
  • 单个驱动器:在快照集下方列出各个驱动器及其盘符(例如编号 2: 对应 C: 盘)

如果域控制器只有一个系统驱动器,那么选择快照集或单个驱动器条目的效果相同。

挂载快照

snapshot: mount 2

挂载成功后,快照内容会以只读方式映射到以下路径:

C:\$Snap_<日期时间>_Volume\

例如:

C:\$Snap_202401151030_VolumeC\

3.4 从快照中提取数据库文件

快照挂载完成后,关键的一步来了:由于快照中的文件是历史副本,并非当前正在使用的文件,因此不受 ESE 数据库引擎的文件锁定限制

攻击者(或管理员)可以直接从快照路径中复制 AD 数据库文件:

copy "C:\$Snap_202401151030_VolumeC\Windows\NTDS\ntds.dit" C:\temp\ntds.dit
copy "C:\$Snap_202401151030_VolumeC\Windows\System32\config\SYSTEM" C:\temp\SYSTEM

注意:除了 ntds.dit 文件本身,攻击者通常还需要 SYSTEM 注册表 hive 文件,因为其中包含用于解密数据库内容的 Boot Key(系统启动密钥)

至此,攻击者已经获得了离线分析 AD 数据库所需的全部文件。


四、提取后的攻击路径

获取了 ntds.dit 和 SYSTEM 文件后,攻击者可以在完全离线的环境中进行以下操作:

4.1 提取密码哈希

使用工具(如 secretsdump.pyDSInternals PowerShell 模块等)可以从数据库中提取所有账户的 NTLM 哈希:

# 使用 DSInternals 模块示例
$key&nbsp;=&nbsp;Get-BootKey-SystemHivePath&nbsp;'C:\temp\SYSTEM'
Get-ADDBAccount-All&nbsp;-DBPath&nbsp;'C:\temp\ntds.dit'-BootKey&nbsp;$key|
Format-Table&nbsp;Name,&nbsp;NTHash

4.2 提取 Kerberos 密钥

krbtgt 账户的密钥可以被提取并用于伪造 Golden Ticket,实现对整个域的持久化控制。

4.3 离线密码破解

提取的 NTLM 哈希可以通过彩虹表或暴力破解工具(如 Hashcat)进行离线破解,还原明文密码。


五、防御视角

5.1 监控 ntdsutil 的使用

ntdsutil 的执行会产生明确的日志痕迹:

  • 进程创建日志:通过 Sysmon 或 Windows 安全审计策略监控 ntdsutil.exe 的启动
  • VSS 事件:卷影复制服务的创建操作会在系统事件日志中留下记录
  • 命令行参数审计:启用进程命令行记录后,可以捕获 ntdsutil 的具体参数

5.2 保护域控制器的物理和虚拟安全

| 防护措施 | 说明 | | — | — | | BitLocker 加密 | 对域控制器的系统驱动器启用 BitLocker,防止离线磁盘访问 | | 物理安全 | 确保域控制器所在的服务器机房有严格的物理访问控制 | | 虚拟化安全 | 如果域控制器运行在虚拟机中,保护虚拟机管理平台的访问权限,防止通过快照或磁盘导出获取数据 | | 最小权限 | 严格限制能够登录域控制器的账户数量 |

5.3 限制域控制器上的工具使用

通过 AppLocker 或 Windows Defender Application Control(WDAC)策略,可以限制非必要工具在域控制器上的执行。但需注意,ntdsutil 是系统内置工具,完全禁止可能影响正常管理操作。

5.4 其他数据库提取方式的防范

ntdsutil 只是提取 AD 数据库的方式之一。攻击者还可能使用:

  • vssadmin 或 wmic shadowcopy 创建卷影副本
  • DCSync 攻击(通过模拟域控制器复制协议远程提取哈希,无需接触数据库文件)
  • 备份文件窃取(从备份系统中获取域控制器的备份)
  • 虚拟机磁盘文件复制(直接复制 VMDK/VHDX 文件)

全面的防御策略需要覆盖所有这些攻击路径。


六、总结

Active Directory 数据库(NTDS.DIT)是整个域环境中最具价值的攻击目标之一。ntdsutil 作为 Windows 内置的管理工具,提供了在域控制器运行期间通过快照机制提取数据库副本的能力。这一功能虽然为管理员提供了便利,但同样为攻击者打开了一扇门。

保护 Active Directory 不仅仅是保护逻辑层面的权限配置,更需要保护承载数据库的物理和虚拟基础设施。任何能够接触到域控制器磁盘内容的路径,都是通往域控制权的潜在攻击路径。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:寰宇密阁 寰宇秘阁 寰宇秘阁《Active Directory 安全攻防(七)》

一个韭菜的自我修养 网络安全文章

一个韭菜的自我修养

文章总结: 本文探讨交易市场中勤奋的真正含义,指出90%的无效努力反而与目标背道而驰。作者强调真正的勤奋是长期重复正确行为:恪守交易系统、让计划先于动作、注重行
评论:0   参与:  0