成都爱特生信息技术有限公司

业界资讯

【技术分享】DDoS攻击之统计分析常见的反射放大攻击

前情提要
DDOS攻击是网络安全攻防领域一个长盛不衰的话题,近几年,反射攻击类型的DDOS攻击在所有DDOS攻击中的占比呈现不断上升的趋势。
本文中,根据cloudflare公司近六个月的统计数据,深入分析了三类常见的反射攻击类型(NTP ,SSDP 和 DNS),并简要阐述了如何针对反射型DDoS攻击的缓解措施。
反射攻击的基本原理
首先,简要介绍一下反射攻击(也被称为“放大攻击”)的工作原理。
执行反射攻击,需要具备四个因素:
一个服务器:用于执行 IP 地址欺骗;
一个脆弱的、易于反射/放大的协议:任何设计不完善的、基于UDP请求的协议都可能被利用;
反射服务器列表:支持脆弱协议的服务器;
一个目标IP地址:受害者的IP地址
攻击的整体思路如下:
攻击者发送虚假的UDP请求;
伪造源IP地址:将请求包中的源IP地址替换成受害者的IP地址,这些请求包中通常不会出现攻击者自己的IP地址;
每个请求包都发往一个随机的反射服务器;
经过伪造的数据包通过网络传输最终到达反射服务器;
反射服务器接收到这些虚假的请求包,遵从约定的协议规则,发送响应;
无疑,这些响应都是针对受害目标的。
受害目标最终会收到大量的响应包,而这些包都不是它请求的。在攻击足够大的情况下,受害目标可能会发生网络拥塞或中断风暴。
传送给受害目标的响应可能远远大于伪造的请求,这就是这类攻击被称为“放大攻击”的原因。经过精心设计,攻击者可以利用有限的资源,有效的扩大DDOS攻击的流量。
cloudflare 曾记录过一次基于 27 Gbps 的流量欺骗达成 300 Gbps 流量攻击的案例。
常见的反射攻击
在过去六个月的时间里,我们的DDoS攻击防护系统检测到了6,239次反射攻击案例。下图是常见的、不同类型的反射攻击的列表:
对DDoS 反射攻击的定义依赖于海量的元组标识的数据包,标识向量包括:协议、源端口、目标IP。基本上,一次攻击中,会有海量的数据包发往特定目标的同一个源端口。这种标记法相当准确,根据观测,正常情况下传入的数据包很少共享源端口。
基于NTP的反射攻击 (源端口 123/udp)
目前为止,最流行的依然是基于NTP(Network Time Protocol,网络时间协议)的反射攻击类型。
在过去的六个月中,我们观察到了 3,374次 基于NTP的反射攻击,它们大部分都是短时间的,攻击持续时间平均为11分钟,最长持续时间为22小时(1300分钟)。下图是NTP攻击持续时间的分布图:
大部分攻击使用的反射服务器数量较少,每次攻击平均使用了 1.5k IPs,统计数据中数量最大的一次攻击使用了 12.3k 个反射服务器。
攻击带宽的峰值平均为5.76Gbps ,最大为64.41Gbps:
下图展示了我们在过去的六个月中观测到的一个最大的NTP反射攻击的分布图。从图中可以看出每个数据中心在每秒内接收到的数据包数量。
这次攻击持续了约20分钟,使用了527个反射服务器,峰值达到了 20Mpps / 64Gbps。
除了上述这些数据,我们还可以估算出攻击中每个包的评价大小为400字节。事实上,在NTP攻击中,绝大多数数据包的长度正好是468字节(少于516字节)。下图是一个tcpdump报文的示例:
基于SSDP的反射攻击(源端口:1900/udp)
第二受欢迎的当属基于SSDP的反射攻击,记录了1692次事件。这类攻击使用的反射服务器数量更多。我们观测到,每次攻击平均使用了 100k 反射IPs,最多的一次使用了 1.23m个反射 IPs。基于SSDP反射攻击的IPs数量分布情况如下图所示:
攻击的持续时间也较长,平均约为24分钟:
有趣的是,带宽没有遵循正态分布,基于SSDP反射攻击的平均峰值是12Gbps,最高达到12Gbps。
最大一次 SSDP攻击(80Gbps)中,每个数据中心在每秒内接收到的数据包数量的分布图示例如下:
每个包的平均大小为300字节左右,tcpdump报文信息示例如下:
IP碎片(源端口:0/udp)
有时候,我们会看到反射攻击中有些UDP数据包的源端口和目标端口都设置为0,这通常是由于反射服务器使用了大量零散的包进行响应而导致的攻击的副作用。只有第一个IP碎片包含了UDP头部信息,防止后续的碎片被报告。从路由器的角度看,这些都是没有UDP头部的UDP数据包。混乱的路由器会把这些包显示为 source port 0,destination port 0,tcpdump报文信息示例如下:
有心的读者可能会注意到,上图中的源 IPs 均为开放的DNS解析器。事实上,根据我们的经验可知,大部分的碎片都是DNS 放大攻击的副作用。
<基于DNS的反射攻击(源端口:53/udp)
在过去的六个月中,我们观测到253例基于DNS的反射攻击。这类攻击使用的反射服务器数量平均为7100个,持续时间平均约24分钟,带宽的峰值平均为3.4Gbps,最大为12Gbps。
如上所述,基于DNS的攻击被我们的检测系统标识为两个向量:一类被归于“源端口:53”,另外一类被归于“源端口:0”。
这种情况是由于DNS服务器利用大字节的响应包(超过最大包限制,通常为1,460字节)引发的洪泛攻击。通过检测DNS反射攻击中的数据包长度很容易就可以看出来。接下来我们举例来说明。
绝大多数接收到的DNS包接近于最大长度限制,这表明DNS 响应包的长度很大,故而会被分割为多个支离破碎的数据包。
源端口为0的攻击包大小的分布情况如下图所示:
如上图所示,大约有一半左右的包的长度接近最大限制,其余的大部分小于1200字节。这是有原因的:一个典型的 DNS 响应包,长度的上限约为 4,096 字节。4,096个字节将被视为一个DNS数据包,其包括了一个IP头部、一个最大长度的数据包片段和一个约为1,100字节的数据包片段。
4,096 = 1,460+1,460+1,060
基于其他协议的反射攻击
另外,我们观测到了使用其他协议进行反射攻击的情况,如:
•Chargen(端口:19)
•SRCDS(端口:27015)
•Call Of Duty(端口:20800)
…其他协议
这些攻击通常都是微小的、不显著的,需要有足够多的统计数据才能提供有意义的分析。
攻击实例的可观测性并不充分
不幸的是,我们无法报告攻击流量的具体内容。所有的攻击都停留在网络层,路由器对包转发执行了大量的优化,并且提取原始数据包的能力有限,基本上没有跟踪到“tcpdump”报文信息。
我们跟踪这些攻击流量,它们被路由器上的防火墙拦截了。故而,上文中显示的 “tcpdump” 报文信息,事实上是根据流量数据人工构造的。
能力有限的缓解措施
使用“正确的配置防火墙、拥有充足的网络带宽”这样的策略来阻止反射攻击,效果几乎是微乎其微的。
正确的配置防火墙,并不是万金油。默认丢包并不是解决问题的好办法。在某些情况下,您可能需要在速率方面配置一定的限制规则。如下图中的代码所示:
不过,在防火墙配置方面有一些注意事项:应对避免对入站和出站流量使用相同的IP地址。比如,如果直接在入站口阻断 123 端口,会使得对潜在NTP DDoS攻击的过滤工作更加难做。如果您的服务器需要 NTP 服务,请确保它使用了一个与服务器IP不同的地址做为网络的出口IP。
虽然有足够的网络容量是必要的,不过你也不需要首当其冲的直接与反射型 DDoS进行对抗,可以通过购买一些专业的抗DDoS产品和服务。
结论
本文中,我们重点讨论了三类流行的反射攻击的具体细节:NTP ,SSDP 和 DNS 。在大多数情况下,充足的网络流量和正确的防火墙配置可以抵御部分攻击,不过对抗反射型DDoS攻击,需要更专业的产品和服务进行协助。
我们从其他载体(如物联网僵尸网络)中看到的DDoS攻击是另外一回事,它们往往要大得多,需要专业的、自动化的DDoS解决方案。当然也有很多其他类型的DDoS攻击类型,篇幅有限,这里不再累述。
*值得注意的是,截止目前,观测到的数据已经有所变化,近几日刚刚观测到峰值高于 100 Gbps 的基于 SSDP协议的反射攻击。欲了解更多反射型 DDoS 攻击方面的研究成果,请点击【更多资料】部分的相关链接。
【 更多资料】
https://blog.cloudflare.com/65gbps-ddos-no-problem/
https://blog.cloudflare.com/deep-inside-a-dns-amplification-ddos-attack/
https://blog.cloudflare.com/how-the-consumer-product-safety-commission-is-inadvertently-behind-the-internets-largest-ddos-attacks/
https://blog.cloudflare.com/ssdp-100gbps/
*文章来源 cloudflare,转载请注明来自MottoIN.