前言:前几天网安课研究了下TCP协议,总感觉四次挥手有点问题,就请教了下老师,结果老师说反正要分手了,发包Who cares,反倒是握手有问题。于是我就用虚拟机做了个SYN Flood的实验。

Warning!本文仅为实验记录以及安全测试,请勿用于非法攻击!

SYN Flood原理

TCP协议是面向连接,可靠的,基于字节流的传输层通信协议,通过三次握手来建立客户端与服务端的连接。

TCP三次握手过程如下

客户端A向服务端B发送SYN包请求建立连接,服务端B收到SYN包后会向客户端A发送SYN+ACK包进行连接确认,客户端A回复ACK包后才真正建立TCP连接。

但问题就是,要是A没有回复ACK包,B会一直等待直到超时。B超时后会认为可能是A没有收到,进而重发SYN+ACK包(TCP超时重传 默认重发5次)

当A大量发送SYN包却不进行第三次握手时,B会积累大量处于半连接状态的Socket,使得CPU资源用于处理庞大的半连接队列导致无法处理正常用户的正常网络请求,进入拒绝服务状态。

测试环境

kali windows10 wireshark

准备工作

kali和win10在VMware中都使用nat连接,以此达到在同一个局域网的目的。

kali 作为攻击机 IP为192.168.198.128

win10作为靶机 IP为192.168.198.129

win10关闭防火墙,否则会自动拦截包。(后续实验开了防火墙也能进行SYN Flood攻击 但是关了防火墙才能ping得通)

并在kali中使用ping 192.168.198.129进行连通性测试,保证两个虚拟机之间能进行通信。

实验过程

在kali中使用管理员权限执行命令

hping3 -q -n -a 1.1.1.1 -S -s 53 --keep -p 114 --flood 192.168.198.129

-q安静模式 -n数字化输出主机地址 -a伪造IP -S设置SYN=1 -S设置源端口 -k保持源端口 -p设置目标端口 --flood洪水发包无回显

观察靶机的任务管理器,由于我尝试了2次SYN Flood,所以有两段CPU占用高峰期,差不多已经进入了拒绝服务的状态了。其实之前还有一次,由于效果过猛直接导致虚拟机卡死,重启了之后再继续做的实验。

实验结果

wireshark抓包如下

实验结束。以下为效果图netstat -n -p TCP。由此可见大量的TIME_WAIT挤占了ESTABLISHED。

后言:给老师写实验报告的时候 复现了下实验 突然发现靶机开了防火墙之后进行SYN Flood攻击时CPU占用会冲到90,但是关了防火墙CPU占用只有20,就挺怪的,其原理有待研究。

靶机开了防火墙抓包如下 靶机未向攻击机发RST包 清一色的只有SYN攻击包

靶机关了防火墙抓包如下 靶机向攻击机发了RST包

个人猜测windows防火墙关闭之后会降低半开放连接队列的数量。(有待深究 目前作者由于个人能力 无法解释)

下附hping3用法。

