一种TCP分段报文待检测文本重组方法及装置与流程

文档序号:14635143发布日期:2018-06-08 19:37阅读:220来源:国知局
一种TCP分段报文待检测文本重组方法及装置与流程

本申请涉及计算机技术领域,尤其涉及一种TCP分段报文待检测文本重组方法及装置。



背景技术:

TCP(Transmission Control Protocol,传输控制协议)作为一种面向连接、可靠的传输层协议,在网络数据传输中应用广泛。TCP报文的管理和攻击检测也成为WAF(Web Application Firewall,Web应用防火墙)、IPS(IntrusionPrevention System,入侵防御系统)、防病毒网关等安全网络设备的重要任务之一。由于网络传输的TCP报文中携带的攻击性内容一般都具有一定的特征,因此模式匹配法是对TCP报文进行攻击检测的常用方法之一。模式匹配法首先提取攻击内容的特征,再将特征与TCP报文的文本进行匹配,如果匹配成功,则可确定报文中包括了攻击性内容。

由于包括大块数据的数据包在传输时会被划分成多个TCP分段报文,攻击内容的一段特征可能被划分到两段相邻的TCP分段报文,而模式匹配的算法要求被匹配的文本是连续的,如果只单独地检测每一段报文,则无法检测出跨段存在的特征,因此需要将TCP分段报文重组为连续的待检测文本。现有技术中,是将同一数据包的各个TCP分段报文全部缓存后,顺序重组为一个完整的文本,再与攻击内容的特征进行模式匹配。由于需要将整个数据包中的各个TCP分段完整地重组为待检测文本,占用的网络设备内存资源较多,并且耗时较长,增大了传输延迟降低了传输效率。



技术实现要素:

有鉴于此,本申请提供一种TCP分段报文待检测文本重组方法及装置,技术方案如下:

一种TCP分段报文待检测文本重组方法,其特征在于,同一数据划分成的至少一个TCP分段报文通过一一对应的序列号标识,所述序列号按照TCP分段报文的划分顺序递变,该方法包括:

确定接收到的任一TCP分段报文中数据的长度n;

在n≥2k的情况下,将接收到的任一TCP分段报文中的数据顺序划分成至少2块,其中,划分成的第一块及最后一块数据的长度为k,k为预先根据攻击特征的长度确定的数据划分长度;

根据接收到的TCP分段报文的序列号的递变顺序,将接收到的任一TCP分段报文划分成的第一块数据,拼接到上一个TCP分段报文划分成的最后一块数据后面,重组为一个待检测文本。

一种TCP分段报文待检测文本重组装置,其特征在于,同一数据划分成的至少一个TCP分段报文通过一一对应的序列号标识,所述序列号按照TCP分段报文的划分顺序递变,该装置包括:

长度确定模块,用于确定接收到的任一TCP分段报文中数据的长度n;

数据划分模块,用于在n≥2k的情况下,将接收到的任一TCP分段报文中的数据顺序划分成至少2块,其中,划分成的第一块及最后一块数据的长度为k,k为预先根据攻击特征的长度确定的数据划分长度;

文本重组模块,用于根据接收到的TCP分段报文的序列号的递变顺序,将接收到的任一TCP分段报文划分成的第一块数据,拼接到上一个TCP分段报文划分成的最后一块数据后面,重组为一个待检测文本。

本申请所提供的技术方案,只需根据攻击内容的特征的长度,截取TCP分段报文首尾可能包括攻击内容的部分数据,并将相邻两个TCP分段报文中截取的数据重组为一个文本,作为模式匹配法检测攻击特征时的待检测文本,节省了网络设备内存资源,且耗时更短,减小了传输延迟,提高了传输效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。此外,本申请中的任一实施例并不需要达到上述的全部效果。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是本申请实施例的TCP分段报文格式的一种示意图;

图2是本申请实施例的TCP分段报文待检测文本重组方法的流程示意图;

图3是本申请实施例的跨TCP分段报文攻击特征划分的一种示意图;

图4是本申请实施例的TCP分段报文中数据划分为数据块的一种示意图;

图5是本申请实施例的TCP分段报文划分成的数据块存储与拼接的一种示意图;

图6是本申请实施例的TCP分段报文待检测文本重组装置的第一种结构示意图;

图7是本申请实施例的TCP分段报文待检测文本重组装置的第二种结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

首先对通过TCP连接传输数据的基本原理进行简单介绍:

