导语:什么是Vshadow? Vshadow( vshadow.exe )是用于管理卷影副本的命令行实用程序。此工具包含在Windows SDK中 ,并由微软签名(稍后会详细介绍)。 Vshadow具有许多功能,包括执行脚本和调用支持卷影子快照管理的命令的功
什么是Vshadow?
Vshadow( vshadow.exe )是用于管理卷影副本的命令行实用程序。此工具包含在Windows SDK中 ,并由微软签名(稍后会详细介绍)。
Vshadow具有许多功能,包括执行脚本和调用支持卷影子快照管理的命令的功能。毫不奇怪,这些功能可能会被滥用于特权级的防御规避,权限持久性和文件提取。
在这篇博文中,我们将讨论Vshadow命令执行,自动启动持久性以及使用Vshadow提取敏感文件副本并提取Active Directory(AD)数据库来进行离线HASH转储和密码破解。
命令执行
使用Vshadow执行命令取决于与影子复制操作的“成功”交互(例如,创建快照,移除快照,对快照执行某些操作等)。 Vshadow.exe支持-exec参数,该参数可用于执行二进制文件(.exe)或脚本(.bat/.cmd)。 -exec参数不支持命令参数,因此有效载荷执行需要在这些限制的上下文中进行包装。
在继续操作之前,让我们考虑一些命令执行的其他要求。 首先,我们需要在机器上拥有一定的权限(例如管理员),因为处理卷快照(并调用卷影服务)被视为敏感操作。 其次,我们需要将Vshadow可执行文件放到目标机器上。 如果Windows SDK已经安装,那么我们所要做的就是找到磁盘上二进制文件的路径。 否则,我们必须将其上传到目标主机上。 最后,我们需要确保我们的有效载荷如前面所说的那样被封装起来。 在本文的命令执行示例中,我们将简单地使用notepad.exe作为我们的有效载荷。
用vshadow.exe调用一个有效载荷并不完全是最隐秘的方法,但我们可以通过这种方式来操作该工具,以最大限度地减少我们的入侵痕迹。 我们要执行的命令的基本结构如下:
vshadow.exe -nw -exec=<\path\to\exe> <system drive>
指定-nw允许我们在不调用卷影复制写入的情况下创建卷影副本。 实际上,这是一个非持久性卷影副本,它不会在 “物理”磁盘上留下证据(*请注意,这并不一定会阻止检测卷影副本的创建,因为我们仍然是在模拟这个过程)。 现在,我们运行以下命令:
vshadow.exe -nw -exec=c:\windows\system32\notepad.exe c:
输出的内容可以在下图中看到:
在此上下文中成功执行Vshadow将创建一个'假的'影子副本集,然后启动由-exec参数指定的有效载荷(notepad.exe)。 在这里发生了一些有趣的事情,可能有助于防御和取证人员……
· 直到子进程完成执行,Vshadow.exe才会完成执行。
· 有效载荷(notepad.exe)是vshadow.exe的子进程。
· Vshadow的成功执行将启动卷影服务(VSS),如系统事件ID 7036所示,并调用VSSVC.exe进程。
自动启动持久性和防御逃避
由于Vshadow是一个带符号的二进制文件,并具有命令执行能力,因此我们有一个潜在的作为逃避手段的候选人——AutoRuns(某种程度上)。 例如,让我们通过输入以下命令为我们的'邪恶'的有效载荷添加持久性(通过Registry Run Key):
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v VSSBackup /t REG_EXPAND_SZ /d "C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64\vshadow.exe -nw -exec=c:\windows\system32\notepad.exe c:"
在AutoRuns中,当过滤“Microsoft Entries”时,我们不会看到我们的登录记录,如下图所示:
但是,如果我们取消选择“Microsoft Entries”并启用“Windows Entries”,我们将看到我们的持久性机制的记录:
这种可见性的原因是由于vshadow.exe没有用Windows证书签名。 但是,如果vshadow.exe被放置到磁盘上某个更好的文件位置并且名称足够迷惑人,那么该Autoruns记录仍可能相当好的“融入”到所有记录中。 将条目展开查看可能会也可能不会迷惑一个安全分析师:
敏感文件提取 – AD数据库
由于我们可以使用VSS创建快照,因此我们使用此实用程序在域控制器(DC)上提取Active Directory数据库( ntds.dit ),然后使用secretsdump.py离线转储散列。
首先,我们将vshadow.exe复制到我们的DC(本例中为Windows 2K12),并使用-p参数创建“c:”的持久性卷影副本(此处无写入),命令如下:
vshadow.exe -p -nw C:
请注意以下屏幕截图中的Shadow Copy Set ID(UUID)和Volume Name,因为这些将在后续命令中使用:
其次,我们使用Volume名称复制影子副本中的AD数据库,如下所示:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\ntds\ntds.dit c:\ntds.dit.bak
以下输出显示复制操作成功:
第三,我们从注册表中提取SYSTEM配置单元。 我们需要这个来转储AD数据库的内容:
reg.exe save hklm\system c:\temp\system.bak
以下输出显示复制操作成功:
接下来,让我们确保按预期提取了我们想要的文件:
dir *.bak
我们的两个文件如下图所示:
为了更好的衡量,我们需要通过指定卷影集ID来清理并删除卷影副本:
vshadow -dx={46d3c3ee-2840-4152-ba5c-450ea401869a}
操作如下所示,并提示执行成功:
最后,让我们移动我们的战利品(ntds.dit.bak和system.bak)并使用secretsdump.py离线转储系统哈希。 使用以下命令:
secretsdump.py -ntds ntds.dit.bak -system system.bak LOCAL
成功执行 ! 我们已经使用Vshadow获得了域中的用户哈希值!
其他研究
· 有关自动规避技巧的全面信息,请查看evolved-autoruns演示幻灯片。Huntress实验室的人们在DerbyCon 7(2017)上发表了这个精彩的演讲。
· @ PyroTek3维护一个优秀的网站——ADsecurity.org。 这篇文章展示了许多攻击者可以用来检索/转储AD数据库的方法,包括利用VSS的工具(例如vssadmin,ntdsutil等)。
结论
除了监视上述特征外,防御者可能需要留意奇怪的卷影服务(VSS)行为,例如随机创建/删除以及任何涉及AD数据库文件(ntds.dit)的活动。 此外,监视vshadow.exe开关的命令调用。 文件散列和名称可能会发生更改,但“-nw -exec =”和“-p -nw”可能会持续存在。