Smbv3 远程拒绝服务漏洞分析

二进制安全研究 rabit2013 阅读(785) 0评论

Smbv3 远程拒绝服务漏洞分析

漏洞简介

此漏洞是由于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路径访问便可以重现此漏洞。

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

Poc分析

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

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

漏洞数据包分析

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

正常数据包和漏洞攻击数据包如下: Pcap

漏洞影响

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

转载请注明:CloverSec Labs » Smbv3 远程拒绝服务漏洞分析

喜欢 (3)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址