首页> 中国专利> 一种用于处理伪造的TCP数据包的方法和系统

一种用于处理伪造的TCP数据包的方法和系统

摘要

本发明涉及一种用于处理伪造的TCP数据包的方法和系统。具体而言,本发明利用待处理的TCP数据包头部的窗口大小字段与窗口扩大因子(Window Scale)计算出待处理的TCP数据包的接收窗口,并将它与实际接收窗口比较,随后,根据所述比较结果与阈值的偏差程度来判断所述待处理的TCP数据包是否是伪造的,从而更大概率地发现并丢弃伪造TCP数据包。

著录项

  • 公开/公告号CN106101161A

    专利类型发明专利

  • 公开/公告日2016-11-09

    原文格式PDF

  • 申请/专利权人 网宿科技股份有限公司;

    申请/专利号CN201610743506.0

  • 发明设计人 刘成彦;陈鸿;

    申请日2016-08-26

  • 分类号H04L29/06(20060101);

  • 代理机构31100 上海专利商标事务所有限公司;

  • 代理人顾嘉运

  • 地址 200030 上海市徐汇区斜土路2899号甲光启文化广场A幢5楼

  • 入库时间 2023-06-19 00:53:35

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-02-01

    授权

    授权

  • 2016-12-07

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20160826

    实质审查的生效

  • 2016-11-09

    公开

    公开

说明书

技术领域

本发明涉及网络安全技术领域,特别涉及一种用于处理伪造的TCP数据包的方法和系统。

背景技术

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP是Internet最基本的协议,也是Internet国际互联网络的基础。随着网络技术的发展,越来越多的攻击者出于各种目的,开始利用TCP协议中的漏洞对网络进行攻击。例如,一种常用的攻击手段是伪造TCP数据包。作为示例,客户机client与服务器server在TCP三次握手后建立连接;随后,客户机client向服务器server发送请求包;劫持设备injector通过监听设备tap监听到该请求包,并向客户机client发送伪造的应答包forged packet;若不作任何处理,伪造的应答包forged packet将先于来自服务器server的真实应答包valid packet到达客户机client,从而取代服务器server与客户机client进行通信。这样,就实现了对客户机client劫持,使得客户机client以为它是与服务器server通信,但实际上却是与劫持设备injector通信。

为了提高网络安全,避免所述劫持情况的发生,用户对伪造TCP数据包的网络攻击检测提出了更高的要求。现有技术中通常采用检查IP数据包头部的TTL字段是否合理、Identification字段是否有规律等方法来发现伪造TCP数据包,并将其丢弃。但是,这些方法要么由于需要探测以提高准确度而实现复杂;要么由于简化处理而导致准确性低,容易造成误判或漏判。因此,存在对一种能够以高准确性快速简便地处理伪造的TCP数据包的方法的需求。

发明内容

本发明提供了一种改进的处理伪造的TCP数据包的方法,包括:

接收待处理的TCP数据包,所述待处理的TCP数据包头部包含窗口大小字段;

根据所述待处理的TCP数据包在TCP接收窗口对照表中查找是否存在与所述待处理的TCP数据包相关的记录;

如果所述TCP接收窗口对照表存在与所述待处理的TCP数据包相关的记录,则从所述待处理的TCP数据包头部的窗口大小字段与所述记录中的接收窗口扩大因子字段中计算出所述待处理的TCP数据包的接收窗口值;

通过将所计算出的所述待处理的TCP数据包的接收窗口值与所述记录中的实际接收窗口值进行比较以获得它们之间的偏差;将所述偏差与预定阈值进行比较,由此判断所述TCP数据包是否为伪造包。

在本发明的又一个方面,提供了一种处理伪造的TCP数据包的系统,包括:

用于接收待处理的TCP数据包的装置,所述待处理的TCP数据包头部包含窗口大小字段;