基于TCP协议传输大块数据时,数据发送方会将整块数据划分为多个数据段,形成多个TCP分段报文传输,同一块数据划分的多个TCP分段报文组成一个TCP数据包,每个TCP分段报文通过一一对应的序列号标识,并且序列号的递变顺序由TCP分段报文的划分顺序决定,以便接收方接收到属于一个TCP数据包的多个TCP分段报文后,可以根据各个TCP分段报文序列号的顺序,将各个TCP分段报文,按照划分时的顺序重新排列为划分前的数据块。TCP分段报文的格式可以如图1所示,其中,序列号即当前TCP分段报文的序列号,段长度即当前TCP分段报文中的数据的长度,标志位用于控制TCP连接的建立与断开。

在发送数据前,发送方与接收方通过三次握手建立TCP连接,在此过程中双方协商确认初始序列号、及每个TCP分段报文中数据的最大长度。TCP连接建立后可以开始传输数据,接收方收到来自发送方的TCP分段报文后,将返回相应的确认报文,而发送方将重传未得到确认的报文。完成数据传输后,双方通过四次挥手断开所建立的TCP连接。

TCP协议通过每个TCP分段报文的序列号,确保了所传输数据的顺序,并通过重传机制确保所传输数据的完整性,这使得TCP协议是一种可靠的面向连接的传输协议,在网络数据传输中应用广泛,因此对TCP报文的攻击检测也成为重要的任务,常用的方法是模式匹配法,即首先提取攻击内容的特征,再将特征与TCP报文的文本进行匹配,如果匹配成功,则可确定报文中包括了攻击性内容。由于模式匹配的算法要求被匹配的文本是连续的,而包括了攻击特征的数据可能会在划分数据段时,被划分到两个相邻的TCP分段报文,因此,本申请提出一种TCP分段报文待检测文本重组方法,参见图2所示,该方法可以包括以下步骤:

S101,确定接收到的任一TCP分段报文中数据的长度n;

由于每个TCP连接中传输的整块数据的长度不一定相同,所划分的数据段的长度也并不固定,因此对于接收到的任一TCP分段报文,首先需要通过数据长度,判断其中的数据是否可能包括攻击特征,并且所包括的特征是否仅为部分特征,即完整特征是否被划分到了2个相邻TCP分段报文。

接收到的任一TCP分段报文的数据长度n,可以通过该TCP分段报文首部信息中的段长度的值确定,也可以通过其他方式检测确定,本申请方案理论上并不需要对确定数据长度n的方式进行限定,在实际应用中,本领域技术人员可以根据实际情况选取适合的方式。

S102,在n≥2k的情况下,将接收到的任一TCP分段报文中的数据顺序划分成至少2块,其中,划分成的第一块及最后一块数据的长度为k,k为预先根据攻击特征的长度确定的数据划分长度;

图3给出了完整的攻击特征被划分到2个相邻的TCP分段报文的示意图,可以看出,跨2个TCP分段报文存在的攻击特征,只会存在于每个TCP分段报文中数据的末尾或者初始的部分长度,如果以字节数表示数据和特征的长度,即为只存在于每个TCP分段报文中数据的“从最后一个字节开始向左的部分字节”或者“从第一个字节开始向右的部分字节”,当然,图3中只给出了一处攻击特征的分布示意,TCP分段报文1的左端及TCP分段报文2的右端也可能存在部分攻击特征,因此本申请方案中将TCP分段报文中的数据划分为至少2块数据,得到可能包括部分攻击特征的第一块数据和最后一块数据,如图4所示,即TCP分段报文1划分成的第1、2块数据,及TCP分段报文2划分成的第1、3块数据。

划分各个TCP分段报文中的数据时所依据的数据划分长度k,可以预先根据攻击特征的长度确定。假设需要检测的跨TCP分段报文存在的攻击特征长度为m,则该攻击特征所存在的2个相邻TCP分段报文中,分别可能存在部分攻击特征,且这两部分攻击特征的长度均小于m,因此,可以根据攻击特征的长度m并结合具体情况,确定数据划分长度k。例如,如果接收并检测TCP数据包的设备内存资源有限,或TCP数据包的接收及发送方对传输效率要求较高,则可以将k值确定为小于m的一个较小值,以减小划分成的数据块以及数据块重组的待检测文本的长度,但是在k值较小的情况下,可能会导致划分成的数据块遗漏部分特征,使得重组的待检测文本中只含有不完整的攻击特征,因而无法通过模式匹配法发现攻击内容,为了降低漏检率,在不存在设备内存资源或传输效率的限制的情况下,可以将k值确定为更大的值,甚至可以大于m。在根据m所确定的k值的所有取值中,既能保证不遗漏特征,又能够尽量节省内存资源、提高传输效率的最优值为(m-1),当然,本申请方案并不需要对所确定的k值进行限定,在实际应用中,本领域技术人员可以根据实际需求确定合适的k值。