┌──(root㉿kali)-[/home/kali]
└─# hping3 -h
usage: hping3 host [options]-h  --help      show this help-v  --version   show version-c  --count     packet count-i  --interval  wait (uX for X microseconds, for example -i u1000)--fast      alias for -i u10000 (10 packets for second)--faster    alias for -i u1000 (100 packets for second)--flood      sent packets as fast as possible. Don't show replies.-n  --numeric   numeric output-q  --quiet     quiet-I  --interface interface name (otherwise default routing interface)-V  --verbose   verbose mode-D  --debug     debugging info-z  --bind      bind ctrl+z to ttl           (default to dst port)-Z  --unbind    unbind ctrl+z--beep      beep for every matching packet received
Modedefault mode     TCP-0  --rawip      RAW IP mode-1  --icmp       ICMP mode-2  --udp        UDP mode-8  --scan       SCAN mode.Example: hping --scan 1-30,70-90 -S www.target.host-9  --listen     listen mode
IP-a  --spoof      spoof source address--rand-dest      random destionation address mode. see the man.--rand-source    random source address mode. see the man.-t  --ttl        ttl (default 64)-N  --id         id (default random)-W  --winid      use win* id byte ordering-r  --rel        relativize id field          (to estimate host traffic)-f  --frag       split packets in more frag.  (may pass weak acl)-x  --morefrag   set more fragments flag-y  --dontfrag   set don't fragment flag-g  --fragoff    set the fragment offset-m  --mtu        set virtual mtu, implies --frag if packet size > mtu-o  --tos        type of service (default 0x00), try --tos help-G  --rroute     includes RECORD_ROUTE option and display the route buffer--lsrr           loose source routing and record route--ssrr           strict source routing and record route-H  --ipproto    set the IP protocol field, only in RAW IP mode
ICMP-C  --icmptype   icmp type (default echo request)-K  --icmpcode   icmp code (default 0)--force-icmp send all icmp types (default send only supported types)--icmp-gw    set gateway address for ICMP redirect (default 0.0.0.0)--icmp-ts    Alias for --icmp --icmptype 13 (ICMP timestamp)--icmp-addr  Alias for --icmp --icmptype 17 (ICMP address subnet mask)--icmp-help  display help for others icmp options
UDP/TCP-s  --baseport   base source port             (default random)-p  --destport   [+][+]<port> destination port(default 0) ctrl+z inc/dec-k  --keep       keep still source port-w  --win        winsize (default 64)-O  --tcpoff     set fake tcp data offset     (instead of tcphdrlen / 4)-Q  --seqnum     shows only tcp sequence number-b  --badcksum   (try to) send packets with a bad IP checksummany systems will fix the IP checksum sending the packetso you'll get bad UDP/TCP checksum instead.-M  --setseq     set TCP sequence number-L  --setack     set TCP ack-F  --fin        set FIN flag-S  --syn        set SYN flag-R  --rst        set RST flag-P  --push       set PUSH flag-A  --ack        set ACK flag-U  --urg        set URG flag-X  --xmas       set X unused flag (0x40)-Y  --ymas       set Y unused flag (0x80)--tcpexitcode    use last tcp->th_flags as exit code--tcp-mss        enable the TCP MSS option with the given value--tcp-timestamp  enable the TCP timestamp option to guess the HZ/uptime
Common-d  --data       data size                    (default is 0)-E  --file       data from file-e  --sign       add 'signature'-j  --dump       dump packets in hex-J  --print      dump printable characters-B  --safe       enable 'safe' protocol-u  --end        tell you when --file reached EOF and prevent rewind-T  --traceroute traceroute mode              (implies --bind and --ttl 1)--tr-stop        Exit when receive the first not ICMP in traceroute mode--tr-keep-ttl    Keep the source TTL fixed, useful to monitor just one hop--tr-no-rtt       Don't calculate/show RTT information in traceroute mode
ARS packet description (new, unstable)--apd-send       Send the packet described with APD (see docs/APD.txt)

