一种自动协议识别方法及系统-发明专利说明书.doc

上传人:11****ws 文档编号:2132392 上传时间:2019-04-30 格式:DOC 页数:21 大小:110.50KB
下载 相关 举报
一种自动协议识别方法及系统-发明专利说明书.doc_第1页
第1页 / 共21页
一种自动协议识别方法及系统-发明专利说明书.doc_第2页
第2页 / 共21页
一种自动协议识别方法及系统-发明专利说明书.doc_第3页
第3页 / 共21页
一种自动协议识别方法及系统-发明专利说明书.doc_第4页
第4页 / 共21页
一种自动协议识别方法及系统-发明专利说明书.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、1说 明 书一种自动协议识别方法及系统启明星辰 叶润国(发明专利已授权)技术领域本发明涉及一种可用于入侵检测防御(IDS/IPS)产品中的自动协议识别方法及系统,它依据网络数据流中报文特征智能地识别出其所属协议类别,属于网络技术领域。背景技术入侵检测/防御系统(Intrusion Detection/Protection System, IDS/IPS)作为网络安全防护的重要手段,通常部署在关键网络内部/网络边界入口处,实时捕获网络内或进出网络的报文数据流并进行智能综合分析,发现可能的入侵行为并进行实时阻断。应用层协议深层解析技术在当前主流IDS/IPS 产品中被广泛采用,可用来实现基于协议攻

2、击特征和协议异常的入侵检测。目前多数 IDS/IPS 产品都基于端口映射表来判别网络报文所属协议类型,比如,如发现捕获的网络报文中源/目端口为 80 ,则认为它为HTTP(Hypertext Transfer Protocol)协议报文,则将该报文交给 HTTP 协议分析引擎进行协议解码和入侵检测。通常这种端口映射表在 IDS/IPS 产品出厂时已确定,但允许管理员修改以适应实际环境的需要。近年来,出现了一批新型的网络协议,包括 SIP(Session Initiation Protocol)和 P2P (Peer to peer protocol)协议等,它们并不采用固定协议端口,而是在协议

3、运行过程中动态协商端口;此外,目前各种木马、间谍软件为躲避 IDS/IPS 产品的入侵检测都采用了一些特殊的处理方式,主要表现为:1)并不使用固定通信端口进行通信;2)采用公知端口进行私有协议通信(比如 80 端口);3)采用隧道技术进2行私有协议通信(比如 HTTP 隧道技术) 。在这种情况下,IDS/IPS 产品无法根据端口映射表来正确识别报文所属协议类型,而需要根据网络报文特征智能识别报文所属协议类别,否则,IDS/IPS 产品将产生大量的误报或漏报。因此,有必须发展不单纯依赖于协议端口的智能协议识别技术,以减少 IDS/IPS 产品的误报或漏报。并且,该智能协议识别技术必须满足以下要求

4、:智能地根据报文特征自动识别报文所属协议类型,而不单纯依赖于端口映射表;尽可能依据协议数据流早期报文特征快速识别出所属协议类型,以尽早进行协议解码分析和入侵检测目的;具有非常高的协议识别效率,算法实现尽可能简单;方法通用性强,支持几乎所有协议,并要求协议识别结果准确率高。发明内容为了克服现有技术的不足, 本发明提供一种自动协议识别方法及系统。本发明解决其技术问题所采用的技术方案是:一种自动协议识别方法,包括协议样本特征提取和协议识别两个阶段步骤,其中,所述的协议样本特征提取阶段步骤包括协议类型样本的协议指纹提取和相应协议验证规则建立,协议识别阶段步骤包括协议指纹快速匹配和协议识别结果快速验证。

