DDoS技术鉴赏

  • DDos:Distributed Denial of Service
  • 阳谋,大家都知道怎么发生的,但难以防治

发起攻击的为僵尸网络

  • 木马感染
  • 直接购买

image-20240409112426739

1999年8月17日明尼苏达大学服务器被200多台服务器攻击,攻击设备是被感染了

攻击方式

在网络协议的每一层,都可能遭受到攻击

image-20240409112945083

ICMP Flood:

攻击者发送大量的 ICMP(互联网控制消息协议)数据包到目标服务器,消耗其带宽和处理能力,使得服务器无法响应合法的请求。

UDP Flood:

攻击者发送大量的UDP(用户数据报协议)数据包到目标服务器,占用其带宽和处理能力,导致服务不可用。

反射攻击

将源ip填写为被攻击目标,将信息发送到中间人后,中间人会回信给被攻击者,实现攻击

image-20240409113134854

放大攻击

DNS服务器可以实现放大,再利用DNS作为反射即可放大攻击

image-20240409113400376

TCP Connection Exhaustion Attack

TCP连接耗尽攻击: 攻击者尝试建立大量的TCP连接,耗尽服务器资源。无法伪造ip,因为要三次握手

TCP SYN Flood:

攻击者发送大量的TCP SYN(同步)连接请求到目标服务器,但不完成三次握手过程,占用服务器资源(半连接队列),使得服务器无法处理合法的连接请求。 可以伪造ip

正常请求中 Client 发送 SYN 包给 Server 后挂了,Server 回给 Client 的 SYN-ACK 一直没收到 Client 的 ACK 确认,这个时候这个连接既没建立起来,也不能算失败。这就需要一个超时时间让 Server 将这个连接断开,否则这个连接就会一直占用 Server 的 SYN 连接队列(半连接队列)中的一个位置,大量这样的连接就会将 Server 的 SYN 连接队列耗尽,让正常的连接无法得到处理。目前,Linux 下默认会进行 5 次重发 SYN-ACK 包,重试的间隔时间从 1s 开始,下次的重试间隔时间是前一次的双倍,5 次的重试时间间隔为 1s,2s, 4s, 8s,16s,总共 31s,第 5 次发出后还要等 32s 都知道第 5 次也超时了,所以,总共需要 1s + 2s +4s+ 8s+ 16s + 32s =63s,TCP 才会把断开这个连接。

由于,SYN 超时需要 63 秒,那么就给攻击者一个攻击服务器的机会,攻击者在短时间内发送大量的 SYN 包给 Server(俗称 SYN flood 攻击),用于耗尽 Server 的 SYN 队列。对于应对 SYN 过多的问题,linux 提供了几个 TCP 参数:tcp_syncookies、tcp_synack_retries、tcp_max_syn_backlog、tcp_abort_on_overflow 来调整应对。

同样这里也可也反射,对发射器发送syn,然后让大量重试的syn+ack打到目标机器,攻击宽带但不能攻击连接队列

HTTP 洪水

以上都是针对网络和连接资源,还有消耗计算和IO的,例如直接发起http的查询请求,消耗服务器资源(需要三次握手,不能伪造ip)

防护

  1. 路由器检测源IP(比较难实现)
  2. CND
  3. 流量清洗机器(强大的IP信用库、算法识别流量)

image-20240412174907912

参考