0x00概述
随着互联网的快速发展,DDoS攻击已经演变成全球性的网络安全威胁,从早期的SYNFlood攻击,到近年来兴起的各种反射放大攻击,DDoS攻击愈演愈烈,无论是受控主机还是攻击对象,都日益呈现出大规模化和多样化的态势。
百度安全智云盾团队在长期与黑客的攻防对抗中,已经首次发现了多种新型反射放大攻击。黑客在利用传统反射攻击时,也在不断的研究挖掘各种新型反射放大攻击。凡事预则立,不预则废。在对抗攻击的同时,也在挖掘可能发生的新型DDoS反射放大攻击。在对大量的UDP协议进行深入研究分析后,我们挖掘出两类可以被利用发起反射放大攻击的协议,相关情况也分享同步与业界同行。
0x01常见反射攻击
从2020年观测到的反射型攻击的TOP5来看,SSDP、NTP、DNS、CLDAP、Memcache、SNMP占据前五的位置,近些年来,越来越多的新型反射攻击被黑客利用,进入现网的攻防对抗场景中,如WS-Discovery、DHDiscovery、Plex、Ubiquiti等协议。这些新型协议的反射放大攻击区别于上述常见的反射攻击,放大倍数从几倍到几万倍,这给传统的DDoS监测和防御提出新的挑战。
笔者整理了部分常见UDP反射放大协议,传统放大倍数与科学计算的放大倍数对比,看看到底谁的放大威力更强。
名称 |
特征(端口) |
传统倍数 |
科学倍数(监测的攻击包) |
发现时间 |
DNS |
53 |
28-54 |
24.6 |
2013 |
NTP |
123 |
556.9 |
460 |
2013 |
SNMP |
161 |
6.3 |
4.8 |
2013 |
SSDP |
1900 |
30.8 |
26.5 |
2014.07 |
PORTMAP |
111 |
7-28 |
16.9 |
2018.09.24 |
CHARGEN |
19 |
358.8 |
330.5 |
1996 |
TFTP |
69 |
60 |
45.6 |
2016.03.21 |
Memcached |
11211 |
10000-50000 |
149166.2 |
2018.01 |
CLDAP |
389 |
56-70 |
68.4 |
2016.10 |
WSDP |
3702 |
70-500 |
7-14 |
2019.02 |
图1 常见反射攻击
这些常见的DDoS反射攻击通常会利用有缺陷的公网服务器实施反射放大攻击,反射源数量的多少决定了反射流量的大小。然而随着公共服务的维护方式越来越标准,安全性也越来越高,可被利用的公共服务器也越来越少。2018年初爆发的Memcached反射攻击事件后,由智云盾团队监测到的数据表明,反射源数量超过1000的攻击次数,近几年呈现出明显减少的趋势,很明显可以被利用的反射服务器越来越少,但是,从事黑产的DDoS攻击者从来没有停止对新型反射放大攻击新方式的寻找和尝试。
在进行大量的UDP协议分析时,发现了两类协议可以被利用作为反射放大攻击,从互联网暴露的情况来看,这些协议服务数据量较大,黑客完全可以利用发动一起规模较大的反射攻击。下文详细介绍这两类协议可以被利用发起反射放大攻击的原理。
0x02 WdbRPC协议
1)协议介绍
WdbRPC协议是应用于VxWorks系统上的一类系统服务,被广泛用于物联网嵌入式设备及工业控制领域,该服务主要用于支持用户进行远程调试,以UDP方式通信,使用固定UDP端口17185,用户可以通过该服务获取系统详情、配置信息和其他重要数据。
2)全网资源
为了调查WdbRPC协议在全球范围内的使用情况,我们及时与ZoomEye团队进行了技术沟通,ZoomEye是国内最优秀的网络空间搜索引擎之一,ZoomEye团队在收到反馈后及时针对全网进行扫描,很快获取到4302个IP使用了WdbRPC协议(截止统计时,扫描还在继续),这些IP在全球范围内均有分布,主要来自于美国、中国和韩国等国家。下图展示了WdbRCP在互联网上暴露的情况。
图2 WdbRPC协议的全网数据
3)反射原理
我们在一台纯净的机器上安装VxWorks系统,并对WdbRPC服务进行调试分析,在协议的开发文档中我们查询到了协议的请求说明,根据文档的描述,我们构造一个请求发送到服务器,并进行抓包分析。下图展示了我们发送一个较小的数据包,服务端响应了一个较大的数据包,构成了放大倍数。
图3 WdbRPC协议的请求与响应(测试)
我们在模拟攻击的过程中,发送一个69+24=93字节的数据包,收到一个706+24=730字节的数据包,科学计算的放大倍数为730/93=7.85倍。
WdbRPC协议可以发动反射放大攻击的主要原因在于,该协议在17185端口上没有提供客户端的身份认证机制,并且在一些局域网的应用场景中,服务使用者错误的将其绑定在互联网地址上,导致被黑客利用。通过利用互联网上开放的WdbRPC服务的端口,可以轻松的发动一起规模较大反射放大攻击。另外,由于该协议的数据传输没有加密机制,传输的数据均为重要敏感信息:系统详情、配置信息,黑客利用获取的系统信息可以进行有效的反射资源管理。
0x03 BACnet协议
1)协议介绍
楼宇自控协议(BACnet)全称Building Automation Control NETworks,是在建筑中应用的一种为楼宇自控网络制定的数据通讯协议,通过软件系统管理智能建筑物内相互关联的中央空调系统、给排水系统、供配电系统、照明系统等,它使不同厂家的楼宇设备能够实现相互通信,定义了各种兼容系统实现开放性与互操作性的基本通信规范。
楼宇自控协议(BACnet)在应用层使用UDP协议进行数据传输,BACnet-APDU(APDU代表应用层协议单元)定义的远程设备管理服务绑定在UDP47808端口上,接受BACnet客户端的证实请求消息(如查询网络内楼宇设备信息),随后响应设备的供应商ID、供应商名称、软件版本等信息。
2)全网数据
我们在zoomeye上搜索查询UDP47808与bacnet关键字,获取到5w多条数据,源IP主要来自于于美国、加拿大和法国等北美和欧洲国家,其中美国占比最多。这也符合协议当前的应用情况。协议的官方文档没有要求服务固定绑定在UDP47808端口上。因此可以判断,互联网上存在的开放应用会更多。下图展示了zoomeye上查询的全网数据情况。
图4 BACnet协议的全网数据
BACnet协议是楼宇自控领域内唯一的ISO标准,已经在北美和欧洲等国家得到了全面的推广和应用。随着智能建筑的不断增多,该协议将会在全球范围内得到更多的应用,互联网上开放的服务也会随之增多。
3)反射原理
我们在一台纯净的机器上部署BACnet服务,并对BACnet服务进行调试分析,在协议的官网文档中我们查询到了协议的请求说明,根据文档的描述,我们构造一个请求发送到服务器,并进行抓包分析。下图展示了我们发送一个较小的数据包,服务端响应了一个较大的数据包,构成了放大倍数。
图5 BACnet协议的请求与响应数据包
我们在模拟攻击的过程中,发送一个79+24=103字节的数据包,收到一个234+24=258字节的数据包,科学计算的放大倍数为258/103=2.5倍。
查询协议规范可知,BACnet协议应用于局域网内,并且通过攻击模拟可知该服务的响应数倍于请求,因此攻击能够发生的原因在于协议实现者未按规范将服务绑定到互联网地址上,导致暴露在公网的47808端口有可能会被当作反射源使用。值得一提的是,研究中我们只使用了首部为0x0X的”已确认请求”进行反射分析,其余请求类型如:未确认请求,没有深入分析,感兴趣的可以自行研究。
我们在分析协议规范时,没有发现有关安全性的表述,详情参考:
http://www.bacnet.org/Tutorial/BACnetIP/index.html,随着该协议的广泛应用,我们可以确信,利用该协议的反射攻击会浮出水面。
0x04总结
防御技术的不断完善,攻击技术则不断进化。反射攻击近年来越来越流行,一方面由于反射攻击伪造源IP,难以溯源;另一方面,反射攻击通常利用反射倍数较大的服务发动攻击,达到四两拨千斤的效果。在这一背景下,DDoS黑产的从业者会更努力的挖掘新型协议的漏洞,我们可以猜测,这两种潜在可能的攻击方式一定会得以实施,让我们拭目以待。
0x05防范建议
我们本文介绍的两种潜在的攻击可能,仍然是利用UDP协议的无状态以及服务端返回包大于请求包的特点。
建议参考以下方式提升防护能力。
对互联网服务应避免被滥用,充当黑客攻击的帮凶
禁用UDP服务,不能禁用时,应确保响应与请求不要有倍数关系
启用的UDP服务应采取授权认证,对未授权请求不予响应
对企业用户应做好防范,减少DDoS对自有网络和业务的影响
如果没有UDP相关业务,可以在上层交换机或者本机防火墙过滤UDP包
寻求运营商提供UDP黑洞的IP网段做对外网站服务
选择接入DDoS云防安全服务对抗大规模的DDoS攻击
来源:freebuf.com 2021-05-21 16:58:28 by: 百度安全实验室
请登录后发表评论
注册