ActiveDirectory安全攻防(八)

admin 2026-08-14 08:10:19 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细介绍了dsamain工具将离线AD数据库挂载为LDAP服务进行侦察的方法,攻击者可借此识别高价值账户与安全组,并利用secretsdump.py等工具提取密码哈希。防御建议包括监控dsamain使用、保护高权限组成员资格、加密数据库文件及实施纵深防御策略。 综合评分: 85 文章分类: 渗透测试,红队,内网渗透,安全工具,漏洞分析


cover_image

Active Directory 安全攻防(八)

原创

寰宇秘阁 寰宇秘阁

寰宇密阁

2026年7月24日 10:00 安徽

在小说阅读器读本章

去阅读

一、dsamain

1.1 工具简介

dsamain 是随 Active Directory 域服务一同安装在域控制器上的内置命令行工具。它的核心功能是:将一个离线的 AD 数据库文件(ntds.dit)以只读 LDAP 接口的形式对外提供访问

换句话说,dsamain 可以把一个静态的数据库快照”复活”为一个可查询的目录服务实例,管理员或攻击者可以使用标准的 AD 管理工具(如 Active Directory Users and ComputersLDP.exeADExplorer 等)连接到这个 LDAP 接口,像浏览正常运行的 AD 一样浏览数据库中的所有逻辑内容。

1.2 设计初衷与滥用场景

设计初衷:微软提供 dsamain 的目的是让管理员能够方便地查看 AD 数据库快照的历史状态,用于:

  • 比较不同时间点的 AD 对象变化
  • 在执行权威还原前确认需要恢复的对象
  • 审计历史配置

滥用场景:攻击者在通过 ntdsutil 快照或其他方式获取了 ntds.dit 文件后,可以使用 dsamain 将其挂载为 LDAP 服务,从而系统性地浏览数据库中的全部逻辑信息,包括:

  • 所有用户账户及其属性
  • 所有安全组及其成员关系
  • 组织单元(OU)结构
  • 计算机账户
  • 信任关系配置
  • GPO 链接信息

1.3 基本使用方法

dsamain 的典型启动命令如下:

dsamain -dbpath "C:\temp\ntds.dit" -ldapPort 10389

| 参数 | 说明 | | — | — | | -dbpath | 指定离线 AD 数据库文件的路径 | | -ldapPort | 指定 LDAP 监听端口(需避开已占用的 389 端口) |

启动成功后,dsamain 会在指定端口上开启一个只读的 LDAP 服务。此时可以使用任何支持 LDAP 的工具连接到 localhost:10389 进行查询。

使用 AD 管理工具连接

打开 Active Directory Users and Computers,右键点击根节点选择”更改域控制器”,手动输入 localhost:10389,即可像浏览正常 AD 一样浏览快照中的内容。

使用 LDP.exe 连接

连接 → 连接到服务器:localhost,端口:10389

1.4 只读特性

需要强调的是,dsamain 提供的是只读访问。通过这个接口无法修改数据库中的任何内容。但这并不意味着它对攻击者没有价值——恰恰相反,侦察(Reconnaissance) 是攻击链中至关重要的一环。


二、从 dsamain 中寻找高价值目标

通过 dsamain 浏览离线数据库,攻击者的核心目标是识别高价值账户和安全组,为后续的凭据提取和权限提升确定优先目标。

2.1 关键安全组

从管理员的角度来看,以下安全组是最需要保护的;从攻击者的角度来看,这些组的成员是最有价值的攻击目标:

| 安全组 | 风险说明 | | — | — | | Administrators | 域内置管理员组,对域控制器拥有完全控制权限 | | Domain Admins | 域管理员组,对域内所有对象拥有广泛的管理权限 | | Enterprise Admins | 企业管理员组,在整个林范围内拥有最高权限 | | Backup Operators | 备份操作员组,成员可以备份和还原文件,包括 AD 数据库 | | 域控制器计算机账户 | DC 的机器账户本身拥有复制 AD 数据的权限 |

2.2 为什么 Backup Operators 特别值得关注

在上述安全组中,Backup Operators 往往被低估,但它实际上是一个极其危险的组。其成员拥有以下关键能力:

  • 备份文件的权限:可以读取系统上的任何文件,包括受 ACL 保护的文件(如 ntds.ditSYSTEM 注册表 hive)
  • 还原文件的权限:可以将修改过的文件写回系统

这意味着 Backup Operators 的成员理论上可以:

  1. 备份(读取)AD 数据库文件
  2. 在离线环境中修改数据库内容(例如提升某个账户的权限)
  3. 将修改后的文件还原(写回)到域控制器

虽然在实际操作中,直接替换正在运行的 ntds.dit 文件会受到文件锁定的限制,但 Backup Operators 的备份权限本身就足以让攻击者获取数据库副本。

2.3 所有权接管能力

上述高权限组的成员还拥有一个关键能力:接管 AD 数据库中对象的所有权(Take Ownership)

