欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

BadTunnel超级漏洞CVE-2016-3213技术分析与防护方案

来源:绿盟科技博客 作者:佚名 时间:2016-06-27 TAG: 我要投稿

 2016年6月15日,微软发布了6月安全更新,微软修复了一个影响Windows 95到Windows10所有版本的操作系统漏洞,可能成为Windows漏洞史上影响范围最广的漏洞。不要慌张,听绿盟君带你进行技术分析和相应防护措施。

据信此漏洞由腾讯玄武实验室发现,并被命名为BadTunnel。

此漏洞编号为CVE-2016-3213,CVSS评分为高级,微软给出的等级为重要。

相关CVE的披露地址如下:

  • http://cve.scap.org.cn/CVE-2016-3213.html
  • http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-3213
  • http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3213

根据微软的描述,BadTunnel源于WPAD(Web Proxy Auto Discovery,网络代理自动发现)协议产生的漏洞。当WPAD协议回退到目标系统上易受攻击的代理发现进程时,该漏洞可能会允许特权提升,但这个漏洞的精髓实则是利用NetBIOS的协议缺陷实现跨网段的广播协议劫持。

文章目录

影响的版本

  • 目前所有的Windows版本。

不受影响的版本

  • 无。

技术分析

Windows系统在访问带有UNC路径的文件时,会发送NetBIOS的Node Status Request(节点状态请求)请求,确认访问节点的状态。而同时Windows默认开启WPAD协议,在查询本地LMHOSTS(本地名称解析)和DNS(域名系统)失败后,会通过NetBIOS在局域网中广播Name Query Request(名称查询请求)请求解析WPAD的IP地址。如下图所示:

对于局域网中劫持NetBIOS,进而毒化WPAD协议进行中间人攻击,已不新鲜。但BadTunnel关键在于穿透了网络边界,在有NAT(Network Address Translation,网络地址转换)的情况下仍然有效,实现了跨网段的劫持。下面就来详细看一下这究竟是怎么做到的?

根据NetBIOS的RFC1002协议,可以看到NetBIOS的Node Status Request(节点状态请求)和Name Query Request(名称查询请求)仅有Query Type(查询类型)的差异(下图所示)。而微软在协议实现时,对NAME_TRN_ID采取的是递增的操作。

虽然Name Query Request(名称查询请求)只能在局域网中广播,网关不会将其转发到外网,但Node Status Request(节点状态请求)本身是不限制在局域网中的,那么如果Node Status Request(节点状态请求)请求在前,Name Query Request(名称查询请求)请求在后,我们就可以根据前一个Node Status Request(节点状态请求)请求中的NAME_TRN_ID预测下一个Name Query Request(名称查询请求)中的NAME_TRN_ID,伪造一个Name Query Response(名称查询响应),紧跟着前一个Node Status Response(节点状态响应)返回,由于二者都使用相同的端口,网关同样会将外网的Name Query Response(名称查询响应)转发回内网,这样就实现了跨网段的NetBIOS劫持。

攻击的示意图如下:

1) 攻击者诱骗用户点击包含指向自生地址的UNC文件路径。

2) 攻击者在外网也可以收到Node Status Request(节点状态响应)的请求,并知道了NetBIOS的NAME_TRN_ID。

3) 由于用户机器默认WPAD配置或者再次诱骗用户访问包含WPAD名称的链接,NetBIOS会广播WPAD 查询地址,如下:

但此广播数据包不会被转播到外网。

4) 攻击者根据之前获得的NAME_TRN_ID,可以猜测出之后的WPAD查询请求的NAME_TRN_ID为之前的数值加1,因此攻击者伪造一个WPAD的Name Query Response(名称查询响应)。

5) 由于NetBIOS的Node Status(节点状态)和Name Query(名称查询)使用相同的端口,加之前面Node Status Request(节点状态请求)和 Response(节点状态响应)已经建立过连接。所以网关对外网攻击者发来的伪造Name Query Response(名称查询响应)会转发到内网。用户收到伪造的WPAD的Response,同时在没有检查Response是否来自内网的情况下接受了此Response,使得自身的WPAD被毒化。之后用户的流量就会走WPAD协议,重定向到了攻击者里。

防护方案

  • 微软已经向用户推送了安全更新,不过需要注意的是,用户需要结合MS16-063和MS16-077才能完全修复漏洞。

微软安全更新地址:

MS16-063:

https://technet.microsoft.com/zh-cn/library/ms16-063.aspx

MS16-077:

https://technet.microsoft.com/zh-cn/library/ms16-077.aspx

  • 禁用 WINS/NetBT 名称解析。

1) 打开网络连接。

2) 单击要静态配置的“本地连接”,然后从“文件”菜单中,单击“属性”。

3) 在组件列表中,单击“Internet 协议 (TCP/IP)”,然后单击“属性”。

4) 单击“高级”,单击“WINS”选项卡,然后单击“禁用 TCP/IP 上的 NetBIOS”。如果您正在使用 DHCP 服务器(它可以在所有 DHCP 选项类型中有选择地启用和禁用 NetBIOS 配置),您也可以在 DHCP 服务器上选择“使用 NetBIOS”设置。

  • 取消WPAD自动检测设置
  • 设置防火墙,阻止外部访问主机的137端口。

  • 使用绿盟科技的远程评估系统(RSAS)对内网进行安全评估。

  • 使用绿盟科技检测类产品(IDS)进行检测。

  • 使用绿盟科技防护类产品(WAF/IPS/NF/SG)进行防护。

  • 已经购买了绿盟科技相关产品服务的客户可以通过产品升级进行检测与防护。
  • 短期服务:绿盟科技工程师现场处理。确保第一时间消除网络内相关风险点,控制事件影响范围,提供事件分析报告。
  • 中期服务:提供 3-6个月的风险监控与巡检服务。根除风险,确保事件不复发。
  • 长期服务:基金行业业务风险解决方案(威胁情报+攻击溯源+专业安全服务)。

声 明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载