5、协议识别方法之协议样本特征提取阶段,其中所述的协议指纹提取方法有如下步骤:对于文本命令类型协议样本,用命令参数或状态码参数格式描述,直接提取协议样本中命令和状态码作为协议指纹;对于固定报头类型协议样本,将固定报头中所含字段类型分为静态字段和动态字段类型,寻找尽可能多的连续静态类型字段,并将其取值组合定义为该类型协议指纹。3对于其它无固定格式类型协议样本,寻找可以标识该协议样本服务类型的单词作为协议指纹。协议样本特征提取阶段,其中所述的协议验证规则建立方法具有如下步骤:提取协议样本中除协议指纹之外其它特征作为该类型协议样本的协议验证规则,包括可进一步标识协议样本类型的字段、单词或者其它要求协议消

6、息满足的规范等。采用控制流图(CFG)的步骤,描述为某类型协议样本建立的协议验证规则集,在 CFG 图中:存在 TRUE 和 FALSE 两个特殊节点,其中 FALSE 节点只有一个,而 TRUE 节点可以有多个;除 TRUE 和 FALSE 节点外,CFG 中每一个节点表示一条协议验证规则(布尔逻辑) ,其执行结果为真或假;CFG 中每一条有向边表明当有向边源节点执行结果为 true 或 false 时 CFG 图的实际执行路径;该 CFG图从根节点开始执行,直到遇到 TRUE 或 FALSE 节点为止。协议识别方法之协议识别阶段,其中所述的协议指纹快速匹配方法具有如下步骤:将 IP 报文应

7、用层数据作为文本输入,将所有协议指纹作为模式集合,采用多模式配算法找到 IP 报文所属的可能协议集合;在执行多模式匹配算法前,先按协议指纹偏移对所有协议指纹进行分类并分别建立哈希表;对每一类协议指纹,从 IP 报文应用载荷相应偏移处开始,依次对前i=1,2,3.个字节进行哈希,同时检查哈希表子链,在子链非空情况下遍历子链,即调用子链中每一项的相关协议验证规则:如果 IP 报文通过了协议验证规则验证,则识别出了 IP 报文所属协议类型。协议识别方法之协议识别阶段,其中所述协议验证规则执行过程具有如下步骤:4采用虚拟机模型来实现相关协议验证规则的解释执行;将用 CFG 描述的协议验证规则集翻译成可

8、在虚拟机上直接执行的虚拟机程序;由一虚拟机解释程序解释执行由协议验证规则集翻译而来的虚拟机程序,程序执行结果即是本次协议识别结果。一种自动协议识别系统,其特征在于:所述协议识别系统包括协议指纹库、协议验证规则库、协议指纹匹配引擎和协议验证引擎,其中,协议指纹库和协议验证规则库分别存储了协议样本特征提取阶段产生的协议指纹和协议验证规则集,协议指纹匹配引擎实现所述的协议指纹快速匹配算法,协议验证引擎实现了所述的虚拟机模型;协议样本特征提取阶段提取的协议指纹和相应协议验证规则集用配置文件描述,系统工作时,将基于该配置文件构建协议指纹哈希表,将相应协议验证规则集翻译成虚拟机程序供协议验证引擎执行。本发

9、明的有益效果是,本发明解决了IDS/IPS产品中对于非标准端口网络协议的自识别问题。本发明能够在网络协议通信初期根据前期报文特征自动识别所属协议类型,并采用协议验证规则集进一步验证协议识别结果正确性。与已有方法相比,本发明完全基于网络协议通信初期报文特征智能识别出所属协议类别,而不单纯依赖于固定端口,可以对所有动态端口协议、隧道协议进行自动识别,具有协议识别速度快和准确率高等优点,可广泛应用于IDS/IPS等所有需要智能协议自识别的网络安全产品中。附图说明下面结合附图和实施例对本发明进一步说明。图 1 为本发明涉及的协议识别方法两阶段工作流程图;图 2 为固定报头格式协议指纹提取举例;图 3

