利用卷影拷贝服务攻击域控五大绝招
点击星标,即时接收最新推文

在微软Active Directory(活动目录)中,所有的数据都被保存在ntds.dit中, NTDS.DIT是一个二进制文件,
它存在于域控制器中的
%SystemRoot%\ntds\NTDS.DIT。ntds.dit包括但不限于Username、Hash、Group、GPP、OU等活动目录相关信息。它和SAM文件一样,是被Windows系统锁定的,我们来介绍一下如果将ntds.dit从系统转导出以及如何读取ntds.dit中的信息。一般情况下我们会利用VSS 即 Volume Shadow Copy Service。VSS本质上属快照(Snapshot)技术的一种,主要用来做备份恢复之用(即使目标文件当前处于锁定状态)。
01
ntdsutil工具提取
ntdsutil.exe是一个为Active Directory 提供管理设施的命令行工具。您可使用 Ntdsutil.exe 执行 Active Directory 的数据库维护,管理和控制单个主机操作,创建应用程序目录分区,以及删除由未使用 Active Directory 安装向导 (DCPromo.exe) 成功降级的域控制器留下的元数据。该工具默认被安装在域控制器上,我们可以在域控制器上进行操作,也可以通过域内机器远程在域控制器上操作,如何进行远程操作会在后面的章节进行详细讲解。
支持操作系统为:Server 2003、Server 2008、Server 2012。
开始我们在域控制器上的cmd输入如下命令创建一个快照,该快照将Windows中的文件进行了全部拷贝粘贴,被拷贝出的文件,不受Windows锁定限制。可以看到创建了一个GUID为b899b565-dcd4-423a-b663-7dfabbfb979e的快照副本,如图6-1所示。
ntdsutil snapshot "activate instance ntds" create quit quit 
图6-1使用ntdsutil.exe创建快照
接下来我们将刚刚创建的快照挂载在机器上,命令格式为ntdsutil snapshot "mount {GUID}" quit quit,其中GUID为刚刚创建的GUID。
在cmd输入如下命令挂载,可以看到已经成功将快照挂载到系统中,快照被挂载在C:\$SNAP_201808131112_VOLUMEC$\目录,如图6-2所示。
ntdsutil snapshot "mount {b899b565-dcd4-423a-b663-7dfabbfb979e}" quit quit 
图6-2将创建的快照挂载到系统中
接着使用windows自带的copy命令将快照中的文件复制出来,在cmd输入如下命令。
copy C:\$SNAP_201808131112_VOLUMEC$\windows\ntds\ntds.dit c:\temp\ntds.dit 该命令可以将快照中
C:\$SNAP_201808131112_VOLUMEC$\windows\ntds\ntds.dit 复制到本地计算机的c:\temp\ntds.dit目录中。
接下来我们将之前挂载的快照卸载并删除快照,擦除痕迹,如图6-3所示,在cmd输入命令:
ntdsutil snapshot "unmount {b899b565-dcd4-423a-b663-7dfabbfb979e}" "delete {b899b565-dcd4-423a-b663-7dfabbfb979e}" quit quit 
图6-3卸载并删除挂载好的快照
其中b899b565-dcd4-423a-b663-7dfabbfb979e为之前创建时的GUID,每次创建的GUID都不同。再查询当前所有快照,显示没有任何快照,表示删除成功,如图6-4所示。

图6-4列出当前系统中所有快照
02
vssadmin工具提取
vssadminn是Windows Server 2008 及 Windows 7系统提供的VSS的管理工具。它可以用于创建或删除卷影副本,列出卷影副本的信息(只能管理系统Provider创建的卷影副本)。还可以用于显示所有安装的所有卷影副本写入程序(writers)和提供程序(providers),以及改变卷影副本存储空间(即所谓的“diff 空间”)的大小等。
支持操作系统:Server 2008、 Server 2012
操作流程和ntdsutil类似,在域控制器中打开cmd,输入如下命令创建一个C盘的卷影副本,如图6-5所示。
vssadmin create shadow /for=c: 
图6-5创建快照
将创建好的副本中的ntds.dit进行复制,如图6-6所示,在cmd输入命令:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy5\windows\NTDS\ntds.dit c:\ntds.dit 
图6-6复制快照中的ntds.dit
查看C盘下,看到ntds.dit已经被成功复制出来,如图6-7所示。

图6-7查看是否拷贝成功
接下来做的就是删除副本,清理痕迹,如图6-8所示。