用于根据所述待处理的TCP数据包在TCP接收窗口对照表中查找是否存在与所述待处理的TCP数据包相关的记录的装置;

用于如果所述TCP接收窗口对照表存在与所述待处理的TCP数据包相关的记录,则从所述待处理的TCP数据包头部的窗口大小字段与所述记录中的接收窗口扩大因子字段中计算出所述待处理的TCP数据包的接收窗口值的装置;

用于通过将所计算出的所述待处理的TCP数据包的接收窗口值与所述记录中的实际接收窗口值进行比较以获得它们之间的偏差的装置;

用于将所述偏差与预定阈值进行比较的装置,其中通过该装置的比较结果来判断所述TCP数据包是否为伪造包。

本发明的关键在于利用待处理的TCP数据包头部的窗口大小字段与窗口扩大因子(Window Scale)计算出TCP数据包的接收窗口,并将它与实际接收窗口比较,若待处理的TCP数据包的接收窗口与实际接收窗口存在较大偏差,则判断该待处理的TCP数据包为伪造的TCP数据包,并对其进行相应处理。

附图说明

在阅读通过非限制性示例示出的实现方式的以下详细描述后,可以很好地理解本发明且本发明的优点将更好地体现。附图中:

图1是TCP数据包的包头结构示意图。

图2是TCP三次握手以建立连接的过程示意图。

图3是在TCP三次握手阶段发送的SYN数据包所携带的窗口扩大因子选项结构示意图。

图4是根据本发明实施例提供的TCP接收窗口对照表中的记录的数据结构示意图。

图5是根据本发明实施例提供的一种建立和/或更新TCP接收窗口对照表的方法的流程图。

图6是根据本发明实施例的一种处理伪造的TCP数据包的方法的流程图,

具体实施方式

为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。

本发明提供了一种改进的处理伪造的TCP数据包的方法和系统。具体而言,本发明的关键在于利用待处理的TCP数据包头部的窗口大小字段与窗口扩大因子(Window Scale)计算出该待处理的TCP数据包的接收窗口,并将它与实际接收窗口比较,随后,根据所述比较结果与阈值的偏差程度来判断所述待处理的TCP数据包是否是伪造的,从而更大概率地发现并丢弃伪造TCP数据包。更具体而言,在本发明实施例中,通过建立至少包含TCP连接四元组(源IP、源端口、目标IP、目标端口)、实际TCP接收窗口RCV.WND和TCP接收窗口扩大因子Rcv.Wind.Scale的一个TCP接收窗口对照表,通过保证TCP连接对应的RCV.WND数值的准确性,来利用该TCP接收窗口对照表更大概率地发现(并丢弃)伪造的TCP数据包,从而确保设备尽可能少的受到伪造的TCP数据包的攻击。

首先,如图1所示,示出了TCP数据包的包头结构示意图。在其中,16位源端口号标识了主机上发起传送的应用程序;16位目标端口号标识了主机上传送要到达的应用程序。源端和目标端的端口号,用于寻找发端和收端应用进程。这两个值加上I P首部中的源端I P地址和目标端I P地址唯一确定一个T CP连接。TCP协议通过使用"端口"来标识源端和目标端的应用进程。端口号可以使用0到65535之间的任何数字。在发送服务请求时,操作系统动态地为客户端的应用程序分配端口号。在服务器端,每种服务在"众所周知的端口"(Well-Know Port)为用户提供服务。

32位序号字段,用来标识从TCP源端向TCP目标端发送的数据字节流,它表示在这个报文段中的第一个数据字节的序号。

32位确认号字段,只有ACK标志为1时,确认号字段才有效。它包含目标端所期望收到源端的下一个数据字节的序号。

4位头部长度字段:给出头部有多少个32位(4字节)。没有任何选项字段的TCP头部长度为20字节;最多可以有60字节的TCP头部。

6位保留字段:由跟在数据偏移字段后的6位构成,预留位通常为0。