在 AD 的安全模型中,对象的所有者可以修改该对象的 ACL(访问控制列表),从而授予自己或其他账户任意权限。这意味着:

  • 即使某个对象的 ACL 明确拒绝了管理员的访问
  • 管理员仍然可以先接管所有权,再修改 ACL,最终获得完全控制权

这一机制在正常管理中是必要的安全保障,但在攻击场景中则成为了权限提升的重要手段。

2.4 侦察工作流

攻击者使用 dsamain 进行侦察的典型工作流如下:

1. 通过 ntdsutil 快照获取 ntds.dit
         ↓
2. 使用 dsamain 挂载为 LDAP 服务
         ↓
3. 枚举所有高权限安全组的成员
         ↓
4. 识别服务账户、特权账户
         ↓
5. 确定攻击优先级
         ↓
6. 使用专用工具提取目标账户的密码哈希

三、从离线数据库提取密码哈希

dsamain 提供的 LDAP 接口虽然可以浏览逻辑信息,但无法直接读取密码哈希(密码属性在 LDAP 查询中不可见)。要提取密码哈希,需要使用专门的离线数据库解析工具。

3.1 常用工具

以下是两个经典的开源工具,均可在 Kali Linux 等渗透测试平台上使用:

NTDSXtract

  • 项目地址:https://github.com/csababarta/ntdsxtract
  • 功能:从 AD 数据库中提取用户账户信息和密码哈希
  • 工作原理:直接解析 ESE 数据库格式,读取存储在 datatable 中的账户数据

LibEseDB

  • 项目地址:https://github.com/libyal/libesedb
  • 功能:通用的 ESE(Extensible Storage Engine)数据库解析库
  • 工作原理:提供底层的 ESE 数据库读取能力,可以导出数据库中的表和记录

3.2 典型提取流程

使用这些工具提取密码哈希的一般流程如下:

步骤 1:使用 libesedb 导出数据库表
    esedbexport ntds.dit

步骤 2:使用 NTDSXtract 解析导出的数据
&nbsp; &nbsp; dsusers.py <datatable> <link_table> --syshive SYSTEM --passwordhashes --lmoutfile LM.out --ntoutfile NT.out

步骤 3:获得所有账户的 NTLM 哈希

3.3 其他主流工具

除了上述两个工具外,安全社区还开发了更多现代化的替代方案:

| 工具 | 说明 | | — | — | | Impacket secretsdump.py | Python 工具,可直接从 ntds.dit + SYSTEM 提取哈希,使用最为广泛 | | DSInternals | PowerShell 模块,提供 Get-ADDBAccount 等 cmdlet,功能全面 | | mimikatz | 支持 lsadump::dcshadow 等多种 AD 攻击模式 |

以 secretsdump.py 为例:

secretsdump.py&nbsp;-ntds&nbsp;ntds.dit&nbsp;-system&nbsp;SYSTEM LOCAL

该命令会输出所有账户的用户名和 NTLM 哈希,格式如下:

Administrator:500:aad3b435b51404eeaad3b435b51404ee:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy:::

四、防御建议

4.1 监控 dsamain 的使用

dsamain.exe 在正常运维中使用频率极低。任何 dsamain 进程的启动都应该触发安全告警:

监控规则:
- 进程名称:dsamain.exe
- 关注参数:-dbpath、-ldapPort
- 告警级别:高

4.2 保护高权限组成员资格

  • 定期审计 Administrators、Domain Admins、Enterprise Admins、Backup Operators 的成员
  • 遵循最小权限原则,避免将不必要的账户加入高权限组
  • 特别关注 Backup Operators 组——许多组织忽视了这个组的风险

4.3 保护数据库文件和备份

| 防护层面 | 具体措施 | | — | — | | 磁盘加密 | 对域控制器启用 BitLocker | | 备份加密 | 确保 AD 备份文件本身经过加密存储 | | 备份访问控制 | 严格限制谁可以访问备份存储位置 | | 快照清理 | 定期检查并删除不必要的 VSS 快照 |

4.4 纵深防御思维

保护 AD 数据库需要多层防御:

第一层:防止攻击者获取域控制器的管理权限
第二层:即使获取了管理权限,通过监控检测异常操作
第三层:即使数据库被提取,通过强密码策略增加破解难度
第四层:即使哈希被提取,通过定期轮换密码缩短有效窗口

五、总结

dsamain 工具将离线的 AD 数据库文件转化为可通过标准 LDAP 工具浏览的只读目录服务,使攻击者能够系统性地识别高价值目标账户和安全组。结合 NTDSXtract、LibEseDB、secretsdump.py 等哈希提取工具,攻击者可以从离线数据库中获取所有域账户的密码哈希。

dsamain 和各类哈希提取工具的存在提醒我们,AD 数据库一旦落入攻击者手中,其中的所有信息——从组织结构到密码哈希——都将完全暴露。保护 AD 数据库文件本身,与保护 AD 的逻辑权限配置同等重要。


免责声明:

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

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

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

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

评论:0   参与:  0