基于TCP半连接SYN Flooding攻击原理及防范

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

说起安全,不得不说一下当前最为流行的一种 DDOS 的攻击方式,从目前看来,这种攻击仍然是危害性相当大,并且没有办法彻底防范的一种攻击方式。而且,凡是基于 TCP 的高层应用,都有可能受到这种致命的攻击。 
      在“可靠的”传输层,在这里打上引号,是因为传输层并不是真正的可靠的,而只是相对的。为什么这么说呢,因为在 2 端的通信中,如果由于通信链路的故障,或者是某一端的故障,造成了通信的异常,那么另一端是不能主动地了解到的。打个比方说,这就好比是我汇钱给张三,用的是中国邮政的普通汇款,由于种种的原因,他们把钱在路上搞丢了,但是这个时候我并不知道钱丢了,我还在一直等张三给我打电话,告诉我钱是否到了,如果 2 个月之后,张三还是没有来电话,说钱已经收到了,按照常理来说,一个半月之前就应该收到了,那没办法,我只得再给张三汇钱,如果这次又搞丢了,我还得再汇,直到张三打电话告诉我,钱已经到了,那么可能对于张三来说,这个传输是可靠的,因为不管丢了多少次,终究他是收到了他想要的东西,但是对于我来说,我不能把丢的钱找回来,也不能自己去监视中国邮政到底是把我的钱搞丢了,还是被他们塞进自己的腰包了,我所知道的仅仅是“张三没有收到钱”,我需要再给他寄一次。

    由此可以看出,TCP 的传输并不是可靠的,它存在一个等待和重传的机制,一旦数据在网络上发生丢失,它会依赖于 ACK / SYN 这些东西来进行一个重传,而且,TCP 处理程序中存在一个计时器,如果计时器发生超时,那么它就认为数据已经丢了(当然不会像上边的例子中说的是 2 个月),再去重传,那么既然要去重传,就要保证将来一旦发生超时,TCP 处理程序还能把丢失的东西找回来,那么,TCP 处理程序在收到连接请求的时候,就会要在内存中开辟一片区域来,保存 SYN 以及数据着一系列的东西。

    好,现在了解到了 TCP 的可靠与不可靠的方面,现在来说一下 TCP 的 3 次握手,这个在以前的文章中已经写过了,在这里就不再多说了,在正常情况下,3 次握手的步骤如下:

        ISN
A -------------------> B
    SYN/ACK
A <------------------- B
      ACK
A -------------------> B
在 A 向 B 发出 TCP 请求的时候,它发出一个随机的 ISN (Initial Sequence Number),B 收到后给 A 回复一个 ACK = ISN + 1,同时再回复一个自己的 SYN 号,接着会保存 A 发来的这些信息,同时再内存中开辟缓冲区进行保存,然后 A 再给 B 回复一个 ACK。经历过这三次之后,一个端到端的 TCP 连接已经建立起来了,这是正常的情况。但是,考虑这种情况,如果在 A 向 B 发出请求,B 给 A 回复并且开辟了资源之后,A 不再进行第三次的回复,会怎么办?这就好比说,张三收到钱了,也不给我打电话,我一等 2 个月,按照常理的话张三早该收到钱了,但是他还没来电话,没办法,我只有再去汇钱了,那么如果每一次都这样,我这里的钱是不是很快就汇完了?TCP 中也是这样,如果 A 一直在向B 发起 TCP 请求,B 也按照正常情况进行响应了,但是 A 不进行第三次的握手,造成半连接,那么 B 分配出去的内存资源就一直这么耗着,直到资源耗尽。

    对于这种攻击,
