一种文本协议的逆向解析方法和系统的制作方法

文档序号:7805962阅读:121来源:国知局
一种文本协议的逆向解析方法和系统的制作方法
【专利摘要】一种文本协议的逆向解析方法和系统,包括:抓取一文本协议的多个网络数据包,从每一网络数据包中提取应用层数据并转换为文本形式的数据流,得到的多个数据流组成一数据集;对所述数据集中的每一数据流,使用分隔符进行分词处理,将该数据流的内容划分为多个数据项并记录各个数据项的位置信息;对每一数据项,根据其位置信息及在所述数据流、数据集中出现次数的统计结果,确定该数据项是否为特征项;将每一数据流中相同的特征项按行提取出来,将特征项作为固定域,将相邻的非特征项合并后作为可变域,进行聚类分析,确定所述文本协议的格式特征。本发明从同一文本协议大量数据包中分析共性和关联性,得出协议格式,使得逆向解析更为精确。
【专利说明】一种文本协议的逆向解析方法和系统
【技术领域】
[0001]本发明涉及一种协议逆向解析,更具体地,涉及一种文本协议的逆向解析方法和系统。
【背景技术】
[0002]信息在不同计算机系统之间交互的过程中,网络通信协议发挥了不可替代的作用,得到越来越高的关注。协议消息的格式对诸多网络安全应用必不可少,如漏洞挖掘、入侵检测系统等。但是许多网络应用协议是非开放的,尤其在企业网络中,正式的协议描述文档越来越少,使得人们不能直接通过协议规范获取协议消息的特征。协议逆向解析不依赖于协议规范或描述,通过分析协议的数据包或交互过程等技术方式,可以逆向提取协议的格式字段等信息,进而进行其它应用如自动生成测试例等。
[0003]当前协议逆向解析有2种方案:基于协议报文序列分析和基于程序执行轨迹分析。
[0004]基于协议报文序列分析的核心技术是序列比对,对于同一种协议来说,其不同的报文样本之间具有相似性,序列比对的目的就是寻找相似性内容或结构。其流程如下:通过局部序列比对算法计算报文字节序列之间的相对距离;按照序列相对距离的远近,根据UPGMA(非加权成对群算术平均法)算法构建进化树;采用渐进比对算法遍历进化树,通过层层采用全局序列比对算法实现多序列比对,最后得出协议结构。
[0005]序列比对的局限性在于对于紧凑、简单、序列结构较为类似的协议,其识别效果较好,对于复杂、冗余较多的协议,其效率和准确度明显降低,而实际情况是很多协议格式是比较复杂的。此外,序列比对以字节作为基元,粒度小,不具有针对性,分析较为繁琐。
[0006]基于程序执行轨迹的协议逆向解析理论依据在于网络应用程序对协议数据的处理过程包含了大量有关协议消息格式的信息,通过分析网络应用程序对协议数据进行处理的相关指令及数据流信息可以得到协议格式。基于程序执行轨迹的分析是动态分析的方法,其关键技术是动态污点分析技术。其基本流程如下:动态监控网络协议数据的处理过程,实时记录程序执行轨迹,将程序从协议消息读入到内存空间的每个输入字节标记为污点数据,并对应于一个唯一的污点标签(在输入消息中的偏移);对程序执行轨迹进行分析,根据一定的解析策略得到协议的字段,如分隔符、关键词、定长域、变长域等。例如分隔符的解析策略是在执行指令中查找与协议数据中连续位置进行比较的常量字符,定长域的解析策略是域的解析范围由指令中的常量参数指定,等等;将解析出的字段与污点标签(即位置)关联起来,即可得出基本的协议结构。
[0007]基于程序执行轨迹的动态分析方法,其缺点在于程序执行轨迹需要在程序执行过程中实时记录,而进行实时记录目前尚无公开的工具,因此分析对象的获取较难,而且实时记录程序执行轨迹所需的时空开销很大,每次只是对单条协议消息的处理,导致精确度也不闻。
【发明内容】

