SMB v3远程拒绝服务漏洞分析

本文分析了Windows SMBv3中存在的远程拒绝服务漏洞,该漏洞源于mrxsmb20.sys驱动处理TreeConnectResponse时的不当包长度检查。通过特定长度的数据包即可触发漏洞,导致系统崩溃。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文讲的是 SMB v3远程拒绝服务漏洞分析

漏洞简介

此漏洞是由于Windows处理SMB协议驱动mrxsmb20.sys在解析Tree Connect Response时,未正确处理包长度导致的空指针引用漏洞。当Tree Connect Response包中smb协议长度大于0x400(1024)时,会造成蓝屏崩溃。

漏洞重现

根据已公开的 POC,在win10 14393中重现了此漏洞。需要注意的是,Windows系统中可能默认监听了445端口,在这种情况下运行POC会出现如下错误: socket.error: [Errno 10013] An attempt was made to access a socket in a way forbidden by its access permissions 解决方案有两个,手动关闭系统445端口监听,或者在其他系统中运行POC。随后通过UNC路径访问便可以重现此漏洞。   

SMB v3远程拒绝服务漏洞分析

通过windbg双机调试崩溃机器,可以看出漏洞是mrxsmb20!Smb2ValidateNegotiateInfo函数访问了空指针(rcx为0)导致了访问异常。 

0: kd> !analyze -v
FAULTINGIP: 
mrxsmb20!Smb2ValidateNegotiateInfo+17
fffff80e847fd117 66394114        cmp     word ptr [rcx+14h],ax
rax=0000000000000001 rbx=0000000000000000 rcx=0000000000000000
rdx=ffff9a0e216adb20 rsi=0000000000000000 rdi=0000000000000000
rip=fffff80e847fd117 rsp=fffff8020385bec0 rbp=ffff9a0e21530ae8
 r8=0000000000000001  r9=0000000000000000 r10=ffff9a0e218d2b20
r11=fffff8020385c1a8 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
iopl=0         nv up ei ng nz na po nc
mrxsmb20!Smb2ValidateNegotiateInfo+0x17:
fffff80e847fd117 66394114        cmp     word ptr [rcx+14h],ax ds:00000000`00000014=????
FOLLOWUPNAME:  MachineOwner
MODULENAME: mrxsmb20
IMAGENAME:  mrxsmb20.sys
OSPLATFORMTYPE:  x64
OSNAME:  Windows 10
BUILDOSVERSTR:  10.0.14393.447.amd64fre.rs1releaseinmarket.161102-0100

POC分析

POC中大部分是用来进行封包操作,或用来进行身份认证的功能代码。其中和漏洞相关的代码如下: 

SMB v3远程拒绝服务漏洞分析

代码中注释为BUG处为触发漏洞的关键点,经过测试后发现只要Data的数据长度为945,任意数据都会触发漏洞,此时代码中packet1的长度刚好等于1025大于0x400。

漏洞数据包分析

SMB v3远程拒绝服务漏洞分析

由上图可以看出,正常的Tree Connect Response在Access Mask字段后是不会有数据。而漏洞攻击数据包中,后面接了很多无用数据,而且数据包长度刚好大于0x400,漏洞便被触发了。

SMB v3远程拒绝服务漏洞分析        

正常数据包和漏洞攻击数据包如下: normal.pcapng trigger.pcapng

漏洞影响

经测试漏洞只会影响win8及以上系统,包括对应的服务器版本。由于此漏洞利用时只需要回应恶意的Tree Connect Response包,所以攻击者可以通过中间人攻击或诱骗用户访问等多种方式实现远程攻击。在微软官方修补前,建议用户通过防火墙禁用139和445等端口的流量。




原文发布时间为:2017年2月10日
本文作者:四叶草安全
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
根据引用\[1\],在受影响版本Windows系统中存在绑定raw socket的应用程序时,TCPIP驱动程序在处理错误的ICMP包时存在内存漏洞,攻击者可以利用这个漏洞向目标计算机发送一个报头中包含一个碎片IP的ICMP数据包,从而导致Windows系统的tcpip.sys驱动崩溃或远程执行恶意代码。这个漏洞被命名为"微软多个Windows系统存在远程代码执行漏洞(ICMP协议)",漏洞类型为代码注入,发现时间为20233月15日。该漏洞的影响范围广泛。\[1\] 根据引用\[2\],微软官方已发布了升级补丁来修复这个漏洞。建议用户尽快升级程序,可以通过打开Windows Update并点击检查更新按钮来下载和安装相关的安全补丁。安装完毕后,需要重启服务器并检查系统运行情况。此外,还可以关停SMB服务或使用安全组公网入、内网入方向策略来禁止445、139端口的访问,以增加系统的安全性。\[2\] 根据引用\[3\],受影响的Windows系统版本包括Windows 10 v1903-1909 x64、Windows 10 Version 1903 for 32-bit Systems、Windows 10 Version 1903 for x64-based Systems、Windows 10 Version 1903 for ARM64-based Systems、Windows Server, Version 1903 (Server Core installation)、Windows 10 Version 1909 for 32-bit Systems、Windows 10 Version 1909 for x64-based Systems、Windows 10 Version 1909 for ARM64-based Systems、Windows Server, Version 1909 (Server Core installation)。\[3\] #### 引用[.reference_title] - *1* [微软多个 Windows 系统存在远程代码执行漏洞(ICMP协议)(MPS-2023-1376)](https://blog.youkuaiyun.com/murphysec/article/details/129559338)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【操作系统安全漏洞 】解决CVE-2017-11780:Microsoft Windows SMB Server远程代码执行漏洞](https://blog.youkuaiyun.com/weixin_26767391/article/details/119620921)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【漏洞复现】Windows SMB远程代码执行漏洞(CVE-2020-0796)](https://blog.youkuaiyun.com/qq_52549196/article/details/126485940)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值