网络协议与攻击模拟_06攻击模拟SYN Flood

一、SYN Flood原理

在TCP三次握手过程中,

  • 客户端发送一个SYN包给服务器
  • 服务端接收到SYN包后,会回复SYN+ACK包给客户端,然后等待客户端回复ACK包。
  • 但此时客户端并不会回复ACK包,所以服务端就只能一直等待直到超时。服务端超时后会重发SYN+ACK包给客户端,默认会重试5次,而且每次等待的时间都会增加。

服务器收到客户端发来的SYN会建立一个半连接状态的Socket,当客户端在一定时间内持续不断的发大量的SYN包但不回复ACK包,就会耗尽服务端的资源,这就是SYN Flood攻击。

二、模拟SYN Flood攻击

1、实验环境

kali、Windows10、GNS3

2、网络拓扑

3、实验配置

  • GNS3路由器

    R1#conf t
    Enter configuration commands, one per line. End with CNTL/Z.
    R1(config)#int f0/0
    R1(config-if)#ip add 192.168.10.254 255.255.255.0
    R1(config-if)#no shut
    R1(config-if)#exit
    R1(config)#int f1/0
    R1(config-if)#ip add 192.168.100.254 255.255.255.0
    R1(config-if)#no shut
    R1(config-if)#

  • kali虚拟机配置网卡eth0

    #打开interfaces文件并添加eth0网卡
    ┌──(root㉿kali)-[/home/kali]
    └─# vim /etc/network/interfaces

  • 启用网卡并查看IP配置是否成功

    ┌──(root㉿kali)-[/home/kali]
    └─# ifdown eth0
    ifdown: interface eth0 not configured

    ┌──(root㉿kali)-[/home/kali]
    └─# ifup eth0

    #ifconfig查看上述更改是否生效
    ┌──(root㉿kali)-[/home/kali]
    └─# ifconfig
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 192.168.10.1 netmask 255.255.255.0 broadcast 192.168.10.255
    inet6 fe80::20c:29ff:fee2:4449 prefixlen 64 scopeid 0x20<link>
    ether 00:0c:29:e2:44:49 txqueuelen 1000 (Ethernet)
    RX packets 552 bytes 47915 (46.7 KiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 51 bytes 7410 (7.2 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
    inet 127.0.0.1 netmask 255.0.0.0
    inet6 ::1 prefixlen 128 scopeid 0x10<host>
    loop txqueuelen 1000 (Local Loopback)
    RX packets 18558 bytes 1513808 (1.4 MiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 18558 bytes 1513808 (1.4 MiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    #ping测试看网关是否可达
    ┌──(root㉿kali)-[/home/kali]
    └─# ping 192.168.10.254
    PING 192.168.10.254 (192.168.10.254) 56(84) bytes of data.
    64 bytes from 192.168.10.254: icmp_seq=1 ttl=255 time=44.6 ms
    64 bytes from 192.168.10.254: icmp_seq=2 ttl=255 time=25.1 ms
    ^C
    --- 192.168.10.254 ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 1002ms
    rtt min/avg/max/mdev = 25.077/34.838/44.599/9.761 ms

  • 查看kali路由:

    └─# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 192.168.10.254 0.0.0.0 UG 0 0 0 eth0
    192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

  • Windows使用命令配静态IP

    C:\Windows\system32>netsh interface ip set address "Ethernet0" static 192.168.100.1 255.255.255.0 192.168.100.254
    #查看IP是否设置成功 C:\Windows\system32>ipconfig
    #ping测试看网关是否可达 C:\Windows\system32>ping 192.168.100.254

ping测试 :kali 虚拟机pingWindows server 2016虚拟机

4、搭建IIS服务

  • Windows server 2016上面搭建IIS服务并在本地进行访问
  • kali火狐浏览器访问

肉鸡:几十万台同时在发几十万个包

DDOS计算的是同时的流量

5、实施SYN Flood攻击

  • 工具:kali (hping3 )

    hping3 -c 1000 -d 120 -S -w 64 -p 80 --flood --rand-source 192.168.100.1
    #-c 发送 包的数量
    #-d 发送包的大小
    #-S 只发送SYN的报文
    -w 指定Windows窗口大小
    #-p 指定目标端口80
    #--flood
    #--rand-source发请求的时候指定随机的IP
    #服务器的IP

  • 多开几个shell进行 SYN Flood攻击:
  • 抓到的ICMP数据包

三、如何防御SYN Flood

1、使用TCP代理的方式

客户机先和代理服务器建立TCP连接,代理服务器收到TCP的ACK后,再将数据转发给服务器

如果用DDOS服务器将代理服务器打掉了,服务器也不能正常提供服务了,因为服务器是通过代理来提供服务的。代理:选代理一般使用高性能防火墙。

2、TCP的源探测,探测发送方

client发送syn请求,防火墙伪造SYN+ACk报文,如果客户机是虚假的源就不会响应,如果客户机是真实的源,就会发一个重新建立连接请求的RST报文。防火墙收到RST报文得知客户机是真实的,放通将数据传到服务器。

**知识补充:**下一代防火墙NGFW

不同信任级别的网络之间的一个线速(wire-speed)实时防护设备,能够对流量执行深度检测,并阻断攻击。

  • 前向兼容传统防火墙的功能,包括包过滤、协议状态过滤、NAT和VPN。
  • 具备应用感知能力,能基于应用实施精细化的安全管控策略和层次化的带宽管理手段。
  • 支持IPS功能,实现IPS(入侵防御系统)与防火墙的深度融合。
    IPS系统是位于防火墙和网络的设备之间的设备,当检测到攻击时,IPS会在这种攻击扩散到网络其他地方前阻止这个恶意通信。
    NGFW可以根据IPS检测的恶意流量自动更新下发安全策略,而不需要管理员介入。
  • 利用防火墙以外的信息,增强管控能力
    如利用ITit系统提供的用户信息、位置信息、漏洞和网络资源信息等,帮助改进和优化安全策略。如:通过集成用户认证系统,实现基于用户的安全策略,以应对移动办公场景下IP地址变化带来的管控难题。
相关推荐
纷飞梦雪1 小时前
使用chroot预安装软件到ubuntu22中
linux·运维·ubuntu
不脱发的猴子2 小时前
Wireshark使用教程
网络·测试工具·wireshark
小羊在奋斗4 小时前
【Linux网络】NAT技术、DNS系统、五种IO模型
linux·网络·智能路由器
jiarg6 小时前
linux 内网下载 yum 依赖问题
linux·运维·服务器
yi个名字6 小时前
Linux第一课
linux·运维·服务器
菜鸟xy..7 小时前
linux 基本命令教程,巡查脚本,kali镜像
linux·运维·服务器·kali镜像·巡查脚本·nmtui
暴躁的小胡!!!7 小时前
Linux权限维持之协议后门(七)
linux·运维·服务器·网络·安全
安 当 加 密7 小时前
中小企业Radius认证服务器的低成本高安全解决方案
运维·服务器·安全
遇见火星7 小时前
2025年Linux 安全与运维指南
网络
苏格拉真没有底7 小时前
python实现mqtt消息转Tcp消息
网络·python·tcp/ip