利用卷影拷贝服务攻击域控五大绝招
点击星标,即时接收最新推文
在微软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语言中实现端口转发非常容易。 如下这段代码实现了一个基本的…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...