分布式拒绝服务(DDoS)攻击原理介绍和防范措施
2021-11-19 11:35:54 Author: www.freebuf.com(查看原文) 阅读量:22 收藏

什么是DDoS攻击

DDoS攻击,指借助于C/S技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DoS攻击,从而成倍地提高拒绝服务攻击的威力。

通常,攻击者将DDoS主控程序安装在其所拥有的计算机,或使用通过非法手段获取到的帐号,将DDoS主控程序安装在其他已沦陷的计算机上,并将DDoS代理程序安装在网络上的许多已沦陷的计算机上。当攻击者意图对被害业务系统发起DDoS攻击时,会通过DDoS主控程序与大量DDoS代理程序通讯。DDoS代理程序在收到DDoS主控程序的指令后就会立即发动DDoS攻击,从而造成被害业务系统网络几近瘫痪,甚至于出现宕机。利用客户/服务器技术,DDoS主控程序能在短短几秒钟内发动成千上万个DDoS代理程序进行DDoS攻击。

DDoS攻击的危害

首先从一个现实生活环境的比方来深入理解什么是DDoS攻击。

一家商铺试图让对面那家有着竞争关系的商铺无法正常营业,他们会采取什么手段呢?一般会有如下几步:

他们首先会雇佣一群马仔,并让这群马仔们扮作普通客户;

然后命令这群马仔们一直拥挤在对手的商铺,赖着不走,真正的购物者却无法进入;

让马仔们总是和营业员有一搭没一搭的东扯西扯,让商铺的工作人员不能正常服务客户;

也可以为商铺的经营者提供虚假信息,商铺的的工作人员上上下下忙成一团之后,却发现都是一场空,最终跑了真正的大客户,损失惨重。

此外马仔们完成这些坏事有时凭单干难以完成,需要叫上很多人一起。

网络空间安全领域中DoS和DDoS攻击也遵循着这些思路。

在网络空间安全的三要素——"保密性"、"完整性"和"可用性"中,DoS攻击,即拒绝服务攻击,针对的目标正是"可用性"。该攻击方式利用目标系统网络服务功能缺陷或者直接消耗其系统资源,使得该目标系统无法提供正常的服务。

常见的DDoS攻击种类

DDoS攻击的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。单一的DoS攻击一般是采用一对一方式的,当攻击目标存在有CPU速度低、内存小或者网络带宽小等等各项指标不高的性能时,它的效果是明显的。

随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了超大规模的网络,这使得DoS攻击的困难程度显著加大了——目标系统对恶意攻击包的"消化能力"加强了不少。这时候DDoS攻击就应运而生了。DDoS攻击就是利用更多的傀儡机(肉鸡)来发起进攻,以比从前更大的规模来进攻受害者的业务系统,从而造成被害业务系统网络几近瘫痪,甚至于出现宕机。

DDoS攻击通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的。这种攻击方式主要可分为以下几种:

1. IP Spoofing

2. LAND attack

3. Smurf攻击

4. Teardrop攻击

5. SYN Flood攻击

6. SYN+ACK Flood攻击

7. ACK Flood 攻击

8. TCP 全连接攻击

9. UDP Flood

10. CC 攻击

11. 以上攻击的混合攻击

01、IP Spoofing

IP Spoofing攻击是指创建的IP 数据包中具有伪造的源 IP 地址,目的是在发动攻击时隐藏攻击者的身份或冒充成另一个计算系统。当攻击者冒充网络上的另一个设备或用户以对网络主机发起攻击、窃取数据、传播恶意软件或绕过访问控制时,就会发生欺骗攻击。

防范IP 欺骗攻击的主要方法有以下几种:

1、针对于内网环境下,可以进行IP-MAC绑定。通过将接收到的IP数据包中的源IP与已有的IP-MAC表进行对比,若已有的IP-MAC表中的源IP对应的MAC地址和IP数据包中的其发送者的MAC地址不符,则将其发送的数据包进行丢弃。

2、针对于公网环境下,可以直接丢弃从公网方向接收到的IP数据包中源IP为内网IP段范围内(10.0.0.0/8,172.16.0.0/12,192.168.0.0/16)的IP数据包。