虚拟机下的SYN Flood测试相关推荐

  1. 【网络编程】SYN Flood (SYN洪水攻击)原理及防阻

    转载自: https://blog.csdn.net/jiange_zh/article/details/50446172 第一部分 SYN Flood的基本原理 一.原理 1.TCP握手协议 第一次 ...

  2. 攻击工具SYN Flood的源代码

    文章转自王牌软件 第一部分 SYN Flood的基本原理 SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的T ...

  3. 利用tcp三次握手,使用awl伪装MAC地址进行多线程SYN Flood

    SYN Flood概述: SYN Flood主要源于: tcp协议的三次握手机制 tcp协议面向链接的协议 SYN Flood的过程: 在服务端返回一个确认的SYN-ACK包的时候有个潜在的弊端,如果 ...

  4. SYN Flood攻击防范技术白皮书

    SYN Flood攻击防范技术白皮书 关键词:SYN Flood ,SYN Cookie,Safe Reset 摘    要:本文主要介绍了H3C防火墙为保护服务器免受SYN Flood攻击采用的防范 ...

  5. kali Linux下wifi密码安全测试(1)虚拟机下usb无线网卡的挂载 【转】

    转自:http://blog.chinaunix.net/uid-26349264-id-4455634.html 目录 kali Linux下wifi密码安全测试(1)虚拟机下usb无线网卡的挂载 ...

  6. kali Linux下wifi密码安全测试(1)虚拟机下usb无线网卡的挂载_商洛学院司徒荆_新浪博客

    kali Linux下wifi密码安全测试(1)虚拟机下usb无线网卡的挂载 1.1     VMWare下的配置 1.2 VirtualBox下的配置 原文链接:http://www.xuanhun ...

  7. SYN Flood攻击

    1.攻击原理 SYN Flood是拒绝服务攻击的一种,所谓拒绝服务攻击,即想办法让目标机器停止提供服务 这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,使被攻击方资源耗尽(CPU满负荷或内存 ...

  8. DDOS SYN Flood攻击、DNS Query Flood, CC攻击简介——ddos攻击打死给钱。限网吧、黄网、博彩,,,好熟悉的感觉有木有...

    摘自:https://zhuanlan.zhihu.com/p/22953451 首先我们说说ddos攻击方式,记住一句话,这是一个世界级的难题并没有解决办法只能缓解 DDoS(Distributed ...

  9. pythonddos防御_浅谈拒绝服务攻击的原理与防御(7):用Python和C实现syn flood攻击...

    01 前言 以前做DDOS的实验都是用python来编写工具的,开始不会编写结构不会算校验和的时候就用scapy写,后来学会了报文结构开始自己构造各种报文,但是用python写成之后虽然是能实现基本功 ...

  10. syn flood 攻击 c 语言源代码,利用Python和C实现syn flood攻击

    python  python  python  python  python  python  python  python  python俗话说,知己知彼,百战不殆.学习攻击代码的编写逻辑,反向实现 ...

最新文章

  1. Python报错:NameError: name ‘wraps‘ is not defined
  2. [译] Kotlin 标准方法备忘
  3. vim编写python_用vim写python代码
  4. Redis基础知识详解(非原创)
  5. namenode 优化 mv慢的问题
  6. VC++将位图中保存的图像灰化(附源码)
  7. python编程培训杭州
  8. 联想笔记本Y430p升级硬件(内存扩容+升级固态)
  9. keepalived配置,解决vip无法ping通,虚拟服务器端口无法访问的问题
  10. GridControl 单元格自动换行
  11. 基于学术研究于NASA官网GPM卫星数据下载详细教程
  12. 先序序列和中序序列构造二叉树,中序序列和后序序列构造二叉树
  13. VMware Horizon 8 2111 部署系列(十三)创建应用程序池
  14. linux下ifconfig命令找不到解决办法
  15. 05-数据科学的基础:数据收集之市场调查_01 市场调查概括
  16. 【一】数字图像的常见概念
  17. 统计学②——概率分布(几何,二项,泊松,正态分布)
  18. ADSL接入网的结构和工作方式
  19. [编程题]有趣的数字
  20. JavaWeb学习笔记(一)html

热门文章

  1. 【Docker学习笔记 七】深入理解Docker网络配置及微服务部署
  2. 工厂模式,从第三方登录说起
  3. html解压zip文件怎么打开方式,zip文件是什么文件,如何打开zip格式的文件?
  4. Python项目分析:预测双色球福利彩票中奖号码(随便玩玩,不要当真)
  5. XP下免U盘安装Ubuntu 18.04(持续更新遇到的问题,20200422更新)
  6. E/art﹕Failed sending reply to debugger: Broken pipe的解决方法
  7. Travis CI 持续集成工具 教程
  8. Springboot 使用 Guava 的重试Retry ,轻便灵活
  9. 《当程序员的那些狗日日子》(二十三)死在了今天的晚上
  10. PTA 7-18(查找) 新浪微博热门话题(30 分) 30分代码 (已更新)