协议规范挖掘研究综述_张钊

  • 格式:pdf
  • 大小:1.82 MB
  • 文档页数:9

2013,49(9)ComputerEngineeringandApplications计算机工程与应用协议规范挖掘[1-2]是一种对未知协议的网络(报文)数据或处理这些数据的指令序列进行分析,以获取协议规范的逆向工程技术。近年来,采用这种技术获得的协议规范可广泛应用于网络安全相关的研究领域。例如,通过对未知协议规范的挖掘,可以在网络协议漏洞挖掘中支持对私有协议的模糊测试(FuzzingTest)[3-4],从而扩大了协议测试的范围;在网络入侵检测系统中[5-7],利用此技术可分析特定协议的恶意数据报文特征,从而提高系统的检测能力。因此,如何从未知协议中挖掘出多而准确的信息,是协议规范挖掘研究领域的核心问题。然而,目前的协议规范挖掘过度依赖于人工分析,使得这项工作成为一个任务量大、容易出错、非常耗时而且很具有挑战性的问题。例如,开源工程SAMBA用了12年时间对微软的SMB/CIFS协议进行了规范的挖掘工作[8],成功地实现了跨平台的文件和打印共享机制。随着网络规模的扩大和应用种类的增多,对协议规范挖掘的自动化程度和结果准确性的要求越来越高,因此研究人员从这两方面展开了协议规范挖掘的研究工作。此前潘璠等人对协议规范挖掘领域作过综述[9],但是存在三点不足:第一,对协议规范挖掘研究中涉及到的相关定义不够严谨和完整,例如状态转换函数和语义约束定义等;第二,将格式语义挖掘与协议行为规范挖掘两个层次的研究综合在一起进行描述,分类不够细致合理;第三,重点描述报文格式、语义挖掘工作,对协议行为规范挖掘基金项目:国家自然科学基金(No.61202434,No.61170270,No.61121061);中央高校基本科研业务费专项资金资助(No.2011RC0505,No.2011RCZJ15,No.2012RC0612,No.2011YB01)。作者简介:张钊(1986—),男,博士生,主研方向:网络安全;温巧燕,博士,教授;唐文,博士,工程师。E-mail:108283@bupt.edu.cn收稿日期:2012-12-06修回日期:2013-01-15文章编号:1002-8331(2013)09-0001-09CNKI出版日期:2013-01-16http://www.cnki.net/kcms/detail/11.2127.TP.20130116.0923.001.html协议规范挖掘研究综述张钊1,温巧燕1,唐文2ZHANGZhao1,WENQiaoyan1,TANGWen21.北京邮电大学网络与交换技术国家重点实验室,北京1008762.西门子(中国)研究院,北京1001021.StateKeyLabofNetworkingandSwitchingTechnology,BeijingUniversityofPostsandTelecommunications,Beijing100876,China2.CooperateTechnology,Siemens(China)Ltd,Beijing100102,ChinaZHANGZhao,WENQiaoyan,TANGWen.Surveyofminingprotocolspecifications.ComputerEngineeringandAppli-cations,2013,49(9):1-9.Abstract:Asfortheproblemofminingunknownprotocolspecificationsintheresearchfieldsofnetworksecurity,thispaperproposestheformaldefinitionofresearchproblemanddividesthecurrentresearchintotwolayersaccordingtothescopeofspecification:format,semanticmininginpacketsandbehaviorminingamongpackets.Itdiscussescurrenttechnologies,evalua-tionsandapplicationscenariosinthetworesearchlayers.Itsummarizesfutureresearchtrendsbasedonthedisadvantagesofcur-rentsolutionsandrequirementsofapplication.Keywords:protocolspecification;reverseengineering;packetformat;behaviormodeling;grammaticalinference;automationlearning摘要:针对网络安全领域中的协议规范挖掘问题,通过对近十年相关文献的研究,将此问题进行了规范的形式化定义,根据协议规范的作用域将其分为两个层面:报文内部的格式、语义规范挖掘与报文之间的协议行为规范挖掘。针对每个层面研究中涉及到的方法与技术,给出了概要的分析介绍、评价及应用场景。针对目前研究的不足与应用需求,对整个协议规范挖掘的研究趋势进行了展望。关键词:协议规范;逆向工程;报文格式;行为建模;文法推断;自动机学习文献标志码:A中图分类号:TP393.08doi:10.3778/j.issn.1002-8331.1212-0075⦾博士论坛⦾1ComputerEngineeringandApplications计算机工程与应用2013,49(9)的介绍不够充分。与文献[9]相比,本文针对其不足进行了改进,对各类研究方法介绍得更为充分,对研究方法的分类也更为细致合理。受篇幅所限,本文将研究方法、比较和评价作为重点,而对其应用领域的介绍没有文献[9]描述得详细具体。1问题定义协议规定了网络实体之间的通信机制和内容,是计算机网络与数据通信的核心。协议的三要素包括:语法(Syn-tax)、语义(Semantics)和时序(Timing)[10]。其中,语法指报文的格式及编码,语义指报文的具体含义(包括控制信息、错误处理等),时序指报文之间的通信序列。具体来说,网络实体在通信过程中会根据报文格式规范提取报文中各字段的语义信息,然后根据协议实体内部的数据处理逻辑(协议有限状态机)产生响应报文并发送给对方。特别地,Bhargavan等人将网络设备的交互问题形式化为语言的识别问题[11],受此启发并结合协议三要素,该章对协议规范挖掘研究中涉及到的问题逐步地进行形式化定义。针对报文内部的格式、语义规范(语法和语义要素)可以作如下定义:定义1报文格式、语义规范可以定义为一个“三元组”:Format=(GPF)(1)其中:(1)G是用扩展巴科斯范式(ABNF)[12]表示的上下文无关文法,这是IETF组织定义通信协议元语言符号的基本表示方法。一个典型的报文可表示为:ìíîG::=C1(C2|C3)[C4]C5C4::={C6|C7}*(2)符号Ci表示报文中第i个字段,字段之间的关系分为并列和嵌套两种。(2)P是字段Ci对应的属性集,即字段的语法{v1,v2,vr}和语义vs。其中,语法包括字段的宽度、相对位置、取值范围等;语义指字段本身的含义,如协议版本号、cookie、连续字段的长度等。(3)F是字段之间的语义约束,这种约束关系既可以存在于报文内部,也可以存在于报文之间。例如,长度字段语义约束可表示为:Cl.vs=length(CiCi+1Cj)(3)等式(3)表示长度字段的值是连续字段的字节数目。输入报文之间序号字段语义约束可表示为:Ii+1.Cj.vs=Ii.Cj.vs+1(4)其中,Ii表示第i个输入报文。等式(4)表示后续输入报文中序号字段的值是在前驱报文序号字段值的基础上增1。虽然针对报文之间的协议行为规范(时序要素)可以建模成很多不同的模型,例如Petri网络[13]或Planar语言[14]等,但是将行为规范建模成Chomsky语法层次结构中的有限状态机模型是最为标准和通用的[15]。在此,对协议行为规范作如下定义:定义2协议行为规范(协议有限状态机)可以定义为一个“六元组”:FSM=(QIOδλq0)(5)其中:Q={q0,q1,qk},是有限状态集合;I={i1,i2,im},是输入报文格式集合;O={o1o2on},是输出报文格式集合;δ:Q´I®Q,是状态转换函数;λ:Q´I®O,是输出函数;q0ÎQ,是初始状态。特别的,定义2中的协议有限状态机与经典自动机理论[16]中的相比存在两点不同:第一,所有状态都是可接受的,不存在拒绝状态;第二,所有正确报文序列的前缀都是可接受的,错误报文序列的前缀都是可接受的,只是最后一个输入报文被拒绝。在定义1与定义2的基础上,对协议规范挖掘问题作如下定义:定义3存在协议实体D以及与D通信的若干报文序列T1、T2、…、Tn。每个报文序列由若干报文组成,即Ti=P1P2P||Ti,其中Pi表示第i个报文,|Ti|表示Ti中报文的个数。P用二元组表示,即P=(dc),d表示相对于协议实体的方向,c表示报文内容。协议规范挖掘是指通过分析报文内容P.c或协议实体D处理P.c的指令序列,获得报文的格式、语义规范信息Format,并在此基础上,进一步获得协议状态机FSM的过程。由定义3可知,可以根据协议规范的作用域将此研究划分为两个层次:首先挖掘报文的格式规范和语义信息;然后推断协议行为规范,即协议有限状态机。其中,第一个层次是第二个层次的基础。本文的第二章和第三章分别介绍了这两个层次的研究现状,并对相关的技术作了分析和评价。2报文格式、语义挖掘报文格式规范、语义挖掘的目标是通过分析未知格式的报文数据或分析协议实体对报文数据的处理过程,获得报文的结构信息,并在此基础上推断报文中各个字段的语义信息。根据研究对象和应用场景的不同,可以将此研究大致分为两类:基于报文内容的分析和基于处理报文的指令序列分析[17]。2.1基于报文内容的研究基于报文内容的格式、语义挖掘工作其应用场景如图1所示。在协议实体A和B基于某种未知协议通信的过程中,使用wireshark[18]或tcpdump[19]等工具捕获通信的报文序列,并将这些无格式的报文内容作为数据样本。此类研究的理论依据在于每个报文样本是报文格式的一个实例,相同报文格式的多个样本具有一定的相似性。多组格式相同的报文实例协议实体A协议实体B协议通信流量报文分类报文序列图1报文数据采集过程22013,49(9)张钊,温巧燕,唐文:协议规范挖掘研究综述为获得报文之间的相似结构,Beddoe于2004年启动的协议信息工程(protocolinformationproject)[20]较早地开展了基于报文内容的格式挖掘研究工作,主要贡献在于将生物信息学中的多序列比对(MultipleSequenceAlignment,MSA)[21]算法引入到工程中,并尝试获得报文的结构信息[22]。在生物信息学中,通过对多个DNA序列进行比对,可以发现某序列片段的功能、结构和进化信息。具体地说,多序列比对针对给定的多个字符串,通过对每个字符串分别添加、删除字母或加入空格,使它们具有最大的相似性。一个简单的MSA算法示例如图2所示。与此类似,通过比对相同格式的不同报文实例,可以识别报文中的不变字段与可变字段,从而初步获得报文结构信息。针对实际应用中网络报文序列长、数量大的特点,在进行报文比对时需要消耗大量时间和计算资源的问题,Beddoe等人利用构造系统树的启发式方法引导多序列比对的执行,有效地降低了算法的时间复杂度,提高了执行的效率。然而,协议信息工程存在两点不足:第一,只能获得报文中可变字段与不变字段,不能获得字段的语义信息;第二,对于紧凑、简单的报文识别效果较好,对于复杂、冗余字段较多的报文,其效率和准确度较低。在协议信息工程的基础上,Leita等人在蜜网Honeyd配置脚本自动提取工具ScriptGen[23]中实现了部分字段的语义推断功能。具体地说,ScriptGen在初步划分字段之后,进一步对字段之间的约束关系进行了识别。并且每种约束关系对应一条识别规则,例如将会话标志字段定义为请求报文和应答报文中取值始终一致的字段。同时,ScriptGen还考虑了输入报文与输出报文之间的约束关系。针对特定环境下无法提供MSA算法所需要的大量报文样本的问题,Cui等人设计的RolePlayer[24]降低了对样本完备性的要求,研究重点在于识别报文结构中的特殊字段,如用户参数、长度字段等动态字段。然而,不足之处在于报文格式的挖掘效果依赖于先验知识的丰富程度,而且对于变长字段和嵌套结构较多的报文,格式挖掘的效果较弱。绝大多数协议的报文解析过程是一个从前向后,逐层分解的过程,而且前面的某个标志字段(例如长度字段、关键字字段等)会指示后面内容的解析规则。针对这个特征,Cui等人提出了以递归聚类为基础的格式、语义挖掘方案Discoverer[25]。该方案首先将报文内容分为文本片段和二进制片段两种类型,并采用基于类型的多序列比对算法对报文进行初始聚类。然后根据识别出的各个字段进行语义推断并根据推断出的语义信息进行后续报文内容的挖掘工作。重复这一过程,直到子类中的字节数目小于某个阈值。为避免对报文样本的过度聚类,Discoverer最后对格式、语义序列相似度高的子类进行合并。与协议信息工程相比,Discoverer在获得报文格式规范的基础上,实现了针对常见语义的启发式规则识别方法,从而能够获得通用协议字段的语义信息,例如长度字段、偏移字段、cookie等。实验结果表明Discoverer能够获得较为准确的格式规范和语义信息,但是语义的推断方法不通用。在协议报文中字段的取值范围是不同的,例如协议关键字,版本字段的取值范围有限;而参数字段的取值范围广泛。针对这个特征,Trifilo等人[26]提出了基于报文内容变化分布特征的报文格式挖掘方案。具体来说,首先以字节为单位获得每次会话过程中,每个字节在多个报文中取值的频率分布。然后以字节为单位获得多次会话过程中,每个字节的频率分布。根据频率分布推断出哪几个字节属于关键字或固定字段,哪几个字节属于参数字段。然而,这种方法存在两点不足:第一,有的字段宽度是变化的,如果在某个位置出现“错位”的情况,则后面的统计信息是没有意义的;第二,判断字段变化范围的阈值是经验值,缺乏客观性。本文建议针对第一个缺点先使用MSA方法进行比对,然后再作统计处理,这样会得到更为准确的信息。KruegerT等人也基于统计方法提出了一种可以有效推断语义信息的ASAP方法[27]。首先,分析报文中各个字节的分布并应用统计学上的t-test方法获得既不是常量也不是经常变化的字符串。其次,计算这些字符串之间的Pearson关联系数,从而将网络流量映射到向量空间。再次,使用矩阵分解法获得向量空间的基,并将其作为语义模板。最后,应用n-grams方法推断报文的通用格式和语义。与以前的字段语义挖掘方法相比,ASAP方法不局限于针对特定语义信息的推断,而是将语义挖掘过程进行理论抽象,从而具有更广泛的应用范围。此外,针对特殊格式的报文可以采用针对性的挖掘方法。Lin等人[28]针对标签对称匹配的树形嵌套结构的报文(如HTTP报文)采用了自上而下和自下而上的解析技术并利用栈的结构特点,对其报文格式进行了挖掘。Antunes等人[29]针对“命令:参数”格式的报文(如FTP报文)提出了一种基于偏序比对的自动机构造方法。这种方法将报文的解析过程看做是字符识别的过程,可以有效地挖掘出“命令:参数”出现顺序不一致的报文格式。虽然这类方法挖掘的结果较为准确,但是针对性强、应用范围有限,只能适用于典型的几种协议。2.2基于指令序列的研究基于指令序列的报文格式、语义挖掘工作的研究对象是协议实体处理报文的指令执行序列。这类研究的理论依据在于协议实体是按照格式规范对报文进行解析的。因此,通过监视协议实体对报文的处理过程以及各报文片段的使用方式,可以获得报文的结构以及语义信息。为了获得报文处理过程中使用的指令序列,当前的研究都是基于动态污点分析(taintdataanalysis)[30]技术的,它是一种在指令级别上对数据处理过程进行跟踪和分析的技术。A=ACAAGACAGCGTB=AGAACAAGGCGTA=ACAAGACA-GCGT|||||||||B=AGAACA-AGGCGT输入:输出:MSA算法图2多序列比对示例3