基于Peach的工业控制网络协议安全分析
伊胜伟 , 张翀斌 , 谢丰 , 熊琦 , 向憧 , 梁露露     
中国信息安全测评中心, 北京 100085
摘要:模糊测试技术是发现未公开漏洞的重要技术手段之一。该文基于Peach提出了工业控制网络协议的安全分析方法。该方法采用变异策略,构造畸形网络数据包,发送给被测目标进行测试,在测试过程中监测被测目标工控网络协议的运行状况,发现网络异常并进行异常分析。该方法以一种公开的大范围使用的工业控制网络协议Modbus TCP为例分析了其安全性。实验结果表明,该方法在工业控制网络协议的安全漏洞挖掘方面是有效的。
关键词工业控制系统     工业控制网络协议     Peach     模糊测试     漏洞分析    
Security analysis of industrial control network protocols based on Peach
YI Shengwei, ZHANG Chongbin, XIE Feng, XIONG Qi, XIANG Chong, LIANG Lulu     
China Information Technology Security Evaluation Center, Beijing 100085, China
Abstract:Fuzzing tests are important for discovery of unknown vulnerabilities and risks. A security analysis method was developed for industrial control networks using the Peach fuzzing framework. The system uses the mutation strategy by fabricating abnormal network packets, sending these packets to the target and then executing tests. The tests monitor the status of the industrial control network protocols. The system then identifies exceptions in the industrial control network protocols. Modbus TCP, a widely used industrial control network protocol is analyzed as an example using a fuzzy Modbus TCP protocol. The results show that this method can effectively identify vulnerabilities in industrial control network protocols.
Key words: industrial control systems     industrial control network protocols     Peach     fuzzing test     vulnerability analyses    

工控系统广泛应用于石油化工、电力、轨道交通、航空航天、供水和污水处理、燃气供应等关键基础设施中,是关键基础设施的大脑和中枢神经,具有至关重要的作用。工业控制网络协议是工控系统得以实现远程控制的必要基础。工业控制网络协议能够实现上位机和下位机之间的网络通信,从而降低建设成本,实现工业控制网络通信的通用性,提高其适应性。

在工业控制网络系统的结构上,不同的组织机构提出了不同的结构模型。ISA99(the interna-tional society automation)提出了5层的工业控制系统结构参考模型[1],从上至下的第4至0层依次为企业系统层、运营管理层、监视控制层、本地控制层、现场设备层。在第1和2层之间以及第2和3层之间采用了工控网络协议进行通信。

工业控制网络协议种类很多,按照是否公开可以分为公开和私有专用的工控网络协议(一般来说是与具体厂商及产品相关的)。其中公开的工控网络协议可以按照行业的主要适应性进行划分[2-3]: 电力行业配电网通信的IEC60870-101/104协议(主从站通信)、IEC61850协议、DNP3协议(主从设备间通信)和ICCP(主站间通信); 石油化工行业和制造行业的Modbus TCP、Profinet协议族; 管道数据传输的Ethernet/IP协议; 轨道交通行业和制造行业的MMS协议; 用于工控网络协议转换和数据采集的OPC协议等。本文将研究公开的工控网络协议的安全分析。

模糊测试技术是安全测试技术的一种,通过构造畸形输入数据使得软件发生异常如崩溃等情况,从而发现软件中存在的安全问题。模糊测试技术可以用于对文件、ActiveX控件、网络协议等进行安全测试,发现其存在的畸形输入数据导致的格式错误或者应用逻辑错误等[4]。由于模糊测试技术具有可以充分遍历所有输入数据、代码覆盖全面、测试自动化、能够有效地发现软件中存在的安全问题等特点,受到信息安全中漏洞分析领域的研究人员的广泛欢迎。