似乎是没有办法防范的,因为 TCP 的三次握手是协议规定死的,所有使用 TCP 协议的软件都必须遵循其规定,否则无法通信。但是,有一种办法,似乎可以防范,那就是限制通信源的 TCP 并发连接数,例如:如果 A 在 1 秒钟之内连续产生 100 个 TCP 半连接,那么 B 就丢弃 A 所有的 TCP 信息,并且在一定时间内不再响应攻击者的释放内存资源。这看起来似乎似乎一种行之有效的办法,可是实际并非这么简单,因为在第三层的 IP 协议是一个不可靠的协议,它的源地址可以被伪造,如果一个攻击者制造大量的伪造源地址来对受害者进行攻击,而每一个 IP 地址的 TCP 半连接只建立 3~5 次,这个时候如何防范?

    基于此,一种新型的防御方式产生了—— TCP Cookie,TCP Cookie 技术针对 TCP 协议的软肋,做出了一些改进。仍以上面的通信过程为例,在 A 向 B 发出一个 TCP 请求之后,B 并不立即为 A 的 TCP 请求分配资源,而是利用 A 发来的连接信息计算出一个 Cookie 值——取 Client 端的 IP、端口,以及 Server 端的 IP、端口,再进行一种散列算法,得到一个 Cookie,取该 Cookie 的前 24 位作为 SYN 值对对方进行回复。当对方对这个 SYN/ACK 再次进行 ACK (ACK=SYN+1)回复的时候,利用某种算法和这个 ACK 来倒推回原来的 Cookie,如果在一定范围内符合,即认为是合法的 TCP 请求,对它进行响应,如果不符合,则认为其是非法的 TCP 请求,丢弃。为什么说是一定范围内呢,因为 Cookie 的变化和时间有关,那么在 TCP 超时之内的所有的 ACK 都应该是合法的,那么在倒推回去的时候,只要得到的 Cookie 和原来的 Cookie 在一个合法的时间段内相符,就认为是合法的。

    这种 TCP Cookie 技术并不是无懈可击的,首先,如果攻击者大量地伪造 IP 地址进行半连接攻击,受害者会忙于计算原来的 Cookie 值而造成资源耗尽,另外,由于并发连接数太多,会造成受害者的带宽耗尽,同样也会造成拒绝服务攻击(D.o.S 可不管是耗尽资源还是耗尽带宽,它只要让受害者的服务不能正常提供即可),带宽总是有限的,所以不管怎么防范,只要 D.o.S 攻击威力足够大,任何的防范方法都不能奏效。所以想要防范 D.o.S,还是厚道些做人,不要惹火黑客,否则在遭到攻击的时候,除了拔网线,恐怕再没有别的办法了。

漏洞攻击 --- TCP -- 半开攻击、RST攻击 sys 攻击数据是DOS攻击的一种,利用TCP协议缺陷,发送大量的半连接请求,耗费CPU和内存资源,发生在TCP三次握手中。A向B发起请求,B按照正常情况执行响应,A不进行第3次握手,这就是半连接攻击 阅读详情

相关推荐

TCP半连接攻击 & 全连接攻击

面经上看到了半连接攻击的问题,跟自己想的差不多,这里简单总结一下。 半连接攻击 在正常情况下,客户端连接服务端需要通过三次握手,首先客户端构造一个SYN连接数据包发送至服务端,自身进入SYN_SEND状态,当服务端收到客户端的SYN包之后,为其分配内存核心内存,并将其放置在半连接队列中,服务端接收客户SYN包并会向客户端发送一个SYN包和ACK包,此刻服务端进入SYN_RECV态。客户端收到包之后,再次向服务端发送ACK确认包。至此连接建立完成,双方都进入ESTABLSHEDZ状态。半连接就是通过不断地构造

或左的博客 3155

tcp连接之半连接攻击和全连接攻击总结

众所周知,tcp通信是一个面向连接的过程,客户端要和服务端连接,必须进行连接才能进行通信。在tcp连接中,有两种连接攻击方式,是半连接攻击机和全连接攻击,对此搜积相关资料做了一个总结。 &lt;1&gt;半连接攻击?     半连接攻击是一种攻击协议栈的攻击方式,坦白说就是攻击主机的一种攻击方式。通过将主机的资源消耗殆尽,从而导致应用层的程序无资源可用,导致无法运行。在正常情况下,客户端连接服...

qq_26105397的博客 1万+

TCP/IP协议攻击