在确定数据划分长度k的值后,即可对所接收的TCP分段报文中的数据进行划分,例如,图4中的TCP分段报文2,假设报文中数据的长度为n,分别在距离数据的左、右两端长度为k处划分,得到3块数据,其中第1块及第3块长度为k,第2块为剩余长度即(n-2k),当然,如果n刚好为2k,则可能出现如图4中TCP分段报文1所示的情况,报文中的数据刚好被划分为2块。因此,在对TCP分段报文中的数据进行划分前,还需要判断数据的长度n是否满足n≥2k,只有在满足的情况下,才能保证以长度k对数据进行划分时,能够分别从数据的左、右两端划分出2块长度为k的数据块,而不会在划分过程中发生重叠而导致划分失败。

S103,根据接收到的TCP分段报文的序列号的递变顺序,将接收到的任一TCP分段报文划分成的第一块数据,拼接到上一个TCP分段报文划分成的最后一块数据后面,重组为一个待检测文本。

将报文中的数据划分为需要的数据块后,即可根据各个TCP分段报文的序列号的递变顺序,确定报文的顺序及相邻关系,将相邻报文的数据块两两拼接,重组为待检测文本,以图3与图4中的TCP分段报文1、2为例,在图3中数据发送方在发送数据前划分得到的2段数据,分别形成了相邻的TCP分段报文1、2,并在2个报文的首部格式中分别通过相邻的序列号标识,在图4中根据本申请方案的S101、S102,分别将2个报文中的数据划分为2块或3块数据,而根据2个报文的序列号可知TCP分段报文1的为TCP分段报文2的上一个报文,因此可以将TCP分段报文2划分成的第1块数据,拼接到TCP分段报文1划分成的第2块即最后一块数据后面,重组为一个连续的待检测文本,以检测TCP分段报文1、2中是否存在跨报文存在的攻击特征,此外,TCP分段报文1的第1块数据也可以与通过序列号确定的上一个报文的最后一块数据拼接,TCP分段报文2的第3块数据也可以与通过序列号确定的下一个报文的第一块数据拼接,分别重组为待检测文本,而TCP分段报文2中的第2块数据则无需进行重组,因而节省了设备的内存资源、提高了传输效率。

本申请方案是根据接收到的TCP分段报文的序列号的递变顺序,将相邻报文划分成的数据块重组为文本,因此,在传输TCP分段报文时,为了让接收方获得接收方所使用的序列号及序列号的递变方式,以便按照正确顺序重组文本,发送方可以将所划分的TCP分段报文的序列号及其递变顺序也发送给接收方,或者双方预先协商第1个序列号及递变方式,等等,本申请的基本方案并不需要对此进行限制,本领域技术人员在实际应用中可以灵活地选择适当的方式。在本申请的一种具体实施方式中,数据传输的双方可以预先协商序列号的递变方式,并在接收到任一TCP分段报文后,根据该报文的序列号及递变方式,计算相邻报文的序列号和/或序列号范围,再将计算结果与接收到的其他报文的序列号进行比对,即可确定接收到的各个报文的序列号的递变顺序。

此外,TCP数据包中各个TCP分段报文的序列号,是按照报文的划分顺序递变的,例如,可以从某一数值开始逐个报文地递增或递减,等等,本领域技术人员在实际应用中可以灵活地选择序列号的递变方式,本申请的基本方案并不需要对此进行限制。其中,较为便捷的方式是直接使用TCP连接建立和传输数据时常用的序列号递变方式,通过TCP连接传输数据时,TCP分段报文首部格式中的序列号通常不是以分段报文来进行编号的,而是将连接生存周期内传输的所有数据当作一个字节流,序列号是整个字节流中每个字节的编号,而每个报文首部格式中的序列号,是该报文中的数据的第一个字节的序列号,该报文的下一个报文首部格式中的序列号,则为下一个报文中的数据的第一个字节的序列号,且应为上一个报文的序列号加上其中数据的字节数。

因此,在本申请的一种具体实施方式中,可以根据各个TCP分段报文中数据的长度,计算相邻报文的序列号和/或序列号范围。假设接收到的某一报文的序列号为Si,其中的数据的长度为ni,则下一个报文的序列号为Si+1=Si+ni。在计算上一个报文的序列号时,由于上一个报文中的数据的长度ni-1未知,而无法通过Si-1=Si-ni-1直接计算,如果数据传输双方预先协商了报文中的最大数据长度N,则可以计算出上一个TCP分段报文的序列号Si-1的范围:Si-N≤Si-1<Si

