《一种私有协议分析与识别方法.pdf》由会员分享,可在线阅读,更多相关《一种私有协议分析与识别方法.pdf(10页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 (43)申请公布日 (21)申请号 201410628565.4 (22)申请日 2014.11.11 H04L 29/06(2006.01) (71)申请人 中国电子科技集团公司第三十研究 所 地址 610000 四川省成都市高新区创业路 6 号 (72)发明人 张李军 吉庆兵 于飞 兰天 陈曼 刘丹 罗杰 (74)专利代理机构 成都九鼎天元知识产权代理 有限公司 51214 代理人 杨永梅 (54) 发明名称 一种私有协议分析与识别方法 (57) 摘要 本发明涉及协议通信技术领域,本发明公开 了一种私有协议分析与识别方法,其具体为:步 骤一 :先将采用私有协议进行通信的。
2、客户端软件 进行脱壳处理 ;再对原始程序进行反汇编 ;然后 对其汇编代码中的关键函数进行动态调试 ;步骤 二:抓取该私有协议的网络流数据,并按协议交 互的不同阶段进行报文数据包分类,然后分别解 析出每类报文数据包的字段结构 ;步骤三 :对交 互过程中的协议特征进行提取和归纳 ;其中 :协 议特征包括交互过程信息和报文数据包的字段结 构特征 ;步骤四 :利用步骤三中所得到的协议特 征,设置协议识别的匹配表达式,对网络中获取到 的流量进行识别。通过上述方法实现了私有协议 的分析和识别。 (51)Int.Cl. (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页 说明书6页 。
3、附图2页 (10)申请公布号 CN 104506484 A (43)申请公布日 2015.04.08 CN 104506484 A 1/1 页 2 1.一种私有协议分析与识别方法,其具体包括以下的步骤 :步骤一 :先将采用私有协 议进行通信的客户端软件进行脱壳处理,得到脱壳后的原始程序 ;再对原始程序进行反汇 编,得到该原始程序的汇编代码 ;然后对其汇编代码中的关键函数进行动态调试,从而得 到该私有协议的报文类型的字段长度和构造特征 ;其中关键函数包括 :1. 报文数据包的 构造函数 ;2. 发送和接收报文数据包的函数 ;3. 加密和解密函数 ;步骤二 :抓取该私有协 议的网络流数据,并按协议。
4、交互的不同阶段进行报文数据包分类,然后分别解析出每类报 文数据包的字段结构 ;步骤三 :对交互过程中的协议特征进行提取和归纳 ;其中 :协议特征 包括交互过程信息和报文数据包的字段结构特征 ;步骤四 :利用步骤三中所得到的协议特 征,设置协议识别的匹配表达式,对网络中获取到的流量进行识别。 2.如权利要求 1 所述的私有协议识别方法,其特征在于所述脱壳的具体过程为 :首先 确定壳的类型 ;其次找出程序入口点,进而将内存中的进程数据抓取出来转存为文件格式, 调整并对齐相对虚拟地址和文件地址 ;最后修复转存文件的输入地址表,形成最终脱壳后 的原始程序。 3.如权利要求 2 所述的私有协议的识别方法。
5、,其特征在于所述步骤二中的协议交互的 不同阶段具体通过以下的方式得到 :对报文数据包进行聚类分析,通过提取报文数据包的 字段结构特征将报文数据包归类为协议交互的不同阶段,从而明确该协议的交互过程有几 个阶段。 4.如权利要求 3 所述的私有协议的识别方法,其特征在于所述报文数据包的字段结构 特征具体采用递归聚类的解析方法得到。 5.如权利要求 4 所述的私有协议的识别方法,其特征在于所述递归聚类的解析方法具 体为 :首先对报文样本集进行基本块序列的划分,然后对同类型的基本块进行多序列比对, 从而得到所有可能的子字段划分和特征标识,最后利用递归算法的回溯过程确定最有可能 正确的字段结构划分,从而。
6、完成报文数据包结构解析和特征提取。 6.如权利要求 5 所述的私有协议的识别方法,其特征在于所述方法还包括在完成聚类 分析后,进行污点数据的指令分析。 7.如权利要求 6 所述的私有协议的识别方法,其特征在于所述污点数据的指令分析的 具体过程为 :挑选出协议的每个交互阶段的一条报文数据进行标识,被标示的报文称为污 点数据,然后利用对协议软件的动态调试的方法对这条数据的处理过程进行跟踪,利用协 议实体本身的解析过程得到该报文的数据格式 ;其中对这条数据的处理过程所选取的指令 包括软件的报文数据包接收函数和解密函数的指令。 8.如权利要求 6 所述的私有协议的识别方法,其特征在于所述步骤三具体为 。
7、:根据步 骤二得到的信息,进一步对协议特征进行提取和汇总 ;协议特征包括交互过程信息和报文 数据包的格式特征,逐个对解析出的字段记录其特征,先记录下固定字段的特征,对可变的 字段部分采用机器学习对其特征进行样本集的学习和挖掘,提取出与这些可变字段相关的 信息。 9.如权利要求 8 所述的私有协议的识别方法,其特征在于所述步骤四具体为 :首先根 据报文数据包格式特征对数据流量进行筛选,忽略不符合该协议的报文数据包 ;然后在剩 下的报文数据包中按照协议交互过程的特征进行判断,若网络流报文数据包的聚类符合交 互过程,则属于目标协议,否则不属于目标协议。 权 利 要 求 书CN 104506484 A。
8、 1/6 页 3 一种私有协议分析与识别方法 技术领域 0001 本发明涉及协议通信技术领域,尤其涉及一种私有协议分析与识别方法。 背景技术 0002 协议规范是进行网络通信的必要条件,也是网络安全技术和网络监管的基础,如 模糊测试,漏洞挖掘,入侵检测,协议重用,流量审计等关键技术都依赖于协议的详细描述 信息。当前互联网承载了P2P、VoiP、IPTV、流媒体、网络游戏、文件共享等越来越多的新的应 用,它们所使用的网络协议大多是未公开的。人们对这些私有协议开展了分析和识别研究, 分析目标是恢复协议规范的报文格式和交互过程,并进一步利用所得到的协议特征进行识 别,判断出具体的协议名称。 0003。
9、 协议分析方面,最早的研究是 Marshall Beddoe 在 2004 年启动的 PI 项目中通过 引入生物信息学的序列比对算法对目标协议的结构进行分析,但该算法对样本集数量有很 高的要求。Cui 等人提出的 RolePlayer 方法主要用于分析报文结构中用户参数、状态标 识和长度等动态字段,但不对协议的完整结构进行分析。观察到报文结构解析是一个层次 化的过程,逐层解析时通常有一些格式标识字段决定了子结构的解析方式,该团队进一步 提出了以递归分类为核心的协议分析方案 Discoverer。Caballero 等人于 2007 年首次提 出采用动态污点的协议分析方法,并设计了相应的原型系统。
10、 Polyglot,该系统采用离线的 方式对报文格式中的分隔符、定位符和关键字进行分析和识别。在 Polyglot 的基础上, Wondracek 基于多次监控的分析结果,将所有格式相同的报文进行语义信息融合,从而提出 了一种改进方案。国内的学者李伟明在 PI 的基础上,提出了自动化网络协议模糊测试的方 案,采用类型匹配提取和多序列比对算法推断报文中的文本字段、二进制字段和长度字段, 但由于没有考虑字段序号等约束语义,该方案并不能保证所生成的模糊测试数据绝对有 效。何永君等人对基于指令序列的协议分析方法进行了研究,开发了在动态二进制分析平 台 DynamoRIO 上的原型系统 UNPRE。 0。
11、004 协议识别方面,最早的方法是基于协议所使用的端口进行识别,但由于现在多数 新出现的应用已经不再采用固定端口,该方法的准确率已经低于 50%,识别算法的错误率 高。2002年至2004年主要研究的是基于协议载荷内容特征的识别方法,通过详细分析目标 应用协议,找出协议在交互过程中所特有的字段作为特征,再以此特征去匹配网络流进行 识别。该方法虽然准确率高,但需要消耗大量的人力和系统资源去发现协议特征,工作量过 于庞大。2007 年以后,研究主要集中在将机器学习的方法引入到协议识别领域,利用对协 议交互流量数据的机器学习过程辨别出协议之间的差异,然后利用这些差异性进行协议识 别。该方法的准确率较。
12、高,而且可以解决大量标注数据的问题。值得注意的是,由于协议识 别本质上是根据对协议规范的特征进行提取而实现的,因此对私有协议来说,协议分析是 进行协议识别的基础。 0005 当前针对私有协议分析和识别方法主要存在以下问题 : (1) 协议分析和识别的准确性不高。由于当前的网络应用协议一般都比较复杂,现有 说 明 书CN 104506484 A 2/6 页 4 的方法只能恢复出报文格式的少量信息,进而影响了协议识别阶段的准确性。 0006 (2)难以对加密协议进行分析和识别。现有方法主要针对私有的非加密协议进行 分析,由于加密协议对协议载荷甚至字段结构等进行了加密处理,现有方法难以适用。 000。
13、7 (3)分析时所依赖的样本集数量较大,时空复杂度高。在对报文格式进行提取时, 特别是对长报文的情况,字段结构的解析往往需要大量的报文样本集。而指令序列的分析 方法由于指令较多,由此带来处理过程复杂,时间和空间需求较大。 0008 (4)缺乏完整的方法,难以对以后新出现的协议开展分析和识别。现有的方法大多 只关注分析和识别流程的一个部分,没有提出整体的识别方法。此外,这些方法一般针对某 种具体类型的协议进行分析,缺乏通用性。 发明内容 0009 针对现有技术中的协议识别方法存在的不能识别私有的加密协议的技术问题,本 发明公开了一种私有协议分析与识别方法。 0010 本发明公开了一种私有协议分析。
14、与识别方法,其具体包括以下的步骤 :步骤一 : 先将采用私有协议进行通信的客户端软件进行脱壳处理,得到脱壳后的原始程序 ;再对原 始程序进行反汇编,得到该原始程序的汇编代码 ;然后对其汇编代码中的关键函数进行动 态调试,从而得到该私有协议的报文类型的字段长度和构造特征 ;其中关键函数包括 :1. 报文数据包的构造函数 ;2. 发送和接收报文数据包的函数 ;3. 加密和解密函数 ;步骤二 : 抓取该私有协议的网络流数据,并按协议交互的不同阶段进行报文数据包分类,然后分别 解析出每类报文数据包的字段结构 ;步骤三 :对交互过程中的协议特征进行提取和归纳 ; 其中 :协议特征包括交互过程信息和报文数。
15、据包的字段结构特征 ;步骤四 :利用步骤三中 所得到的协议特征,设置协议识别的匹配表达式,对网络中获取到的流量进行识别。 0011 更进一步地,上述脱壳的具体过程为 :首先确定壳的类型 ;其次找出程序入口点, 进而将内存中的进程数据抓取出来转存为文件格式,调整并对齐相对虚拟地址和文件地 址 ;最后修复转存文件的输入地址表,形成最终脱壳后的原始程序。 0012 更进一步地,上述步骤二中的协议交互的不同阶段具体通过以下的方式得到 :对 报文数据包进行聚类分析,通过提取报文数据包的字段结构特征将报文数据包归类为协议 交互的不同阶段,从而明确该协议的交互过程有几个阶段。 0013 更进一步地,上述报文。
16、数据包的字段结构特征具体采用递归聚类的解析方法得 到。 0014 更进一步地,上述递归聚类的解析方法具体为 :首先对报文样本集进行基本块序 列的划分,然后对同类型的基本块进行多序列比对,从而得到所有可能的子字段划分和特 征标识,最后利用递归算法的回溯过程确定最有可能正确的字段结构划分,从而完成报文 数据包结构解析和特征提取。 0015 更进一步地,上述方法还包括在完成聚类分析后,进行污点数据的指令分析。 0016 更进一步地,上述污点数据的指令分析的具体过程为 :挑选出协议的每个交互阶 段的一条报文数据进行标识,被标示的报文称为污点数据,然后利用对协议软件的动态调 试的方法对这条数据的处理过程。
17、进行跟踪,利用协议实体本身的解析过程得到该报文的数 据格式 ;其中对这条数据的处理过程所选取的指令包括软件的报文数据包接收函数和解密 说 明 书CN 104506484 A 3/6 页 5 函数的指令。 0017 更进一步地,上述步骤三具体为 :根据步骤二得到的信息,进一步对协议特征进行 提取和汇总 ;协议特征包括交互过程信息和报文数据包的格式特征,逐个对解析出的字段 记录其特征,先记录下固定字段的特征,对可变的字段部分采用机器学习对其特征进行样 本集的学习和挖掘,提取出与这些可变字段相关的信息。 0018 更进一步地,上述步骤四具体为 :首先根据报文数据包格式特征对数据流量进行 筛选,忽略不。
18、符合该协议的报文数据包 ;然后在剩下的报文数据包中按照协议交互过程的 特征进行判断,若网络流报文数据包的聚类符合交互过程,则属于目标协议,否则不属于目 标协议。 0019 通过采用以上的技术方案,本发明的有益效果为 :该方法能通用地分析和识别私 有的加密和非加密协议,弥补了以前的同类方法只能用于识别非加密协议的缺点通过对 加解密函数的分析,使得能够解密报文数据中的密文字段部分,从而将加密协议转化为难 度相对较低的非加密协议进行分析。 0020 可能行压缩和加密操作关键函数进行动态调试,该方法能有效地分析和识别不同 加密程度的私有协议,适用于分析协议数据部分加密或全部加密的情况。该方法实现简单,。
19、 准确性较高,并且具有分析和识别过程仅需要较少的网络流数据包的优点,按协议交互的 不同阶段进行报文数据包分类,然后分别解析出每类报文数据包的字段结构,由于网络协 议交互过程的种类有限,因此识别阶段只需要较少的报文数据包即可完成结果的识别。该 方法提供了一套私有协议分析和识别的方法,能用于分析将来出现的私有协议。 附图说明 0021 图 1 为本发明的私有协议的识别方法的流程图。 0022 图 2 为软件实体逆向分析及结果的流程图。 0023 图 3 为网络流数据分析流程及结果的流程图。 0024 图 4 为协议特征提取过程及结果的流程图。 0025 图 5 为协议识别过程及判断结果的流程图。 。
20、具体实施方式 0026 下面结合说明书附图,详细说明本发明的具体实施方式。 0027 本发明公开了一种私有协议分析与识别方法,其具体包括以下的步骤 : 步骤一 :先将采用私有协议进行通信的客户端软件进行脱壳处理,得到脱壳后的原始 程序 ;再对原始程序进行反汇编,得到该原始程序的汇编代码 ;然后对其汇编代码中的关 键函数进行动态调试,从而得到该私有协议的报文类型的字段长度和构造特征 ;其中关键 函数包括 :1. 报文数据包的构造函数 ;2. 发送和接收报文数据包的函数 ;3. 加密和解密 函数。对于加密协议的分析,该步骤是得到协议数据字段划分及其特征的方法,通过该步骤 至少可以解析出协议数据包中。
21、一部分数据字段的结构,比如长度和格式特征,一方面这可 以为后续网络流数据分析(步骤二)中的整条协议数据的解析提供必要字段格式划分参考 模板,从而帮助完成整条数据的协议格式规范标注。另一方面,所得到的报文类型和结构特 征也可用于和后续抓取的实际的网络流数据包进行比对,提高协议格式恢复的准确性。这 说 明 书CN 104506484 A 4/6 页 6 些经过比对后相符的协议特征就可以加入步骤三中所要提取的目标特征集,最终用于对以 后获取的协议数据进行识别。步骤二 :抓取该私有协议的网络流数据,并按协议交互的不同 阶段进行报文数据包分类,然后分别解析出每类报文数据包的字段结构 ;步骤三 :对交互 。
22、过程中的协议特征进行提取和归纳 ;其中 :协议特征包括交互过程信息和报文数据包的字 段结构特征 ;步骤四 :利用步骤三中所得到的协议特征,设置协议识别的匹配表达式,对网 络中获取到的流量进行识别。本发明能够识别出私有的加密协议,弥补了以前的同类方法 只能用于识别非加密协议的缺点。加解密函数是私有加密协议分析中最重要的部分,实验 表明,多数加密协议的数据加解密部分和报文构造、发送和接受部分是相互独立的。对这类 函数的分析使得解密报文数据中的密文字段部分,从而将加密协议转化为难度相对较低的 非加密协议进行分析。 0028 如图 1 所示的本发明的私有协议的识别方法的流程图。该方法主要包括如下四个 。
23、步骤 :步骤一、对协议实体进行逆向分析 ;步骤二、网络流数据分析、步骤三、协议特征提取 和归纳 ;步骤四、协议流量数据识别。 0029 步骤一 :对协议实体进行逆向分析,获取协议数据处理的关键函数和交互信息。协 议在运行过程中总是存在报文的交互过程,这具体是由协议实体负责完成的。在网络环境 下协议实体主要是指该协议的客户端和服务器软件,由于服务器端软件不太容易获得,因 此我们主要对协议的客户端软件进行逆向分析。逆向分析的主要工作内容有三个方面(如 图 2 所示的软件实体逆向分析及结果的流程图): (1)对软件进行脱壳处理。 0030 对于目前大多数的网络应用软件,软件开发者一般都会对这些软件进。
24、行加壳处 理。加壳的原理就是在原程序上附上一段额外的代码,采用某种算法对原程序进行压缩和 加密,并改变程序的执行入口点。加壳后的软件代码变化很大,无法直接采用反汇编方式获 取原程序的执行代码进行分析,因此必须进行脱壳。脱壳就是将加壳后的程序解压或者解 密,使程序从原始入口点开始运行。脱壳的步骤首先是利用 PEID 或者 FI 或者 PESCAN 等查 壳工具确定壳的类型。其次,根据程序实现语言的代码特征找出程序入口点,进而将内存中 的进程数据抓取出来转存为文件格式,调整并对齐相对虚拟地址和文件地址。最后修复转 存文件的输入地址表,形成最终脱壳后的原始程序。 0031 (2)对软件进行反汇编分析。
25、 得到脱壳的软件后,就可以利用 IDAPRO 等反汇编工具对软件进行反汇编,得到程序的 汇编代码,然后进行分析。这里需要重点定位三类函数,一是报文数据包的构造函数,二是 发送和接收报文数据包的函数,三是加密和解密函数,分析前两类函数,其目的是找出与之 相关的函数调用关系以及所使用的操作系统接口函数等关键信息。第三类加解密函数是私 有加密协议分析中最重要的部分,实验表明,多数加密协议的数据加解密部分和报文构造、 发送和接受部分是相互独立的。对这类函数的分析使得解密报文数据中的密文字段部分, 从而将加密协议转化为难度相对较低的非加密协议进行分析。 0032 (3)对关键函数进行动态调试。 0033。
26、 利用 IDAPRO 工具提供的强大的动态调试功能,对这三类函数进行动态的跟踪调 试,从而弄清协议产生的各种类型的报文数据包的构造过程和字段信息。其中较为重要的 是跟踪协议对加解密函数的调用信息,找出密钥的产生和使用过程,从而进一步得到协议 说 明 书CN 104506484 A 5/6 页 7 对加密后将要发送的报文数据包的信息。对这三类函数的动态调试可以得到协议的不同报 文类型的字段长度和构造特征,并且可以用于分析私有的加密协议。 0034 步骤二 :抓取协议的网络流数据进行分析,获得协议的交互阶段以及报文字段结 构的划分信息(如图 3 所示的网络流数据分析流程及结果的流程图)。该步骤主要。
27、对网络流 依次进行两种类型的分析,第一种是对这些报文数据包进行聚类分析,目标是通过提取这 些报文数据包的字段结构特征将这些报文数据包归类为协议交互的不同阶段,从而明确该 协议的交互过程有哪几个阶段,这也是协议的重要特征。比如对一个典型的网络即时通讯 协议,交互的阶段可分为用户登录验证阶段和随后的聊天数据通讯阶段。实际中,由于报文 数据包字段结构特征提取是一个逐层解析的过程,即子字段的解析由上一个级别的字段结 构解析决定,因此我们主要采用递归聚类的解析方法。递归聚类的方法首先对报文样本集 进行基本块序列的划分,然后对同类型的基本块进行多序列比对方法得到所有可能的子字 段划分和特征标识,最后利用递。
28、归算法的回溯过程确定最有可能正确的字段结构划分,从 而完成报文数据包结构解析和特征提取。第一种分析完成后,我们就可以开展第二种分析, 即污点数据的指令分析。挑选出协议的每个交互阶段的一条报文数据进行标识(称为污点 数据),然后利用对协议软件的动态调试的方法对这条数据的处理过程进行跟踪,利用协议 实体本身的解析过程为我们得到报文的数据格式提供帮助,这其中我们选取的指令主要是 软件的报文数据包接收函数和解密函数的指令。对于加密协议而言,该方法能发现软件解 密函数的调用实施过程并获取到解密后的报文信息,从而适用于对加密协议的分析。与传 统的网络流分析和指令分析方法相比,我们的方法有两个优点 :第一,。
29、由于在对网络流量的 报文进行递归聚类的分析阶段仅需要判断出报文属于哪一个协议交互阶段,而不同阶段的 报文一般具有明显的特征差别,因此很大程度上降低了对网络流量报文数据包的样本集需 求量。第二,指令序列并不需要该软件的全部指令,而只是重点关注接收函数和解密函数的 指令。此外,对要分析的报文,仅仅是选择不同交互阶段的一个报文数据包进行分析,这就 大大减少了需要调试和跟踪的指令数量,降低了实现的复杂度。 0035 步骤三 :对协议特征的进行提取和归纳(如图 4 所示的协议特征提取过程及结果 的流程图)。根据步骤二得到的信息,进一步对协议特征进行提取和汇总。协议特征包括交 互过程信息,比如交互轮数,每。
30、轮双方所发的报文数据包个数等,然后就是报文数据包的格 式特征,我们逐个对解析出的字段记录其特征,先记录下固定字段的特征,对可变的字段部 分我们采用机器学习对其特征进行样本集的学习和挖掘,从而提取出与这些可变字段相关 的信息,比如可变字段的长度范围,取值范围等。由于给予机器学习的样本集已经是明确的 某个交互阶段的报文数据包集合,因此可以采用有监督的机器学习方法。该方法利用同类 型的网络流报文数据包作为训练样本集,并提取网络流数据的统计特征,得到的结果准确 性高。在训练过程中,可以利用特征过滤或特征选择算法求出对协议识别最有效的特征组 合,减少算法学习时所需要的数据量和执行时间,并能提高下一步进行。
31、识别的正确性。 0036 步骤四 :进行协议流量数据的识别。根据步骤三中所得到的协议特征,设置协议识 别的匹配表达式,对网络中获取到的流量进行识别。整个识别过程如图 5 所示的协议识别 过程及判断结果的流程图。具体为首先根据报文数据包格式特征对数据流量进行筛选,忽 略不符合该协议的报文数据包。然后在剩下的报文数据包中按照协议交互过程的特征进行 判断,若网络流报文数据包的聚类符合交互过程,则属于目标协议,否则不属于目标协议。 说 明 书CN 104506484 A 6/6 页 8 由于网络协议交互过程的种类有限,因此识别阶段只需要较少的报文数据包即可完成结果 的识别。 0037 上述的实施例中所给出的系数和参数,是提供给本领域的技术人员来实现或使用 发明的,发明并不限定仅取前述公开的数值,在不脱离发明的思想的情况下,本领域的技术 人员可以对上述实施例作出种种修改或调整,因而发明的保护范围并不被上述实施例所 限,而应该是符合权利要求书提到的创新性特征的最大范围。 说 明 书CN 104506484 A 1/2 页 9 图1 图2 图3 图4 说 明 书 附 图CN 104506484 A 2/2 页 10 图5 说 明 书 附 图CN 104506484 A 。