标志位字段(URG、ACK、PSH、RST、SYN、FIN):占6位。各位的含义如下:

URG:紧急指针有效。

ACK:确认序号有效。

PSH:接收方应该尽快将这个报文段交给应用层。

RST:重置连接。

SYN:发起一个连接。

FIN:释放一个连接。

16位接收窗口大小字段:此字段用来进行流量控制。单位为字节,这个值是本机期望一次接收的字节数。

16位校验和字段:对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证。

16位紧急指针字段:它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。

选项字段:最多40字节。它可能包括"窗口扩大因子"、"时间戳"等选项。

在本发明的技术方案中,将接收窗口大小字段标记为SEG.WND,其表示发送端的接收窗口。TCP通过三次握手完成通信双方接收窗口的初始化。

在图2中,示出了TCP三次握手的过程示意图。

首先,第一次握手:客户机Client将标志位SYN置为1,随机产生一个序号SEQ=X,并将该数据包发送给服务器Server,随后客户机Client进入SYN_SENT状态,等待服务器Server确认。

第二次握手:服务器Server收到数据包后由标志位SYN=1知道客户机Client请求建立连接,Server将标志位SYN置为1,确认号ACK=X+1,随机产生一个序号SEQ=Y,并将该数据包发送给客户机Client以确认连接请求,同时服务器Server进入SYN_RCVD状态。

第三次握手:客户机Client收到确认后,检查确认号ACK是否为X+1,如果正确则将标志位ACK置为1,确认号ACK=Y+1,将标志位SYN设置为0,随机产生一个序号SEQ=Z,并将该数据包发送给服务器Server,服务器Server检查ACK是否为Y+1,如果正确则连接建立成功,客户机Client和服务器Server进入ESTABLISHED状态。

经过所述三次握手建立TCP连接,客户机Client与服务器Server之间就可以开始传输数据了。

通过上述结合图2的描述,可以清楚理解所述TCP的三次握手的过程。

而在图3中,示出了为上述TCP三次握手阶段所发送的SYN数据包(TCP数据包的包头的SYN标志位被置位)中携带的窗口扩大因子选项结构示意图。在该选项结构中,选项的第一个字段Kind指示选项的类型。当Kind=3表明该选项是窗口扩大因子选项。TCP连接初始化时,通信双方使用该选项来协商接收窗口的扩大因子。在TCP的头部中,接收窗口大小是用16位表示的,故最大为65535字节,但实际上TCP允许的接收窗口大小远不止这个数(为了提高TCP通信的吞吐量)。窗口扩大因子解决了这个问题。假设TCP头部中的接收窗口大小是N,窗口扩大因子(移位数)是M,那么TCP报文段的实际接收窗口大小是N乘2M,或者说N左移M位。注意,M的取值范围是0~14。

在该选项结构中的第二个字段Length指定该选项结构的总长度,该总长度包括Kind字段和Length字段占据的2字节。

在该选项结构中还有一个shift.cnt字段,接收窗口扩大因子Rcv.Wind.Scale的值即为该字段的值。shift.cnt取值范围为0~14,即最大TCP序号限定为216*214=230<231。该限制用于防止字节序列号溢出。另外,接收窗口扩大因子是可选项,其值在TCP三次握手阶段通过SYN包确定。包头未设置SYN标志位的TCP数据包携带的窗口扩大因子选项会被忽略。若通信双方启用了窗口扩大,除了SYN数据包之外(其接收窗口RCV.WND等于窗口大小字段SEG.WND),其他TCP数据包的接收窗口RCV.WND的计算方式为窗口大小字段SEG.WND左移Rcv.Wind.Scale位,即

RCV.WND=SEG.WND<<Rcv.Wind.Scale

公式1

举例而言,如上所述,假设TCP头部中的接收窗口大小是N,窗口扩大因子(移位数)是M,那么TCP报文段的实际接收窗口大小是N乘2M,或者说N左移M位。

