一种针对结构化协议的解码设备和方法

文档序号:7765651阅读:277来源:国知局
专利名称:一种针对结构化协议的解码设备和方法
技术领域
本发明涉及计算机网络数据通信领域,尤其涉及对以结构化协议编码的网络数据 进行解码的针对结构化协议的解码设备和方法。
背景技术
随着网络的发展,基于网络的应用也不断丰富,因此也出现了各种基于应用层协 议构造和传输的数据。在各种应用层协议中,存在有一类称为结构化协议的应用层协议。 SMB协议和RPC协议是结构化协议的示例。结构化协议的特点在于,以结构化协议编码的数 据包中的数据以结构化的方式存放而构成一个或者多个结构体,其中结构体中嵌套结构体 或者结构体与结构体相连,另外,结构体之间还有较强的相关性。因此,结构化协议是应用 层协议中进行解码比较复杂的协议。经常地,在根据应用层协议编码的数据传输过程中,需要对这些数据进行解码以 检测其中的数据,例如为了提高对网络入侵行为进行检查的精确度,网络入侵防护系统 (NIPS)需要对大量的应用层协议进行深入的应用层解码,以检测接收的应用层数据是否包 含恶意数据。基于开放源代码的网络入侵防护系统(NIPS)引擎snort (www. snort, org)中对结 构化协议进行了解码。snort如下所述来针对结构化协议进行解码。如图1所示,假设一种 基于结构化协议的数据包由固定的五个结构体Struct A,Struct B, Struct C,Struct D 和Mruct E组成。snort中的应用层协议解码器首先解码结构体MructA,解码完之后,增 加解码的偏移量,随后解析下一个结构体Mruct B,如此重复,直到完成对结构E 的解码。snort的应用层协议解码器中几乎都采用了这种通过偏移量来对数据包进行从头 到尾的解码方式。snort对于结构化协议的解码方式存在有至少两个缺陷首先,由于解码器一般只对协议数据包中感兴趣的结构体进行解码,所以会经常 根据需要增加或者减少对协议中某些结构体的解码,而由于snort应用层协议解码器中各 结构体的解码联系紧密,相互依赖性比较强,如果需要增加或者忽略某个结构体的解码,则 需要修改的代码比较多,增加了维护的成本和开发的风险。其次,由于snort的解码方式为对数据包从头到尾依靠偏移的递增来进行解码, 所以后面的解码在一定程度上依赖于前面的具体实现,这缺乏模块化的设计,不利于针对 同一个解码器进行并行开发。因此,需要一种新的针对结构化协议的解码设备和方法,可以减少在对以结构化 协议编码的数据进行解码时、对各个结构体进行解码的关联性,从而可以灵活地根据需要 来对其中的某些结构体进行解码。此外,该新的针对结构化协议的解码设备和方法还可以 针对每个结构体分别进行解码器开发,以提高解码器开发的效率。

发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决或 者减缓上述问题的针对结构化协议的解码设备和方法。根据本发明的一个方面,提供了一种针对结构化协议的解码设备以用于对根据结 构化协议编码的数据包进行解码。该解码设备包括状态设置器,根据预定规则为以结构化 协议编码的数据包设置解码状态;以及基于状态的解码器,接收设置了解码状态的数据包, 并选择与数据包的解码状态相对应的子解码器来对所述数据包中的相应结构体进行解码。可选地,基于状态的解码器在对数据包中的相应结构体进行解码之后,将所述数 据包发送到所述状态设置器来设置新的解码状态,状态设置器根据预定规则、基于所述数 据包的当前解码状态设置所述数据包的新解码状态,并将所述设置了新解码状态的数据包 发送到基于状态的解码器再次进行解码。可选地,状态设置器根据预定规则、基于所述数据包的当前解码状态确定是否继 续对数据包进行解码。根据本发明的另一个方面,提供了一种针对结构化协议的解码方法,包括步骤接 收以结构化协议编码的数据包,该数据包包括一个或者多个结构体;根据预定规则对以结 构化协议编码的数据包设置解码状态;以及根据数据包的解码状态,对数据包中与数据包 的解码状态相对应的结构体进行解码。可选地,该解码方法还包括步骤,在对相应结构体进行解码之后,根据预定规则来 基于数据包的当前解码状态设置该数据包的新解码状态;并且根据数据包的新解码状态, 来对数据包与数据包的新解码状态相对应的结构体进行解码。此外,在该解码方法中,还可以在对数据包进行解码之后,根据所述预定规则来基 于所述数据包的当前解码状态来判断是否继续对所述数据包进行解码。可选择,预定规则基于XML格式编写。根据本发明的解码设备和解码方法通过为待解码数据包设置解码状态,并且构造 基于解码状态进行解码过程控制的预定规则来解耦对数据包中的各个结构体的解码,从而 可以灵活地根据预先设置的规则来对特定结构体进行解码。另外,在根据本发明的解码设备和解码方法中,解码过程由预定规则来控制,因此 通过修改该预定规则就可以改变该解码过程,从而提供了灵活的解码控制方式。这对于需 要灵活调整对数据包的监控内容的网络入侵检测系统和方法尤其有用。根据本发明的还有一个方面,还提供了一种包括上述解码设备的网络入侵检测系 统,以及包括上述解码方法的网络入侵检测方法。