无题1.说明2.题目3.实践过程 1.说明 本文章主要是谈谈我做这几个小实验的一些做法和看法,重在操作。在小编做这个实验的时候发现很多人都用了hunt工具,但我一直没安装成功,安装成功后也监控不了(如果有人可以编译它的源码就可能可以用这个工具了),所以我直接通过抓包构造包来完成命令注入。 2.题目 (1)使用Netwox命令行工具构造任意TCP, UDP, IP数据包。 (2)用SYN flood攻击靶机的ftp服务。 (3)伪造一个A到B的RST数据包来终端他们之间的连接。 (4)利用TCP会话劫持攻击

weixin_41708020的博客 1415

网络攻击半连接攻击(SYN攻击)、全连接攻击、RST攻击、IP欺骗、DNS欺骗、DOS/DDOS攻击

一、半连接攻击 二、全连接攻击 三、RST欺骗 四、IP欺骗       行动产生的IP数据包为伪造的源IP地址,以便冒充其他系统或发件人的身份。 五、DNS欺骗 5.1 定义       攻击者冒充域名服务器的一种欺骗行为。 5.2 原理       如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网只能看到攻击者的主页

kanguolaikanguolaik的专栏 1万+

TCP/IP(六)TCP的连接管理(三)半连接

处于 SYN_RECV 状态的最大个数。理论值 max_qlen_log。

wzj_110的博客 692

[zz]基于TCP半连接SYN Flooding攻击原理防范

基于TCP半连接SYN Flooding攻击原理防范2006-11-13 15:28 说起安全,不得不说一下当前最为流行的一种 DDOS 的攻击方式,从目前看来,这种攻击仍然是危害性相当大,并且没有办法彻底防范的一种攻击方式。而且,凡是基于 TCP 的高层应用,都有可能受到这

wuhran的Blog-C++,Linux,MySQL,PHP 41万+

TCP SYN洪水 (SYN Flood) 攻击原理与实现

TCP协议是 TCP/IP 协议栈中一个重要的协议,平时我们使用的浏览器,APP等大多使用 TCP 协议通讯的,可见 TCP 协议在网络中扮演的角色是多么的重要。 TCP 协议是一个可靠的、面向连接的流协议,由于 TCP 协议是建立在 IP 协议这种面向无连接的协议,所以 TCP 协议必须自己来维护连接的状态。 三次握手过程 TCP 协议通过一种名为 三次握手 的过程来建立客户端与服务端的连接,三次握手 过程的原理如图1: (图一 三次握手过程) 建立连接三次握手过程如下: 客户端需要发

~~ LINUX ~~ 3952

TCP SYN FLOODING攻击

TCP的泛洪攻击原理是客户机向服务器的是大量的伪造的源IP syn包 ,因此服务器就会向大量伪造的源ip发送syn ack,但是客户机并不会回复syn,服务器就会继续发送请求,会消耗服务器大量的资源,从而导致了服务器处于半连接状态!TCP泛洪攻击是根据tcp的三次握手原理,简单理解正常的三次握手客户端向服务器发送SYN包请求连接,然后服务器收到SYN包后,会向客户机发送一个SYN+ACK用来确认,最后客户机在发送一个SYN包正式建立连接;它的原理是,在TCP服务器收到TCP SYN包并返回TCP

2401_87608996的博客 830

TCP SYN Flooding

Synflood:该攻击以多个随机的源主机地址向目的路由器发送SYN包,而在收到目的路由器的SYN ACK后并不回应,这样,目的路由器就为这些源主机建立了大量的连接队列,而且由于没有收到ACK一直维护着这些队列,造成了资源的大量消耗而不能向正常请求提供服务,甚至导致路由器崩溃.服务器要等待超时(Time Out)才能断开已分配的资源。   防范措施:   设置HALF-TCP连接的最大

zhubo22的专栏 777

Linux系统日志报Possible-SYN-flooding处理方法

tcp_max_syn_backlog(2048) 小于 2207(lsof -ni | wc -l),可能网络连接数不够了。表示回应第二个握手包(SYN+ACK包)给客户端IP后,如果收不到第三次握手包(ACK包),进行重试的次数(默认为5)。半连接队列长度(默认为1024),加大SYN队列长度可以容纳更多等待连接的网络连接数,具体多少数值受限于内存。这样的话,对于服务器的内存,带宽都有很大的消耗。命令,看到下面输出,可能会猜测遭受到。数值很小,排除洪水攻击,可能是。包,这样的话,服务器不知道。

