点击上方蓝字“Ots安全”一起玩耍
介绍
CVE-2021-36934也称为 SeriousSAM 和 HiveNightmare 漏洞由 Jonas Lykkegaard 于 2021 年 7 月发现。由于 Windows 10 post-build 1809 和 Windows 11 中的 ACL 配置错误,非管理员用户被授予对神圣三重奏的读取访问权限%windir%\system32\config目录下的 SAM、SYSTEM 和 SECURITY 文件。但是,要实现这一点,必须打开系统保护并创建卷影副本。名称“HiveNightmare”源自通用名称“hives”,它指的是存储了注册表数据的文件。
表中的内容
系统保护和创建还原点
漏洞利用方法一:HiveNightmare.exe(C++漏洞利用)
漏洞利用方法2:seearsam.ps1(Powershell漏洞利用)
漏洞利用方法三:hive.exe(Go漏洞利用)
权限提升
结论和缓解措施
系统保护和创建还原点
Windows 中的系统保护:此功能在 Windows ME 和 XP 之后可用,并允许用户在其 Windows 系统中创建备份、快照或还原点。如果您觉得需要将您的窗口恢复到以前的时间点,您可以这样做。Microsoft在此处提到了备份哪些文件、设置和配置。
卷影复制:在 Windows 7 和 Win Server 2003 之后,VSS(卷影复制服务)伴随着用户在他们寻求正确创建本地或远程系统上的服务器、共享文件夹和还原点的备份是 NTFS 或 ReFS 是正在使用。在我们的例子中,卷影副本指的是用户创建的本地还原点。
为了演示此漏洞的利用,我们将首先建立我们自己的实验室。全新安装我们自己的 Windows 10 后,我们激活了系统上的管理员帐户并设置了一个简单的 1234 作为其密码。
net user administrator /active:yes
net user administrator 1234
此外,我们将不得不打开系统保护。为此遍历控制面板->系统和安全->系统->系统保护和配置
现在,勾选“打开系统保护”点击应用并确定
当您现在返回系统保护菜单时,您会发现还原点设置中先前灰显的“创建”选项现在已被激活。单击创建以立即创建还原点。
给它任何名字。我给了一个随机日期作为它的名字。
我们现在可以走了
漏洞利用方法一:HiveNightmare.exe(C++漏洞利用)
现在,为了利用该漏洞,Kevin Beaumont 为此创建了一个零日漏洞(和 PoC)。此漏洞利用在系统中查找卷影副本并为 SAM、SYSTEM 和 SECURITY 配置单元读取它。
该漏洞是用 C++ 编写的,由 GossiTheDog 创建。可以在这里找到。由于漏洞利用在本地运行,我们将在创建系统还原点的系统中下载它,并使用简单的非管理员用户命令提示符运行它。可以看到,这个提示很清楚的告诉我们,如果执行成功,三个文件会被dump到同一个文件夹中。我们使用“dir”命令进行检查,结果如下!
漏洞利用方法二:seearsam.ps1(Powershell漏洞利用)
可以在此处找到由 romarroca 创建的脚本。它是在 Powershell 中创建的,比由 Kevin Beaumont 创建的 exe 变体更具可移植性。这将从创建的还原点转储中复制 SAM 和 SYSTEM 配置单元。执行相当简单,只需像这样运行脚本
漏洞利用方法三:hive.exe(Go漏洞利用)
Christian Mehlmauer 在 Go 中翻译了相同的漏洞并创建了一个可以执行的 exe 文件,可以在这里找到。只需像这样执行 exe 文件,它就可以将神圣三重奏转储到当前目录中
权限提升
到目前为止,我们已经获得了 SAM、SECURITY 和 SYSTEM 配置单元转储,现在我们将使用这些文件来提取哈希值并进行哈希传递攻击。首先,我们使用 impacket 工具包的 secretsdump.py 脚本来转储哈希。场景是攻击者(我们)成功地从受害者的机器上获取了蜂巢。
为此,请在此处下载 impacket 工具包。
https://github.com/SecureAuthCorp/impacket
Secretsdump 是一个无代理的 Python 脚本,用于从包括 NTLM 在内的不同文件类型中获取各种哈希值(默认 Windows 的密码哈希格式)。它可以在这里下载。
https://github.com/SecureAuthCorp/impacket/blob/master/impacket/examples/secretsdump.py
为此,我们将复制当前目录中的三个文件并输入:
python3 secretsdump.py -sam /root/SAM -system /root/SYSTEM -security /root/SECURITY LOCAL
正如您在上面的屏幕截图中看到的,我们已经获得了管理员帐户的 NTLM 哈希值。显然,在这种情况下我们知道密码 (1234),但理想情况下,攻击者现在使用 John 或其他类似的哈希破解工具来破解这个哈希,或者他进行“传递哈希”攻击。
PassTheHash (PtH):在这种类型的攻击中,攻击者可以通过提供密码的哈希值而不是密码本身来绕过/藐视身份验证机制。这种弱点在 Windows 系统中最为普遍。在Windows中登录网络服务时,后端最终将一个纯文本字符串转换成一个hash,并与数据库(hives)中已有的hash进行比较;类似地,在 PtH 攻击中,后端代码由于其固有的弱点,当用户输入散列而不是密码字符串并允许身份验证时,就会被愚弄。请参阅此处 的指南以深入了解此攻击。
现在,根据在上述步骤中获得的哈希值,我们将使用 Impacket 工具包的 psexec.py 脚本(可在此处找到)进行 PtH 攻击。
请注意,在 Windows 10 之后,Microsoft 更改了 NTLM 散列的工作方式。LM 哈希不再使用,但使用的工具自旧的 NT 和 LM 时代以来就存在。因此,在这里,我们将使用 32 个零的字符串而不是 LM 哈希。
PsExec –在 Windows 中,PsTools 用于许多不同的与进程相关的功能,如列表、日志记录、监控等。PsExec 用于远程执行进程。根据 Sysinternals(此处)的说法,“PsExec 最强大的用途包括在远程系统上启动交互式命令提示符以及 IpConfig 等远程启用工具,否则这些工具无法显示有关远程系统的信息。”
Impacket 开发了一个基于 Python 的 PsExec,可用于使用凭据远程弹出 CLI。但是,在这里,我们将通过以下方式传递哈希:
python3 psexec.py -hashes 00000000000000000000000000000000:7ce21f17c0aee7fb9ceba532d0546ad6 administrator@192.168.1.145
它发挥了它的魔力!
结论和缓解措施
易于利用使此漏洞成为对任何组织的严重威胁。Microsoft 已经发布了相同的安全补丁,但是,另一种解决方法是通过在 cmd 提示符下键入命令来限制对%windir%\system32\config内容的访问:
icacls %windir%\system32\config\*.* /inheritance:e
作者:Harshit Rajpal