我的位置 首页  >  新闻动态  >  国内新闻

【科普】协议逆向分析技术

来源:科技成果转化中心时间:2019-07-12
      

协议是为数据交换而建立的一系列规则、标准和约定,在网络通信中扮演着重要的角色。协议规范是对网络协议语法、语义以及同步等信息的具体描述,是网络安全相关研究工作的重要基础,例如模糊测试利用协议规范指导测试用例的生成以提高有效性,入侵检测系统利用协议规范进行深度数据包检测以发现恶意流量等。对于标准协议而言,可以通过公开文档获取其协议描述。然而在实际环境中,大部分软件厂商和个人采用了私有协议来进行通信,且都不愿意公开协议细节,而大量恶意软件都采用自定义的私有协议实现网络通信。各类私有协议在网络中的广泛使用,给网络安全防护带来了极大的阻碍,于是以这些未知协议为主要分析对象的协议逆向分析技术便应运而生。

协议逆向分析技术是指在不依赖协议规范的情况下,通过对协议实体的网络输入输出、系统行为和指令执行流程进行监控和分析,提取协议格式以及状态机的过程。早期的协议逆向工作主要依赖人工分析,其效率和准确性取决于操作人员的专业知识水平,且周期较长。随着网络规模不断扩大,网络环境日益复杂,人工分析已不能满足实际需求,兼具效率与准确性的自动化协议逆向分析技术逐渐进入视线,并得到较广泛的应用。

协议逆向分析技术的主要目标是获取未知协议的协议规范,包括协议语法、语义以及同步信息。网络协议语法体现为数据报文中的控制信息和控制报文的结构、格式,协议语法定义了协议中每一个字段的关键词、数据类型、长度等,而各个字段的类型、长度和相互间的位置、顺序关系则构成了词法。网络协议语义定义了这些字段在协议解析过程中所表示的实际意义,如HTTP请求报文中的“Request-URI”字段标识了所请求的内容。对于协议语法、语义信息的推断包含于协议逆向分析的格式提取之中。协议同步描述了协议实体间的交互逻辑,指定了合法报文的传送顺序,通过特定的报文发送序列构成特定会话以实现所需的功能。

依据分析对象的不同,目前的协议逆向分析方法主要分为两类:基于网络流量的分析方法和基于指令执行轨迹的分析方法。

(1)基于网络流量的分析方法对截获的网络数据流进行分析,通过生物信息学、统计分析和数据挖掘等方法,对报文样本进行聚类分析,依据相同格式报文在取值上的相似性,分析获取协议语法、语义信息,并利用报文间的时序关系推断协议状态机。典型的基于网络流量的协议逆向分析方法有序列比对、n-gram语言模型和隐马尔科夫模型等方法,这种分析技术不依赖于特定平台,过程简单易于实现,但存在如下固有的局限性:第一,在仅提供正例的情况下,正则语言不可能通过学习得到。而报文样本集中都是协议格式的正例,因此通过网络流量分析无法得到绝对准确的协议格式;第二,对于采用加密和压缩机制的协议,报文字节的取值特征已被破坏,因而通过网络流量分析无法进行逆向;第三,网络流量分析的效果依赖于样本集的覆盖率,如果协议的状态在样本集中不存在则无法识别。

(2)基于指令执行轨迹的分析方法以协议解析过程中的指令执行轨迹为分析对象,将协议输入数据作为污点数据源,利用动态污点分析方法跟踪数据解析过程,依据协议解析程序如何使用污点数据以及相应的上下文信息获取协议规范。由于不受样本集完备性的限制,基于执行轨迹的分析技术其准确度要明显高于基于网络流量的分析技术,并且可以实现对加密协议的逆向。但该类技术依赖于对具体平台二进制指令的分析,实现过于复杂且难以移植,同时需要拥有协议终端的可执行程序,并要求依据协议解析环境进行分析,依赖于底层平台,无法移植,通用性不强,还需操作人员具备较高的专业水平。此外,作为基于执行轨迹的分析技术的前提条件,协议解析程序在很多环境下是无法获取的。

总而言之,基于网络流量的分析技术和基于执行轨迹的分析技术二者无法相互替代,各自具有优势。在应用时,需要根据特定需求和环境来选择何种技术路线。





       (科技成果转化中心供稿)