曾纪钧,吴勤勤,吴一阳
(1. 广东电网有限责任公司信息中心,广东 广州 510000;2. 中国南方电网公司信息化评测重点实验室,广东 广州 510000;3. 广州粤能信息技术有限公司,广东 广州 510000)
目前,网络安全已经成为了国家、企业以及公众关注的焦点。2012年,党的十八大提出建设网络强国的战略目标,将网络安全纳入国家安全的组成部分;2016年4月19日,习近平总书记在网络安全和信息化工作座谈会上要求加快构建关键信息基础设施安全保障体系[1]。2016年11月7日,全国人大审议通过《中华人民共和国网络安全法》,以法律形式明确规定了关键信息基础设施运营者应当履行网络安全的责任和义务[2]。关键信息基础设施是指面向公众提供网络信息服务或支撑能源、通信、金融、交通、公用事业等重要行业运行的信息系统或工业控制系统,包括网站类、平台类、生产业务类等[3,4]。
在过去很长一段时间内,工业控制系统的网络安全一直被外界所忽视,行业普遍认为工业控制系统部署在内网环境,可让其免于网络攻击,然而随着智能制造、智能控制技术的不断发展,越来越多的开放通用协议被引入至工业控制系统,传统独立分散的网络已融合为深度关联、高度依赖的整体[5]。
工业控制系统的网络安全风险正在呈现愈发严重之势。典型的工业控制系统网络安全事件包括:2010年,震网病毒利用西门子工控软件漏洞攻击伊朗核设施,导致核电站设施大范围损毁,第一次让公众认识到工业控制系统网络安全的脆弱性[6];2016年,Black Energy病毒入侵乌克兰国家电网,导致伊万诺-弗兰科夫斯克地区大面积停电6小时[7]。
网络通信协议是工业控制系统的重要组成部分,其网络安全也是工业控制系统安全生产的重要内容。本文开展了工业控制设备网络通信协议安全测试技术的研究。通信协议安全测试技术是一种自动化的漏洞挖掘技术,其测试思想在于向目标设备发送异常非预期的数据,并通过监视设备的异常结果来达到挖掘设备漏洞的目的[8,9]。目前,该技术已经被广泛应用于挖掘文件格式、网络协议和第三方插件的漏洞[10,11]。
本文重点研究了工业控制系统通信协议的安全测试技术,论文首先提出了工控设备通信协议安全测试的框架,其次给出了系统各功能模块的详细设计。实践结果表明,该种测试方法能有效检测设备通信协议的健壮性,挖掘工业控制系统通信协议的漏洞。
通信协议安全测试系统分为管理平台模块、端口扫描模块、测试数据生成模块、监视模块等4大模块[13],系统的总体架构如下图所示:
图1 协议安全测试系统总体架构Fig.1 The architecture of the communication protocol security testing system
管理平台模块负责接收用户的指令,负责对测试平台进行配置以及管理;主机扫描模块用来测试被测设备存活性、开放的端口服务、操作系统指纹信息等;测试数据发生引擎负责生成通信协议测试数据;设备监视模块负责对被测设备进行运行监视。
通信协议安全测试系统支持2种方式的测试模式,如下图2所示。
图2 通信协议安全测试系统测试模式Fig.2 The test mode of the communication protocol security testing system
(1)直连模式:测试系统与被测设备直连进行测试,根据被测设备开发的通信端口,进行对应的通信协议测试;
(2)桥接模式:测试系统桥接到被测设备和上位机之间,充当上位机与被测设备的通信中继,自动进行通信协议测试[14]。
在测试流程上,通信协议安全测试的流程包括5大步骤[15]
1. 获取被测电网嵌入式设备IP地址;
2. 对被测设备进行主机扫描,发现设备的操作系统版本、端口号、软件版本等指纹信息;
3. 根据设备的操作系统及软件版本,生成测试数据,并发送给被测设备;
4. 监视被测设备在测试过程中是否出现异常;
5. 生成测试报告。
主机扫描模块用来测试被测设备存活性、开放的端口服务、操作系统指纹信息、软件版本信息等,调度模块在收到管理平台的主机扫描请求之后,分别执行设备存活性扫描、端口扫描、操作系统指纹信息扫描等步骤,并将测试结果和系统内置的软件版本信息比对,最终将测试结果返回给调度模块。其中,端口扫描功能可以设置扫描的协议类型,端口范围和扫描目标IP范围,操作系统扫描功能可以支持 Windows、Linux、UNIX、VxWorks等操作系统类型。主机扫描模块的业务数据处理流程如下图所示。
图3 主机扫描模块的业务数据处理流程Fig.3 Business data processing flow of the host scan module
工业控制系统的网络协议主要包括 Modbus、Profinet、MMS、GOOSE、DNP3、IEC101、IEC102、IEC104、ARP、ETHER、LLDP、ICMP、IGMP、IP、TCP、UDP等。测试数据发生引擎根据需要测试的协议类型生成对应的测试数据实现设备通信协议的安全测试[16,17]。
我们以 ARP语法测试为例来说明测试数据的生成过程。测试数据的生成需要考虑2种因素,1)数据包大小;2)数据报文字段。
ARP的报文格式有标准的定义,主要包括硬件类型、协议类型、硬件地址长度、协议地址长度、操作类型、源MAC、源IP、目的MAC、目的IP等字段。根据ARP协议,这些字段都有一个或几个标准值,例如操作类型是指表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4。在进行ARP语法测试时,主要对上述的各个字段进行变化,我们会对这些字段填充错误的值,以观测被测设备的相应。另一方面,以太网最小帧为 64B,最大帧长为 1518B,生成的测试数据包需在以太网数据包大小之内。最终生成的文件中的数据包形式如下图所示。
图4 测试数据发生引擎生成的数据包保存模式Fig.4 The packet save mode of the data generation engine
根据 ARP协议的测试数据生成过程可以推演到其它TCP/IP协议,从而完成所有TCP/IP协议的测试数据生成。
设备监视模块可以通过设备存活监视以及设备输出监视等方式监视测试过程是否对被测设备的协议栈、控制逻辑、系统运行等造成影响。常见的设备存活监视方式包括 ARP、ICMP、TCP等协议。逻辑监视子模块通过被测设备的逻辑输出实现被测设备的运行监视[18-19]。
设备存活监视可通过ARP协议、ICMP协议、TCP/UDP协议实现。
(1)ARP协议:测试设备发送ARP广播包,通过被测设备是否回 ARP包来监视被测设备的运行状态,其数据处理流程如下图所示:
图5 ARP监视器的数据处理流程Fig.5 The data processing process for the ARP monitor
(2)ICMP协议:通过周期性的ICMP扫描来监视被测设备的运行状态,其数据处理流程如下图所示:
图6 ICMP监视器的数据处理流程Fig.6 The Data processing process for the ICMP monitor
(3)TCP/UDP协议:通过TCP端口以及UDP端口响应情况监测被测设备的运行状态[20],其数据处理流程如下图所示:
图7 端口监视器的数据处理流程Fig.7 The data processing flow of the port monitor
逻辑监视通过对被测设备的输出进行采集,对比被测设备的逻辑输出判断被测设备是否出现异常[21],其数据处理流程如下图所示:
图8 逻辑监视器数据处理流程Fig.8 The data processing process for the logical monitor
本文针对工业控制系统通信协议的网络安全问题,设计了一种通信协议安全测试系统,并研究提出了系统各功能模块的详细设计。实验结果表示:该种协议测试方法能有效检测设备通信协议的健壮性,挖掘工业控制系统通信协议的漏洞,对保障工业控制系统网络通信的安全性具有重要意义。