分布式拒绝服务(Distributed Denial of Service,DDoS)是一种
网络攻击,攻击者利用多个
计算机或
路由器发起攻击,使目标服务器无法正常处理请求。攻击者首先控制多台计算机或路由器,这些被控制的计算机称为“肉机”或“
肉鸡”,然后利用这些肉机向目标服务器发送大量请求,从而耗尽服务器的资源,使其无法响应合法请求。DDoS攻击是在传统的
死亡之Ping(DoS)基础上演变而来的一种新型攻击方式。DDoS攻击采用分布式的方式,通过控制多个计算机联合发动攻击,向目标发送大量数据包,导致目标系统的服务请求拥塞,从而使目标系统
瘫痪。
分布式拒绝服务攻击可以根据TCP/IP协议栈和攻击对象进行分类。根据协议栈分类,DDoS攻击可以分为
网络层攻击、传输层攻击、
应用层攻击以及混合型攻击。而根据攻击对象的分类,DDoS攻击可以分为针对网络资源的攻击和针对服务器/应用程序资源的攻击。前者主要是通过UDP泛洪、ICMP泛洪、IGMP泛洪和放大攻击等方式,对网络传输设备和服务器进行攻击,从而让整个网络瘫痪。而后者则是攻击服务器/应用程序,如TCP SYN Flood、TCP RST攻击、DNS泛洪、
正则表达式DoS攻击等方式,让服务器/应用程序无法正常工作,导致服务不可用。
通过使用
路由器进行网络结构优化,配置防火墙、建立网络入侵防御系统(IPS)、强化操作系统和服务器以及寻求ISP的协助和合作等方式,可以有效防御DDoS攻击。在Windows系统中,还可以启用SYN攻击保护,抵御ICMP攻击和SNMP攻击,采取其他保护措施来增强系统的安全性。从DDoS攻击出现以来,较为知名的DDoS攻击事件有2017年9月针对
谷歌服务的攻击,攻击规模达到了2.54 Tbps,对Google Cloud的可用性产生了严重影响。 2018年2月,
GitHub遭受了一次规模巨大的DDoS攻击,攻击规模高达1.3 Tbps。攻击者利用了memcached数据库缓存系统的放大效应,使攻击规模放大了约5万倍。 2016年,Dyn作为主要的DNS提供商,遭受了一次大规模的DDoS攻击。攻击者利用Mirai恶意软件和受感染的物联网设备,构建了一个庞大的
Zombie网络来发动攻击。
原理及特点
特点
DDoS其特点是利用多台不同的
计算机或设备向目标发起攻击,以占用更多的服务资源并使得合法用户无法得到服务的响应。由于攻击规模更大、攻击来源更加难以追踪,相对于单一的DoS攻击,DDoS攻击更具破坏力和威胁性。
可控的攻击规模
攻击者可以通过控制
肉鸡的数量来控制攻击的规模。使用更多的傀儡机将导致更大规模的攻击。为了达到最佳效果,攻击者通常会利用所有控制的傀儡机发起攻击,并不断控制更多的傀儡机,以保持攻击规模的稳定和持续性。
分布式的攻击主体
DDoS攻击的攻击主体不集中在一个地点,而是分布在不同地点。攻击主体的分布范围取决于攻击者的选择。攻击主体可以分布在地区、国家甚至全球各个角落。
隐蔽性的攻击方式
DDoS攻击使用的傀儡机不直接与攻击者的主机直接交互,而是通过控制傀儡机和主控端之间的连接来发起攻击。这种间接性使得攻击者更难被追踪和识别。
严重的攻击影响
与其他攻击方式相比,DDoS攻击的危害更为严重,尤其是大规模的攻击。除了使目标网络的服务能力严重下降外,还会占用大量网络带宽,导致网络拥塞,威胁整个网络的使用和安全。在某些情况下,DDoS攻击甚至可能引发
信息基础设施的
瘫痪,导致社会动荡。对军事网络的DDoS攻击甚至可能使军队的网络信息系统瞬间瘫痪,其威力可与真正的
导弹相媲美。
防范困难
DDoS攻击利用TCP/IP协议的漏洞,因此防御这种攻击比较困难。除非放弃使用TCP/IP协议,否则几乎无法完全防范。一旦DDoS攻击发起,很短的时间内就可以使目标机的服务瘫痪,即使发现攻击也很难进行有效的防御。
攻击原理
分布式拒绝服务(DDoS)是一种特殊形式的拒绝服务(DoS)攻击。攻击者利用多台被控制的
计算机联合起来,向目标计算机发起攻击,造成目标计算机无法正常提供服务。DDoS攻击一般由三部分组成:攻击者、主控端和代理端。
攻击者是整个攻击过程的指挥者,通过攻击主控端向主控端发送攻击命令。主控端是攻击者非法侵入并控制的一些主机,这些主机控制着大量的代理主机。主控端上安装了特定的程序,可以接受攻击者发送的指令,并将这些命令发送到代理主机上。代理端也是攻击者入侵并控制的一批主机,它们上面运行着攻击程序,并接受和运行主控端发来的命令。代理端主机是攻击的执行者,直接向受害者主机发送攻击。
症状
当目标
计算机遭遇DDoS攻击时,常常会出现以下症状:
具体表现为:
类型
根据TCP/IP协议栈分类
网络层攻击
这种攻击方式主要基于网络层协议,例如IP、ICMP等。攻击者发送大量的伪造数据包或者
ping命令,从而消耗目标网络资源,使目标无法正常提供服务。其中,PingFlood Attack就是一种常见的网络层攻击。
传输层攻击
这种攻击方式基于传输层协议,例如TCP、UDP等。攻击者利用TCP或UDP协议的特点或弱点,发起大量的请求或数据包,从而占用目标网络带宽或者破坏目标的TCP连接。常见的传输层攻击包括TCP SYN Flood Attack、UDP Flood Attack以及Amplification Attack等。
应用层攻击
这种攻击方式是针对特定的
应用层协议进行的攻击,例如HTTP协议。攻击者需要对应用层协议有非常深入的理解,采用模拟正常用户的方式发起攻击,从而消耗目标的计算资源或者导致服务崩溃。常见的应用层攻击包括HTTP Flood Attack和Low and Slow Attack等。应用层攻击更为难以识别和防御,攻击效果也最为明显。
混合型攻击
这种攻击方式采用多种方式、手段、工具对目标发起攻击。现今的攻击者越来越倾向于采用混合型攻击手段,从而使攻击更具攻击性和难以防御。
根据攻击对象分类
针对网络资源的攻击
针对网络资源的DDoS攻击,其目的是通过占用目标系统的网络资源来干扰、
瘫痪目标系统的正常运行。其中之一的攻击类型是泛洪攻击,主要包括UDP泛洪、ICMP泛洪、IGMP泛洪和放大攻击。
UDP泛洪攻击利用了嵌在IP数据包中的传输层协议UDP,通过发送大量的随机端口UDP数据包来消耗目标系统的
带宽资源。它不需要利用目标系统的特定漏洞,而是通过高流量的泛洪攻击来干扰系统的正常通信。UDP泛洪攻击甚至可以阻止系统发送ICMP(因特网控制消息协议)的目标不可达数据包。通常情况下,UDP泛洪攻击在小型到中型的攻击中比较常见,其强度可以用Mbps和PPS来衡量。
ICMP泛洪攻击则利用IP层的无连接协议ICMP,通过发送大量的不同类型的ICMP消息,如请求和响应,来造成目标系统的资源消耗。该攻击也不依赖于系统的漏洞,而是利用了ICMP协议的特性来进行泛洪攻击。为了应对这种攻击,企业可以在网络设备上部署控制平面策略,限制设备处理的ICMP数据包的数量。
另外,还有一种泛洪攻击是针对多播协议IGMP的,它通过发送大量的IGMP消息报告来干扰网络或
路由器的正常运行。与前两种攻击类似,IGMP泛洪攻击也不需要利用系统的漏洞。
此外,还有一种名为放大攻击的DDoS攻击类型,它利用了通信信道中请求和回复之间的
非对称性。攻击者可以破坏路由器,并伪造源地址发送广播消息到多播地址,从而使得目标系统承受更大的攻击压力。放大攻击甚至可以与DNS放大攻击结合使用,攻击者可以破坏DNS
域名服务器来
CPU缓存大文件,进一步加剧目标系统的负担。
WinNuke攻击是一种早期针对Windows操作系统的
死亡之Ping。攻击者利用
Windows TCP/IP协议栈中的漏洞,向运行Windows操作系统的目标设备发送大量的数据包,目标端口通常为139、138、137或53,并将URGENT位设置为“1”,从而使目标设备无法正常处理服务请求。这种攻击可能导致目标设备
挂起、重启或死机。为了预防WinNuke攻击,用户应该安装最新的
微软补丁。
针对服务器资源的攻击
针对服务器资源的DDoS攻击,其目的是耗尽目标服务器的进程资源和
内存,从而导致合法流量受到干扰和中断。攻击者可以利用目标服务器的漏洞,并植入恶意软件来执行此类攻击。以下是几种常见的用于执行这些攻击的技术:
这些DDoS攻击技术使用不同的方式来消耗服务器资源,导致服务器无法正常运行,从而使合法用户无法访问服务器。为了应对这些攻击,服务器管理员需要采取相应的防御措施,如流量过滤、入侵检测系统等来保护服务器免受DDoS攻击的影响。
针对应用程序资源的攻击
针对应用程序资源的DDoS攻击,其目的是耗尽目标服务器的应用程序资源,使其无法正常运行。攻击者越来越倾向于使用更先进、更复杂的基于应用程序的攻击方法,其中一种类型是针对应用程序的攻击。以下是几种常见的基于应用程序的DDoS攻击:
DNS泛洪:DNS是广泛使用的应用程序,用于进行名称解析。攻击者可以利用DNS的UDP协议特性,在短时间内发送大量的DNS请求,淹没目标服务器的DNS服务。这种攻击不易被安全系统检测到,导致服务器无法处理合法的DNS请求。这种攻击方法被最近的Mirai攻击用于淹没Dyn网络,导致用户无法访问一些知名应用程序。
正则表达式DoS攻击:攻击者利用服务器中发布的库文件中的漏洞,发送带有正则表达式的请求。服务器必须花费大量资源来处理这些正则表达式,攻击者通过定期发送使安全系统无法检测到的正则表达式来耗尽服务器资源。
哈希冲突DoS攻击:攻击者利用漏洞,花费数天到数月的时间识别Web应用程序框架中的漏洞。大多数应用程序服务器使用哈希表存储POST会话
索引。当服务器遇到返回相似哈希值的请求时,会发生哈希冲突,服务器必须处理这些冲突。攻击者构建大量参数的POST消息,以触发服务器处理哈希冲突,消耗服务器的处理资源。
攻击过程
整个DDoS攻击过程共由4部分组成,包括攻击者、主控端、代理服务器和被攻击者。攻击者是指在整个DDoS攻击中的主控台,它负责向主控端发送攻击命令。主控端是被攻击者非法侵入并控制的一些主机,通过这些主机再分别制大量的代理服务器。代理服务器同样也是攻击者侵人并控制的一批主机,真正向被攻击主机发送攻击。被攻击者是DDoS攻击的直接受害者,目前多为一些大型企业的网络或数据库系统。
DDoS攻击的过程通常包括三个步骤:寻找漏洞主机、安装攻击程序和发起攻击。攻击者首先寻找存在漏洞的主机,并在这些主机上安装后门程序。攻击者入侵的主机越多,攻击规模越大。然后,在入侵主机上安装攻击程序,其中一部分主机充当攻击的主控端,另一部分主机充当攻击的代理端。最后,攻击者调遣各部分主机,对目标主机发起大量的攻击。一旦攻击者启动DDoS攻击,就会向目标主机发送大量的数据包。当受控制的代理端机器数量达到攻击者的要求时,攻击者可以通过攻击主控端随时发出攻击指令。
攻击主控端的位置灵活且命令发布时间短暂,使得攻击者很难被追踪。一旦攻击命令传送到主控端,攻击者可以关闭或脱离网络以逃避追踪。然后,攻击主控端将包括受害者主机地址、攻击周期和攻击方法等信息的命令发送到各个攻击代理端。代理端收到攻击命令后,开始向受害者主机发送大量假冒源地址的数据包,使受害者难以追踪攻击来源。这些包所请求的服务会消耗大量系统资源,如
内存或网络带宽。DDoS攻击还可以阻塞目标网络的防火墙和
路由器等网络设备,加重网络拥塞状况,使受害者无法为用户提供任何服务。
DDoS攻击利用协议或系统的缺陷,采用欺骗的策略进行
网络攻击。攻击者使用常见的协议和服务,使得攻击包和合法包难以区分,目标主机无法有效分离攻击数据包。DDoS攻击是一种非常有效的攻击技术,它的目的是占用目标主机的资源,使其无法处理合法用户的请求,从而对外表现为拒绝提供服务。
攻击工具
Trinoo
Trinoo是一种基于UDP Flood的DDoS攻击工具,旨在通过发送大量垃圾UDP数据包来淹没目标主机的网络性能,使其无法正常提供服务。它由守护进程(NC)和主机(Master)组成。在编译时,守护进程会将Master主机的IP地址嵌入其中,一旦运行,它就会自动检测本机的IP地址,并将其发送到预先确定的Master的31335端口。Master和NC之间使用UDP协议进行通信,避免了TCP连接的繁琐过程。Master在收到NC发回的IP地址后,确认有一个NC已准备就绪,并可以发送控制命令。NC会在本机打开一个27444的UDP端口,等待Master的命令。它会向攻击目标主机的随机端口发送全零的4
字节UDP包,随着处理大量垃圾数据包的过程,被攻击主机的
网络性能会逐渐下降,直至无法正常提供服务。
Master会持续记录和维护已激活的NC主机清单,并在主机上开放一个27665的TCP端口,等待攻击者发送命令。与大多数DDoS攻击工具类似,Trinoo没有专门的客户端软件,攻击者可以通过Telnet向Master发送指令。然而,Trinoo存在一些漏洞。它的连接口令在编译时就被指定,服务端连接守护进程的口令默认是“144
adsl”,而客户端连接到服务端的口令是“betaalmostdone”。这些口令在验证时以
明文形式传输。此外,它的Master和NC使用的
监听端口固定,并且在二者之间的通信中都包含字符串“144”。这些特征容易被入侵检测系统检测出来。
TFN/TFN2K
TFN是
德国著名黑客Mixter编写的一种典型的DDoS攻击工具。该工具最早于1999年在一些
Solaris和
Linux主机上被发现。它由服务端程序和守护程序组成,可实施ICMP洪水、SYN洪水、UDP洪水和Smurf等多种
dos攻击。
TFN2K是在TFN基础上进行了大幅改进的版本,还支持Windows平台。它具有更强大的功能,攻击更加隐蔽,控制更加灵活,因此被广泛应用于当前的DDoS攻击中。TFN2K允许使用者自定义通信协议,可以指定使用TCP、UDP、ICMP三种协议中的任何一种进行通信,也可以随机使用这三种协议。这使得TFN2K在通信时更难被入侵检测系统发现。服务端通过向守护进程发送控制指令来控制攻击过程。守护进程不会回复,因此服务端无法确定指令是否被接收。为解决这个问题,服务端会重复发送命令20次,只要守护进程接收到其中的一次,就会执行相应的命令。
TFN2K通过加密所有命令使用的CAST-256算法来保护通信数据的安全性。加密
密钥在程序编译时定义,并作为TFN2K客户端程序的口令。为了保护自身,守护进程还可以通过修改进程名的方式来隐藏自己的真实身份。尽管TFN2K采用了单向通信、随机使用通信协议和通信数据加密等技术来保护自身,但在工作时仍会留下一些痕迹。例如,TFN2K在每个数据包的尾部填充了1到16个零(0x00),经过Base64编码后,就变成了多个连续的0x41('A')。这一特征可用于捕获TFN2K命令数据包。尽管TFN2K具有一定的隐蔽性,但仍然可能被入侵检测系统发现。因此,如果网络中出现大量具有TFN2K特征的数据包,管理员应对网络中的主机进行仔细检查。
Stacheldraht
Stacheldraht是一种基于
客户机/服务器模式的DDoS攻击工具。该工具的代理进程会读取一个包含有效服务端IP地址列表的加密文件,使用Blowfish加密算法进行保护。代理进程会尝试与列表上的所有服务端建立联系,如果成功,代理会进行测试,以确定它所安装的系统是否允许伪造信息包的源地址。
代理会向服务端发送一个带有伪造的源地址的ICMP信息包,伪造地址通常是“3.3.3.3”。如果服务端收到了带有伪造地址的ICMP报文,并在应答中使用“spoofworks”
字符串来确认伪造的源地址是否有效。代理与服务端之间会交换一些信息包来实现定期的基本接触。代理会向每个服务端发送一个带有ID域值为666和数据域为“skillz”的ICMP回显应答信息包。如果服务端收到了这个信息包,它会以一个带有ID域值为667和数据域为“fcken”的应答包进行回复。
Stacheldraht与TFN类似,可以实施多种类型的
dos攻击,包括UDP洪水、SYN洪水和ICMP回显应答冲击等。其主要特点是客户端与服务端之间的通信是加密的,并且可以使用RCP(Remote Copy,远程复制)技术对代理进行更新。
Trinity
Trinity是一种由IRC控制的分布式拒绝服务(DDoS)攻击工具。代理端的
二进制文件被安装在
Linux的"/usr/lib/IDle.so"位置。启动后,它会连接到一个IRC服务器的6667端口,并将自身的昵称设置为主机名前6个字符后接3个随机数或字母。成功连接后,代理端通过特殊的
密钥进入对应的频道,并等待命令。命令可以发送给频道中的单个代理端,也可以发送给整个频道的所有代理端。Trinity V3没有
监听任何端口,因此其行踪较为隐秘。要发现其存在,需要专门监测可疑的IRC通信。Trinity具备实施ICMP洪水、UDP洪水、SYN洪水、Smurf等多种洪水攻击方式的能力。
防御方法
利用路由器并进行网络结构优化
使用路由器来扩展访问列表,根据数据包类型确定攻击种类,使用服务质量优化特征如加权公平队列、承诺访问
速率、一般流量整形等来阻止攻击。配置单一地址逆向转发功能来阻止基于IP地址伪装的攻击。采用TCP拦截和基于内容的访问控制等功能进行防御。
防火墙设置
禁止对主机的非开放服务的访问,限制同时打开的SYN最大连接数,限制特定IP地址的访问。启用防火墙的防DDoS属性,严格限制对外开放的服务器的向外访问,防止服务器被用作攻击其他机器的工具;还可以通过配置安全规则过滤掉可能的伪造数据包。一些防火墙还具有优化算法如SYN
cookie、SYN
CPU缓存和Random Drop等,可以有效防御DDoS攻击。
先进交换系统
使用线速多层交换系统和智能多层访问控制等功能进行防御。
建立网络入侵防御系统(IPS)
通过IPS及时检测并阻止恶意通信,避免攻击波及整个网络。
强化操作系统和服务器
及时关闭不必要的服务,限制同时打开的SYN半连接数目,缩短SYN半连接的timeout时间。定期更新
系统补丁,采用最新的操作系统版本和服务器软件,增强硬件设备的配置。
采用退让策略
采用DNS轮循的退让策略,或者通过负载均衡、集群等技术增加响应主机的数量,从而分摊攻击压力,提升系统的抗攻击能力。
寻求ISP的协助和合作
与主要互联网
xSP(ISP)合作,实施正确的路由访问控制策略,减少DDoS攻击对网络带宽的影响。
Windows系统防御
启用SYN攻击保护,抵御ICMP攻击和SNMP攻击,采取其他保护措施来增强Windows系统的安全性。
案例
2000年2月,
雅虎日本网站遭受了一次严重的DDoS攻击,导致其网络服务停顿了近三个小时。这次攻击采用了拒绝服务(
dos)的攻击方式。攻击者利用多台
计算机同时向雅虎网站发送大量的请求,以致使服务器无法承受如此大的负载,最终导致网站无法向用户持续提供服务。
Dyn公司是一家基于云技术的互联网绩效管理企业,Dyn为客户提供了域名系统(DNS)服务,即互联网的地址簿。在2016年10月21日,Dyn公司遭受了一次规模极大的DDoS攻击。攻击发生的时间分别在早上7点、中午和下午4点左右。攻击者利用数千万个IP地址发起了大量恶意请求,对Dyn的互联网
目录服务进行了持续的攻击,导致该服务被迫停止运行。攻击者利用数千万个IP地址向Dyn发起了大量恶意请求,导致其互联网目录服务被迫停止,起初受到影响的主要是美国东海岸地区,后来在美国其他地区也蔓延开来。这次攻击难以解决,对数百个站点和服务的访问被攻击中断,甚至包括亚马逊购物、
Netflix、
Spotify等知名网站。攻击者劫持了数千台联网计算设备,包括DVR
路由器、
家用电器等没有严密防护措施的物联网设备,利用这些设备形成了大规模的僵尸网络,对Dyn进行恶意拥堵,成为DDoS攻击的“分布式”部分。
2017年4月,
暴雪娱乐的战网服务器遭到了Lizard Squad组织发起的DDoS攻击,导致重要游戏作品如《星际争霸2》《
魔兽世界》《
暗黑破坏神Ⅲ》的服务器宕机,玩家无法正常登录游戏。同时,黑客组织“Poodle Corp”也采取了多次DDoS攻击行动,其中包括8次在8月和1次在9月。这些攻击不仅使得网战服务器无法运行,还对平台上的其他游戏,如《
守望先锋》《魔兽世界》《暗黑破坏神3》《
炉石传说:魔兽英雄传》等造成了影响。甚至主机平台的玩家也遭遇了登录问题。
2018年,攻击者利用公开的
memcached服务器对托管平台
GitHub进行了大规模的Memcached DDoS攻击,攻击流量高达1.35Tbit/s,大约有27396个网站受到了影响。
DoS与DDoS
DoS(Denial of Service)和DDoS(Distributed Denial of Service)攻击在目标和攻击规模上有相似之处,即通过耗用服务器资源,阻止合法用户使用服务器的目标。然而,两者之间存在着一些关键的区别。
首先,DoS攻击是由单一系统或单一来源发起的,而DDoS攻击是由多个系统或来源同时发起的。DDoS攻击通过利用多个系统的攻击请求,对目标服务器造成更大的压力,使其无法正常运行。
其次,DDoS攻击在规模上更大。它不仅涉及到流量的大小,还涉及到发送攻击流量的数据源的种类和数量。在DDoS攻击中,攻击者可以利用数千个甚至数百万台
计算机、物联网设备等来同时攻击目标,给目标服务器造成沉重的压力。
此外,DDoS攻击更具难度和复杂性。由于攻击源众多,而且可以快速改变,控制和阻止DDoS攻击变得更加困难。与之相比,简单的DoS攻击可以通过封锁已确定的攻击来源或其网络子网来防范。
相关争议
在不同国家或地区,对于DDoS攻击的规定和观点存在一定差异。 一方面,许多国家和地区对DDoS攻击制定了相关规定。例如,
美国的《惩治计算机欺诈与滥用法》禁止故意破坏或导致计算机系统被破坏,以及阻止他人对计算机系统的使用,传输恶意程序、信息、编码或命令等,对此进行违法处罚。其他一些国家和地区,如俄罗斯联邦、
加拿大、
意大利等,也在刑法典中对破坏计算机信息系统犯罪制定了
刑罚,包括罚金、罚款等财产刑。
另一方面,有部分人士认为DDoS攻击是一种表达合法诉求的方式,不应该被处罚。他们认为,通过DDoS攻击可以呈现抗议、报复、激进主义或
网络战等
表达方式。这些人可能支持个体进行自我防御,通过反击黑客的行为来保护自己的网络安全。然而,这种观点存在争议。持有异议的人认为,未经授权的黑客行为和攻击行为不论在任何情境下都是违法的,包括实时的自我防御情境。他们认为,这类行为可能触犯《计算机欺诈与滥用法》等法律。
此外,还有人指出,反击黑客行为的合法性还可能受到
国际法的限制。例如,个体在进行反击时,可能会触犯攻击者所在国的国内法律。因此,有学者提出需要警惕个体在政府允许的行为框架外寻求自我保护的问题。