导语:一般SSDP攻击的平均规模是12Gbps,但在最近,Cloudflare监测到一次超大规模SSDP攻击发生,峰值流量高达100Gbps。这是怎么发生的呢?
上个月我们分享过一些反射型DDoS攻击数据,SSDP攻击的平均大小是12 Gbps,我们记录的最大的反射式DDoS攻击是:
1. 30 Mpps(每秒数百万个数据包)
2. 80 Gbps(每秒数十亿位)
3. 使用940k反射器的IP
几天前,我们注意到了一个不寻常的SSDP超级放大情况的发生,因为SSDP的放大因素可能会导致网络设备成为DDoS攻击的目标。所以这是值得深入调查的,因为这导致了利用 SSDP 协议生成 100 Gbps DDoS 流量的临界值。
攻击期间每秒数据包的数据如下图所示:
带宽使用情况如下所示:
这个基于IP数据包的洪水攻击持续了38分钟,根据我们采样的netflow数据,它使用了930k反射器服务器。我们估计,在38分钟内,每个反射器往Cloudflare发送了112k包。
反射器服务器遍布全球,在阿根廷、俄罗斯和中国都有大量业务。以下是每个国家或地区的IP分布图:
可以看出,ASN上的反射器IP分布非常典型的,它几乎完全遵循了世界上最大的住宅ISP(residential ISP)规律:
什么是SSDP攻击?
智能设备普遍采用UPnP(即插即用)协议作为网络通讯协议, 而UPnP设备的发现是通过源端口为1900的SSDP(简单服务发现协议)进行相互感知。
利用SSDP协议进行反射攻击的原理与利用DNS服务、NTP服务类似,都是伪造成被攻击者的IP地址向互联网上大量的智能设备发起SSDP请求,接收到请求的智能设备根据源IP地址将响应数据包返回给受害者
当新设备(如笔记本电脑)加入网络时,可以向本地网络查询特定设备,如互联网网关,音频系统,电视机或打印机。
虽然UPnP的安全标准很低,但这是一个关于M-SEARCH框架的规范的代码片段。
当控制点被添加到网络时,UPnP发现协议允许控制点在网络上搜索感兴趣的设备。它通过在保留的地址和端口(239.255.255.250:1900)上组播具有等于设备或服务的类型或标识符的模式或目标的搜索消息来实现。
要通过网络搜索找到,设备应向发送请求的源IP地址和端口向组播地址发送单播UDP响应。如果M-SEARCH请求的ST标头字段是“ssdp:all”,“upnp:rootdevice”,“uuid:”,后跟一个与设备发布的UUID完全匹配的UUID,或者如果M-SEARCH请求匹配设备支持的设备类型或服务类型都能对M-SEARCH框架进行回应。
这在实践中非常起作用,例如,Chrome浏览器经常要求搜索一个智能电视:
该帧(frame)会发送到组播IP地址,寻找该地址并支持这种特定的ST(搜索目标)多屏幕类型的其他设备。
除了对特定设备类型的查询外,还有两种通用的ST查询类型:
1. upnp:rootdevice:搜索根设备
2. ssdp:all:搜索所有UPnP设备和服务
要模拟这些查询,你可以运行此python脚本:
以下是在我的家庭网络上,显示的两个设备:
防火墙的因素
通过上述了解,可以知道,实际上有两种提供M-SEARCH框架的方法:
1. 我们以上提出的组播地址
2. 直接通过普通单播地址启用UPnP/SSDP主机
后一种方法最有效,我们可以专门针对我现在使用的打印机IP地址为例进行说明:
从上图中可以很明显的看到, SSDP协议不检查查询方是否与设备在同一个网络中,它将通过公共互联网提供的M-SEARCH进行回应。所有这一切都是由防火墙中的一个微小的错误配置引发的, 端口1900 UDP对外部开放,并且UDP扩展的目标将可用。
由于配置错误的目标,我们的脚本将很乐意在互联网上工作:
放大因素
真正的攻击是由ssdp造成的,因为所有ST类型都是通过它完成的,而正是SSDP的放大因素可能会导致网络设备成为DDoS攻击的目标:
在这种特殊情况下,单个SSDP M-SEARCH数据包会触发8个响应数据包,tcpdump视图如下:
该目标公开了8倍数据包计数放大和26倍带宽放大,而这正是SSDP的典型使用特征。
IP欺骗因素
攻击的最后一步是欺骗易受攻击的服务器,以覆盖目标IP,为此攻击者需要欺骗他们的查询源IP地址。
我们对100 Gbps攻击样本中使用的反射器IP进行了分析后发现,在920k反射器IP中,只有350k(38%)仍然响应SSDP检测器。
在响应的反射器中,每个发送了平均7个数据包:
响应的数据包平均有321字节,我们采样的请求包有110个字节。
根据我们对ssdp的分析,所有M-SEARCH攻击者都能够实现:
1. 7倍的包数放大
2. 20倍带宽放大
我们可以估计43 Mpps 或 112 Gbps攻击可以大致生成:
1. 6.1 Mpps的欺骗能力
2. 5.6 Gbps的欺骗带宽
换句话说,能够执行IP欺骗的单一连接好的10Gbps服务器可以提供超强的SSDP攻击。
更多SSDP服务器的因素
由于我们探测到易受攻击的SSDP服务器,因此可以收到最常见的服务器头值:
我们看到的最常见的ST标头值如下:
可以看出,易受攻击的IP似乎大多是无保护的家庭路由器。
开放的SSDP竟然是一个漏洞
允许家庭打印机的UDP端口1900接入互联网是十分危险的,自2013年1月至今,这个安全风险日益严重,所以通用即插即用的安全漏洞的防护就是禁止你的设备连网。
显然,SSDP的开发者没有考虑UDP的扩增潜力,按照我们的理解M-SEARCH仅在局域网中作为组播查询才有实际意义。
与DNS响应速率限制技术类似,单播M-SEARCH支持应该被弃用或至少限制速率。
M-SEARCH响应应该只发送到本地网络,通过网络路由的响应几乎没有意义和公开的描述漏洞。
如何预防超大DDoS 流量攻击
1. 网络管理员应确保入站UDP端口1900在防火墙上被阻止。
2. 不应该允许互联网服务供应商在其网络上执行IP欺骗, IP欺骗是攻击的根本原因,比如臭名昭着的BCP38。
3. 互联网服务提供商应允许他们的客户使用BGP流量来限制入站UDP源端口1900流量,以减轻大型SSDP攻击期间的拥塞。
4. 互联网提供商应在内部收集网络流量协议样本,需要netflow来识别攻击的真正来源。使用netflow可以轻松了解许多信息,比如“我的哪个客户向端口发送了6.4Mbps的流量?”这将足以跟踪DDoS攻击。
5. 开发人员应在仔细考虑UDP扩展问题的情况下推出自己的UDP协议。 UPnP应适当标准化和审查。
6. 终端用户应使用脚本扫描其网络以启用UPnP设备,这样做是为了考虑是否允许这些设备要接入互联网。
此外,还有一些在线检查网站。如果你想知道你的公共IP地址是否具有易受攻击的SSDP服务,请单击https://badupnp.benjojo.co.uk/查询。
令人遗憾的是,我们在分析中发现路由器保护最弱的国家竟是中国、俄罗斯和阿根廷。