工控和物联网领域存在大量私有协议或非标通信协议,对这类协议进行分析与测试十分困难。为此,CNCERT自主研发了一款网络协议逆向分析工具——NetPRA,从而使集成了NetPRA的Acheron具备了私有协议自动化逆向分析和灰盒测试的能力。单独编译的NetPRA软件即将开放试用。

NetPRA既支持基于离线PCAP数据包的逆向分析,也支持基于在线网络流量的增量式实时逆向分析。NetPRA提供可视化的数据分组分析功能,用户可以设置各种过滤条件,采用类Wireshark设计模式,用户零学习成本。对于捕获或导入的协议分组,采用数据挖掘、关联分析、概率统计等方法,对协议数据所呈现的字段域的位置、长度及数据的前后转换关系等进行定位和分析,最终解析出协议的报文结构、字段含义、状态信息、上下文关系等,并以图形化方式展示给用户。

图1 NetPRA协议逆向分析流程

测试工具可根据协议的自动化逆向结果,基于当前主流的模糊测试框架(如Peach、Acheron等),自动生成的模糊测试脚本,并自动调用相应的模糊测试工具,对工控和物联网设备进行测试,最后生成测试报告。

图2 NetPRA工作流程

NetPRA具有五大特点

1. 跨平台

NetPRA协议逆向分析工具采用Python和Java作为开发语言,具有良好的跨平台特性,可适用于Windows、Linux等操作系统。

2. 功能全

NetPRA提供了从分组俘获、分组过滤、数据预处理、格式划分、语义推理、状态机推断、测试脚本生成等涉及工控协议逆向的一系列功能,提供了协议分析一站式服务。

3. 响应快

NetPRA一方面采用基于数据挖掘的预处理方法,降低了协议匹配分析的开销,另一方面采用增量式分析方法,有效提高了协议分析的响应速度,改善了用户体验。

4. 结果准

NetPRA充分利用了用户的先验知识,并将其与将机器学习等智能分析方法相结合,有效提高了协议分析结果的准确性。

5. 上手快

NetPRA提供了用户友好的图形化界面,所有协议分析过程都以图形化显示,使用直观方便,易于用户操作。

协议逆向分析技术科普

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

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

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

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

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

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

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

声明:本文来自工业互联网安全应急响应中心,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。