10、为采用 CFG 描述相关协议验证规则集举例;5图 4 为基于快速 Hash 协议指纹匹配图例;图 5 为基于快速 Hash 协议指纹匹配和协议验证流程图。具体实施方式实施例 1;本发明所述协议识别过程方法包括两个工作阶段:前期协议样本特征提取阶段和在线协议识别阶段,各阶段步骤如下(见图 1):A. 协议样本特征提取阶段;依据协议指纹提取方法从协议类型样本中提取该类协议的协议指纹(每一类协议一般有多个协议指纹) ,并建立该类协议相应的验证规则集。将提取的协议指纹和相应协议验证规则集分别存储到协议指纹库和协议验证规则库中,供协议识别阶段指纹匹配引擎和协议验证引擎使用。B. 在线协议识别阶段;捕获未

11、知协议类型数据流前期 IP 报文,从应用层载荷中提取所有可能协议指纹,采用多模式匹配算法与协议指纹库中各指纹进行匹配,识别出可能的协议集合;对于上述可能协议集合中每一协议,调用相应协议验证规则进行验证,如果协议验证规则验证通过,则识别出该 IP 报文所属正确协议类型,否则继续执行下一个候选协议相关验证规则,直到识别出正确协议为止。一旦识别出 IP 报文所属协议类型,将创建一个五元组,从而使得属于该协议数据流的后续报文无需执行本协议识别方法,以减轻系统计算开销。本协议识别方法一般只需要捕获到应用协议初期交互过程中第 12 回合中带应用数据载荷的报文。因此,对于基于 TCP 协议的应用层协议,需要

12、捕获TCP 三次握手结束后第 1-2 个带应用层数据的报文。本协议识别方法可以在网络通信协议初期交互的第 1-2 个协议消息数据中识别出所属协议类别,因此具有很好的协议识别速度。6本协议识别方法为每一类型协议样本建立一个协议指纹集合(SigSet)和相应协议验证规则集(RuleSet),其中,协议指纹是一个有限长度的连续字节串,它标识一种特定类型的协议消息;当协议指纹正确建立后,通过 IP 报文携带的协议指纹特征就可以识别其所属协议类型。举例, ”GET”可以标识 HTTP 协议中的 HTTP Request 消息类型,可以用它来作为 HTTP 协议指纹;反过来,如果发现某一 IP 报文携带协

13、议指纹”GET” ,则该 IP 报文所属协议类型为 HTTP 的可能性很大。但是,单纯基于协议指纹特征得到的协议识别结果可能错误,因此需要额外措施来进一步验证本次协议识别结果正确性。本协议识别方法在识别出IP 报文所属可能协议类型之后采用协议验证规则集来验证协议识别结果正确性。协议验证规则集与具体协议相关,它为一个集合,集合中每一条规则定义了将一个 IP 报文判别为该类型协议时该 IP 报文必须满足的布尔表达式。因此,可以将为某一协议类型建立的协议验证规则集看作是该类型协议规范的一个必要条件集合。为某一类型协议建立的协议验证规则集可用布尔表达式树或者控制流图(Control Flow Grap

14、h, CFG)来描述,本协议识别方法选择控制流图描述每种类型协议验证规则集,采用虚拟机模型来实现协议验证规则集的解释执行。HTTP 协议指纹和验证规则建立举例;首先为 HTTP 协议建立协议指纹集合,并建立相应协议验证规则集:为 HTTP 协议指纹“GET”建立的验证规则集为:Rule1: 文本中必须含有”HTTP”字串;Rule2: 文本中必须包含“rn” ;Rule3:等等。为 HTTP 协议指纹”POST ”建立的验证规则集为:Rule1:文本中必须含有”rnrn”字串;Rule2:文本中必须包含 Content-Length 字串;7Rule3:等等。为 HTTP 协议指纹”HEAD

