使用Kali Linux进行SYN Flood攻击

1.SYN

SYN:同步序列编号(Synchronize Sequence Numbers),是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。

2.SYN Flooding攻击基本原理

要明白这种攻击的基本原理,还是要从TCP连接建立的过程开始说起:

大家都知道,TCP与UDP不同,它是基于连接的,也就是说:为了在服务端和客户端之间传送TCP数据,必须先建立一个虚拟链路,也就是TCP连接,建立TCP连接的标准过程是这样的:

  • 首先,请求端(客户端)发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号;
  • 第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号被加1,ACK即确认(Acknowledgment)。
  • 第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加1,到此一个TCP连接完成。

以上的连接过程在TCP协议中被称为三次握手(Three-way Handshake)。

        SYN攻击属于DDoS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,使得被攻击方资源耗尽,无法及时回应或处理正常的服务请求。事实上SYN攻击并不管目标是什么系统,只要这些系统打开TCP服务就可以实施。

  • 服务器接收到连接请求(syn= 1),将此信息加入未连接队列,并发送请求包给客户(syn=1,ack=x+1),此时进入SYN_RECV(服务端被动打开后,接收到了客户端的SYN并且发送了ACK时的状态)状态。
  • 当服务器未收到客户端的确认包时,重发请求包,一直到超时,才将此条目从未连接队列删除(协议缺陷
  • 配合IP欺骗,SYN攻击能达到很好的效果,通常,客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送syn包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。

3.SYN Flood攻击示例

攻击机:Kali Linux

靶机:Windows XP

1)查看两台虚拟主机的IP地址,并判断2台主机IP地址是否在同一个IP网段

Kali Linux的IP地址:192.168.73.136

Windows XP的IP地址:192.168.73.138

2)连通性测试

关闭Windows XP 的防火墙;在Kali终端输入命令 ping  192.168.73.138(Windows XP的IP地址),测试其连通性。

3)SYN Flood攻击

在Windows XP上打开任务管理器--性能(Ctrl+Alt+Insert),监控CPU资源的占用率

在Kali终端输入hping3 -q -n -a 2.2.2.2 -S -s 53 --keep -p 445 --flood 192.168.73.138

(格式:hping3 -q -n -a 伪造源地址 -S -s 伪造源端口 --keep -p 攻击的目标端口 --flood 目标IP)

4)查看攻击效果

查看Windows XP的CPU资源占用率是否为100%,或是居高不下。或者在物理机上启动WireShark,选择Vmnet8网卡---抓包,是否看到大量的源地址为2.2.2.2的TCP包。

5)在Kali终端输入"Ctrl+C"停止攻击,可以看到Windows XP的CPU资源占用率回归正常了。

实验结束后不要忘记开启Windows XP 的防火墙哦!!!

猜你喜欢

转载自blog.csdn.net/weixin_43625577/article/details/84316753
今日推荐