通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通 技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明 的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中图1示出了在现有的snort解码引擎中,对根据结构化协议编码的数据包进行解 码的示意图;图2示出了根据本发明一个实施例的解码设备的示意图3示意性示出了由根据本发明一个实施例的解码设备进行解码的过程示意图;图4示意性地示出了在根据本发明一个实施例的解码设备进行解码时,在其中增 加要解码的结构体的解码过程示意图;图5示意性地示出了在根据本发明一个实施例的解码设备进行解码时,在其中删 除要解码的结构体的解码过程示意图;图6示意性地示出了根据本发明一个实施例的解码方法的流程图;以及图7-9示意性地示出了以XML格式编写的控制规则。
具体实施例方式下面结合附图和具体的实施方式对本发明作进一步的描述。。图2示出了根据本发明一个实施例的解码设备200的示意图。如图2所示,解码设 备200包括状态设置器210和基于状态的解码器220。状态设置器210接收根据结构化协议 编码的数据包,根据预定规则为该数据包设置解码状态,并将设置了解码状态的数据包发 送到基于状态的解码器220进行解码。根据结构化协议编码的数据包包括一个或者多个结 构体,这些结构体可以一个接着一个地布置,当然这些结构体之间也可以存在有嵌套关系, 即一个结构体中可以包括一个或者多个子结构体,这些子结构体还可以在其中包括进一步 的子结构体。解码设备200有时候需要对这些结构体中的某个或者某些结构体进行解码。解码设备200可以包括规则存储器230来存储一个或者多个预定控制规则,而状 态设置器210可以根据协议标识等选择特定的预定规则。预定控制规则规定了数据包的解码状态设置规则,即基于数据包的当前解码状态 来设置数据包的新解码状态的规则。图7示意性地示出了根据本发明一个实施例的、以XML 格式编写的控制规则。如图7所示,该控制规则中设置了 5个解码状态当数据包的当前解 码状态未设置时,将该数据包的新解码状态设置为“ state_A” ;当数据包的当前解码状态为 “state_A”时,将该数据包的新解码状态设置为“State_B”;以此类推;并且当数据包的当前 解码状态为“state_E”时,将该数据包的新解码状态设置为空,这意味着不再对该数据包进 行解码。可以看出,每个控制规则包括一种解码状态跳转链,其以未设置解码状态开始,并 以空解码状态结束,从而指示解码设备200完成对数据包的解码。状态设置器110除了接收未设置解码状态的待解码数据包来设置解码状态之外, 还从基于状态的解码器120接收部分解码了的数据包,并根据预定控制规则、基于该部分 解码了的数据包的当前解码状态确定后续对该部分解码了的数据包的处理。如果控制规则 指示存在对应的新解码状态,则状态设置器110为该数据包设置新的解码状态,并随后将 设置了新解码状态的数据包发送到基于状态的解码器120来继续进行解码。相反,如果控 制规则指示对应的新解码状态为空,则状态设置器110确定对该数据包的解码已经完成, 并且输出该完成解码的数据包。基于状态的解码器220从状态设置器210接收设置了解码状态的数据包,根据数 据包的解码状态来选择相对应的子解码器240来对数据包进行解码,并且在子解码器240 完成解码处理之后将该数据包返回到状态设置器210来继续处理。由于解码设备200所处理的数据包为根据结构化协议编码的数据包,因此这种数 据包包括一个或者多个结构体。可选地,子解码器MO以一个或者多个结构体为单位对数据包进行解码,也就是说,每个子解码器240对数据包中的特定一个或者多个结构体进行 解码。每个解码状态也对应于一个或者多个结构体的解码状态。因此,子解码器240与解 码状态相对应,基于状态的解码器220可以根据数据包的解码状态来选择相应的子解码器 240,以便对数据中的对应结构体进行解码。可选地,解码设备200包括子解码器存储器250,其中存储了一个或者多个子解码器 240,这些子解码器240可以由基于状态的解码器220使用来对数据包中的相应结构体进行解码。利用子解码器240和控制规则的设置,解码设备200可以灵活地控制对数据包的 解码,下面的图3-5中示意性地示出了如何利用解码设备200来对以结构化协议编码的数 据包进行解码的过程。图3示出了根据本发明一个实施例的解码设备200对数据包进行解码的过程的 示意图。如图3所示,要进行解码的数据包包括多个结构体,其中需要对结构体structA、 structB、structC、StructDJP structE进行解码。对该结构体进行解码的控制规则如图7 所示。对于接收的数据包,首先状态设置器210将数据包的解码状态设置为state_A,基于 状态的解码器220根据该解码状态,选择与解码状态state_A相对应的子解码器Μ0_Α来 对其中的结构体structA进行解码。对结构体structA解码完成之后,将数据包发送回到 状态设置器210,以便将数据包的解码状态设置为state_B,基于状态的解码器220选择与 解码状态state_B相对应的子解码器来对其中的结构体structB进行解码,并在对 结构体structB解码完成之后,将数据包发送回到状态设置器210,以便将解码状态新设置 为state_C,并类似地对结构体structC、structD、和structE完成解码。在完成对结构体 structE的解码之后,状态设置器210根据控制规则确定完成了对该数据包的解码,并输出 完成解码的数据包。图4示出了当需要对图3所解码的数据包中的新结构体StructF进行解码时,对 图3所示的解码过程的改变。新结构体structF必须在结构体B之后且在结构体C之前解 码。为此,首先对控制规则进行修改,即如图8所示,添加对应于结构体structF的新解码状 态state_F,并且将解码状态的跳转方式修改为从state_B跳转到state_F,然后从state_ F跳转到state_C。其次,增加用于对结构体structF进行解码的子解码器204_F。这样,在 类似于图3所述那样完成对结构体structB的解码之后,状态设置器21将数据包的解码状 态设置为state_F,随后基于状态的解码器220选择与解码状态state_F相对应的子解码器 240_F来对其中的结构体structF进行解码,并在对结构体structF解码完成之后,将数据 包发送回到状态设置器210,以便将解码状态新设置为state_C,随后也类似于图3所述的 那样完成对数据包的解码。图5示出了当不需要对图3所解码的数据包中的结构体structC进行解码时,对 图3所示的解码过程的改变。由于不再需要对结构体structC进行解码,因此,控制规则修 改为如图9所示,将解码状态的跳转方式修改为从state_B直接跳转到state_D。如图5所 示,在类似于图3所述那样完成对结构体structB的解码之后,状态设置器21将数据包的 解码状态设置为state_D,随后基于状态的解码器220选择与解码状态state_D相对应的子 解码器M0_D来对结构体structD进行解码,并随后也类似于图3所述的那样完成对数据 包的解码。如上参考图2-图5所述,根据本发明的解码设备200可以通过添加特定的子解码器和修改控制规则来灵活地控制对以结构化协议编码的数据包中的结构体的解码。另外,在解码设备200中,可以统一子解码器240和基于状态的解码器220之间的接口,因此可以 分别开发各种与结构体相对应的子解码器,从而可以加快开发子解码器的速度。图6示意性地示出了根据本发明一个实施例的解码方法的流程图,该解码方法可 以由根据本发明的解码设备200来执行。如图6所述,该解码方法始于步骤S610,其中接收 要进行解码的数据包,该数据包根据结构化协议编码,并且包括一个或者多个结构体。随后 在步骤S620中,参考预定控制规则为该数据包设置解码状态。该步骤例如可以由解码设备 200中的状态设置器210来执行。在为数据包设置了解码状态之后,在步骤S630中,与所述 数据包的解码状态相对应对所述数据包中的相应结构体进行解码。该步骤可以例如可以由 解码设备200中的基于状态的解码器220来执行。例如在步骤S630中,解码器220可以选 择与解码状态相对应的子解码器240来对数据包进行解码,该子解码器240通常对数据包 中的特定结构体进行解码。在对数据包中的相应结构体进行解码之后,在步骤S 640中,根 据预定控制规则,基于数据包的当前解码状态来确定新解码状态是否存在。如果确定新解 码状态存在,则在步骤S650中,设置数据包的新解码状态,并且返回到步骤S630中来继续 进行对结构体的解码。而如果在步骤S640中,确定不存在新解码状态,即新解码状态为空, 则确定对该数据包的解码已经完成,并结束该方法。可选地,步骤S640和S650可以由解码 设备200中的状态设置器210来执行。根据本发明的解码设备和解码方法可以用于对以结构化协议编码的数据包进行 解码,并且提供了灵活的配置方式,以便可以根据需要对数据包中的各个结构体进行解码。 因此,根据本发明的解码设备尤其适合应用于网络入侵检测系统中,以用于对接收的数据 包进行解码以获取该数据包的内容。而根据本发明的解码方法也特别适用于在网络入侵检 测方法中使用,以用于对接收的数据包进行解码。应当注意的是,在本发明的解码设备200的各个部件中,根据其要实现的功能而 对其中的部件进行了逻辑划分,但是,本发明不受限于此,可以根据需要对各个部件进行重 新划分或者组合,例如,可以将一些部件组合为单个部件,或者可以将一些部件进一步分解 为更多的子部件。本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行 的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用 微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的解码设备中的一些或者 全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分 或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明 的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信 号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领 域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中, 不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在 未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这 样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来 实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第 二、以及第三等的使用不表示任何顺序。可将这些单词解释为 名称。
权利要求
1.一种针对结构化协议的解码设备,包括状态设置器,根据预定规则为以结构化协议编码的数据包设置解码状态,其中该数据 包包括一个或者多个结构体;以及基于状态的解码器,接收所述设置了解码状态的数据包,并选择与所述数据包的当前 解码状态相对应的子解码器来对所述数据包的一个或者多个结构体中与当前解码状态相 对应的结构体进行解码。
2.如权利要求1所述的解码设备,其中所述基于状态的解码器在对所述数据包中的相 应结构体进行解码之后,由所述状态设置器来根据所述预定规则、基于所述数据包的当前 解码状态设置所述数据包的新解码状态,并将所述设置了新解码状态的数据包发送到所述 基于状态的解码器,以便选择与所述数据包的新解码状态相对应的子解码器对所述数据包 的一个或者多个结构体中的与该新解码状态相对应的结构体进行解码。
3.如权利要求2所述的解码设备,其中所述状态设置器根据预定规则、基于所述数据 包的当前解码状态确定是否继续对所述数据包进行解码。
4.如权利要求1-3中的任一个所述的解码设备,其中所述预定规则基于XML格式编写。
5.一种针对结构化协议的解码方法,包括步骤接收以结构化协议编码的数据包,该数据包包括一个或者多个结构体;根据预定规则对所述以结构化协议编码的数据包设置解码状态;以及与所述数据包的解码状态相对应对所述数据包中的相应结构体进行解码。
6.如权利要求5所述的解码方法,还包括步骤在对所述数据包进行解码之后,根据所述预定规则来基于所述数据包的当前解码状态 设置所述数据包的新解码状态;以及与所述数据包的新解码状态相对应地对所述数据包中的相应结构体进行解码。
7.如权利要求6所述的解码方法,还包括步骤在对所述数据包进行解码之后,根据所述预定规则来基于所述数据包的当前解码状态 来判断是否继续对所述数据包进行解码。
8.如权利要求5-7中的任一个所述的解码方法,其中所述预定规则基于XML格式编写。
9.一种网络入侵防护系统,包括如权利要求1-4中的任一个所述的解码设备来对接收 的网络数据包进行解码。
10.一种网络入侵防护方法,包括如权利要求5-8中的任一个所述的解码方法来对接 收的网络数据包进行解码。
全文摘要
本发明公开了一种针对结构化协议的解码设备,包括状态设置器,根据预定规则为以结构化协议编码的数据包设置解码状态;以及基于状态的解码器,接收设置了解码状态的数据包,并选择与该数据包的当前解码状态相对应的子解码器来对数据包的一个或者多个结构体中与当前解码状态相对应的结构体进行解码。本发明还公开了相应的解码方法,以及分别采用该解码设备和解码方法的网络入侵检测系统和方法。
文档编号H04L1/00GK102111236SQ20101054984
公开日2011年6月29日 申请日期2010年11月18日 优先权日2010年11月18日
发明者张涛, 郑崴中 申请人:北京神州绿盟信息安全科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1