利用 Windows 主题漏洞泄露 NTLM 凭据
编辑和评论补充:Tricia Howard
内容提要
Akamai 安全研究人员 Tomer Peled 最近在 Microsoft 主题中发现了一个欺骗漏洞。该漏洞编号为 CVE-2024-21320,CVSS 评分为 6.5。
该漏洞可以触发强制身份验证攻击。在此攻击中,受害者会被强制将凭据(通常采用通过 SMB 传输的 NTLM 哈希值的形式)发送到攻击者的机器。攻击者随后可以离线破解这些凭据。
要利用此漏洞,攻击者只需要让受害者将主题文件下载到其计算机上即可。当此用户在资源管理器中查看该文件时,浏览器会自动将包含凭据的服务器消息块 (SMB) 握手数据包发送到攻击者的服务器。
所有 Windows 版本都会受到影响,因为主题是 Window 操作系统中的一项内置功能。
微软在已在 2024 年 1 月的周二补丁日(Patch Tuesday)修复了该漏洞。
我们提供了一个概念验证(PoC)主题文件和一段 PoC 演示视频,并提出了几种缓解该漏洞的方法。
前言
自从 Windows XP 问世以来,Microsoft 一直在提供多种开箱即用的预视觉个性化选项,其中包括颜色、字体和光标等。对用户来说,这种个性化设置很容易完成。他们只需右键点击桌面,然后选择“个性化”,再点击“主题”即可查看已安装的主题。主题文件的后缀为 .theme,您可以参考 MSDN 的这份概述来创建它们。
这种看似无害的美好事物实际上是一些隐蔽漏洞的温床。在 2023 年 9 月‘周二补丁日’(Patch Tuesday)的文章分析中,我们曾简要讨论过 CVE-2023-38146 的影响,这是一个存在于主题(Themes)中的漏洞。在分析该漏洞的同时,我们还决定“篡改”主题文件中的值,并发现了某些参数缺乏验证。
通过滥用这种缺乏验证的情况,我们可以执行一种几乎零用户交互的攻击:用户只需下载一个恶意的主题文件。一旦用户在资源管理器中查看了该文件,漏洞利用便会开始。
我们已记录有关此漏洞的相关信息,包括抵御措施和一个 PoC 示例。请继续阅读。
工作原理
主题文件格式包含多个参数块。在本文中,我们将讨论两个参数:[theme] 代码块内部的 BrandImage 参数(图 1)以及 [Control Panel\Desktop] 代码块内部的 Wallpaper 参数(图 2)。
Windows 中的每个文件都有一个与其功能相对应的缩略图。该缩略图可以是从产品徽标到其用途说明(例如,用于“计算器”)的任何内容。主题文件缩略图包含三个部分:一张壁纸(黑色方块)、一个 MSstyle 文件(橙色方块)以及品牌图片(Infection Monkey 图片;图 3)。
这三个部分在主题文件中以三个不同的参数编写,即 BrandImage、Wallpaper 和 VisualStyle。它们都可以是指向 UNC 端点的远程路径。
利用方法
当创建或查看某个主题文件时,Windows 会尝试根据其三个组件为其生成正确的缩略图。这一缩略图生成过程会在资源管理器(Explorer)进程内部自动启动。图 4 概述了相关的代码流,用于主题文件的缩略图创建。
由于这些操作是自动启动的,因此攻击者可以在这里寻找操纵结果的方法。攻击者可以实现此目标的方法之一是,将这三个参数的值都更改为指向攻击者控制的服务器的 UNC 路径,并期望受害者的机器会尝试对攻击者的机器进行身份验证。
我们发现,该图片的路径可以是任何合法路径,包括 UNC 路径。通过篡改 “BrandImage” 或 “Wallpaper” 的值,可以触发受害者机器向外发起连接,进而导致身份验证强制攻击(Authentication Coercion Attack)。换句话说,在连接到远程服务器的过程中,客户端会执行 SMB 协商,而其 NTLM 凭据正是在协商期间发送的。
NTLM 泄露的后果
利用受害者的 NTLM 凭据,攻击者可以执行 NTLM 中继攻击,该攻击以接受 NTLM 作为访问凭据的系统为目标。通过中继 NTLM 哈希值,攻击者可以认证为合法用户,进而能够访问他们原本无权访问的系统。
另一种方法是,提供 NTLM 凭据作为密码破解应用程序(例如,John the Ripper)的输入内容,尝试通过暴力破解方式来破解受害者的密码。
臭名昭著的 Outlook 漏洞就是一个典型的例子,完美展现了此类攻击的巨大影响力——该漏洞最初于 2023 年 3 月向微软披露。 有人发现了类似的结果,因此该漏洞被攻击者广泛利用,这证明此攻击媒介仍然有价值,对攻击者来说仍然有利可图。
3 月份发现的这个漏洞让攻击者能够向受害者发送电子邮件并触发音频文件下载。该音频文件的路径可以指向任何地方,包括远程服务器(使用 UNC 路径)。Akamai 研究员 Ben Barnea 曾撰写过大量关于该漏洞的文章,并详细阐述了他如何多次成功绕过该漏洞补丁的过程。
补丁具体修复内容
I在其补丁中,Microsoft 增加了对用于检查输入内容是否为 UNC 路径(“PathIsUNC”)的函数的调用,并增加了一个注册表值来检查是否允许将 UNC 路径用于主题文件(图 6)。如果路径是 UNC 路径并且不允许使用 UNC 路径,则不会加载缩略图。如果允许使用 UNC 路径,缩略图将使用 BrandImage 和 Wallpaper 进行创建。
您可以在以下注册表路径中找到 “DisableThumbnailOnNetworkFolder” 键值:"HKCU/Software/Microsoft/Windows/CurrentVersion/Policies/Explorer/mitigation"。该键值会在 "themeui.dll动态链接库中新加入的函数"IsUNCPathAllowedForThumbnailImage()" 内部进行验证。
微软在该漏洞的常见问题解答(FAQ)部分写道:“... 然后说服用户操作特制的文件,但无需点击或打开该恶意文件。”根据我们的研究,这种说法似乎是错误的。正如我们所说明的那样,不需要修改文件内容;查看该文件就会触发凭据发送。
抵御方案
结论
披露时间表
2023 年 9 月 20 日——漏洞被披露给 Microsoft 安全响应中心 (MSRC)
2023 年 10 月 1 日——更多信息被发送给 MSRC
2023 年 10 月 18 日——MSRC 承认此漏洞需要修补
2024 年 1 月 9 日——Microsoft 发布了这些漏洞的补丁
2024 年 3 月 6 日——Akamai 博文发布