模糊测试技术首先由Miller[5]提出,通过随机构造畸形输入数据,对UNIX程序进行模糊测试,发现了UNIX程序中存在的漏洞。1999年,针对网络协议,芬兰Oulu大学开发了PROTOS安全测试工具,可以根据网络协议规范,对网络协议进行格式解析,从而构造正常网络数据包,并在此基础上,依据相应的变异策略,对网络协议中的相关字段进行变异,生成畸形数据,构造畸形网络数据包,从而对网络协议开展模糊测试工作[6]。为了进一步提高对网络协议的模糊测试的效率,研究人员提出了基于块(block)的模糊测试工具SPIKE,将网络协议描述为一个数据块,并采用相关变异策略生成随机数据填充网络协议数据块,构造畸形网络数据包,提高了畸形网络数据包的生成效率[7-8]。Sulley[9]和Peach[10]也可以针对网络协议进行模糊测试。刘奇旭等[11]研究了FTP网络协议的模糊测试技术。Tong等[12-16]研究了数据集中的频繁模式。Yi等[17-18]研究了数据集中的生成器模式。

本文对工控网络协议模糊测试技术进行了综述分析,介绍了开源模糊测试框架Peach的结构及其组成部分,提出了一种面向工业控制网络协议的安全分析方法,并以公开的工控网络协议Modbus TCP为例进行了实验,结果表明该方法是有效的。

1 Peach结构

软件的模糊测试技术是指: 构造一组随机数据作为程序的输入,在程序运行过程中,采用监视器监视其运行过程,并记录其运行异常和造成该异常的输入数据,从而确定软件中存在的发生异常的位置。

网络协议的模糊测试技术是指: 根据网络协议规范格式或者捕获的网络协议通信数据,构造异常数据报文,然后将异常数据报文发送给网络协议被测试目标,采用监测网络指令数据探测目标服务器的存活性,从而监测网络协议程序的异常情况,并记录异常和产生该异常的网络协议输入数据。

Peach模糊测试工具是一个开源的模糊测试框架[10],包括数据模型(数据类型、变异器接口等)、状态模型(数据模型接口、状态、动作—输入输出等)、代理器(包括本地调试器如WindowsDebugger和网络监视器如PcapMonitor等)、测试引擎(代理器接口、状态模型接口、发布器、日志记录器等),如图 1所示。

图 1 Peach模糊测试工具体系结构

图 1的Peach模糊测试工具体系结构包括数据模型、状态模型、代理器、测试引擎等核心模块,与数据模型交互的还有变异器模块和生成器模块。

1) 数据模型: 用来表示输入和输出所需要的数据结构。可以根据需要构造数据模型。数据模型中,用户可以设置数据变量,可以为该数据变量指定数据类型如字符串类型、整数类型等,还可以设置数据变量的数值,并根据变异器的接口指定该变量是否执行变异操作。数据模型中还可以设置数据块,一个数据块可以包括多个数据变量。数据变量之间还可以设置关系,例如size of类型的关系等。

2) 变异器: 包括变异策略,不同数据类型的变异策略不同。

3) 生成器: Peach生成器能够生成字符串数据、整型数值数据等简单类型的数据,还可以生成复杂的分层的二进制数据,还可以将简单的数据生成器串接起来生成更加复杂的数据类型的数据。

4) 状态模型: 在每一个测试用例中,根据状态模型,Peach根据用户配置初始化状态机,并维护该有限状态机,每个状态包括一个或者多个操作。每个状态中,Peach状态机会顺序地执行每个操作。用户可以为操作设置相应的执行条件。当一个状态中所有操作执行结束后还是维持当前状态,则该状态机执行结束。

5) 代理器: 在Peach模糊测试过程中,Peach测试引擎与Peach代理器进行通信,从而对被测目标进行状态监视并对其进行执行控制。用户必须为Peach代理器设置一个Peach监视器,从而对被测程序进行状态监视,并进行执行控制如启动被测程序或者停止被测目标程序。每次测试迭代或者测试子用例执行完毕,Peach代理器将把Peach监视器监视的被测目标程序的异常状态信息(如崩溃)返回给Peach测试引擎,如果被测目标程序正常执行结束,那么将返回正常结束标志信息给Peach测试引擎。

6) 测试引擎: 采用Peach解析器解析用户输入的配置文件(一般为pit格式的文件),根据配置文件创建相应的组件并进行初始化如对状态模型的状态机进行初始化,然后Peach测试引擎进入执行测试用例的主循环。测试引擎中的发布器可以对任意的生成器提供透明的接口,常见的发布器有文件发布器或者TCP网络发布器等,发布器是针对所生成的数据的一种传输形式。用户(二次开发人员或使用人员)可以将自己的生成器连接到不同的输出中。日志记录器可以设置日志的路径和文件名,并将测试执行过程中的状态信息记录到日志文件中。

