分布式拒绝服务攻击(Distributed Denial of Service)简称DDoS,亦称为阻断攻击或洪水攻击,是目前互联网最常见的一种攻击形式。DDoS攻击通常通过来自大量受感染的计算机(即僵尸网络)的流量,对目标网站或整个网络进行带宽或资源消耗,使目标无法处理大量数据包,导致服务中断或停止。
UDP是网络通信的标准协议,由于UDP数据包是无链接状态的服务,相对TCP而言,存在更少的错误检查和验证。攻击者可以更小代价的利用UDP 协议特性攻击目标主机,使其无法响应正确请求,甚至会导致线路拥塞。而UDP反射放大攻击,更是近几年最火热,被利用最多的攻击方式。成本之低,放大倍数之高,使各企业闻D色变。
UDP是什么
UDP中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768 是UDP的正式规范。UDP在IP报文的协议号是17。
UDP协议与TCP协议一样用于处理数据包,在OSI模型中,两者都位于传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但即使在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。
许多应用只支持UDP,如:多媒体数据流,不产生任何额外的数据,即使知道有破坏的包也不进行重发。当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择。
在选择UDP作为传输协议时必须要谨慎。在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重。但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如聊天用的QQ就是使用的UDP协议。
什么是UDP Flood?
UDP泛洪是容量拒绝服务 (DoS) 攻击的一种形式,攻击者以包含用户数据报协议 (UDP) 数据包的 IP 数据包为目标并覆盖主机上的随机端口。在这种类型的攻击中,主机寻找与这些数据报相关联的应用程序。当没有找到时,主机向发送方发送一个“目标不可达”数据包。被这种洪水轰炸的累积影响是系统被淹没,因此对合法流量没有反应。在 UDP泛洪 DDoS攻击中,攻击者也可能选择欺骗数据包的 IP 地址。这可确保返回的 ICMP 数据包无法到达其主机,同时还使攻击完全匿名。
UDP Flood的原理是什么
UDP Flood是日渐猖厥的流量型DoS攻击,原理也很简单。常见的情况是利用大量UDP小包冲击DNS服务器或Radius认证服务器、流媒体视频服务器。100k bps的UDP Flood经常将线路上的骨干设备例如防火墙打瘫,造成整个网段的瘫痪。由于UDP协议是一种无连接的服务,在UDPFLOOD攻击中,攻击者可发送大量伪造源IP地址的小UDP包。但是,由于UDP协议是无连接性的,所以只要开了一个UDP的端口提供相关服务的话,那么就可针对相关的服务进行攻击。
正常应用情况下,UDP包双向流量会基本相等,而且大小和内容都是随机的,变化很大。出现UDP Flood的情况下,针对同一目标IP的UDP包在一侧大量出现,并且内容和大小都比较固定。
传统UDP Flood攻击是一种消耗攻击和被攻击双方资源的带宽类攻击方式。攻击者通过僵尸网络向目标设备发送大量伪造的UDP报文,这种报文一般为大包且速率非常快,通常会造成链路拥塞甚至网络瘫痪的危害。这种攻击方式由于技术含量较低,现在已经越来越少被使用。近几年来,越来越多的攻击者选择使用UDP反射放大攻击。UDP反射放大攻击有两个特点,一是属于UDP协议,二是目的端口号固定。UDP反射放大攻击的原理类似,以常见的NTP(Network Time Protocol)反射放大攻击为例,其有两个关键点:反射和放大。
反射攻击
在UDP协议中,正常情况下,客户端发送请求包到服务器,服务器返回响应包给客户端,一次交互就已完成,中间没有校验过程。反射攻击正是利用了UDP协议面向无连接、缺少源认证机制的特点,将请求包的源IP地址篡改为攻击目标的IP地址,最终服务器返回的响应包就会被送到攻击目标,形成反射攻击。
放大攻击
攻击者通常利用互联网的基础架构来进行放大攻击。由于网络中开放的NTP服务器非常多,攻击者会利用僵尸主机同时向NTP服务器发起大量的Monlist请求,1个Monlist请求包可以引发100个响应包。通常1个NTP请求包只有90字节的大小,而1个回应报文通常为482字节,100个回应报文就是48200字节,可以发现回应报文是请求报文的500倍左右,这就形成了四两拨千斤的放大攻击,最终造成链路拥塞甚至网络瘫痪。
UDP泛洪攻击的迹象是什么?
服务器每次接收到新的UDP数据包时,都会使用资源来处理请求。此过程的第一步涉及服务器确定是否有任何程序在指定端口运行。如果该端口上没有程序正在接收数据包,则服务器发出 ICMP 数据包以通知发送方无法到达目的地。当UPD泛洪DDoS攻击来自多台机器时,该攻击被视为分布式拒绝服务(DDoS)威胁。当使用多台机器发起UDP泛洪时,总流量往往会超过连接目标到互联网的链路的容量,从而导致瓶颈。
为什么UDP Flood 攻击很危险?
UDP 是一种无连接和无会话的网络协议。与 TCP 不同,UDP 流量不需要三向握手。因此,它需要较少的开销,非常适合聊天或 VoIP 等不需要检查和重新检查的流量。使 UDP 成为某些类型流量的理想选择的相同属性也使其更容易被利用。无需初始握手以确保合法连接,UDP 通道可用于向任何主机发送大量流量。没有可以限制 UDP泛洪速率的内部保护措施。因此,UDP泛洪 DOS 攻击异常危险,因为它们可以在有限的资源下执行。
如何防御UDP Flood?
由于UDP协议不建立连接,对UDP Flood的防御并不能像SYN Flood一样进行源探测。最初防火墙对UDP Flood的防御方式就是限流,将链路中的UDP报文控制在合理的带宽范围之内,可基于目的IP地址、目的安全区域和会话进行限流。虽然限流可以有效缓解链路带宽的压力,但这种方式可能会丢弃一些正常报文,因此需要新的手段防御UDP Flood。
由攻击工具伪造的攻击报文通常都拥有相同的特征字段,比如都包含某一字符串或整个报文内容一致,而对于UDP反射放大攻击中那些由真实网络设备发出的报文,在数据段不具备相同特征,但其目的端口都是固定的,所以不难发现UDP Flood攻击报文都具有一定的特征。确定攻击报文的特征后即可进行过滤,特征过滤也就是常说的指纹过滤。指纹过滤包括静态指纹过滤和动态指纹学习两种方法。
1.静态指纹过滤
UDP报文的数据段、源IP地址、源端口、目的IP地址、目的端口都可能隐藏着攻击报文的特征。对于已知的攻击特征,可以直接配置到设备的过滤器参数中。配置了静态指纹过滤后会对收到的报文进行特征匹配,对于匹配到攻击特征的报文进行丢弃、限流等下一步操作。
2.动态指纹学习
在攻击特征未知的情况下,可通过动态指纹学习进行攻击防御。对于一些攻击工具发起的UDP Flood攻击,攻击报文通常都拥有相同的特征字段,指纹学习就是对一些有规律的UDP Flood攻击报文进行统计和特征识别,当报文达到告警阈值时则开始进行指纹学习。如果相同的特征频繁出现,就会被学习成指纹,后续命中指纹的报文则被判定为攻击报文,进行丢弃、限流等后续操作。
除此之外,抗D盾是新一代的智能分布式云接入系统,接入节点采用多机房集群部署模式,隐藏真实服务器IP,但是“抗D盾”是比CDN应用范围更广的接入方式,适合任何TCP 端类应用包括(游戏、APP、微端、端类内嵌WEB等)。用户连接状态在各机房之间实时同步,节点间切换过程中用户无感知,保持TCP连接不中断,轻松应对任何网络攻击,做到完全免疫,无视攻击流量。能够做到:
DDoS防御:基于SDK接入的分布式防御体系,可精准定位恶意攻击者并主动隔离,具备自动化溯源能力。
CC攻击防御:私有化协议二次封装,非链接限速、报文检测机制,0误杀、0漏过。
集成方式:EXE封装、SDK接入,支持Windows、iOS、Android系统,分钟级集成。
网络加速:智能多线节点分布,配合独家研发的隧道填补技术,保证每条线路都是优质网络
防掉线系统:研发新SocKet协议,弥补WinSock链接失败会断开问题,链接失败自动无缝切换
在未来的一段时间里,UDP反射放大型DDOS攻击将会更加频繁的出现,DDOS攻击已经从G时代正式进入的T时代,各大互联网企业和网络安全公司将面临更大的网络安全挑战。通过上述方式可以缓解UDP反射放大型DDOS攻击,有效提高网络安全的防护能力。