概述
2023 年 3月补丁星期二解决的漏洞中,有一个是Outlook 的一个严重漏洞,编号为CVE-2023-23397,该漏洞被 Forest Blizzard 在野利用,微软已将其确定为俄罗斯国家支持的威胁行为者。2023 年 12 月,微软与波兰网络司令部 (DKWOC) 联合发布消息称,他们发现同一威胁行为者最近试图利用该漏洞。该漏洞允许攻击者强迫 Outlook 客户端连接到攻击者的服务器。作为此连接的一部分,客户端会将其 NTLM 凭据发送给攻击者,攻击者随后可以离线破解这些凭据,或者在中继攻击中使用它们。此漏洞可以通过互联网远程利用,无需任何用户交互(零点击)。
在针对此漏洞的补丁发布后,我们发现了一种绕过方法,我们在之前的博客文章中描述了这种方法。此绕过方法已在 2023 年 5 月的补丁星期二修复。在那篇文章中,我们建议 Microsoft 删除被滥用的功能,因为它引入了一个庞大而复杂的攻击面。由于该功能仍保留在 Outlook 中,我们决定进一步调查。
最终,我们能够在 Outlook 上实现完整的 RCE 漏洞链。我们发现了原始 Outlook 漏洞的另一个绕过方法 — 这种方法再次允许我们强制客户端连接到攻击者控制的服务器并下载恶意声音文件。然后,我们设法在 Windows 媒体解析库中找到一个漏洞,该库用于处理和播放任何音频文件,特别是 Outlook 的通知声音。攻击者将这些漏洞串联起来,就可以在易受攻击的 Outlook 客户端上实现零点击 RCE。
本系列博文分为两部分,将介绍我们为发现这两个漏洞而进行的研究。第一部分将重点介绍之前的绕过方法和新的绕过方法。在第二部分中,我们将描述我们发现的媒体解析漏洞。
原始漏洞
当攻击者发送包含带有自定义通知声音的提醒的电子邮件时,就会触发 3 月份修补的 Outlook 漏洞。攻击者使用扩展的MAPI属性PidLidReminderFileParameter将此自定义声音指定为路径。攻击者可以指定 UNC 路径,该路径会导致客户端从任何 SMB 服务器检索声音文件。作为与远程 SMB 服务器连接的一部分,Net-NTLMv2 哈希会在协商消息中发送(图 1)。
图1:NTLM凭证的强制执行
为了解决这个问题,代码现在调用*MapUrlToZone*将路径分类为内联网、本地或互联网。如果 URL 指向互联网上的资源,则使用默认提醒声音,而不是自定义提醒声音。
寻找绕过方法
采取缓解措施后,我们问自己是否有可能绕过它。
在此上下文中,绕过意味着一条路径既能通过本地性测试,又能被 Outlook 用于从远程位置下载声音文件。换句话说,我们需要找到一条*MapUrlToZone*认为是非互联网的路径,而*CreateFile*会将其视为互联网域。
为了找到这样的绕过方法,我们需要充分了解函数的内部工作原理以及作为路径解析的一部分所完成的操作。
Windows 路径和 URL
Windows 中有许多不同类型的DOS 路径,并且已经对它们及其转换为 NT 路径进行了大量研究。我们不会在这里介绍不同的 Windows 路径类型;James Forshaw 的博客文章详细介绍了这个主题。
让我们回到我们感兴趣的函数。CreateFile接收 Windows 路径;MapUrlToZone (正如其名称所**暗示的)可以传递 URL 或路径。要找到绕过方法,我们首先需要了解每个函数(或两者)支持的路径类型。
注意:CreateFile和MapUrlToZone本身不处理路径;相反,它们使用其他 WinAPI 函数来实现此目的。为了简洁起见,我们将使用CreateFile和MapUrlToZone来指代其底层路径解析函数。
创建文件 | 映射网址到区域 | |
---|---|---|
RtlPathTypeUncAbsolute | ✔ | ✔ |
RtlPathTypeDriveAbsolute | ✔ | ✔ |
RtlPathTypeDriveRelative | ✔ | ✔ |
RtlPathTypeRooted | ✔ | ✘ |
RtlPathTypeRelative | ✔ | ✘ |
RtlPathType本地设备 |