`

TCP SYN

    博客分类:
  • tcp
 
阅读更多

SYN

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

    TCP连接的第一个包,非常小的一种数据包。SYN 攻击包括大量此类的包,由于这些包看上去来自实际不存在的站点,因此无法有效进行处理。每个机器的欺骗包都要花几秒钟进行尝试方可放弃提供正常响应。

攻击性质

    在黑客攻击事件中,SYN攻击是最常见又最容易被利用的一种攻击手法。

 

    SYN攻击属于DDoS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。SYN攻击除了能影响主机外,还可以危害路由器、防火墙等网络系统,事实上SYN攻击并不管目标是什么系统,只要这些系统打开TCP服务就可以实施。服务器接收到连接请求(syn= j),将此信息加入未连接队列,并发送请求包给客户(syn=k,ack=j+1),此时进入SYN_RECV状态。当服务器未收到客户端的确认包时,重发请求包,一直到超时,才将此条目从未连接队列删除。配合IP欺骗,SYN攻击能达到很好的效果,通常,客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送syn包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。

攻击原理

    关于SYN攻击防范技术,人们研究得比较早。归纳起来,主要有两大类,一类是通过防火墙、路由器等过滤网关防护,另一类是通过加固TCP/IP协议栈防范

 

    SYN Flood利用TCP协议缺陷,发送了大量伪造的TCP连接请求,使得被攻击方资源耗尽,无法及时回应或处理正常的服务请求。一个正常的TCP连接需要三次握手,首先客户端发送一个包含SYN标志的数据包,其后服务器返回一个SYN/ACK的应答包,表示客户端的请求被接受,最后客户端再返回一个确认包ACK,这样才完成TCP连接。在服务器端发送应答包后,如果客户端不发出确认,服务器会等待到超时,期间这些半连接状态都保存在一个空间有限的缓存队列中;如果大量的SYN包发到服务器端后没有应答,就会使服务器端的TCP资源迅速耗尽,导致正常的连接不能进入,甚至会导致服务器的系统崩溃。

攻击器

    SYN攻击实现起来非常的简单,互联网上有大量现成的SYN攻击工具。

    windows系统下的SYN工具

 

    以synkill.exe为例,运行工具,选择随机的源地址和源端囗,并填写目标机器地址和TCP端囗,激活运行,很快就会发现目标系统运行缓慢。如果攻击效果不明显,可能是目标机器并未开启所填写的TCP端囗或者防火墙拒绝访问该端囗,此时可选择允许访问的TCP端囗,通常,windows系统开放tcp139端囗,UNIX系统开放tcp7、21、23等端囗。

检测攻击

    检测SYN攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击。我们使用系统自带的netstat 工具来检测SYN攻击:

# netstat -n -p TCP

tcp 0  0 10.11.11.11:23 124.173.152.8:25882  SYN_RECV -

tcp 0  0 10.11.11.11:23 236.15.133.204:2577  SYN_RECV -

tcp 0  0 10.11.11.11:23 127.160.6.129:51748  SYN_RECV -

tcp 0  0 10.11.11.11:23 222.220.13.25:47393  SYN_RECV -

tcp 0  0 10.11.11.11:23 212.200.204.182:60427 SYN_RECV -

tcp 0  0 10.11.11.11:23 232.115.18.38:278  SYN_RECV -

tcp 0  0 10.11.11.11:23 239.116.95.96:5122 SYN_RECV -

tcp 0  0 10.11.11.11:23 236.219.139.207:49162 SYN_RECV -

...

    上面是在LINUX系统中看到的,很多连接处于SYN_RECV状态(在WINDOWS系统中是SYN_RECEIVED状态),源IP地址都是随机的,表明这是一种带有IP欺骗的SYN攻击。

    我们也可以通过下面的命令直接查看在LINUX环境下某个端囗的未连接队列的条目数:

#netstat -n -p TCP | grep SYN_RECV | grep :22 | wc -l

324

 

    显示TCP端囗22的未连接数有324个,虽然还远达不到系统极限,但应该引起管理员的注意。

防范技术

    关于SYN攻击防范技术,人们研究得比较早。归纳起来,主要有两大类,一类是通过防火墙、路由器等过    滤网关防护,另一类是通过加固TCP/IP协议栈防范

    注册表设置

 

    在“开始->运行->键入regedit”

    启用 SYN 攻击保护的命名值位于注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters之下。值名称:SynAttackProtect。推荐值:2。

    以下部分中的所有项和值均位于注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters 之下。

    指定必须在触发 SYN flood 保护之前超过的 TCP 连接请求阈值。值名称:TcpMaxPortsExhausted。推荐值:5。

    启用 SynAttackProtect 后,该值指定 SYN_RCVD 状态中的 TCP 连接阈值,超过 SynAttackProtect 时,触发 SYN flood 保护。值名称:TcpMaxHalfOpen。推荐值数据:500。

    启用 SynAttackProtect 后,指定至少发送了一次重传的 SYN_RCVD 状态中的 TCP 连接阈值。超过 SynAttackProtect 时,触发 SYN flood 保护。值名称:TcpMaxHalfOpenRetried。推荐值数据:400

丰富带宽资源

 

    不难看出syn攻击消耗带宽资源所以要想防御synflood一个丰富的带宽资源是必要的,通常的流量攻击,攻击者也是利用肉鸡的带宽资源来达到攻击堵死网络的,所以这个是一个前提

防火墙

 

 

    利用防火墙来进行防护攻击是目前最有效的方法,当然前提是攻击在防护带宽范围之内,也就是为什么第二条推荐带宽资源,这是保证在防火墙前面不会造成堵塞,来达到防火墙的防护目的,笔者测试了国内的防火墙,以天鹰ddos防火墙的防护功能最为全面,syn带宽范围可以100%全部过滤,适合网站、网吧、IDC机房等行业安装,他们拥有多年攻击防护经验,可以防御已知未知的网络攻击,而且基于行为分析法达到误封最小的领先水平!

 

 

分享到:
评论

相关推荐

    TCP SYN Flood分析

    ### TCP SYN Flood 攻击分析 #### 一、TCP SYN Flood 攻击概述 TCP SYN Flood 攻击是一种常见的分布式拒绝服务(DDoS)攻击手段,通过向目标服务器发送大量未完成的TCP连接请求(SYN包),使服务器资源耗尽,导致...

    vc编写tcp syn扫描器源代码

    TCP SYN扫描,也称为半开放扫描,是这类扫描的一种常见方法。这种扫描方式利用了TCP三次握手协议的一部分,即SYN阶段,来检测目标主机是否在线以及特定端口是否开放。 标题"vc编写tcp syn扫描器源代码"表明这是一个...

    tcp syn 扫描

    基于window2000 tcp syn扫描实现

    TCPSYNScan.rar_CAN 实例_tcp syn _tcpsyn

    TCPSYNScan实例,TCPSYN称为半开放扫描。优点在于一般不会在目标计算机上留下记录

    awl-0.2.tar.gz TCP SYN洪水攻击 linux工具

    标题中的“awl-0.2.tar.gz”是一个Linux下的开源工具包,用于模拟TCP SYN洪水攻击。这种攻击是网络层DDoS(分布式拒绝服务)攻击的一种常见形式,它利用TCP连接建立过程中的三次握手来消耗目标服务器的资源,从而使...

    通过发送 TCP SYN 数据包测量网络往返延迟_Go语言_代码_相关文件_下载

    TCP(传输控制协议)作为互联网上最常用的协议之一,其连接建立过程(三次握手)中的SYN(同步序列编号)数据包在其中扮演着关键角色。本知识点将围绕如何使用Go语言编写程序来测量网络往返延迟,通过发送TCP SYN...

    TCP SYN ACK FIN RST PSH URG.doc

    TCP SYN ACK FIN RST PSH URG 详解 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议。它是 TCP/IP 协议簇中的一部分,负责提供可靠的数据传输服务。今天,...

    SYN_scaner.rar_SYN_scaner_ServerScaner_syn_synscan.e_tcp syn

    tcp syn 扫描器 在windows服务器版本上使用

    python 使用raw socket进行TCP SYN扫描实例

    在网络安全领域,尤其是端口扫描技术中,Raw Socket常常被用来实现自定义的网络通信行为,例如TCP SYN扫描。 TCP SYN扫描是一种非完全连接的端口扫描方法,它通过发送SYN数据包到目标主机的特定端口,然后分析返回...

    Armada是一款高性能的TCP SYN端口扫描程序。-Rust开发

    Armada是一款高性能的TCP SYN扫描仪。 这等效于使用-sS扫描类型时,nmap可能执行的扫描类型。 舰队的主要目标是回答基本问题“此港口是否开放?”。 然后由您或您的工具决定进一步挖掘以确定开放端口的用途。 Armada...

    高性能 TCP SYN 端口扫描器。

    无敌舰队高性能 TCP SYN 扫描器什么是无敌舰队?Armada 是一个高性能的 TCP SYN 扫描器。这相当于使用-sS扫描类型时 nmap 可能执行的扫描类型。Armada 的主要目标是回答基本问题“此端口是否开放?”。然后由您或您...

    内核tcp的syn包skbuffer构造发送模块

    在这个场景中,我们将深入探讨“内核TCP的SYN包skbuffer构造发送模块”,以及它与SYN攻击和内核构造包的关联。 首先,让我们了解`skbuffer`(socket buffer)。`skbuffer`是Linux内核中用于处理网络数据包的数据...

    SYN扫描器详细源代码

    SYN扫描器是一种网络安全工具,主要用于检测网络上主机的开放端口和服务,是TCP三次握手过程中的一个关键应用。在网络安全领域,理解SYN扫描器的详细源代码有助于我们了解网络扫描的工作原理,以及如何利用这些知识...

    多变化的TCP-SYN攻击

    如果发动SYN攻击的源地址和物理地址不变,容易受防火墙拦截,不能实现真正意义上的SYN攻击。通过对程序的修改实现IP和MAC地址的同时改变从而可以通过防火墙实现攻击!!!

    nmsynproxy:Netmap TCP SYN代理

    辛普洛西 nmsynproxy是使用netmap,OpenDataPlane(ODP)或L Data Plane(LDP)的用于IPv4和IPv6Linux用户空间TCP SYN代理。 今天推荐的变体是LDP变体。 SYN代理混合使用SYN cookie和SYN缓存。 它还可以混合使用TCP...

    C#编的基于TCPSYN/FIN的端口扫描器源代码

    最近刚刚编的,有些功能还不完善,但也能很好的进行扫描了

    PortScan_TCP.zip_PortScan_TCP_connect_syn port_tcp portscan_端口 1

    在TCP/IP协议中,建立一个完整的连接需要经过三次握手(TCP SYN-SYN/ACK-ACK),这就是著名的TCP SYN扫描的基础。TCP SYN扫描,也被称为半开扫描,因为它只执行TCP连接的前两个步骤。扫描器发送一个SYN包给目标主机...

Global site tag (gtag.js) - Google Analytics