运维老生常谈 1090

TCP协议安全性分析(含TCP协议原理、三次握手、SYN Flooding、Dos)

深入浅出分析TCP三次握手建立连接,Dos、SYN FloodingTCP安全协议漏洞

moon_quake_s的博客 1464

SYN flooding

SYN flooding攻击攻击者可以在短时间内发送大量的伪SYN包,占用服务器的TCB队列资源,致使正常用户无法连接。下面我们使用netwox工具,分别从家庭局域网内的主机和服务器,向一个搭建wordpress的目标服务器(myself),发送伪SYN包。 使用自己构建的代码,发起SYN flooding攻击。 介绍防御措施:SYN cookie。

大草的博客 1965

Linux系统日志报Possible SYN flooding处理方法

前提当你在 Linux 服务器上运行dmesg -T命令,看到下面输出,可能会猜测遭受到SYN洪水攻击。上图只是可能遭受到SYN洪水攻击,但不一定是被攻击了。后面讲述如何判定...

qq_24794401的博客 2205

TCP/IP常见攻击手段

以下文章来源于暖蓝笔记,作者蓝蓝 这一篇主要和大家一起学习回顾关于TCP/IP的常见攻击,至少有一个基本的认识 前言 前言 1 IP欺骗 IP是什么 在网络中,所有的设备都会分配一个地址。这个地址就仿佛小蓝的家地址「多少号多少室」,这个号就是分配给整个子网的,「室」对应的号码即分配给子网中计算机的,这就是网络中的地址。「号」对应的号码为网络号,「室」对应的号码为主机号,这个地址的整体就是IP地址。 通过IP地址我们能知道什么? 通过 IP 地址,我们就可以知道判断访问对...

记录有价值的内容 4362

TCP SYN Flood攻击原理与防御方法

本实验主要对TCP SYN Flood进行演示,同时通过在路由和交换设备的配置,完成了对TCP SYN Flood的防御。通过本次实验掌握TCP SYN Flood的原理以及防御手段。

qq_61861243的博客 2418

SYN flood攻击SYN cookie原理分析

1.实验简介 最近在学习《计算机网络》,课程布置了一个网络攻击的作业 SYN Flooding Attack ,本篇博客就本次实验做一个完整的实验报告及总结。 所用平台seed简介 SEED:计算机安全教育的教学实验平台 http://www.cis.syr.edu/~wedu/seed/ 纽约雪城大学 杜文亮 (Du, Wenliang)教授设计和实现,从2002年开始得到NSF 1.2M$的...

honor 2611

SYN flooding引发的网络故障

故障现象: 1.应用无法通过外网访问,应用服务器所在的内网网段之间(web和db数据库之间访问丢包严重)不能互相访问 其他网段正常 2.怀疑是网络设备问题,将连接该网段设备的交换机重启后故障依旧,通过查看个端口的IP报文数据 发现28号口疑似出现环路现象,接收INPUT数据大大超出发送OUTPUT数据 28号口连接的是OA服务器,OA服务器是一台放在ce...

reblue520的专栏 655

Attacks on TCP/IP Protocols (Task3) SYN Flooding Attack

Task3: SYN Flooding Attack

我有一颗五角星 2621

TCP/UDP协议安全:SYN flooding 与nmap的使用

一、SYN Flooding 1.1 简介 鼎鼎大名的SYN flooding攻击相信信安爱好者都很熟知。它发生在TCP三次握手之间,攻击者向服务器发送很多的SYN请求而收到SYN+ACK后不恢复ACK从而占用服务器资源使其丧失正常服务能力。 若目标机器未开启防护措施(echo 0 > tcp_syncookies),我们使用netwox 76命令就可以发起攻击了: netwox 76 -i...

weixin_42107987的博客 2126
上一篇: ebtables基本使用
下一篇: TCP: SYN ACK FIN RST PSH URG 详解
wuruixn
博客等级 码龄18年 112粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值