通常TCP连接的接收窗口RCV.WND的变化是平滑的,不会出现跳变(所谓“跳变”是指变为先前值的1.5倍及以上)。利用这个特性可以构建一个记录实际RCV.WND的TCP接收窗口对照表,通过判断一个TCP数据包的接收窗口是否符合这张表,从而推算出它是否是伪造的TCP数据包。需要说明的是,这里的实际RCV.WND即TCP第二次握手<SYN,ACK>对应的数据包的RCV.WND。

所述TCP接收窗口对照表一般被设置在网关设备上,应当理解的是,这里的网关设备也可以是诸如安全检测设备或防火墙之类的安全设备。在一种实现下,可以根据TCP第二次握手<SYN,ACK>得到的RCV.WND建立所述TCP接收窗口对照表。该TCP接收窗口对照表包含TCP连接四元组(源IP、源端口、目标IP、目标端口)、实际TCP接收窗口RCV.WND和TCP接收窗口扩大因子Rcv.Wind.Scale等主要信息。需要说明的是,该接收窗口对照表中存储的信息都是真实主机相关的信息。

在图4中,具体示出了根据本发明实施例提供的TCP接收窗口对照表中的记录的数据结构示意图。如图4所示,该对照表包括如下字段:

“键值”字段(可选),表示根据TCP连接的四元组计算出的哈希值以方便快速查找;

“连接四元组”字段,包括源IP、源端口、目标IP、目标端口;

“实际接收窗口”字段,表示该TCP连接的实际接收窗口RCV.WND,该值可以从TCP第二次握手<SYN,ACK>对应的数据包的窗口大小字段SEG.WND得到。

“接收窗口扩大因子”字段,表示该TCP连接的接收窗口扩大因子Rcv.Wind.Scale,其可以从TCP第二次握手<SYN,ACK>对应的数据包携带的窗口扩大因子选项中的shift.cnt字段得到。

“创建时间”字段(可选),表示该表项的创建时间。

在详细了解了所述TCP接收窗口对照表中的记录的数据结构之后,下面结合图5来详细介绍根据本发明实施例如何在TCP接收窗口对照表中创建和更新记录。

如图5所示,描述了根据本发明实施例的创建和/或更新TCP接收窗口对照表中的记录的流程图。应当理解的是,该方法可以用于网关设备、防火墙、路由器等网络设备上;并且,还应当理解的是,更新TCP接收窗口对照表包括增加、删除、修改该对照表中的记录等操作。该方法包括如下步骤:

步骤502,从接收的TCP第二次握手<SYN,ACK>对应的数据包中,提取真实的TCP连接四元组、接收窗口RCV.WND(由窗口大小字段SEG.WND得到)和接收窗口扩大因子Rcv.Wind.Scale(由窗口扩大因子选项中的shift.cnt字段得到,若没有窗口扩大因子选项,则默认值为0);

步骤504,根据提取的连接四元组查找一TCP接收窗口对照表以确定所述TCP接收窗口对照表中是否已存在相关的记录;

步骤506,如果在所述TCP接收窗口对照表中没有查找到具有该连接四元组的记录,则根据获得的TCP连接四元组、接收窗口和接收窗口扩大因子在TCP接收窗口对照表中建立一条相关的记录;

步骤508,如果在所述TCP接收窗口对照表中已经存在具有该连接四元组的记录,则使用获得的接收窗口和接收窗口扩大因子更新该记录中的相应字段的内容,并且可选地同时更新创建时间字段。

另外,在另一个实施例中,为了节省存储空间,可定期删除TCP接收窗口对照表中创建时间距当前时间较长的陈旧记录。

另外,在另一个实施例中,为了加快查找速度,可以使用从TCP连接四元组中计算得到的键值来查找TCP接收窗口对照表。