[0008]本发明要解决的技术问题是提供一种更为精确的文本协议的逆向解析方法和系统。
[0009]为了解决的上述技术问题,本发明提供了一种对文本协议的逆向解析方法,包括:
[0010]抓取一文本协议的多个网络数据包,从每一网络数据包中提取应用层数据并转换为文本形式的数据流,得到的多个数据流组成一数据集;
[0011]对所述数据集中的每一数据流,使用分隔符进行分词处理,将该数据流的内容划分为多个数据项并记录各个数据项的位置信息;
[0012]对每一数据项,根据其位置信息及在所述数据流、数据集中出现次数的统计结果,确定该数据项是否为特征项;
[0013]将每一数据流中相同的特征项按行提取出来,将特征项作为固定域,将相邻的非特征项合并后作为可变域,进行聚类分析,确定所述文本协议的格式特征。
[0014]较佳地,
[0015]所述分隔符为分隔符集中的分隔符,包括回车换行符、空格符、制表符、逗号、冒号和分号;
[0016]所述对每一文本文件,使用分隔符进行分词处理,包括:
[0017]先根据回车换行符将该数据流的内容划分为一行或多行;
[0018]再使用其他分隔符对每一行进行划分,得到一个或多个数据项,并记录每一数据项位置信息,包括数据项所在行、列的值。
[0019]较佳地,
[0020]所述对每一数据项,根据其位置信息及在所述数据流、数据集中出现次数的统计结果,确定该数据项是否为特征项,包括:
[0021]判断出现该数据项是否满足以下条件之一:
[0022]条件一,位置固定;
[0023]条件二,t(DF)≤ K1X N 且 t (TF) <K2 X N ;
[0024]如果满足其中的任一条件,则该数据项为特征项,否则非特征项;
[0025]其中,t(DF)为出现该数据项的数据流的个数,t (TF)为所述数据集中该数据项出现的次数,N为所述数据集包括的数据流的总数,K1为预设的第一比值,K1U ;K2为预设的第二比值,Κ2>1。
[0026]较佳地,
[0027]所述K1在1/5~1/2的范围取值,所述1(2在3~6的范围取值。
[0028]较佳地,
[0029]所述将特征项作为固定域,将相邻的非特征项合并后作为可变域,进行聚类分析,确定所述文本协议的格式特征,包括:
[0030]对固定域聚类,得到固定域的取值集合;
[0031]对可变域聚类,得到可变域的域类型和长度信息,其中,所述域类型为文本域和数字域中的一种,所述长度信息为变长和定长中的一种。
[0032]相应地,本发明提供的对文本协议的逆向解析系统包括:[0033]预处理模块,用于抓取一文本协议的多个网络数据包,从每一网络数据包中提取应用层数据并转换为文本形式的数据流,得到的多个数据流组成一数据集;
[0034]分词模块,用于对所述数据集中的每一数据流,使用分隔符进行分词处理,将该数据流的内容划分为多个数据项并记录各个数据项的位置信息;
[0035]特征提取模块,用于对每一数据项,根据其位置信息及在所述数据流、数据集中出现次数的统计结果,确定该数据项是否为特征项;
[0036]结构建模模块,用于将每一数据流中相同的特征项按行提取出来,将特征项作为固定域,将相邻的非特征项合并后作为可变域,进行聚类分析,确定所述文本协议的格式特征。
[0037]较佳地 ,
[0038]所述分词模块使用的所述分隔符为分隔符集中的分隔符,包括回车换行符、空格符、制表符、逗号、冒号和分号;
[0039]所述分词模块对每一文本文件,使用分隔符进行分词处理,包括:
[0040]先根据回车换行符将该数据流的内容划分为一行或多行;
[0041]再使用其他分隔符对每一行进行划分,得到一个或多个数据项,并记录每一数据项位置信息,包括数据项所在行、列的值。
[0042]较佳地,
[0043]所述特征提取模块对每一数据项,根据其位置信息及在所述数据流、数据集中出现次数的统计结果,确定该数据项是否为特征项,包括:
[0044]判断出现该数据项是否满足以下条件之一:
[0045]条件一,位置固定;
[0046]条件二,t(DF)≥ K1X N 且 t (TF) <K2 X N ;
[0047]如果满足其中的任一条件,则该数据项为特征项,否则非特征项;
[0048]其中,t(DF)为出现该数据项的数据流的个数,t (TF)为所述数据集中该数据项出现的次数,N为所述数据集包括的数据流的总数,K1为预设的第一比值,K1U ;K2为预设的第二比值,Κ2>1。
[0049]较佳地,
[0050]所述K1在1/5~1/2的范围取值,所述1(2在3~6的范围取值。
[0051]较佳地,
[0052]所述结构建模模块将特征项作为固定域,将相邻的非特征项合并后作为可变域,进行聚类分析,确定所述文本协议的格式特征,包括:
[0053]对固定域聚类,得到固定域的取值集合;
[0054]对可变域聚类,得到可变域的域类型和长度信息,其中,所述域类型为文本域和数字域中的一种,所述长度信息为变长和定长中的一种。
[0055]上述基于文本挖掘的协议逆向解析方法和系统,针对文本协议,从同一协议大量数据包中分析共性和关联性,得出协议格式,使得逆向解析更为精确。
【专利附图】

【附图说明】
[0056]图1是本发明实施例协议逆向解析方法的总体流程示意图;[0057]图2是本发明实施例协议逆向解析方法的流程图;
[0058]图3是本发明实施例使用二叉树分词的示意图;
[0059]图4是本发明实施例协议逆向解析系统的模块图。
【具体实施方式】
[0060]为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。
[0061]实施例一
[0062]本实施例逆向解析针对的是文本协议,例如,SIP协议是一种文本协议,每条SIP消息由以下三部分组成:
[0063]起始行:每个SIP消息由起始行开始(请求消息是请求行,响应消息是状态行)。起始行用于传达消息类型(在请求中是方法类型,在响应中是响应代码)与协议版本。
[0064]SIP头:用于传递 消息属性和消息意义,其中格式为:〈名字 >:〈值>。
[0065]消息体:用于描述初始会话。例如,在多媒体会话中包括音频和视频编码类型,采样率等。消息体能够显示在请求与响应中。
[0066]以请求消息的起始行为例,协议中定义的格式如下:
[0067]Request-Line = Method SP Request-URI SP SIP-Version CRLF
[0068]其中:
[0069]“Method”表示方法类型,值可以为“ INVITE”,“ACK”, “OPTIONS”,“BYE”,“CANCEL”,“REGISTER”或 extension-method ;
[0070]“ SP ”表示空格;
[0071 ] “Request-URI ”表示请求方的通用资源标识符(URL),可以为SIP-URL或absoluteURL ;
[0072]“SIP-Version” 表示协议版本,如为 “SIP/2.0” ;
[0073]“CRLF” 表示回车。
[0074]下面再给出一条SIP请求消息和一条SIP响应消息的示例:
[0075]请求消息示例:
[0076]INVITE sip:121255512120211.123.66.222SIP/2.0 (CRLF)
[0077]Via: SIP/2.0/UDP 211.123.66.223:5060 ;branch = a71b6d57-507c77f2 (CRLF)
[0078]Via: SIP/2.0/UDP 10.0.0.1:5060 !received = 202.123.211.25 ;rport =12345 (CRLF)
[0079]From:<sip:2125551000i211.123.66.223〉;tag = 108bcdl4(CRLF)
[0080]To:sip:121255512120211.123.66.222(CRLF)
[0081]Contact: sip:2125551000010.0.0.1 (CRLF)
[0082]Call-1D:4c88fdle-62bb-4abf-b620-a75659435b76il0.3.19.6(CRLF)
[0083]CSeq:703141INVITE (CRLF)
[0084]Content-Length:138(CRLF)
[0085]Content-Type: application/sdp(CRLF)[0086]User-Agent: HearMe SoftPHONE (CRLF)
[0087](CRLF)
[0088]……(消息体略)
[0089]响应消息示例: [0090]SIP/2.02000K(CRLF)
[0091]Via:SIP/2.0/UDP pc33.atlanta.com ;branch = z9hG4bKhjhs8ass877 ;received=192.0.2.4 (CRLF)
[0092]To:<sip:carolichicag0.com〉;tag = 93810874(CRLF)
[0093]From:Alice<sip:aliceiatlanta.com〉;tag = 1928301774(CRLF)
[0094]Call-1D:a84b4c76e66710(CRLF)
[0095]Cseq:631040PT10NS(CRLF)
[0096]Contact:〈sip:carolichicag0.com〉(CRLF)
[0097]Contact:maiIto:carolichicag0.com(CRLF)
[0098]Allow:1NVITE, ACK, CANCEL, OPTIONS, BYE (CRLF)
[0099]Accept: application/sdp(CRLF)
[0100]Accept-Encoding:gzip(CRLF)
[0101]Accept-Language:en(CRLF)
[0102]Supported:foo(CRLF)
[0103]Content-Type: application/sdp(CRLF)
[0104]Content-Length:274
[0105](CRLF)
[0106]......(消息体略)
[0107]从上面2个示例可以看出,消息内容被分为多行,每行内容又包括固定域和/或可变域。
[0108]如图1所示,本实施例对文本协议的逆向解析方法包括预处理、分词、特征提取和结构建模4个处理阶段,其中,对网络数据包进行预处理得到协议数据流,对协议数据流进行分词得到数据项,对数据项进行特征提取得到特征信息,对特征信息进行结构建模块即可得到协议结构。
[0109]本实施例的逆向解析方法的具体流程如图2所示,包括:
[0110]步骤110,预处理:抓取一文本协议的多个网络数据包,从每一网络数据包中提取应用层数据并转换为文本形式的数据流,得到的多个数据流组成一数据集;
[0111]在一个示例中,可以通过建立网络通信过程,用wireshark或Ethereal等抓包工具获取某种协议的大量数据包,存储为Pcap格式。pcap文件格式是bpf保存原始数据包的格式,很多软件都在使用,如tcpdump、Ethereal、wireshark等等。pcap并不是原始的网络字节流,而是对其进行重新组装形成一种新的数据格式。
[0112]一个 pcap 文件由 Pcap Header、若干 Packet Peader 和 Packet Data 组成。其中,Packet Data是一个协议消息从数据链路层开始的完整内容。预处理时要层层去除PcapHeader, Packet Header以及Packet Data中的数据帧头、IP头和TCP头等信息,提取出每个Pacaket Data中的应用层数据并转换为文本形式(即ASCII字符形式)的数据流,例如,把提取出的每个Pacaket Data的应用层数据存储为一个文本文件,每一文本文件即一个数据流,对多个网络数据包预处理得到的多个数据流组成一数据集,作为下一阶段的输入。文中,各个数据流用di (i = I, 2,…,η)表示,数据集用S(dl, d2,…,dn)表示。
[0113]预处理时,将数据以ASCII字符的形式而非十六进制或二进制表示,分析判断更为直观;而且可以为后续的基于文本挖掘的分析过程去除文件头、数据头等噪声的影响。
[0114]步骤120,分词:对所述数据集中的每一数据流,使用分隔符进行分词处理,将该数据流的内容划分为多个数据项并记录各个数据项的位置信息;
[0115]对于预处理阶段得到的数据流CliQ = 1,2,...,!!),这一阶段将用一系列的分隔符对它们进行分词处理,划分为数据项。在一个示例中,分隔符集可设定为{“\r\n”(回车换行符)、“\x20” (空格符)、“\t” (制表符)、“:”(冒号)、“;”(分号)、“,”(逗号)}。
[0116]首先,根据\r\n将数据流按行划分完毕。
[0117]然后,循环读取分隔符集中的其它分隔符对每行进行划分。在一个示例中,可以建立二叉树模型来描述(不局限于此):将每行数据视为一个根节点,按照除\1"\11外的分隔符集中的第一个分隔符划分,在分隔符出现的第一个位置,划分为2部分,再对右子节点划分,依次进行。读取下一个分隔符,划分第一步生成的树中的叶子节点,每个叶子节点(如果被划分)被划分为2部分,再对右子节点划分。以上循环持续进行,直至分隔符集中的分隔符用完为止,得到二叉树叶子节点的内容即为划分得到的数据项。
[0118]由此,一个数据流被划分为多个数据项(term),表示为(IiU1, t2,…,乜),记录每个term的位置信息,包括所在的行、列(即相对于行首位置的偏移)。对(Ii依次进行分词处理,作为下一阶段的输入。
[0119]图下面给出一个示例,数据流dn如下:
[0120]GET/img/log0.gif HTTP/1.1 (CRLF)
[0121]Accept:1mage/png, image/svg+xml, image/* ;q = 0.8,*/* ;q = 0.5 (CRLF)
[0122]Referer: http: //bbs.byr.cn/ (CRLF)
[0123]Accept-Language:zh_CN(CRLF)
[0124]User-Agent:MoziIla/5.0 (compatible ;MSIE9.0 ;ffindows NT6.1 ;Trident/5.0 ;360SE) (CRLF)
[0125]Accept-Encoding:gzip, deflate (CRLF)
[0126]Host: static, byr.cn (CRLF)
[0127]Connection:Keep-Alive (CRLF)
[0128]根据\r\n将数据流按行划分完毕后,对行的处理如下,例如,图3示出了对Accept:1mage/png, image/svg+xml, image/* ;q = 0.8, */* ;q = 0.5 这一--白勺戈?!分过程。图中①代表用分隔符“:”进行的第一次划分。序号②、③代表用分隔符“;”进行的第二、三次划分。序号④、⑤、⑥代表用分隔符“,”进行的第四、五、六次划分。序号I一7代表划分得到的7个文本片段,且它们位于该行的列数分别为I一7。其它行的划分类比上述过程。
[0129]上述处理中,以ASCII字符形式表示和分隔符的设定控制了后续分析的粒度大小。不以字节为基元,避免了因粒度太小造成时空开销过大;通过分隔符进行分词,避免了粒度太大而造成分析不准确。
[0130]步骤130,特征提取:对每一数据项,根据其位置信息及在所述数据流、数据集中出现次数的统计结果,确定该数据项是否为特征项;
[0131]本实施例中,判断出现该数据项是否满足以下条件之一:
[0132]条件一,位置固定;
[0133]条件二,t(DF)≥ K1X N 且 t (TF) <K2 X N ;
[0134]如果满足其中的任一条件,则该数据项为特征项,否则非特征项;
[0135]其中,t(DF)为出现该数据项的数据流的个数,t (TF)为所述数据集中该数据项出现的次数,N为所述数据集包括的数据流的总数,K1为预设的第一比值,1〈1,经研究对比,较佳地,在1/5~1/2的范围取值,如取1/3 ;K2为预设的第二比值,Κ2>1,较佳地,在3~6的范围取值,如取为4。
[0136]如果数据项的位置(行,列值)固定,则将其作为特征项。
[0137]如果数据项的位置不固定,可以再考虑其在数据集和数据流中出现的频次。如果一个数据项(值相同的为同一数据项)的t(DF)很低(如低于阈值K1XN),认为它代表数据流集的能力不强,不作为特征项。如果t(DF)大于等于阈值K1XN,再考虑该数据项的t(DF),如果t(TF)很高(如大于等于阈值K2XN),那认为它对于代表文本集没有区分度,有可能是噪声或无意义字符,因此也把它排除作为特征项。如果t(TF)小于阈值1(2\1则可作为特征项。数据集S越大,这种衡量越为有效。
[0138]在确定特征项后,将各个特征项及其位置信息作为特征信息,作为下一阶段的输入。
[0139]例如,抓取了 558个http请求消息数据包,得到部分统计结果如下表所示:
[0140]
【权利要求】
1.一种对文本协议的逆向解析方法,包括: 抓取一文本协议的多个网络数据包,从每一网络数据包中提取应用层数据并转换为文本形式的数据流,得到的多个数据流组成一数据集; 对所述数据集中的每一数据流,使用分隔符进行分词处理,将该数据流的内容划分为多个数据项并记录各个数据项的位置信息; 对每一数据项,根据其位置信息及在所述数据流、数据集中出现次数的统计结果,确定该数据项是否为特征项; 将每一数据流中相同的特征项按行提取出来,将特征项作为固定域,将相邻的非特征项合并后作为可变域,进行聚类分析,确定所述文本协议的格式特征。
2.如权利要求1所述的方法,其特征在于: 所述分隔符为分隔符集中的分隔符,包括回车换行符、空格符、制表符、逗号、冒号和分号; 所述对每一文本 文件,使用分隔符进行分词处理,包括: 先根据回车换行符将该数据流的内容划分为一行或多行; 再使用其他分隔符对每一行进行划分,得到一个或多个数据项,并记录每一数据项位置信息,包括数据项所在行、列的值。
3.如权利要求1或2所述的方法,其特征在于: 所述对每一数据项,根据其位置信息及在所述数据流、数据集中出现次数的统计结果,确定该数据项是否为特征项,包括: 判断出现该数据项是否满足以下条件之一: 条件一,位置固定; 条件二,t (DF)≥ K1XN 且 t (TF)〈K2XN ; 如果满足其中的任一条件,则该数据项为特征项,否则非特征项; 其中,t(DF)为出现该数据项的数据流的个数,t (TF)为所述数据集中该数据项出现的次数,N为所述数据集包括的数据流的总数,K1为预设的第一比值,K1U ;K2为预设的第二比值,Κ2>1。
4.如权利要求3所述的方法,其特征在于: 所述K1在1/5~1/2的范围取值,所述1(2在3~6的范围取值。
5.如权利要求1或2或4所述的方法,其特征在于: 所述将特征项作为固定域,将相邻的非特征项合并后作为可变域,进行聚类分析,确定所述文本协议的格式特征,包括: 对固定域聚类,得到固定域的取值集合; 对可变域聚类,得到可变域的域类型和长度信息,其中,所述域类型为文本域和数字域中的一种,所述长度信息为变长和定长中的一种。
6.一种对文本协议的逆向解析系统,包括: 预处理模块,用于抓取一文本协议的多个网络数据包,从每一网络数据包中提取应用层数据并转换为文本形式的数据流,得到的多个数据流组成一数据集; 分词模块,用于对所述数据集中的每一数据流,使用分隔符进行分词处理,将该数据流的内容划分为多个数据项并记录各个数据项的位置信息;特征提取模块,用于对每一数据项,根据其位置信息及在所述数据流、数据集中出现次数的统计结果,确定该数据项是否为特征项; 结构建模模块,用于将每一数据流中相同的特征项按行提取出来,将特征项作为固定域,将相邻的非特征项合并后作为可变域,进行聚类分析,确定所述文本协议的格式特征。
7.如权利要求6所述的系统,其特征在于: 所述分词模块使用的所述分隔符为分隔符集中的分隔符,包括回车换行符、空格符、制表符、逗号、冒号和分号; 所述分词模块对每一文本文件,使用分隔符进行分词处理,包括: 先根据回车换行符将该数据流的内容划分为一行或多行; 再使用其他分隔符对每一行进行划分,得到一个或多个数据项,并记录每一数据项位置信息,包括数据项所在行、列的值。
8.如权利要求6或7所述的系统,其特征在于: 所述特征提取模块对每一数据项,根据其位置信息及在所述数据流、数据集中出现次数的统计结果,确定该数据项是否为特征项,包括: 判断出现该数据项是否满足以下条件之一: 条件一,位置固定; 条件二,t (DF)≥ K1XN 且 t (TF)〈K2XN ; 如果满足其中的任一条件,则该数据项为特征项,否则非特征项; 其中,t(DF)为出现该数据项的数据流的个数,t (TF)为所述数据集中该数据项出现的次数,N为所述数据集包括的数据流的总数,K1为预设的第一比值,K1U ;K2为预设的第二比值,Κ2>1。
9.如权利要求8所述的系统,其特征在于: 所述K1在1/5~1/2的范围取值,所述1(2在3~6的范围取值。
10.如权利要求6或7或9所述的系统,其特征在于: 所述结构建模模块将特征项作为固定域,将相邻的非特征项合并后作为可变域,进行聚类分析,确定所述文本协议的格式特征,包括: 对固定域聚类,得到固定域的取值集合; 对可变域聚类,得到可变域的域类型和长度信息,其中,所述域类型为文本域和数字域中的一种,所述长度信息为变长和定长中的一种。
【文档编号】H04L29/06GK104023018SQ201410258281
【公开日】2014年9月3日 申请日期:2014年6月11日 优先权日:2014年6月11日
【发明者】李建宇, 刘媛媛 申请人:中国联合网络通信集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1