此外,根据接收到的TCP分段报文序列号的递变顺序,将各个报文划分成的数据块两两拼接、重组为待检测文本的过程,在本申请的一种具体实施方式中,可以先将TCP分段报文划分成的数据块与其序列号对应存储,再根据序列号的递变顺序,确定相邻报文的数据块也存储后,将对应的数据块按上述方式重组为待检测文本。如图5所示,在存储时还可以直接按照序列号的递变顺序,顺序地将报文划分成的第一块和最后一块数据块,存入预先建立的TCP信息列表的对应位置,则当不属于同一报文的、相邻位置的两个数据块均存入对应位置时,可以直接将二者拼接,重组为待检测文本。

当然,根据接收到的TCP分段报文序列号的递变顺序,将各个报文划分成的数据块两两拼接、重组为待检测文本的过程,也可以通过其他多种方式实现,例如,将各个报文划分成的第一块和最后一块数据按照序列号的顺序存储,并在所有报文的数据块均存储后在统一地拼接、重组为待检测文本;或者,由于TCP分段报文一般是顺序传输的,可以接收、划分各个报文的同时即按照序列号顺序拼接;等等,本申请的基本方案并不需要对此进行限制,本领域技术人员在实际应用中可以灵活地选择适当的方式。

重组得到的待检测文本后,即可通过模式匹配法检测是否存在跨2个TCP分段报文存在的攻击特征。TCP数据包的攻击检测完成后,如果数据接收方需要转发该TCP数据包,可以在划分数据块前预先备份接收的原TCP分段报文,也可以按照划分数据块的方式及顺序还原报文,还可以基于划分、重组后的数据封装成新的TCP分段报文,具体地,可以将重组得到的任一文本重新封装为一个TCP分段报文,该报文的序列号可以根据拼接该文本的数据块分前属于的报文的序列号推算,例如可以为拼接该文本的后一数据块划分前属于的报文的序列号减去数据划分长度k。对于为参与文本重组的数据库,如图4中TCP分段报文的第2块数据,则可直接封装为新的TCP分段报文,该报文的序列号同样可以根据该数据块划分前属于的报文的序列号推算,例如可以为其划分前属于的报文的序列号加上数据划分长度k。此外,重新封装所需要的端口号等信息也可以在预先存入所建立的TCP信息列表中。

相应于上述方法实施例,本申请还提供一种TCP分段报文待检测文本重组装置,其特征在于,同一数据划分成的至少一个TCP分段报文通过一一对应的序列号标识,所述序列号按照TCP分段报文的划分顺序递变,参见图6所示,该装置可以包括:

长度确定模块110,用于确定接收到的任一TCP分段报文中数据的长度n;

数据划分模块120,用于在n≥2k的情况下,将接收到的任一TCP分段报文中的数据顺序划分成至少2块,其中,划分成的第一块及最后一块数据的长度为k,k为预先根据攻击特征的长度确定的数据划分长度;

文本重组模块130,用于根据接收到的TCP分段报文的序列号的递变顺序,将接收到的任一TCP分段报文划分成的第一块数据,拼接到上一个TCP分段报文划分成的最后一块数据后面,重组为一个待检测文本。

在本申请的一种具体实施方式中,如图7所示,该装置还可以包括:

序列号计算模块140,用于根据接收到的任一TCP分段报文的序列号、及预先协商的序列号递变方式,计算上一个和/或下一个TCP分段报文的序列号和/或序列号范围;

顺序确定模块150,用于将计算得到的序列号和/或序列号范围,与接收到的TCP分段报文的序列号进行比对,确定接收到的TCP分段报文的序列号的递变顺序。

在本申请的一种具体实施方式中,所述序列号计算模块140,具体可以用于:

根据接收到的任一TCP分段报文的序列号Si及数据长度ni,计算下一个TCP分段报文的序列号Si+1=Si+ni;

和/或

根据接收到的任一TCP分段报文的序列号Si、及预先协商的最大数据长度N,计算上一个TCP分段报文的序列号Si-1的范围:Si-N≤Si-1<Si。

在本申请的一种具体实施方式中,所述文本重组模块130,可以包括:

存储子模块,用于将接收到的任一TCP分段报文划分成的数据块与该TCP分段报文的序列号对应存储;

重组子模块,用于在根据接收到的TCP分段报文的序列号的递变顺序,监测到该TCP分段报文的上一个TCP分段报文划分成的数据块已存储的情况下,将该TCP分段报文划分成的第一块数据,拼接到上一个TCP分段报文划分成的最后一块数据后面,重组为一个待检测文本。

在本申请的一种具体实施方式中,所述存储子模块,可以包括:

递变顺序获得单元,用于获得接收到的TCP分段报文的序列号的递变顺序;

信息存储单元,用于将接收到的任一TCP分段报文划分成的数据块与该TCP分段报文的序列号,存储到预先建立的TCP信息列表的对应位置,信息列表中的位置顺序由序列号的递变顺序决定。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。

类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。

由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。

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

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1