根据TCP协议的原理分析它的缺陷以及改进方法

1、TCP协议及原理

TCP(传输控制协议)提供面向连接、可靠的、全双工的、点对点的通信服务。在利用TCP进行通信之前,通信双方需要建立一条TCP连接。当需要结束通信时,可由通信的任何一方来终止TCP连接。为了确保连接的建立和终止都是可靠的,TCP使用三次握手的方式。TCP使用SYN(同步段)报文来描述用于创建一个连接的三次握手中的消息,用FIN(结束段)报文来描述用于关闭一个连接的三次握手中的信息。收到请求的一方会使用ACK(确认)报文来对请求方或发送方来回复确认。下图为一个TCP连接正常的连接过程。

在创建一个TCP连接的三次握手过程中,要求连接双方都要产生一个随机的32bit的初始序列号。如果在计算机重新启动之后,一个应用尝试建立一个新的TCP连接,TCP就 选择一个新的随机数。这样可以保证新的连接不受原来连接的重复或延迟包的影响。基于 TCP协议的安全攻击就是利用TCP的上述工作机制中存在的安全漏洞来实现的。

2、TCP序列号猜测攻击

TCP序列号猜测攻击是一种非常有名的欺骗攻击方法,攻击者试图通过猜测出要攻击的系统用于下一次连接时所使用的ISN(初始序列号)来达到欺骗攻击对象的目的。实际上,对TCP序列号的猜测攻击不仅可以在建立TCP连接的三次握手过程中实现,而且还可以在TCP连接建立后的数据传送过程中实现。假设主机A是服务器B的授权用户,攻击者主机X想要冒充A获得相应授权访问服务器或者是想破坏A、B之间的通信,只要X能够猜测出要攻击的系统用于下一次TCP连接时使用的初始序列号,则X就能够欺骗服务器B,通过假冒向该服务器发送SYN/ACK(同步/确认)报文来欺骗服务器其与主机A的TCP连接已经建立,这样,服务器认为的与主机A的TCP连接实际上是与主机X的TCP连接。如果与此同时,X还利用其他攻击如 DoS(拒绝服务攻击)使主机A陷入瘫痪的地步,X就可以在服务器B完全信任的情况下任意长时间地进入服务器,并向服务器发送任意数据。而服务器B却认为这些数据是从它所信任的主机A发送过来的。

利用 TCP 序列号猜测欺骗攻击可以达到很多攻击目的。常见的如下:

(1)话路劫持:攻击者一旦猜测TCP初始序列号成功,就可以以服务器所信任的用户身份与服务器与服务器进行通信,同时也就享有了被劫持用户的所有特权;

(2)发布虚假信息:攻击者让授权用户与服务器进行正常的连接和通信,在双方通信过程中的数据流中插入虚假的信息或修改某些信息,从而破坏通信信息的真实性和完整性;

(3)拒绝服务攻击:攻击者一旦可以劫持合法授权用户就可以干涉服务器与用户的通信,使得用户无法获得或无法正常连续地获得服务器所提供的服务,从而达到实现拒绝服务的攻击。而这种拒绝服务的攻击并不是通过像通常的DoS攻击那样使服务器无法响应来实现,因此更具隐蔽性和欺诈性,使得网管员几乎觉察不到系统的异常。

3、TCP SYN 洪泛攻击原理

TCP SYN洪泛(TCP SYN Flooding)攻击是通过违反常规的执行TCP三次握手过程来实现的。我们已经知道,通常情况下建立一个TCP连接首先是用户向服务器发送一个SYN请求,服务器在收到SYN请求之后会根据该请求中的源IP地址向连接建立请求者回复一个SYN+ACK报文,用户在收到服务器的回复后发送ACK报文确认连接建立,通过这样的三次握手方式就正确地建立了一个TCP连接。TCP SYN洪泛攻击通过消耗服务器的两类资源来达到攻击的目的 :

(1)SYN Cache,即请求队列:在 TCP 连接的建立过程中,每当服务器接收到一个TCP连接建立请求,就向连接建立请求者回复SYN+ACK信息,同时将该请求插入请求队列中等候处理,如果攻击者使用大量的并不存在的IP地址同时向服务器发送TCP连接建立请求,服务器就会响应大量的连接建立请求并试图等待源IP的连接建立确认,如果这些IP地址根本不存在,则这些IP对于服务器来说是不可达的,那么,服务器就永远接收不到任何的回复确认信息

(2)SYN Cookie,即缓冲区:TCP 在将连接建立请求插入到请求队列的同时,会在本机内存中开辟相应的内存空间用于建立相关的数据结构和保存状态。大量的SYN请求信息必将使服务器开辟大量的缓冲区,从而将系统的内存资源消耗尽,使得服务器无法再进行别的工作,最终陷入瘫痪的状态。

4、应对策略

基于TCP的攻击最终是利用TCP本身的工作机理实现的,要想根除这类攻击,最根本的方法是修改TCP协议。针对序列号欺骗攻击,主要是修改TCP协议中ISN的生成算法,使得攻击者无法有效地猜测出序列号,而对于TCP SYN洪泛攻击,则需要建立相关的连接建立处理措施,比如,服务器并不将所有的连接建立请求都插入请求队列,而是基于某些信息如状态、IP 地址等有选择地将连接建立请求插入到请求队列中,同时,也改变在 TCP 连接建立请求之时就开辟相应的内存空间创建相应的数据结构的传统做法,而是等到连接完全建立过后才分配其Cookie空间。而对系统、协议的更改并不是一朝一夕的事情。针对TCP 协议攻击,目前可以采用的比较实际有效的措施有:

(1)采用无状态 TCP连接:当收到 TCP连接建立请求时,并不按照通常的运行方式为其分配相应的数据结构和存储状态信息,而只是向源 IP 发送回复确认信息,将 TCP 连接建立保持在一种无状态的握手方式中,直到收到来自合法的IP的连接建立确认时才为其分配相应资源并存储相应状态。

(2)过滤防范措施:建立有效的 IP 地址信任关系,合理管理内部IP地址,建立合理的内部网拓扑结构,使得服务器可以将一些不信任的IP的TCP请求过滤掉,同时可以防范攻击者利用本地IP地址进行欺骗来猜测初始序列号。 或者利用包过滤型防火墙来达到对不信任IP的TCP连接请求的过滤目的。

(3)利用代理服务器型防火墙(Proxy Firewall)来代替服务器进行TCP的三次握手,防火墙在处理TCP连接建立请的同时将所有的半连接都被防火墙截取,这样就能够非常有效地保护内部服务器的安全。

(4)利用攻击检测技术:根据针对 TCP 的攻击的特征建立相应的检测手段和系统,如针对序列号欺骗采用对同一主机在短时间内所发送来的大量重复连接建立请求进行检测,对TCP SYN洪泛攻击则可以建立简单的流量异常检测方式,并在检测出异常状况时及时向网管员提出预警。

   利用 TCP 序列号以及 TCP 同步信息进行攻击是 TCP 协议本身的安全漏洞给网络带来的重大隐患和安全威胁。本文从TCP工作原理入手,深入剖析了基于TCP协议的安全攻击实现机理及实现途径。并提出了一定的应对策略。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cloud-Chu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值