3、针对于公网环境下,还可以使用URPF,通过取出从公网方向接收到的IP数据包中的源IP地址,然后查看自身的路由表中是否有该数据包的路由信息。如果路由表中没有其用于数据返回的路由信息,那么极有可能是某人伪造了该数据包,于是便把它丢弃。

02、LAND attack

LAND Attack指的是攻击者向目标系统发送一个SYN的TCP包,包中的源地址被伪造为目标系统的地址。当目标系统收到包后,会向自己发送一个SYN+ACK的TCP包。然后,目标系统向自己发送一个ACK包,这样就自己和自己建立一个空连接。这个空连接会一直持续,直到超时。当目标系统被这样大量欺骗,建立大量空连接,消耗大量的系统资源,导致目标系统底层操作系统运行缓慢,甚至崩溃。该漏洞存在于很多早期操作系统,如Windows XP和Windows 2003。

防范着陆攻击的主要方法依赖于过滤并丢弃源地址和目标地址相同的SYN、SYN+ACK的TCP数据包。

03、Smurf攻击

Smurf攻击通过使用将回复地址设置成目标系统网络的广播地址的ICMP应答请求(ping)数据包,来淹没目标系统,最终导致目标系统网络的所有主机都对此ICMP应答请求做出答复,导致网络阻塞。

防范Smurf攻击的主要方法有以下几种:

1、针对于网络设备可以过滤并丢弃IP数据包中的源IP地址为广播地址的IP数据包。

2、针对于终端设备,可以禁止对IP数据包中的目标地址为广播地址的ICMP包进行响应。

3、针对于网络边界设备,可以对于从本网络向外部网络发送的IP数据包中源地址为其他网络的这部分IP数据包过滤并丢弃。

04、Teardrop攻击

Teardrop攻击通过向目标系统发送一些分片IP报文,并且故意将“13位分片偏移”字段设置成错误的值,此处既可以与上一分片数据重叠,也可以与上一分片数据错开,目标系统在组合这种含有重叠偏移的伪造分片报文时,会导致目标系统底层操作系统崩溃。

防范Teardrop攻击的主要方法依赖于把接收到的分片报文先放入缓存中,并根据源IP地址和目的IP地址对报文进行分组,源IP地址和目的IP地址均相同的报文归入同一组,然后对每组IP报文的相关分片信息进行检查,丢弃分片信息存在错误的报文。为了防止缓存溢出,当缓存快要存满时,直接丢弃后续分片报文。

05、SYN Flood 攻击

SYN Flood攻击指的是攻击者在短时间内使用大量的肉鸡或伪造大量不存在的IP地址,向目标系统不断地发送SYN数据包,迫使目标系统需要回复大量SYN+ACK确认包,并等待发送源的确认。由于源地址不对确认包进行响应或者源地址是根本就不存在的,目标系统需要不断的重发SYN+ACK确认包直至SYN包超时,这些一直得不到确认的SYN包将长时间占用SYN队列,正常的SYN请求被丢弃或被拒绝,导致目标系统运行缓慢,严重者会引起网络堵塞甚至目标系统底层操作系统瘫痪。

缓解SYN Flood攻击的主要方法有以下几种:

1、缩短SYN数据包超时(SYN Timeout)时间,减少SYN队列内无效SYN数据包积压数量。

2、增加最大半连接数,即增加SYN队列大小,使得系统可以容纳更多的SYN数据包。

3、开启SYN Cookies,就是给每一个请求连接的IP地址分配一个Cookie,当再次收到相同五元组的SYN数据包时,不再新分配ACK号,而是复用之前的ACK号,从而减小SYN队列长度。

4、进行首包丢弃,一般情况下正常访问者在首包超时后会再次发送SYN数据包,而攻击者一般情况下则不会重新发送SYN数据包,从而减少SYN队列内无效SYN数据包积压数量。

5、进行源地址验证,如果源地址是伪造的话直接丢弃该SYN数据包,从而减少SYN队列内无效SYN数据包积压数量。

