DDoS 攻击的类型
DDoS 攻击的频率逐年攀升。因此,我们决定撰写本文,介绍多种 DDoS 攻击类型。您可能永远不会遇到其中的大部分,但仍有必要了解它们的存在。让我们开始吧!
零日 DDoS
这个术语最初用于描述利用此前无人知晓的特定漏洞发起的新型 DDoS 攻击。通常,这类漏洞可以通过陆续发布的补丁来修复。
UDP 类攻击
DNS Flood
这可能是您在网络上会遇到的最臭名昭著、最常见的 DDoS 攻击。它是一种针对 DNS 服务器的 UDP 洪水攻击。之所以被如此频繁地使用,是因为它难以检测,更难以防范。它是如何实施的?黑客发送大量伪造的 DNS 请求,这些请求很难与真实请求区分开来。再乘以成千上万个 IP,攻击就形成了。
您的服务器无法分辨哪些请求是合法的、哪些不是,最终因资源耗尽而无法处理这些请求并崩溃。
UDP Flood
顾名思义,它使用 UDP 数据包攻击服务器。DNS Flood 消耗的是硬件资源,而 UDP Flood 消耗的是带宽。UDP 流量对攻击者来说非常方便,因为它不像 TCP 那样需要服务器和客户端进行确认。简单来说,就是不断向服务器发送大量伪造或伪装的 UDP 数据包。之所以要伪装,是为了确保返回的 ICMP 数据包不会到达攻击者的主机,并使攻击匿名化。
直接 UDP Flood
直接 UDP Flood 采用了不同的方式。普通 UDP Flood 通常经过伪造,而直接 UDP Flood 则不伪造。这对攻击者有一定优势,因为通过僵尸网络发送的流量可能被标记为合法流量,从而增加受害方检测的难度。与 UDP Flood 一样,其主要目标是耗尽服务器的资源。
UDP 分片 Flood
UDP Flood 的一个相当有趣的变种是分片版本。与直接 UDP Flood 类似,它模仿合法流量的行为,并将流量控制在一定范围内。由于数据包体积较大但同时又被分片,因此很难被检测到,而且它对带宽的消耗更大。想象一下,您手里有三种拼图的碎片,每种都收到了一些,却无法分辨哪块属于哪幅拼图。再乘以一千幅拼图,您就能理解服务器在遭受 UDP 分片 Flood 攻击时的感受了。非常棘手。
VoIP Flood
我们把它归入 UDP 类,是因为它使用 UDP 数据包来淹没 VoIP 服务器。伪造的请求通常来自庞大的 IP 池,会使服务器严重过载。VoIP 的问题在于,很难判断哪些流量是真实的、哪些不是。服务器性能会受到严重损害,导致性能低下甚至重启。
ICMP Flood 及其类型
ICMP Flood
ICMP 采用与 UDP 相同的方法。它没有端到端的数据交换过程,因此可以作为 UDP Flood 的替代方案。与 UDP 类似,攻击者从拥有不同 IP 的大量僵尸主机发送大量 ICMP 数据包。这会导致系统无法处理所有请求,从而使服务器重启或性能严重下降。
ICMP 分片 Flood
前一种攻击的另一个变种是分片版本。与 UDP 分片攻击类似,攻击者将 ICMP 数据包拆分成小片段,通过发送来自不同数据包、彼此毫无关联的片段来使服务器过载。通常情况下,服务器可以处理这些片段,但只能处理一定数量。一旦超出这个数量,服务器就会宕机。
Ping Flood
ICMP Flood 的 2.0 版本称为 Ping Flood。同样是针对应用的伪造请求。想象一下您 ping 任意一台服务器,相当于问服务器:“我们之间的延迟是多少?”服务器通常会回应 5 到 10 次。但如果有 100000 人同时这样问呢?如果硬件资源足够充足,服务器还能应付;否则服务器就会宕机。Ping Flood 产生的流量很难区分,因为它也可能被视为合法流量。
协议层攻击
NTP Flood
NTP(网络时间协议)最初设计用于在时钟和计算机之间同步时间。简单来说,计算机会向主服务器询问当前时间,并通过数据包系统与自身时钟同步。如果您的服务器运行 NTP 协议(基本上每台服务器都会运行),攻击者就可以借此攻击您的服务器。最终,这些伪造的请求被用来向目标发送 UDP 洪水。当服务器试图弄清楚这些数据时,最终会因数据溢出而宕机。
CharGEN Flood
这是一种“老古董”级别的攻击,我们列出它只是出于历史的考虑。早在 1984 年,这个协议作为字符生成协议(Character Generator Protocol)被开发出来,用作调试 TCP 网络代码的字节流来源。如今它在现代系统中默认被禁用,所以如果您碰巧发现某个系统仍在运行它,那么恭喜您!您发现了一件历史文物。它当年在网络打印机、复印机等设备上相当普遍,但如今这一安全漏洞已被根除。最初,攻击者只是针对其 19 端口发送 UDP 洪水。
SNMP Flood
SNMP(简单网络管理协议)是一种用于管理、收集和修改 IP 网络中设备信息的协议。这是另一种可被放大的洪水攻击,意味着攻击者可以用更少的资源造成更大的破坏。它更受攻击者青睐,因为其放大效果远大于 DNS Flood 或 CharGEN Flood。简单来说,该攻击针对运行此协议的设备,并利用该协议发送洪水流量。
SSDP Flood
简单服务发现协议(SSDP)用于通告和发现网络服务及在线状态信息,而无需使用 DHCP 或 DNS。它通常用于小型办公室中可访问 UPnP(通用即插即用)协议的硬件。2014 年,出现了针对此类设备的 DDoS 攻击:攻击者向这些设备发送携带目标伪造 IP 的数据包,导致服务器崩溃。
HTTP 层攻击
HTTP Flood
使用 HTTP Flood 的攻击者通过 GET 和 POST 请求使服务器过载。GET 请求不会占用服务器太多资源,可能只是请求显示某些图片或其他静态内容。POST 请求则不同,它们通常要求服务器进行一些处理,例如在数据库中查找特定值或对信息进行某种操作。HTTP Flood 不需要伪造 IP,因此发起攻击的门槛更低。
分片 HTTP Flood
HTTP Flood 总是借助拥有有效 IP 的僵尸主机发起,因为这些主机已被木马病毒劫持。在攻击开始之前,它们处于休眠状态,主人甚至不知道自己的资源会被用于 DDoS 攻击。分片使攻击者能够将攻击拉长到超时的边缘,从而在任何防御机制启动之前,长时间维持连接。例如,如果您使用 Apache,它没有专门的超时机制可以帮助您,因此黑客会积极利用这一点。
单请求 HTTP Flood
后来,程序员和 DDoS 防护系统摸清了如何缓解来自大量传入数据包的攻击,于是黑客决定另寻出路。这就产生了另一个漏洞,我们稍后会简单解释。
一切都归结于数据包操纵。如果能在一个 HTTP 会话中创建多个 GET/POST 请求会怎样?当然可以,但这可能会被计为多个数据包。攻击者找到了将它们合并到一个数据包中的方法。这使攻击者伪装成合法用户,很难被追踪。
单会话 HTTP Flood
这是一种相当古老的方法,在 HTTP 1.1 中可以通过从单个 HTTP 会话发送请求来实现。它帮助攻击者绕过 DDoS 防御机制对允许会话数量的限制。
递归 HTTP GET Flood
这是一种利用 GET 请求的有趣攻击。黑客请求若干网页并获取有关它们的信息,然后开始分析页面上的每个对象,并针对网站上的每个对象发送递归请求。这种攻击很难追踪,因为这些请求看起来都是合法的。
随机递归 GET Flood
这是前一种攻击的变种,主要针对博客或页面按顺序排列的网站。与 HTTP GET Flood 类似,它会遍历页面,然后开始发送随机请求。关键在于,为了看起来像合法用户,攻击者需要选择随机页面,再从页面中选择随机编号,每次发送新的 GET 请求。最终,这会导致服务器性能下降,甚至重启或崩溃。
ACK & SYN
ACK & PUSH Flood
首先,让我们了解什么是 ACK。ACK 是一个标志,用于向服务器或客户端表明数据已成功接收。例如,客户端询问服务器是否已收到表单提交,服务器回复 ACK,告诉客户端一切正常,已经收到。那么这种攻击是如何运作的呢?
攻击者可以向服务器发送各种信息,并设置 ACK 标志,让服务器表示已收到信息。
PUSH 标志的作用则相反,它通过数据包要求服务器为其处理某些信息。
这类请求比前面的攻击更消耗资源,并且优先级更高,因为它们不属于服务器连接列表中的任何会话。这导致服务器优先处理这些请求,而把连接列表中的请求放在最后,最终导致服务器崩溃。
ACK 分片 Flood
这种 ACK Flood 变种使用少量最大尺寸的数据包,大约 1500 字节。其主要目标是耗尽目标的网络带宽。这种攻击相当狡猾,如果没有应用层过滤器,它很容易穿过路由器或防火墙等网络设备,因为在这些设备看来,数据包可能是合法的。这些数据包通常包含垃圾数据,因为攻击者没有必要在其中填入任何信息,他的目标只是耗尽带宽。
SYN Flood
SYN 是 TCP 连接请求的名称。当客户端尝试使用 TCP 连接服务器时(例如建立 HTTP 或 HTTPS 连接),必须先完成三次握手,客户端与服务器之间才能交换数据。由于 TCP 三次握手的发起方始终是客户端,它会首先向服务器发送一个带有 SYN 标志的数据包。
在 TCP SYN Flood 攻击中,攻击者向服务器密集发送大量带有伪造 IP 地址的 SYN 数据包。这迫使服务器针对每个虚假请求回复一个 SYN-ACK 数据包,分配一定资源并使端口处于“半开”状态,等待来自实际上并不存在的主机的大量响应(设置了 ACK 标志的数据包),而这些主机自然不会发送确认。
SYN-ACK Flood
我们已经介绍了三次握手。这种类型的攻击针对的是主机。当攻击者发送 SYN 数据包时,主机会生成相应的 ACK 数据包。服务器无法理解为何会收到这些与合法流量顺序不符的数据包,并试图理解和处理它们,最终导致服务器过于繁忙,无法处理应处理的流量,进而重启或崩溃。
RST/FIN Flood
我们已经介绍了 SYN 类洪水攻击及其工作原理。每个 TCP-SYN 会话关闭后,都应交换 RST 或 FIN 数据包。当 RST 或 FIN Flood 开始时,服务器会收到大量伪造的虚假数据包,这些数据包与服务器当前的任何会话都没有关联。与 SYN-ACK Flood 类似,服务器无法判断它们来自何处,花费大量时间处理它们,最终处理失败。
IP 层攻击
虚假会话攻击
这种攻击不使用伪造的 IP,而是使用实施攻击的僵尸主机的真实 IP 地址。服务器与僵尸主机之间会建立 TCP-SYN 会话。攻击者通过延迟发送 ACK 数据包,使会话超时。空会话开始耗尽服务器资源,最终导致服务器宕机或运行状况极差。
IP Null 攻击
根据 RFC 规定,IPv4 中的每个报头都应包含所使用的传输协议信息。Null 攻击的名称来源于攻击者在该字段中填入的“零”。这意味着这些数据包会绕过路由器或防火墙,因为它们未被定义或未被分类。如今,该值被保留给 IPv6 逐跳选项(Hop-by-Hop Option),但这并不意味着如今每台服务器都能真正处理这类数据包。再乘以成千上万,服务器就会宕机。
应用层攻击
应用层攻击是针对特定漏洞发起的攻击。最常见的目标之一是运行 WordPress、Drupal 或 Joomla 等各种 CMS 的服务器。当然,这些厂商总是会修补安全漏洞,但黑客时不时总能找到新的漏洞。另一种方式是利用 SQL 注入攻击受害者的数据库。最终,服务器无法处理虚假请求而宕机。请确保您运行的是最新版本的 CMS,并由专业人员管理您的数据库。
应用滥用攻击
这种攻击并非对所有企业都能实施。受害者必须托管能够产生大量流量的内容,并且有另一台服务器可以接收这些流量。这就像把几条河道人为引向受害者的目标服务器,从而使其崩溃。使服务器崩溃的方法依然相同:用过量的流量使其过载。其主要难点在于,这些流量确实是合法的,因为服务器正在尝试建立合法连接。
总结
我们尽量涵盖了您可能遇到的大多数 DDoS 攻击,当然可能还有一些遗漏,但相信您已经对 DDoS 攻击的种类有了大致的了解。如果您希望保护服务器免受此类攻击,欢迎通过 LiveChat 向我们的团队咨询具备 DDoS 防护的服务器。感谢您的阅读!