15、”建立的验证规则集为:Rule1:文本中必须含有”HTTP”字串;Rule2:文本中必须包含”If-Modified-Since” 字串;Rule3: 等等。然后,在协议识别过程中,如果发现一IP报文包含”GET” 协议指纹,通过协议指纹匹配算法可以识别其所属协议类别可能为HTTP,这时进一步执行前面定义的HTTP协议协议指纹”GET” 所对应的验证规则集来验证该 IP报文:如果该IP报文通过了集合中所有验证规则的验证,则HTTP就为该IP报文所属的正确协议类型;否则,继续从IP报文中提取其它协议指纹、进行指纹匹配找到可能所属协议类型、并执行相关协议验证规则进行验证,直到找到正确结果为止。实施

16、例 2;自动协议识别方法协含有以下步骤;协议指纹提取;将所有协议分为三类:1)文本命令格式协议;2)固定报头格式协议;3)无固定格式协议。下面分别描述这三类协议的指纹提取方法。文本命令格式协议;文本命令格式协议中,所有消息都可能用命令参数方式描述,这里的命令不但包括通常的协议命令,还包括服务端响应的状态码。文本命令格式协议的例子很多,包括 POP3,SMTP,FTP, HTTP 等。对于这类协议,只需要提取协议命令和协议响应状态码作为协议指纹即可。比如,对于 HTTP 协议,提取的HTTP 协议指纹集合为GET, POST, HEAD, HTTP/0.9, HTTP/1.0, HTTP/1.1

17、。这些协议指纹在 HTTP 协议报文应用载荷中偏移为 0,在这种情况下,可以省略协议指纹偏移的标示。固定报头格式协议;固定报头格式协议一般都为二进制格式协议,在该类协议中,所有协议消8息都具有一个固定长度的报头,然后是可变长度数据。固定报头格式协议例子很多,包括 DB2、TDS、DNS 和 MSRPC 协议等。固定报头中,一般包含Type、version、Length、Flags 和 ID 等字段。根据在网络协议交互过程中取值变化情况的不同,可以将这些字段分为两类:a) 静态类型字段,即字段取值为常数或者只能取少数几个值,比如 Type, Version, Flags 等字段;b) 动态类型字

18、段,即字段取值情况预先不可预测,比如 Length、ID 等字段。因此,只能从第一种类型字段中提取协议指纹。如果提取的协议指纹标识某一类型协议的精确度越高,则协议识别过程中第一次通过协议指纹匹配算法找到正确协议类型的可能性就越高,因而可能只需少量协议验证规则条目就可识别出 IP报文所属协议类别,并可明显减少协议识别算法的计算开销。为达到这个目的,通常将尽可能多的连续静态字段组合起来作为该类协议样本的指纹。固定报头类型协议指纹提取举例(见图 2):对于 TDS(Tabular Data System)协议,其固定报头中有两个连续静态字段(Type 和 Status) ,因此如果将 Type+St

19、atus 组合作为 TDS 协议的指纹,可以提高协议指纹标识该类型协议的准确度;对于 MSRPC(Microsoft Remote Procedure Call)协议,其固定报头中存在 5 个连续静态字段(Major_Ver、Minor_Ver、PktType、PktFlags 和DataRepresentation) ,因此如果将上述 5 字段组合作为 MSRPC 协议指纹,可以提高协议指纹标识该类型协议准确度。通过该方法提取的协议指纹一般都有 2-4 个字节长度,并且各协议指纹之间出现碰撞的可能性很小,因此可明显加快协议识别速度。无固定格式协议;对于无固定格式协议,无法采用通用方法提取协议

20、指纹,而只能针对特定协议特定分析提取协议指纹的可能性。所幸的是,属于该类型的应用层协议很少,目前只看到 Auth 协议。因此,对于这种情形可以单独对待。9协议验证规则集(RuleSet)建立;协议验证规则集与具体协议类型相关,为各种类型协议建立协议验证规则集目的主要有以下 3 个:1) 通过协议验证规则集可以检验本次协议识别结果正确性,即在识别出某一 IP 报文可能所属协议类型后进一步验证其是否真正符合该类型协议规范(双重检查) ;2) 在两个协议之间的协议指纹出现碰撞时,可以通过协议验证规则排除错误协议类型,找到正确的协议识别结果(识别结果筛选);3)协议验证规则可以深入检查协议数据载荷,发

