SYN flood攻击及SYN cookie原理分析

1.实验简介

最近在学习《现代计算机网络》,课程布置了一个网络攻击的作业 SYN Flooding Attack ,本篇博客就本次实验做一个完整的实验报告及总结。

所用平台seed简介

  1. SEED:计算机安全教育的教学实验平台
  2. http://www.cis.syr.edu/~wedu/seed/
  3. 纽约雪城大学 杜文亮 (Du, Wenliang)教授设计和实现,从2002年开始得到NSF 1.2M$的资助
  4. 下载链接:https://pan.baidu.com/s/1_mwIZfl89S3HsHgpksBRVw
    提取码:j38r

一.实验环境(详细说明实验运行的操作系统,网络平台,机器的配置)

  • 操作系统:Windows10
  • 虚拟机操作系统:SEEDUbuntu 12.04
  • 虚拟机工具:VirtualBox 5.2.16
  • 网络虚拟软件:GNS3 2.0.3

二.实验目的

  1. 掌握基础ip网络配置;
  2. 掌握GNS3和使用WireShark对流量进行抓包分析;
  3. 实现SYN flood攻击,理解其表现形式和产生的影响;
  4. 深入观察理解linux内核tcp SYN cookie机制,理解其在SYN flood攻击中的作用。

三.实验步骤

  1. 导入SEED虚拟机镜像文件,命名为SEED ubuntu,复制一个,命名为SEED ubuntu target(注意勾选重新初始化网卡的MAC地址)。
    SYN flood攻击及SYN cookie原理分析_第1张图片
    SYN flood攻击及SYN cookie原理分析_第2张图片
    SYN flood攻击及SYN cookie原理分析_第3张图片
    SYN flood攻击及SYN cookie原理分析_第4张图片

  2. 利用GNS3配置如图所示网络
    SYN flood攻击及SYN cookie原理分析_第5张图片

  3. 配置两台主机的ip地址和路由,一个为192.168.1.1,另一个为192.168.1.2.默认的路由为192.168.1.0
    SYN flood攻击及SYN cookie原理分析_第6张图片
    SYN flood攻击及SYN cookie原理分析_第7张图片

  4. 测试连通性
    SYN flood攻击及SYN cookie原理分析_第8张图片SYN flood攻击及SYN cookie原理分析_第9张图片

  5. 在SEED Ubuntu target上启动telnet服务
    06.png

  6. 在SEED Ubuntu主机上输入攻击命令
    07.png

  7. 在seed Ubuntu target上用wireshark观察攻击报文
    SYN flood攻击及SYN cookie原理分析_第10张图片

  8. 用netstat –n –tcp命令观察建立的连接,显示的状态为established
    SYN flood攻击及SYN cookie原理分析_第11张图片

  9. 此时seed ubuntu可以通过telnet登录seed Ubuntu target
    SYN flood攻击及SYN cookie原理分析_第12张图片

  10. 进一步观察linux内核tcp syn cookie机制
    通过echo 0 > /proc/sys/net/ipv4/tcp_syncookies命令关闭syn cookies
    通过sysctl -w net.ipv4.tcp_max_syn_backlog = 5指定所能接受SYN同步包的最大客户端数量为5
    SYN flood攻击及SYN cookie原理分析_第13张图片

  11. 再次从SEED Ubuntu 上用netwox的syn flood攻击SEED Ubuntu target
    SYN flood攻击及SYN cookie原理分析_第14张图片

  12. 此时发现不能用telnet登录seed ubuntu target
    SYN flood攻击及SYN cookie原理分析_第15张图片

  13. 再次打开SEED Ubuntu target内核tcp syn cookie参数(将tcp_syncookies设置为1),同时从SEED Ubuntu 上用telnet连接主机 SEED Ubuntu target
    SYN flood攻击及SYN cookie原理分析_第16张图片
    发现可以通过telnet建立连接
    SYN flood攻击及SYN cookie原理分析_第17张图片

  14. 用netstat –n --tcp查看tcp网络的连接情况。
    SYN flood攻击及SYN cookie原理分析_第18张图片
      在seed ubuntu target查看连接情况
    SYN flood攻击及SYN cookie原理分析_第19张图片

四.实验结果分析

1. SYN Flood攻击原理

SYN Flood 攻击是一种典型的拒绝服务型(Denial of Service,DoS)攻击。所谓拒绝服务型攻击就是通过对网络带宽进行消耗性攻击,使受害主机或网络不能够良好的提供服务,从而间接达到攻击的目的。SYN Flood攻击就是利用了“三次握手”的漏洞。假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出 SYN+ACK 应答报文后是无法收到客户端的 ACK 报文的(第三次握手无法完成),一般把服务器收到 SYN 包而还未收到 ACK 包时的连接状态成为半开连接。这时服务器端一般会重试(再次发送 SYN+ACK 给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为 SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟)。如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的 CPU 时间和内存,何况还要不断对这个列表中的 IP 进行 SYN+ACK 的重试。服务器端将忙于处理攻击者伪造的 TCP 连接请求而无暇理睬客户的正常请求,此时从正常客户的角度看来,服务器失去响应,这种情况就称作服务器端受到了SYN Flood攻击(SYN 洪范攻击)。

2. SYN Cookies原理

SYN cookie就是用一个cookie来响应 TCP SYN请求的TCP实现,根据上面的描述,在正常的TCP实现中,当服务器接收到一个SYN数据包,它返回一个SYN+ACK包来应答,然后进入TCP_SYN_RECV(半开放连接)状态来等待最后返回的ACK包。服务器用一个数据空间来描述所有未决的连接,然而这个数据空间的大小是有限的,所以攻击者将塞满这个空间。SYN Cookie是对TCP服务器端的三次握手协议作一些修改,专门用来防范SYN Flood 攻击的一种手段。它的原理是,在TCP服务器收到 TCP SYN包并返回 TCP SYN+ACK 包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值,并将这个cookie作为将要返回的 SYN+ACK 包的初始序列号。在收到 TCP ACK包时,TCP服务器再根据报头信息获取cookie值,并通过这个cookie值检查这个TCP ACK包的合法性。如果合法,再分配专门的数据区进行处理未来的TCP连接。 由此可见,cookie的实现要求cookie 必须与每次TCP连接紧密对应,攻击者无法伪造cookie,同时cookie中包含连接的状态信息。

3. 实验结果

当打开SEED Ubuntu target内核的tcp syn cookie参数时,在target机器遭受syn flood 攻击后,源主机(SEED Ubuntu)可以用telnet登录target主机,即可以建立正常的TCP连接。
当内核关闭tcp syn cookie参数时,target主机在遭受flood攻击后,源主机(SEED Ubuntu)telnet不能正常登录target主机,无法建立正常的TCP连接。

你可能感兴趣的:(计算机网络)