图6-8删除快照
03
vssown.vbs脚本提取
vssown.vbs是和vssadmin类似,它是由Tim Tomes开发完成的,它可以创建和删除卷影副本,以及启动和停止卷影复制服务。作者的github有储存此项目,下载地址:
https://raw.githubusercontent.com/borigue/ptscripts/master/windows/vssown.vbs 在cmd下执行该脚本,该脚本常用为下列几个命令。
cscript vssown.vbs /start /启动卷影复制服务
cscript vssown.vbs /create c /创建一个C盘的卷影副本
cscript vssown.vbs /list /列出当前卷影副本
cscript vssown.vbs /delete /删除卷影副本
开始先启动卷影复制服务,如图6-9所示,输入命令:
cscript vssown.vbs /start 
图6-9启动卷影复制服务
创建一个C盘的卷影副本,如图6-10所示,输入命令:
cscript vssown.vbs /create c 
图6-10创建快照
列出当前卷影副本,如图6-11所示,输入命令:
cscript vssown.vbs /list 看到当前存在一个id为{E6ED51DF-7EC8-43F5-84D0-077899E7D4C9}的卷影副本。卷影副本位置为
\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8 
图6-11查看当前存在的快照
将ntds.dit复制出来,复制成功,如图6-12所示,输入命令:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\NTDS\ntds.dit c:\ntds.dit 
图6-12复制ntds.dit到本地磁盘
删除卷影副本,擦除痕迹,如图5-166所示,输入命令:
cscript vssown.vbs /delete {E6ED51DF-7EC8-43F5-84D0-077899E7D4C9} 
图6-13删除创建的快照
04
使用NTDSUTIL的IFM创建卷影副本
可以按照方法(1)中的命令进行创建、挂载、复制、删除四个步骤完成ntds.dit的拷贝,也可以使用创建一个IFM的方式获取ntds.dit数据库文件,当我们使用NTDSUTIL创建一个IFM时,卷影副本会进行快照、挂载、将ntds.dit和计算机SAM进行复制到目标文件夹中。此方法同样可以使用Powershell或WMI进行远程执行,我们会在后面的章节逐一介绍。
首先我们在域控制器以管理员模式打开cmd,如图6-14所示,输入如下命令。
ntdsutil "ac i ntds" "ifm" "create full c:/test" q q 
图6-14创建快照并复制ntds.dit到本地磁盘
该命令会将ntds.dit复制到C盘下的test文件夹中的Active Directory文件夹中,如图6-15所示。

图6-15查看导出到本地磁盘的ntds.dit
将SYSTEM和SECURITY复制到C盘下的test文件夹中的registry文件夹中,如图6-16所示。

图6-16查看导出到本地磁盘的SYSTEM
将ntds.dit拖回本地后,在目标机器将test文件夹整个删除即可,输入命令:
rmdir /s/q test Tips:使用Powershell导出ntds.dit
在前面提到过的nishang工具包中,包含名为Copy-VSS.ps1的powershell脚本,我们将该脚本单独提取出来,在域控制器打开一个Powershell窗口,将Copy-VSS.ps1导入并执行该脚本,如图6-17所示,输入命令:
import-module .\Copy-VSS.ps1 /导入该脚本
Copy-vss /执行命令 
图6-17使用Powershell导出ntds.dit
该脚本会将SAM、SYSTEM、ntds.dit复制到Copy-VSS.ps1的同目录中,我们可以将其拖回本地进行处理。
05
使用diskshadow导出ntds.dit
参照微软官方文档解释:“DiskShadow.exe这款工具可以使用卷影拷贝服务(VSS)所提供的多个功能。默认配置下,DiskShadow.exe使用了一种交互式命令解释器,这里跟DiskRaid或DiskPart比较类似。”事实上,因为DiskShadow的代码是由微软官方签名的,而且在Windows Server 2008、Windows Server 2012和Windows Server 2016中都默认包含了DiskShadow。Diskshadow.exe 也是可以用来操作VSS导出ntds.dit,其功能上类似 vshadow,它同样是被放在了 c:\windows\system32\目录中,而 vshdow 则是被包含在windowsSDK 中的,实战中可能还需要自己想办法传到目标机器上,也就是说,diskshadow 在我们实际渗透过程中更便于在目标系统上开箱即用。diskshadow拥有交互模式和非交互模式两种,交互模式需要登陆远程桌面等图形化管理方式,不利用隐蔽的进行渗透,所以我们一般使用非交互模式进行操作。因为不论是交互模式还是非交互模式都可以使用EXEC通过调取一个脚本文件执行相关命令。
首先查看diskshadow.exe的帮助信息,列出所有选项,输入命令,如图6-18所示。
diskshadow.exe /? 
图6-18查看diskshadow.exe的帮助信息
我们可以使用diskshadow.exe执行命令,这样的操作可以绕过一些防护程序,如我们可以使用diskshadow.exe运行一个calc.exe作为验证,将需要执行的命令输入到一个文本文件,先将exec c:\windows\system32\calc.exe写入C盘目录中的command.txt,如图6-19所示。