21、现那些隧道型协议,比如MSN-over-HTTP 和 SMB-over-NetBIOS 等。在协议识别过程中,找到一个 IP报文可能所属协议类型后,必须执行相关协议验证规则集,并只有在该 IP报文通过相关协议规则集中所有规则验证后才算找到了所属的正确协议类型。为某一类型协议建立的协议验证规则集为一个规则集合,采用控制流图(CFG)模型来描述协议验证规则集。如图 3 所示,在 CFG 模型表示方法中,每一条协议验证规则用一个椭圆节点表示,这里除 TRUE 和 FALSE 两条用于返回协议验证结果的特殊规则外,其余验证规则都是一个布尔逻辑,其执行结果只能为真或假。这个协议验证规则集合从根节点开始执

22、行,如果当前协议验证规则执行结果为真,则执行其左侧的验证规则树,如果为假,则执行其右侧的验证规则树,直到执行到 TRUE 或 FALSE 节点为止。图 3 为两个协议验证规则集例子:左图定义了与 HTTP 协议指纹“GET“相关的协议验证规则集,该协议验证规则集的执行从根节点开始,某一 IP 报文只有全部通过了条验证规则的验证,才可能返回 HTTP 协议 ID,否则返回 FALSE。右图定义了与 HTTP 协议指纹”HTTP/1.1 ”相关的验证规则集,它支持 HTTP 隧道协议深层解析,该规则集从根节点开始执行:如果某一 IP 报文通过了前两个()协议验证规则的10验证,则识别它为 HTTP

23、 协议类型;进一步,如果该 IP 报文还满足第条协议验证规则,则识别它为 MSN-Over-HTTP 协议;对于其它情况则识别失败。为某一协议指纹建立的协议验证规则集大小直接影响到本类型协议的识别结果准确性和算法效率:当为某一类型协议指纹定义的协议验证规则条目越多,则协议识别结果的准确性就越高,但是协议识别效率会较低;当为某一类型协议指纹定义的协议验证规则条目越少,则协议识别效率会很高,但可能会降低协议识别结果准确性,因此,应根据需要合理定义协议验证规则集。建议:如果协议指纹较长,与其它协议指纹冲突可能性很小,则定义的协议验证规则条目可以很少甚至没有;如果协议指纹较短,则与其它协议指纹冲突的可

24、能性较大,因此需要考虑定义多一些的协议验证规则条目来筛选通过协议指纹匹配引擎得到的协议识别结果集以得到最可能的协议类型。协议指纹快速匹配;在前期协议样本提取阶段定义好各种类型协议指纹和相关协议验证规则后,需要设计一种高效的协议指纹匹配算法,用于在协议识别阶段对 IP 报文应用数据进行协议指纹发现和快速匹配,从而找到该 IP 报文所属的可能协议类型集合。可以采用多模式匹配算法来执行这种协议指纹快速匹配过程:将 IP 报文应用层载荷数据作为多模式匹配算法的 Text,所有定义的协议指纹集合作为模式集合,使用多模式匹配算法找到所有可能的协议类型集合,然后对该集合中每一协议类型执行相应协议验证规则,排除错误的协议类型,直到找到合适的协议类型为止。基于传统多模型匹配算法实现协议指纹快速匹配算法具有算法实现快、通用性好等优点,但它没有充分利用协议指纹通常位于 IP 报文应用载荷头部这个特点,因此,本协议识别方法设计了一个高效的协议指纹快速匹配算法。观察到:95%协议类型的协议指纹偏移为 0,对于偏移不为 0 的协议指纹(占 5%),偏移位置都出现在 IP 报文应用层载荷靠前位置并且取值都有规律,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。