执行摘要
近年来,越来越多的可造成UDP反射攻击的协议进入人们的视线,如CoAP[1]、Ubiquiti[2]、WS-Discovery[3]、OpenVPN[4]、某DVR协议[5]。这些攻击方式都区别于大家所熟知的DNS、SSDP、NTP、Memcached等反射攻击类型,给DDoS攻击防护带来了一定的挑战。
今年6月,以色列网络安全公司JSOF曝光了Treck TCP/IP协议栈的若干0-day漏洞,可能导致全球数亿台设备受到影响。在对已公布的白皮书进行分析后,我们发现,其中的一家受影响的厂商Digi生产的设备使用ADDP(Advanced Digi Discovery Protocol)进行设备发现。ADDP使用的组播地址为224.0.5.128,端口2362,但该协议在实现时,也支持单播,加之UDP协议能够伪造源IP,故存在被用作反射攻击的风险。
为了了解ADDP反射攻击的潜在规模,我们通过绿盟威胁情报中心(NTI)对暴露在互联网上的ADDP服务进行了测绘。
全球有5000多个IP开放了ADDP服务,存在被利用进行DDoS攻击的风险。这些设备涉及Digi的多款产品,如Connect WAN 3G、ConnectPort WAN VPN、ConnectPort X4、Connect ME4 9210等。
开放ADDP服务的设备暴露数量最多的五个国家依次是美国、意大利、波兰、智利和西班牙,美国的占比达到了43%。
ADDP探测报文的长度是14字节,响应报文长度大多是100多个字节,平均长度为126字节,由此可得平均带宽放大因子为9。
ADDP作为一种新的反射攻击类型,当前暂未引起攻击者的关注,但其潜在的风险主要有两个:一是可被用于DDoS攻击,二是可被用于发现Digi厂商的设备,后续被用于Ripple20相关的攻击。
一、ADDP简介
Ripple20[7]是JSOF[8]研究实验室在Treck Inc.开发的广泛使用的低级TCP / IP软件库中发现的一系列零日漏洞,2020年6月,JSOF公布了Ripple20中CVE-2020-11896和CVE-2020-11898的技术白皮书[9],其中CVE-2020-11896包含针对Digi Connect ME 9210的PoC。JSOF公布技术白皮书后,我们对涉及的Digi Connect ME 9210进行了分析,发现除技术白皮书中所述的RCE之外,Digi以太网模组使用的ADDP协议,还存在被用作反射攻击的风险。
Digi International Inc.[10](后简称Digi)是一家成立于1985年的物联网解决方案提供商,其产品线从射频调制解调器到网关等种类齐全。Digi Connect ME是Digi设计的一系列以太网模块,预装了Digi即插即用固件。为实现即插即用的功能,Digi设计了类似SSDP(Simple Service Discovery Protocol)的ADDP(Advanced Digi Discovery Protocol),该协议基于UDP,用于发现局域网内的Digi ConnectPort X系列产品。该类发现协议通常同时支持组播和单播,加之UDP能够伪造源IP的缘故,导致暴露在互联网上的这类服务,极其容易被用作反射攻击。
ADDP使用的组播地址为224.0.5.128,端口2362,ADDP数据帧[11]的总体可以分为四部分,协议头,数据包类型、payload总长度以及payload,一个典型的ADDP设备发现数据包如下所示:
图 1.1 ADDP探测包示例
协议头即为该协议的头部,ADDP采用固定的字符作为协议头,在zmap的UDP扫描插件[12]中,共有三种协议头,分别是DIGI(“0x44 0x49 0x47 0x49”)、DVKT和DGDP。
数据包类型用于区分该数据包的作用,占两个字节:
- 0x0001: 设备发现请求
- 0x0002: 设备发现响应
- 0x0003: 静态网络设计请求
- 0x0004: 静态网络设置响应
- 0x0005: 重启请求
- 0x0006: 重启响应
- 0x0007: DHCP网络设置请求
- 0x0008: DHCP网络设置回应
payload总长度,占两个字节。
payload即为数据帧的有效负载,通常,ADDP的设备发现数据包,payload长度为6个字节,内容固定为:“0xFF 0xFF 0xFF 0xFF 0xFF 0xFF”,如图 1.1 所示。
与设备发现的数据包不同,设备发现数据包的回应,其payload采用字段类型+负载长度+负载内容的格式,其中,可能出现的字段类型如下:
- 0x01:MAC地址
- 0x02:IP地址
- 0x03:子网掩码
- 0x04:网络名称
- 0x05:域名
- 0x06:硬件类型
- 0x07:硬件版本
- 0x08:固件
- 0x09:结果内容
- 0x0a:结果标志
- 0x0b:IP网关
- 0x0c:设置错误的代码
- 0x0d:产品型号
- 0x0e:Real Port端口号
- 0x0f:DNS IP地址
- 0x10:未知字段
- 0x11:错误代码
- 0x12:串口数量
- 0x13:加密的Real Port端口号
- 0x1a:设备ID
一个ADDP协议响应报文的例子如下所示,参照上面的介绍,很容易理解其各个字段的含义。对于IP和MAC地址相关字段,我们进行了匿名化处理。
二、ADDP暴露情况分析
为了精确刻画ADDP反射攻击的潜在规模,我们通过绿盟威胁情报中心(NTI)对暴露在互联网上的ADDP服务进行了测绘。
如无特殊说明,本章所提到的数据为全球单轮次测绘数据(2020年6月)。
全球有5000多个IP开放了ADDP服务,存在被利用进行DDoS攻击的风险。
为了避免遗漏,我们分别采用zmap中的三种设备探测报文进行了测绘,由此得到ADDP服务的全球暴露情况,如表 2.1 所示。当协议头为“DGDP”时,并未探测到存活的设备。
表 2.1 ADDP服务全球暴露情况
设备发现报文协议头 | zmap插件名称 | 服务暴露数量 |
DIGI | digi1_2362.pkt | 4868 |
DVKT | digi2_2362.pkt | 896 |
DGDP | digi3_2362.pkt | 0 |
我们对ADDP服务的banner中的产品型号字段进行了分析,如图 2.1 所示。具体产品对应什么设备感兴趣的读者可以自行去官网检索,这里不再介绍。
图 2.2 开放ADDP服务的产品型号分布情况
开放ADDP服务的设备暴露数量最多的五个国家依次是美国、意大利、波兰、智利和西班牙,美国的占比达到了43%,而我国仅有39台设备暴露在互联网上。
图 2.3 开放ADDP服务的设备国家分布情况
我们对响应报文的长度进行了分析,其长度大多是100多个字节,平均长度为126字节。由此可得平均带宽放大因子(bandwidth amplification factor,BAF;放大因子我们采用NDSS 2014的论文Amplification Hell: Revisiting Network Protocols for DDoS Abuse上对于带宽放大因子的定义,不包含UDP的报文头。) [6]为9。
三、小结
本文首先对ADDP进行了介绍,之后对其在互联网上的暴露情况进行了分析。ADDP作为一种新的反射攻击类型,当前暂未引起攻击者的关注,但其潜在的风险主要有两个:一是可被用于DDoS攻击,二是可被用于发现Digi厂商的设备,后续被用于Ripple20相关的攻击。
防护建议:
作为安全厂商:
- 可以在扫描类产品中加入ADDP扫描能力,及时发现客户网络中存在的安全隐患。
- 可以在防护类产品中加入对于ADDP的流量检测能力,及时发现客户网络中存在的安全威胁。也可以关联开放ADDP服务的IP的威胁情报,阻断命中的源IP的连接。
作为设备开发商,在对ADDP服务发现报文进行回应时,检查该报文的源IP是否是多播地址,如果不是多播地址的话,则不做回应。这样的话,ADDP服务被利用发起反射攻击的难度将大大增加。
作为电信运营商,需遵循BCP38网络入口过滤。 。
作为监管部门:
- 对于网络中的ADDP威胁进行监控,发现问题进行通报。
- 推动设备中ADDP功能的安全评估,如设备不满足相关要求,禁止设备上市等。
作为设备用户:
- 如无需要,关闭设备的ADDP发现功能。
- 尽量将开放ADDP服务的设备部署在局域网中,这样可以增大设备被利用的难度。
- 如果需要将开放ADDP服务的设备部署在公网上,则在设备之前部署路由器(利用NAT能力)或防护类安全设备(如防火墙),控制外部IP对于设备的访问。
作为有DDoS防护需求的用户,购买具备ADDP反射攻击防护能力的安全厂商的DDoS防护产品。如已购买,并且产品支持应用层特征的自定义,可以加入相应的特征规则。
参考文献:
[1] CoAP Attacks In The Wild, https://www.netscout.com/blog/asert/coap-attacks-wild
[2] Over 485,000 Ubiquiti devices vulnerable to new attack, https://www.zdnet.com/article/over-485000-ubiquiti-devices-vulnerable-to-new-attack/
[3] 基于ONVIF协议的物联网设备参与DDoS反射攻击, https://anquan.baidu.com/article/623
[4] OpenVPN服务被利用于UDP反射放大DDoS攻击, https://www.freebuf.com/vuls/215171.html
[5] 现网发现新型DVR UDP反射攻击手法记实, https://mp.weixin.qq.com/s/mCF3HiDDK1QdjvgOBGlaDA
[6] Amplification Hell: Revisiting Network Protocols for DDoS Abuse, https://www.ndss-symposium.org/ndss2014/programme/amplification-hell-revisiting-network-protocols-ddos-abuse/
[7] Ripple20, https://www.jsof-tech.com/ripple20/
[8] JSOF, https://www.jsof-tech.com/
[9] JSOF_Ripple20_Technical_Whitepaper_June20, https://www.jsof-tech.com/wp-content/uploads/2020/06/JSOF_Ripple20_Technical_Whitepaper_June20.pdf
[10] Digi International Inc., https://www.digi.com/about-digi
[11] addp, https://github.com/zdavkeos/addp/blob/master/addp.py
[12] digi pkt, https://github.com/zmap/zmap/blob/master/examples/udp-probes/digi1_2362.pkt