阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

SYN如何利用TCP协议发动攻击?

37次阅读
没有评论

共计 1054 个字符,预计需要花费 3 分钟才能阅读完成。

导读SYN 攻击利用 TCP 协议缺陷,通过发送大量的半连接请求,耗费 CPU 和内存资源。SYN 攻击除了能影响主机外,还可以危害路由器、防火墙等网络系统,事实上 SYN 攻击并不管目标是什么系统,只要这些系统打开 TCP 服务就可以实施。

SYN 攻击是黑客攻击常用的一种手段,是 DDoS 的方式之一。SYN 攻击利用 TCP 协议缺陷,通过发送大量的半连接请求,耗费 CPU 和内存资源。SYN 攻击除了能影响主机外,还可以危害路由器、防火墙等网络系统,事实上 SYN 攻击并不管目标是什么系统,只要这些系统打开 TCP 服务就可以实施。

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

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

SYN 如何利用 TCP 协议发动攻击?

第一步,请求端 (客户端) 发送一个包含 SYN 标志的 TCP 报文,SYN 即同步,同步报文会指明客户端使用的端口以及 TCP 连接的初始序号;

第二步,服务器在收到客户端的 SYN 报文后,将返回一个 SYN+ACK 的报文,表示客户端的请求被接受,同时 TCP 序号被加一,ACK 即确认。

第三步,客户端也返回一个确认报文 ACK 给服务器端,同样 TCP 序列号被加一,到此一个 TCP 连接完成。

以上的连接过程在 TCP 协议中被称为三次握手。

问题就出在 TCP 连接的三次握手中,假设一个用户向服务器发送了 SYN 报文后突然死机或掉线,那么服务器在发出 SYN+ACK 应答报文后是无法收到客户端的 ACK 报文的 (第三次握手无法完成),这种情况下服务器端一般会重试(再次发送 SYN+ACK 给客户端) 并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为 SYN Timeout,一般来说这个时间是分钟的数量级(大约为 30 秒 - 2 分钟)。

一个用户出现异常导致服务器的一个线程等待 1 分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源 —- 数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的 CPU 时间和内存,何况还要不断对这个列表中的 IP 进行 SYN+ACK 的重试。

实际上如果服务器的 TCP/IP 栈不够强大,最后的结果往往是堆栈溢出崩溃 — 即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的 TCP 连接请求而无暇理睬客户的正常请求。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-27发表,共计1054字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中