在已经创建完成所述TCP接收窗口对照表之后,网关设备在接收到TCP数据包(不包括SYN数据包)时,就可以根据该TCP包的连接四元组来查找TCP接收窗口对照表,如果存在具有相同连接四元组的记录,则将该TCP数据包的接收窗口RCV.WND与相关记录的接收窗口进行比较以获得它们之间的偏差,如果所述偏差超过一预定阈值,则可以怀疑该TCP数据包为伪造的TCP数据包。下面,结合图6来详细描述这一过程。

如图6所示,提供了根据本发明实施例的一种处理伪造的TCP数据包的方法的流程图,包括如下步骤:

步骤602,接收待处理的TCP数据包(不包括SYN数据包),该待处理的TCP数据包头部包含窗口大小字段SEG.WND;

步骤604,根据该待处理的TCP数据包,例如所述待处理的TCP数据包中的连接四元组,在一TCP接收窗口对照表中查找是否存在与所述待处理的TCP数据包相关的记录,例如具有相同连接四元组的相关记录;

步骤606,在步骤604中如果在TCP接收窗口对照表中不存在具有相同连接四元组的相关记录,则过程结束

步骤608,如果TCP接收窗口对照表存在具有相同连接四元组的相关记录,则从该待处理的TCP数据包头部的窗口大小字段SEG.WND与相关记录中的接收窗口扩大因子字段Rcv.Wind.Scale中计算出该待处理的TCP数据包的接收窗口RCV.WND。具体的,该待处理的TCP数据包的接收窗口RCV.WND是根据公式1由待处理的TCP数据包头部的窗口大小字段SEG.WND与相关记录中的接收窗口扩大因子字段Rcv.Wind.Scale计算出。

步骤610,将所计算出的该待处理的TCP数据包的接收窗口RCV.WND与相关记录中的实际接收窗口RCV.WND进行比较以获得它们之间的偏差。具体的,该偏差由所计算出的该待处理的TCP数据包的接收窗口RCV.WND除以相关记录中的实际接收窗口RCV.WND得到;

步骤612,将所述偏差与一预定阈值进行比较,并且:

如果所述偏差超过该预定阈值,则说明所述待处理的TCP数据包很有可能是伪造的TCP数据包,方法进入步骤614,以针对该待处理的TCP数据包执行相应的处理,例如直接丢弃该待处理的TCP数据包,或者可以向用户提供相关提示让用户来进一步辨别该待处理的TCP数据包的真伪等等;

如果所述偏差没有超过该预定阈值,则说明该待处理的TCP数据包应该是真实的TCP数据包,因而,进入步骤616以允许所述待处理的TCP数据包直接通过所述网关设备。

需要说明的是,为了尽量避免将有效的TCP数据包作为伪造的TCP数据包丢弃,优选地,“预定阈值”指的是该TCP数据包的RCV.WND值是相关记录中的实际RCV.WND值的倍数,根据实验,所述“预定阈值”的取值范围可以是≧1.5,也即当所述偏差超过1.5倍时就可以初步确定所述TCP数据包是伪造的TCP数据包。而在较佳实施例中,所述“预定阈值”较佳地为4倍,即当所述偏差超过4倍时将所述TCP数据包确定为伪造的TCP数据包,该“预定阈值”可以使得所述TCP伪造包的判断更加准确。但所述倍数仅仅是出于说明的目的,并非限制性的。用户可以根据实际情况来调整所述“预定阈值”标准以适应不同的上下文环境需求。

综上所述,在本发明的方案中,通过判断待处理的TCP数据包的接收窗口是否与TCP接收窗口对照表中的相关记录的实际接收窗口有较大偏差来实现更大概率地发现(丢弃)伪造的TCP数据包,从而保证了设备尽可能少的受到伪造的TCP数据包的攻击。

本发明的方案不仅适用于防火墙、DDoS类网关系统和旁路的类似IDS检测系统,还适用于在路由器上使用。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号