SYN Flood攻击
SYN Flood攻击
原理:
SYN flood攻击是一种常见的拒绝服务(DoS)攻击,旨在通过耗尽目标系统的资源(内存或连接表),使其无法处理合法的连接请求
首先我们要清楚TCP三次握手的原理,以下是建立TCP连接的过程:
- SYN:首先客户端向服务器发送一个SYN包,请求建立连接
- SYN-ACK:服务器收到SYN包,返回一个SYN-ACK包
- ACK:客户端收到SYN-ACK包后返回一个ACK包,完成连接建立
而我们的SYN Flood攻击就是利用了TCP建立连接的这个过程:
- 向目标主机发送大量伪造源IP的SYN报文
- 服务器收到SYN报文后,分配资源,开启半开连接,返回SYN-ACK报文,等待ACK报文
- 由于SYN报文中的源IP是伪造的,所以服务器并不会收到ACK报文,从而使连接一直处于半开(half-open)
- 服务器需要处理这些半开连接,并消耗资源(内存和连接表),最终导致资源耗尽,无法处理新的连接请求
环境搭建
- 一台kali攻击机(192.168.199.128)
- 一台Windows Server 2016 作为靶机(192.168.199.136)
接下来我们来演示以下SYN Flood攻击,演示环境皆在内网环境中,确保两台机器在同一内网环境中
关闭windows的防火墙,保持两台机器可以相互ping通
kali ping Windows
Windows ping kali
SYN Flood攻击
信息搜集
我们使用命令,对目标主机进行扫描
1 | nmap -sS 192.168.199.136 |
使用参数-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 |
windows性能前后对比
攻击前
攻击后
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Don_Joshua's Blog!