SYN Flood攻击

原理:

SYN flood攻击是一种常见的拒绝服务(DoS)攻击,旨在通过耗尽目标系统的资源(内存或连接表),使其无法处理合法的连接请求

首先我们要清楚TCP三次握手的原理,以下是建立TCP连接的过程:

  1. SYN:首先客户端向服务器发送一个SYN包,请求建立连接
  2. SYN-ACK:服务器收到SYN包,返回一个SYN-ACK包
  3. ACK:客户端收到SYN-ACK包后返回一个ACK包,完成连接建立

Untitled

而我们的SYN Flood攻击就是利用了TCP建立连接的这个过程:

  1. 向目标主机发送大量伪造源IP的SYN报文
  2. 服务器收到SYN报文后,分配资源,开启半开连接,返回SYN-ACK报文,等待ACK报文
  3. 由于SYN报文中的源IP是伪造的,所以服务器并不会收到ACK报文,从而使连接一直处于半开(half-open)
  4. 服务器需要处理这些半开连接,并消耗资源(内存和连接表),最终导致资源耗尽,无法处理新的连接请求

Untitled

环境搭建

  • 一台kali攻击机(192.168.199.128)
  • 一台Windows Server 2016 作为靶机(192.168.199.136)

接下来我们来演示以下SYN Flood攻击,演示环境皆在内网环境中,确保两台机器在同一内网环境中

Untitled

Untitled

关闭windows的防火墙,保持两台机器可以相互ping通

Untitled

kali ping Windows

Untitled

Windows ping kali

Untitled

SYN Flood攻击

信息搜集

我们使用命令,对目标主机进行扫描

1
nmap -sS 192.168.199.136

Untitled

使用参数-sS后,这个命令和我们的攻击原理很相似,都是与目标机器进行不完全的TCP连接,所以

nmap -sS扫描也称为半开扫描

优点:

  • 速度快:由于不完成三次握手,扫描速度较快。
  • 隐蔽性高:由于连接未完全建立,目标主机的日志中不会记录完整的连接,较难被检测到。
  • 资源消耗低:目标主机不需要为每个连接分配过多资源。

顺便还可以为我们探测可以发起SYN Flood攻击的端口,由扫描结果可知,靶机开启了135,139,445端口,接下来我们对445端口进行攻击演示

hping3

hping3是一个命令行网络工具,用于生成和分析 TCP/IP 数据包。它类似于 ping 工具,但功能更强大,支持构造和发送各种自定义数据包,可以用于网络诊断、测试和攻击模拟等多种用途

参数

  • -c 数据包个数
  • -d 数据包大小
  • -S 发送SYN包
  • -w TCP窗口大小,指未收到确认包前可以发送但未确认的数据包个数
  • -p 端口
  • –flood 泛洪攻击
  • –rand-source 随机源IP

命令

1
hping3 -c 10000000 -d 1000000 -S -w 100 -p 5357 --flood --rand-source 192.168.199.136

Untitled

windows性能前后对比

攻击前

Untitled

攻击后

Untitled