2 工控协议安全分析方法

工业控制网络协议的模糊测试通过构造畸形数据包,并将畸形数据包发送给被测工控目标,从而测试工业控制网络协议的安全性。

针对工业控制网络协议的安全分析问题,本文提出了一种工控网络协议安全分析方法,其工作原理如下:

1) 根据工业控制协议规范或者捕获的工业控制网络协议数据流量,构造被测试工业控制网络协议的正常的数据包;

2) 分析该正常的网络协议数据包的每个字段的重要性;

3) 根据不同的数据类型,设计有效的变异策略,按照重要性的高低对正常的工业控制网络协议数据包的相关字段依次进行替换,从而构造畸形的数据包;

4) 设计并实现工业控制网络协议数据包发包工具;

5) 设计并实现代理器及监视器;

6) 采用发包工具,将畸形数据数据包发送给被测试工控目标;

7) 采用监视器探测被测试工控目标在测试过程中的反应,并进行异常数据记录,同时,在必要的情况下(如异常级别比较高),抓取工业控制网络数据流量。

工控网络协议安全分析方法的流程如图 2所示。

图 2 工业控制网络协议的安全分析方法

该方法是建立在Peach的基础上,并且以pit文件为基础。Peach模糊测试框架采用XML语言进行了数据定义,称为Peach pit file文件,是用户配置的用于文件或者网络协议进行模糊测试的配置文件。针对不同工控网络协议格式规范所形成的pit文件,可以开展工控网络协议的模糊测试工作。

3 实 验

为了验证本文所提出的基于Peach的工业控制网络协议安全分析方法的有效性,以Modbus TCP协议为例进行了实验和分析。采用ModbusSim仿真器,验证了Modbus TCP的常见的功能码的安全性。并在支持Modbus TCP工业控制网络协议的实际的工控设备上进行了实验,已经在某2款PLC设备中发现了未公开漏洞各1个。

以0x01功能码(读线圈)为例,构造 Modbus TCP的pit文件,如图 3所示。

图 3 Modbus TCP协议0x01功能码pit文件

在构造了Modbus TCP协议的0x01功能码的pit文件之后,在ModbusSim仿真环境中,因为模糊测试工具和被测目标在同一台计算机上,所以目标IP地址为127.0.0 .1 。模糊测试执行命令如图 4所示。

图 4 模糊测试执行命令

执行图 4中的模糊测试执行命令之后,模糊测试执行过程如图 5所示。

图 5 采用ModbusSim仿真器测试Modbus TCP协议0x01功能码安全性的执行过程

图 5的模糊测试执行过程表明,使用图 3的测试代码,以ModbusSim仿真器为测试目标对象,基于模糊测试技术,可以开展Modbus TCP协议0x01功能码的安全性测试。

在实际的工业控制系统网络环境中,采用Wireshark工具捕获网络通信数据,可以分析在Modbus TCP协议的0x01功能码模糊测试执行过程中的网络通信数据是否正常。当出现网络通信数据异常如通信中断时,就表明被测试目标对象的Modbus TCP协议通信模块存在着安全异常,可以根据通信中断时所采用的测试用例进行异常定位分析。

4 结 论

本文在基于Peach模糊测试框架的研究的基础上提出了工业控制网络协议的安全分析方法,并以一种公开的大范围使用的工业控制网络协议Modbus TCP为例,分析了其安全性,并采用本文提出的安全测试方法对该工业控制网络协议进行了安全测试。实验结果表明该方法在工业控制网络协议的安全漏洞挖掘方面是有效的。