06、SYN+ACK Flood 攻击

SYN_ACK Flood攻击指的是攻击者发送大量的SYN+ACK数据包到目标系统,目标系统将会为处理这些报文而消耗大量的资源,导致目标系统运行缓慢,严重者会引起网络堵塞甚至目标系统底层操作系统瘫痪。

缓解SYN+ACK Flood攻击的主要方法有以下几种:

1、如果不需要主动发起连接,可以将所有的SYN+ACK包丢弃。

2、进行源地址验证,如果源地址是伪造的话直接丢弃该SYN+ACK数据包。

07、ACK Flood 攻击

ACK Flood攻击是发生在TCP连接建立之后,由于所有的数据传输TCP报文都带有ACK标志位,所以目标系统在接收到一个带有ACK标志位的数据包的时候,需要检查该数据包所表示的连接四元组是否存在,如果存在则检查该数据包所表示的状态是否合法,然后再向应用层传递该数据包。如果在检查中发现该数据包不合法,例如该数据包所指向的目的端口在本机并未开放,则主机操作系统协议栈会回应RST包告诉对方此端口不存在。这里,服务器要做两个动作:查表、回应ACK/RST。由于攻击者发送大量的带有ACK标志位的数据包,导致目标系统需要进行大量的查询操作,导致目标系统运行缓慢,严重者会引起网络堵塞甚至目标系统底层操作系统瘫痪。

缓解ACK Flood攻击的主要方法有以下几种:

1、统计源地址各类型数据包分布,如果目标系统从该源地址收取数据包的数量异常大于目标系统发往该源地址的数据包的数量,则可以直接丢弃该源地址的ACK数据包。

2、进行源地址验证,如果源地址是伪造的话直接丢弃该ACK数据包。

08、TCP全连接攻击

TCP全连接攻击是通过消费目标系统进程数和连接数,只连接而不进行发送数据的一种攻击方式。当攻击者连接到目标系统,仅仅只是连接,此时目标系统会为每一个连接创建一个进程来处理攻击者发送的数据。但是攻击者只是连接而不发送数据,此时目标系统会一直处在Recv或者Read的状态,如此一来,多个连接,目标系统的每个连接都是出于等待状态从而导致目标系统的崩溃。

一般来说,防范TCP全连接攻击的主要方法依赖于限制单个源IP可与目标系统建立的最大连接数,从而确保目标系统不会崩溃。

09、UDP Flood攻击

UDP Flood攻击又称UDP淹没攻击,是流量型DoS攻击的一种,常常利用大量UDP小包冲击目标系统,从而耗尽目标系统的带宽。由于UDP协议是一种无连接的服务,在发动UDP Flood攻击时,攻击者发送大量伪造源IP地址的小UDP包,也可以导致目标系统瘫痪。

防范UDP Flood攻击的主要方法依赖于在网络边界处限制单个源IP可发往目标系统的最大包速率和最大带宽,从而确保目标系统带宽不被耗尽且不会崩溃。

10、CC 攻击

CC攻击,其前身名为Fatboy攻击,是利用不断对目标系统发送连接请求致使形成拒绝服务的目的。CC攻击又可分为代理CC攻击和肉鸡CC攻击。代理CC攻击是攻击者借助代理服务器生成指向目标系统的合法网页请求,从而导致目标系统的CPU几近100%,甚至宕机的现象。而肉鸡CC攻击是黑客使用CC攻击软件,控制大量肉鸡,发动攻击,相比来后者比前者更难防御。因为肉鸡可以模拟正常用户访问网站的请求。伪造成合法数据包。

缓解CC 攻击的主要方法有以下几种:

1、限制单源地址可被目标系统处理的总请求数,从而避免出现单源地址占用目标系统资源过多的情况。

2、限制单源地址单位时间可被目标系统处理的请求数,从而避免出现单源地址占用目标系统资源过多的情况。

3、网站页面静态化,使用网站页面静态化可以较大程度的减少系统资源消耗,从而增强系统对请求的处理能力。


文章来源: https://www.freebuf.com/news/305240.html
如有侵权请联系:admin#unsafe.sh