图6-19查看脚本文件中的内容
再使用diskshadow.exe执行该命令即可,输入命令,如图6-20所示。

图6-20使用diskshadow.exe运行了一个calc.exe
diskshadow.exe同样是可以用来导出ntds.dit的,我们需要将命令写入一个文本文件中,写入内容如下:
set context persistent nowriters /设置卷影副本
add volume c: alias someAlias /添加新的卷
create /创建新的快照
expose %someAlias% k: /分配虚拟磁盘盘符
exec "cmd.exe" /c copy k:\Windows\NTDS\ntds.dit c:\ntds.dit /复制ntds.dit到C盘
delete shadows all /删除所有快照
list shadows all /列出系统的卷影副本
reset /重置
exit /33退出 使用diskshadow.exe直接加载这个文本文件来达到执行命令的效果,输入命令,如图6-21所示。
diskshadow /s c:\command.txt 
图6-21执行脚本导出ntds.dit
注:在使用diskshadow.exe进行导出ntds.dit操作时,必须将当前域控制器执行shell的路径切换到C:\windows\system32\,否则会引起错误发生,然后使用diskshadow.exe加载这个command.txt即可执行。
创建快照并分配盘符的效果如图6-22所示。

图6-22创建分配盘符的虚拟磁盘
在导出ntds.dit后,我们可以使用还需要将system转储出来,因为system中存放着解密ntds.dit的密钥,如果没有该密钥,是无法查看ntds.dit中的信息,输入命令,如图6-23所示。
reg save hklm\system c:\windows\temp\system.hive 
图6-23从注册表导出SYSTEM
注:在使用diskshadow.exe进行导出ntds.dit时,切记导出成功后将快照和分配的盘符删除,引起管理员的警觉,以免引起不必要的麻烦。
06
总结
1.在实战环境中,我们可以在非特权用户权限中diskshadow.exe的部分功能,相比较Vshadow的其他工具,diskshadow.exe更为灵活。
2.diskshadow.exe在执行命令时,需要上传文本文件到目标操作系统的本地磁盘或通过交互式才可以完成,而Vshadow等工具,可以直接执行相关命令,在遇到安全限制更为严格的操作系统中使用,可以大大减少被发现的可能性。
3.在实战中,先将含有需要执行的命令的文本文件写入到远程目标操作系统中,然后使用diskshadow.exe调用文本文件并执行。
4.使用diskshadow.exe导出ntds.dit可以使用wmi对远程主机进行操作,避免图形化登陆。
5.使用diskshadow.exe导出ntds.dit时,务必要在C:\windows\system32\中执行操作。
6.在脚本执行完成后,检查从快照中复制出来的ntds.dit的大小,如果发生错误,可以检查修改脚本再重新执行。
防御:
1.监控卷影拷贝服务(VSS)的使用,检测卷影拷贝活动以及任何涉及到活动目录数据库文件(ntds.dit )的可疑操作行为。
2.监控System Event ID 7036(卷影拷贝服务进入运行状态的标志)的可疑实例以及VSSVC.exe进程的创建事件。
3.监控diskshadow.exe以及相关子进程的进程创建事件。
4.监控客户端设备的diskshadow.exe实例创建,除非是业务需要,否则Windows操作系统中不应该出现diskshadow.exe,可以将其在计算机中删除。
5.在日志中监控新的逻辑驱动器映射事件。

MS08067安全实验室视频号已上线
欢迎各位同学关注转发~
— 实验室旗下直播培训课程 —









和20000+位同学加入MS08067一起学习