参考文献
[1] ISA99 Committee. ISA99 committee on industrial automation and control systems security[Z/OL].[2015-05-10]. http://isa99.isa.org/ISA99%20Wiki/Home.aspx.
[2] 熊琦, 彭勇, 伊胜伟, 等. 工控网络协议Fuzzing测试技术研究综述[J]. 小型微型计算机系统, 2015, 36(3): 497–502. XIONG Qi, PENG Yong, YI Shengwei, et al. Survey on the fuzzing technology in industrial network protocols[J]. Journal of Chinese Computer Systems, 2015, 36(3): 497–502. (in Chinese)
[3] 李鸿培, 于旸, 忽朝俭, 等. 2013工业控制系统及其安全性研究报告[R]. 北京:绿盟科技, 2013. LI Hongpei, YU Yang, HU Chaojian, et al. 2013 Report on Industrial Control System and Its Security[R]. Beijing:NSFOCUS, 2013. (in Chinese)
[4] 吴世忠, 郭涛, 董国伟, 等. 软件漏洞分析技术[M]. 北京: 科学出版社, 2014. WU Shizhong, GUO Tao, DONG Guowei, et al. Software Vulnerability Analysis Technology[M]. Beijing: Science Press, 2014. (in Chinese)
[5] Miller B, Fredriksen L, So B. An empirical study of the reliability of UNIX utilities[J]. Communications of the ACM, 1990, 33(12): 32–44. DOI:10.1145/96267.96279
[6] Roning J, et al. PROTOS:Systematic approach to eliminate software vulnerabilities, presented at microsoft research[Z/OL].[2015-05-10]. http://www.ee.oulu.fi/research/ouspg/PROTOSMSR2002-protos.
[7] Aitel D. An introduction to SPIKE, the fuzzer creation kit, presented at the BlackHat USA conference[Z/OL].[2015-05-10]. http://www.blackhat.com/presentations/bh-usa-02/bh-us-02-aitel-spike.ppt.
[8] Biyani A, Sharma G, Aghav J, et al. Extension of SPIKE for encrypted protocol fuzzing[C]//The Third International Conference on Multimedia Information Networking and Security (MINES). Shanghai:IEEE Computer Society Conference Publishing Services, 2011:343-347.
[9] Amini P. Sulley:Pure python fully automated and unattended fuzzing framework[Z/OL].[2015-05-10]. http://code.google.com/p/sulley.
[10] Eddington M. Peach fuzzing platform[Z/OL].[2015-03-16]. http://peachfuzzer.com.
[11] 刘奇旭, 张玉清. 基于Fuzzing的TFTP漏洞挖掘技术[J]. 计算机工程, 2007, 33(20): 142–144. LIU Qixu, ZHANG Yuqing. TFTP vulnerability exploiting technique based on fuzzing[J]. Computer Engineering, 2007, 33(20): 142–144. (in Chinese)
[12] TONG Yongxin, CHEN Lei, CHENG Yuyong, et al. Mining frequent itemsets over uncertain databases[C]//Proceedings of the 38th International Conference on Very Large Databases, (VLDB2012). Istanbul, Turkey:VLDB Endowment Inc, 2012:1650-1661.
[13] TONG Yongxin, CHEN Lei, DING Bolin. Discovering threshold-based frequent closed itemsets over probabilistic data[C]//Proceedings of the 28th International Conference on Data Engineering, (ICDE 2012). Washington DC, USA:IEEE Computer Society, 2012:270-281.
[14] TONG Yongxin, CAO Caleb Chen, CHEN Lei. TCS:Efficient topic discovery over crowd-oriented service data[C]//Proceedings of the 20th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, (SIGKDD 2014). New York, NY, USA:ACM DL, 2014:861-870.
[15] TONG Yongxin, CHEN Lei, SHE Jieying. Mining frequent itemsets in correlated uncertain databases[J]. Journal of Computer Science and Technology, 2015, 30(4): 696–712. DOI:10.1007/s11390-015-1555-9
[16] TONG Yongxin, SHE Jieying, CHEN Lei. Towards better understanding of app functions[J]. Journal of Computer Science and Technology, 2015, 30(5): 1130–1140. DOI:10.1007/s11390-015-1588-0
[17] YI Shengwei, XU Jize, PENG Yong, et al. Mining frequent rooted ordered tree generators efficiently[C]//CyberC2013. Beijing:IEEE Computer Society, 2013:132-139.
[18] YI Shengwei, ZHAO Tianheng, ZHANG Yuanyuan. SeqGen:Mining sequential generator patterns from sequence databases[J]. Advanced Science Letters, 2012, 11(1): 340–345. DOI:10.1166/asl.2012.3008