近年来,越来越多的可造成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相关的攻击。
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反射攻击的潜在规模,我们通过绿盟威胁情报中心(NTI)对暴露在互联网上的ADDP服务进行了测绘。
如无特殊说明,本章所提到的数据为全球单轮次测绘数据(2020年6月)。
全球有5000多个IP开放了ADDP服务,存在被利用进行DDoS攻击的风险。
为了避免遗漏,我们分别采用zmap中的三种设备探测报文进行了测绘,由此得到ADDP服务的全球暴露情况,如表 2.1 所示。当协议头为“DGDP”时,并未探测到存活的设备。
表 2.1 ADDP服务全球暴露情况
我们对ADDP服务的banner中的产品型号字段进行了分析,如图 2.1 所示。具体产品对应什么设备感兴趣的读者可以自行去官网检索,这里不再介绍。
图 2.2 开放ADDP服务的产品型号分布情况
开放ADDP服务的设备暴露数量最多的五个国家依次是美国、意大利、波兰、智利和西班牙,美国的占比达到了43%,而我国仅有39台设备暴露在互联网上。
图 2.3 开放ADDP服务的设备国家分布情况
我们对响应报文的长度进行了分析,其长度大多是100多个字节,平均长度为126字节。由此可得平均带宽放大因子(bandwidth amplification factor,BAF)[①][6]为9。
本文首先对ADDP进行了介绍,之后对其在互联网上的暴露情况进行了分析。ADDP作为一种新的反射攻击类型,当前暂未引起攻击者的关注,但其潜在的风险主要有两个:一是可被用于DDoS攻击,二是可被用于发现Digi厂商的设备,后续被用于Ripple20相关的攻击。
(1)可以在扫描类产品中加入ADDP扫描能力,及时发现客户网络中存在的安全隐患。
(2)可以在防护类产品中加入对于ADDP的流量检测能力,及时发现客户网络中存在的安全威胁。也可以关联开放ADDP服务的IP的威胁情报,阻断命中的源IP的连接。
作为设备开发商,在对ADDP服务发现报文进行回应时,检查该报文的源IP是否是多播地址,如果不是多播地址的话,则不做回应。这样的话,ADDP服务被利用发起反射攻击的难度将大大增加。
作为电信运营商,需遵循BCP38网络入口过滤。
(1)对于网络中的ADDP威胁进行监控,发现问题进行通报。
(2)推动设备中ADDP功能的安全评估,如设备不满足相关要求,禁止设备上市等。
(1)如无需要,关闭设备的ADDP发现功能。
(2)尽量将开放ADDP服务的设备部署在局域网中,这样可以增大设备被利用的难度。
(3)如果需要将开放ADDP服务的设备部署在公网上,则在设备之前部署路由器(利用NAT能力)或防护类安全设备(如防火墙),控制外部IP对于设备的访问。
作为有DDoS防护需求的用户,购买具备ADDP反射攻击防护能力的安全厂商的DDoS防护产品。如已购买,并且产品支持应用层特征的自定义,可以加入相应的特征规则。
[1] CoAP Attacks In The Wild, 76fK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2F1k6i4c8K6j5$3!0#2N6q4)9J5k6h3y4G2L8g2)9J5c8X3u0D9L8$3N6Q4x3V1k6S2M7$3g2J5N6q4)9J5c8X3y4G2j5i4m8Q4x3X3c8S2N6s2c8S2j5$3E0K6i4K6u0V1N6$3W2D9k6l9`.`.
[2] Over 485,000 Ubiquiti devices vulnerable to new attack, 92bK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2*7k6r3&6W2N6q4)9J5k6h3y4G2L8g2)9J5c8X3q4J5N6r3W2U0L8r3g2Q4x3V1k6G2N6X3g2J5i4K6u0V1y4o6R3#2x3o6l9H3i4K6u0V1N6h3u0A6M7i4g2A6N6r3W2Q4x3X3c8V1k6i4k6A6j5$3g2K6i4K6u0V1N6Y4g2D9L8X3g2J5j5h3u0D9k6g2)9J5k6s2c8G2i4K6u0V1L8X3g2%4i4K6u0V1j5i4c8@1j5h3y4C8i4K6u0r3
[3] 基于ONVIF协议的物联网设备参与DDoS反射攻击, 046K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2L8Y4q4#2j5h3&6Q4x3X3g2T1j5h3W2V1N6g2)9J5k6h3y4G2L8g2)9J5c8X3q4J5N6r3W2U0L8r3g2Q4x3V1j5$3x3U0x3`.
[4] OpenVPN服务被利用于UDP反射放大DDoS攻击, c6aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2X3M7X3g2W2j5Y4g2X3i4K6u0W2j5$3!0E0i4K6u0r3N6Y4g2D9M7#2)9J5c8U0t1I4y4e0p5%4x3g2)9J5k6h3S2@1L8h3H3`.
[5] 现网发现新型DVR UDP反射攻击手法记实, 463K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6E0M7q4)9J5k6i4N6W2K9i4S2A6L8W2)9J5k6i4q4I4i4K6u0W2j5$3!0E0i4K6u0r3M7#2)9J5c8X3#2o6c8U0y4t1K9f1c8p5d9K6q4c8k6r3A6$3k6@1!0n7c8$3I4S2c8p5p5`.
[6] Amplification Hell: Revisiting Network Protocols for DDoS Abuse, 219K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2F1k6s2y4K6i4K6u0V1M7%4W2E0M7r3!0K6K9i4g2E0i4K6u0W2L8%4u0Y4i4K6u0r3L8X3c8K6M7K6t1H3x3e0c8Q4x3V1k6H3M7X3!0Y4M7X3q4E0L8h3g2Q4x3V1k6S2L8i4m8D9K9h3k6A6j5$3q4@1K9h3!0F1i4K6u0V1K9r3g2D9L8q4)9J5k6s2u0W2N6X3W2K6K9i4c8A6L8X3N6Q4x3X3c8F1k6i4c8%4L8%4u0C8i4K6u0V1M7s2u0G2N6r3!0U0L8$3I4K6i4K6u0V1k6r3c8G2M7#2)9J5k6r3q4T1N6i4y4W2i4K6u0r3
[7] Ripple20, 9ddK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2B7M7$3!0X3i4K6u0V1N6r3g2U0K9q4)9J5k6h3y4G2L8g2)9J5c8Y4u0A6M7s2m8D9k6e0t1H3i4K6u0r3
[8] JSOF, c4eK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2B7M7$3!0X3i4K6u0V1N6r3g2U0K9q4)9J5k6h3y4G2L8g2)9J5c8R3`.`.
[9] JSOF_Ripple20_Technical_Whitepaper_June20, 415K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2B7M7$3!0X3i4K6u0V1N6r3g2U0K9q4)9J5k6h3y4G2L8g2)9J5c8Y4N6H3i4K6u0V1j5$3!0F1N6r3g2F1N6q4)9J5c8Y4g2H3L8r3!0S2k6s2y4Q4x3V1j5J5x3o6t1H3i4K6u0r3x3o6k6Q4x3V1k6v1f1@1!0r3i4K6g2X3f1X3W2H3M7r3I4W2x3U0m8Q4y4h3k6f1k6h3y4Z5L8X3W2U0j5h3I4Q4y4h3k6i4K9r3W2@1k6i4m8S2M7r3g2J5i4K6g2X3d9Y4g2F1k6e0t1H3i4K6u0W2M7r3c8X3
[10] Digi International Inc., dc2K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2V1K9h3N6A6i4K6u0W2j5$3!0E0i4K6u0r3j5h3u0G2N6i4c8Q4x3X3c8V1K9h3N6A6
[11] addp, d01K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6*7k6r3q4$3K9$3g2G2M7#2)9J5c8X3q4V1k6s2m8Q4x3V1k6T1L8r3!0T1i4K6u0r3L8h3q4K6N6r3g2J5i4K6u0r3j5h3c8V1M7q4)9J5k6i4m8&6
[12] digi pkt, a8fK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6*7L8h3q4H3i4K6u0r3P5X3#2S2M7q4)9J5c8X3u0D9L8$3u0Q4x3V1k6E0j5i4y4@1k6i4u0Q4x3V1k6W2P5r3q4E0M7r3I4W2M7#2)9J5c8Y4g2V1M7q4)9J5k6s2m8J5L8$3u0W2M7#2)9J5c8X3c8A6k6$3V1I4i4K6g2X3x3U0x3$3x3W2)9J5k6i4m8C8N6l9`.`.
[①] 放大因子我们采用NDSS 2014的论文Amplification Hell: Revisiting Network Protocols for DDoS Abuse上对于带宽放大因子的定义,不包含UDP的报文头。