相关文章:
利用卷影拷贝服务攻击域控五大绝招
点击星标,即时接收最新推文 在微软Active Directory(活动目录)中,所有的数据都被保存在ntds.dit中, NTDS.DIT是一个二进制文件, 它存在于域控制器中的 %SystemRoot%\ntds\NTDS.DIT。ntds.dit包括但不限于Us…...
web3 在React dapp中全局管理web3当前登录用户/智能合约等信息
上文 Web3 React项目Dapp获取智能合约对象我们在自己的前端dapp项目中链接获取到了 自己的智能合约 我们继续 我们还是先启动ganache环境 终端输入 ganache -d然后发布一下我们的智能合约 打开我们的合约项目 终端输入 truffle migrate --reset这样 我们的智能合约就部署到区…...
Golang硬件控制:将软件力量扩展到物理世界
引言 在过去的几十年中,计算机科学和软件工程领域取得了巨大的发展和进步。现在,我们可以编写各种强大的软件应用程序来解决各种问题。然而,软件并不仅限于在计算机上运行,它也可以扩展到物理世界中。这就是Golang的魅力所在。Go…...
Docker 查看Image镜像的Dockerfile方法
1、创建测试镜像 Dockerfile: FROM centos LABEL maintainer"NGINX Docker Maintainers docker-maintnginx.com" RUN yum install -y nginx RUN echo "Nginx Web: CMD defining default arguments for an ENTRYPOINT" > /usr/share/nginx/html/index.…...
el-dialog中嵌套iframe之后拿不到iframe的id 的解决办法
在vueelement项目中想用到el-dialog弹窗加iframe嵌套外部页面的方法,但是这时候要获取iframe里面的ID 但是这时候怎么也获取不到 <el-dialog ref"middleFlag" v-if"middleFlag" width"1100px" height1200px title"文章管理" :visib…...
汇总公安局网站建设想法,QPQ盐浴氮化处理
功能描述 网站管理平台 1、主要功能:网站信息发布功能组件、文章数据转移、内容管理word导入发布、一键排版、统一互动、网站管理、权限分配管理 2、跨浏览器的后台管理界面,支持IE\FIREFOX\CHROME\SAFARI\OPERA及其他第三方浏览器; 3、系统…...
前度开发面试题
面试题总结 vue页面跳转会经过两个钩子函数beforeEach、afterEach 组见守卫 beforeRouteEnter前置组见守卫 *beforeRouteUpdate更新之前 watch和computed区别 数据没有改变,则 computed 不会重新计算)。若没改变,计算属性会立即返回之前缓…...
如何保证缓存中都是热点数据?
确保缓存中保留热点数据是关键,因为热点数据通常是最常被访问的数据,提高了缓存的命中率和整体性能。以下是一些策略和方法,能够帮助你维护缓存中的热点数据: 缓存策略: 缓存预热: 在系统启动时或负载较低的…...
什么是Webpack?它的主要功能是什么?
聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...
基于深度学习的人脸性别年龄识别 - 图像识别 opencv 计算机竞赛
文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计…...
宝塔安装mongodb插件失败的解决办法
安装时始终不成功。 进入控制台进行安装 /www/server/php/71# pecl install mongodb WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update pecl/mongodb requires PHP (version > 7.2.0, …...
CVE-2018-8174 IE浏览器远程代码执行漏洞
一、漏洞简介 该漏洞影响最新版本的IE浏览器及使用了IE内核的应用程序。用户在浏览网页或打开Office文档时都可能中招,最终被黑客植入后门木马完全控制电脑。微软在4月20日早上确认此漏洞,并于5月8号发布了官方安全补丁,对该0day漏洞进行了修…...
用前端框架Bootstrap和Django实现用户注册页面
01-新建一个名为“mall_backend”的Project 命令如下: CD E:\Python_project\P_001\myshop-test E: django-admin startproject mall_backend02-新建应用并注册应用 执行下面条命令依次创建需要的应用: CD E:\Python_project\P_001\myshop-test\mall…...
MySQL用户管理和授权
用户管理和授权是属于MySQL当中的DCL语句 创建用户以及一些相关操作 明文创建用户 create user zzrlocalhost IDENTIFIED by 123456;create user 这是创建用户的开头zzr表示用户名 localhost:新建的用户可以在哪些主机上登录。即可以使用IP地址,网段&a…...
PCIe 的 MSI 中断详解,寄存器级别的详细流程分析,完全搞懂硬件的工作流程
PCIe 的 MSI 中断 前言 什么是 MSI 中断 (Message Signaled Interrupts) 概念与内容介绍待补充 正文 对 EP 的初始化 需要对 EP 的配置空间 MSI 相关功能的寄存器进行初始化,主要有两个寄存器 Message Address 和 Message Data。它们分别的含义是 EP 产生 MSI …...
软考 系统架构设计师系列知识点之净室软件工程(1)
所属章节: 第5章. 软件工程基础知识 第5节. 净室软件工程 1. 概述 净室(Cleaning Room)软件工程是一种应用数学与统计学理论,以经济的方式生产高质量软件的工程技术,力图通过严格的工程化的软件过程达到开发中的零缺…...
NFC芯片MS520:非接触式读卡器 IC
MS520 是一款应用于 13.56MHz 非接触式通信中的高集成 度读写卡芯片。它集成了 13.56MHz 下所有类型的被动非接触 式通信方式和协议,支持 ISO14443A 的多层应用。 主要特点 ◼ 高度集成的解调和解码模拟电路 ◼ 采用少量外部器件,即可将输…...
git push 部分 commit
原理:通过rebase修改提交的顺序,然后提交内容 $ git rebase -ivi 编辑器里面按 i 修改你要提交的内容到最上面,然后ESC -> :wq$ git push origin 459ed31a36439c68228ac81c732a4abe3a5de149:master origin 仓库名字&#x…...
idea自动编译以及修改代码后需要执行 mvn clean install 才生效
idea自动编译以及修改代码后需要执行 mvn clean install 才生效 一. idea热部署一、开启IDEA的自动编译(静态)二、开启IDEA的自动编译(动态)三、开启IDEA的热部署策略(非常重要) 二. IDEA 中项目代码修改后…...
21.13 Python 实现端口流量转发
端口流量转发(Port Forwarding)是一种网络通信技术,用于将特定的网络流量从一个端口或网络地址转发到另一个端口或地址。它在网络中扮演着一个非常重要的角色,在Python语言中实现端口转发非常容易。 如下这段代码实现了一个基本的…...
2026奇点大会唯一未删减技术圆桌实录(含OpenAI、Ethereum基金会、中科院自动化所三方闭门共识):AGI主权归属的区块链终局方案
第一章:2026奇点智能技术大会:AGI与区块链 2026奇点智能技术大会(https://ml-summit.org) AGI系统与去中心化身份的协同演进 在2026奇点智能技术大会上,核心议题之一是通用人工智能(AGI)如何依托区块链构建可信自主代…...
Claude Code vs Codex:谁才是最强 AI 编程工具?我的真实体验分享
pagehelper整合 引入依赖com.github.pagehelperpagehelper-spring-boot-starter2.1.0compile编写代码 GetMapping("/list/{pageNo}") public PageInfo findAll(PathVariable int pageNo) {// 设置当前页码和每页显示的条数PageHelper.startPage(pageNo, 10);// 查询数…...
FanControl:如何让Windows电脑风扇既安静又高效?一个开源解决方案的深度指南
FanControl:如何让Windows电脑风扇既安静又高效?一个开源解决方案的深度指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https:…...
智谱GLM-5.1登场:开源首超Opus 4.6,8小时自主执行重塑AI Agent边界
在AI大模型的演进路线上,我们习惯了“参数军备竞赛”和“跑分内卷”,但真正决定大模型能否从“极客玩具”走向“生产力工具”的核心壁垒,究竟是什么? 智谱AI用最新发布的GLM-5.1给出了答案:长程自主执行力。 没有铺天盖…...
2026届学术党必备的五大降AI率网站解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当前各类AIGC检测系统越来越精准,这时使用专业的降AIGC工具,能有效降…...
Laravel Blade 中高效筛选并限制关联分类数据的实践指南
本文讲解如何在 Laravel 中避免在 Blade 模板中嵌套循环与字符串解析,转而使用数据库层的 WHERE FIND_IN_SET() 配合 limit() 实现精准、高效的数据筛选与分页控制。 本文讲解如何在 laravel 中避免在 blade 模板中嵌套循环与字符串解析,转而使用数…...
从Razor页面到Blazor组件:深入聊聊C#三元运算符在前端渲染里的妙用
从Razor页面到Blazor组件:深入聊聊C#三元运算符在前端渲染里的妙用 在ASP.NET Core的Web开发中,动态UI渲染一直是开发者需要频繁处理的场景。传统的条件渲染方式如if指令虽然功能强大,但在处理简单条件判断时往往显得冗长。C#的三元运算符&am…...
互联网大厂 Java 求职面试:音视频场景中的技术挑战
互联网大厂 Java 求职面试:音视频场景中的技术挑战 在一个晴朗的下午,面试官小李正坐在会议室中,等候着候选人燕双非的到来。这位看似轻松的程序员,今天却要面对一系列技术问题。小李微笑着,开始了第一轮提问。第一轮提…...
Docker私库登录报x509证书错误?别慌,5分钟搞定daemon.json配置
Docker私库登录报x509证书错误的终极解决方案 当你正忙着部署最新版本的容器镜像,突然在docker login时看到那个令人头疼的x509: certificate signed by unknown authority错误,确实会让人瞬间血压升高。这种情况在企业内部私有镜像仓库(如Ha…...
【5G MAC】从RAR到MAC-CE:深入解析NR Timing Advance的同步机制与演进
1. 什么是NR Timing Advance? 想象一下你参加一场线上会议,如果所有人都在不同时间说话,主持人根本听不清谁在说什么。5G网络中的上行同步也是类似的道理——当多个终端设备(UE)同时向基站(gNB)…...
