Modbus/TCP多层访问控制过滤技术

2016-08-06 02:33王华忠凌志浩
自动化仪表 2016年7期
关键词:白名单访问控制变送器

蒋 臣 王华忠 凌志浩 路 伟

(华东理工大学化工过程先进控制和优化技术教育部重点实验室1,上海 200237;吉林石化公司检测中心2,吉林 吉林 132021)



Modbus/TCP多层访问控制过滤技术

蒋臣1王华忠1凌志浩1路伟2

(华东理工大学化工过程先进控制和优化技术教育部重点实验室1,上海200237;吉林石化公司检测中心2,吉林 吉林132021)

摘要:针对典型工控网络协议——Modbus协议在信息安全上存在的缺陷,提出了一种基于Modbus/TCP协议的多层访问控制过滤技术,利用分层过滤策略处理网络数据包以抵御网络攻击。该策略包含分析阶段和配置阶段。分析阶段主要负责收集合法报文并按照规则进行解析,建立三层白名单;配置阶段对关键可写参数的允许范围进行配置,过滤越限参数,防止该参数被写入控制器。通过对所建试验平台的测试,验证了多层访问控制过滤技术有效抵御针对协议应用层的网络攻击的能力,有助于消除操作人员误操作所带来的影响,提高系统安全性。

关键词:Modbus/TCP信息安全访问控制策略数据处理两化融合PLCSCADA

Programmable logic controller(PLC)Supervisory control and data acquisition system(SCADA)

0引言

随着两化融合的不断推进,工业控制系统开始连接到企业网以及互联网。连接的增加与标准协议的使用有助于优化制造过程和扩展网络分布,但也使工控系统暴露于互联网安全威胁之下,作为工业领域应用广泛的Modbus更是首当其冲[1]。因此,如何防范针对Modbus协议的网络攻击已成为当前研究热点。文献[2]针对Modbus协议,给出了50条特征检测规则。Niv Goldenberg等人提出一种对Modbus/TCP报文精确建模的方法[3],根据人机界面和PLC之间的周期性通信构建DFA模型,具有较低误报率。文献[4]通过对Modbus/TCP报文的深度解析,提出基于入侵检测规则和白名单相结合的工业监控与数据采集系统(supervisory control and data acquisition system,SCADA)安全防御模型。Valdes A等针对过程控制系统提出了基于模式和流量两种异常检测方法[5]。Steven Cheung等人认为工控网络具有相对固定的拓扑结构、通信模式及应用协议,提出了三种基于模型的技术,对网络特征行为建模并监测那些引起系统行为偏离的攻击[6]。

不同的方法有其自身适用环境和制约条件,网络信息安全无疑需要从不同的角度加强。本文以Modbus通信协议为研究对象,针对其易受应用层攻击的缺陷,提出多层访问控制过滤策略,以提高系统安全防护水平。

1Modbus/TCP协议及安全机制分析

Modbus是OSI模型最上层的应用层报文传输协议,是工业领域通信协议的业界标准,为工控系统中的设备提供主从式的通信方式[7]。其实现方式有基于串行链路的实现(Modbus/RTU与Modbus/ASCII)和基于以太网的实现(Modbus/TCP)。本文主要关注Modbus基于以太网TCP/IP的安全。

1.1Modbus/TCP数据帧

常见的Modbus RTU应用数据单元(application data unit,ADU)由从机地址、功能码、数据域和校验码组成。以太网的数据链路层和TCP/IP校验机制保证了数据传输的正确性,因此Modbus/TCP去除了校验码,添加了MBAP报文头。Modbus/TCP ADU格式如图1所示。

图1 Modbus/TCP 应用数据单元格式示意图Fig.1 Format of Modbus/TCP ADU

MBAP Header是Modbus在以太网TCP/IP中的报文头,用来识别Modbus的应用数据单元ADU。该部分主要包含事务处理标志符 (Transaction ID)、协议标志符(Protocol ID)、长度(Length)、单元标志符 (Unit ID )四部分。功能码是Modbus主机向从机指示所要进行操作的标志字,规定了要执行的Modbus相关功能,能够表达主机的操作意图。数据域是可变长的字段,需要主机根据具体功能码进行配置;然后由主机发出请求,等待从机响应。

1.2安全机制分析

Modbus/TCP是通过在TCP/IP协议中嵌入Modbus数据帧实现的。因此,其底层协议在安全层面上的缺陷也被保留下来,既适用于以太网的攻击手段,也同样适用于工控系统。针对传统IT攻击,工控系统开始采取边界防护策略,即在网络分层、层级之间安装防火墙[8]。然而,防火墙无法识别针对Modbus应用层的攻击,其主要原因在于应用层攻击往往隐藏在帧数据域之中。因为Modbus协议没有考虑安全方面的问题,其协议的简单性使得Modbus从机易受到针对应用层的攻击:仅需明确从机设备所支持的功能码和Modbus地址即可进行通信,且报文使用明文传输的方式,易于窃听分析。若攻击者通过入侵攻击获取了网络访问权限进入Modbus主机,即可监听TCP链接上的通信报文。经过分析可获取某些关键变量的寄存器信息,并根据公开的协议即可构建虚假数据包,向从机发送非法命令,窃取工业过程中的参数或更改系统的配置,从而影响系统正常运行。

2Modbus/TCP多层访问控制策略

通过上述分析,提出一种防御策略:通过分析初始化后的网络通信数据包自动生成白名单,并结合可写参数配置,对通信流量中的读、写报文执行多层访问控制过滤操作。假设分析阶段收集到的数据仅有正常通信报文,而不包含攻击者发出的含有攻击行为的报文。由于工控网络与外部网络的连接有限,攻击发生频率不高且分析阶段位于设备初始化后一段很短时间内,因此这一假设无疑是合理的。多层访问控制过滤策略的实现建立在如下基础:工控网络主、从机建立通信连接后,主机在所设定时间内通过读命令读取所有必须监控的数据,其后在配置阶段对可写参数进行配置,将其允许范围写到对应保持寄存器。利用白名单匹配读操作报文中的攻击行为,预先配置的阈值参数匹配写操作中的攻击行为,实现对通信报文的全面过滤。

2.1基于白名单的安全策略及实施

分析阶段是建立白名单的初始训练阶段,抓取Modbus主机与现场设备间的通信报文进行分析。这一阶段在预定义的时间内进行,通过分析正常Modbus/TCP报文建立白名单,Modbus服务器根据其判断接收到的读操作是否合法。白名单是一系列正常读操作通信报文的集合,分为如图2所示的三个层次。

图2 白名单层次组成示意图Fig.2 The hierarchical composition of whitelist

系统白名单包含网络层与传输层的信息,即源、目的IP地址、目的端口号以及源MAC地址,在之后的检测阶段可将其用作授权系统。MBAP白名单针对MBAP报文头内关键字段,即Transaction ID、Protocol ID、Length、Unit ID。其中:Protocol ID用于判断报文是否为Modbus通信协议;Length的值表示数据的总长度,用于判断是否为非法数据包;Unit ID表示Modbus串行链路上的地址。PDU白名单是整个白名单策略的核心,包含了最能代表主机操作意图的功能码,以及功能码所对应的数据域。不同的功能码可能操作单个或多个数据对象,数据域可拆分为寄存器的起始地址和操作数量。在分析阶段,每条报文的内容按不同层次存储以建立白名单,其体系结构如图3所示。一旦白名单建立完毕,在检测阶段会监控读入的数据包,利用分析阶段结果自动识别异常报文。

配置阶段紧邻分析阶段。在工控系统中,Modbus主机不仅要读取从机数据进行监控,还会在监控过程中根据不同需求向从机写数据,以实现对变送器的重新配置,例如更改变送器工作模式、报警阈值等。仅使用白名单无法实现对写操作报文的过滤,因此在分析阶段将寄存器按性质分为可写和只读,对可写数据先行设定。对于主机可写的参数,事先将所有与其相关的允许值写入到自定义寄存器,为以后检测阶段所涉及的写操作报文提供合法与否的识别依据。若在允许范围内,则写操作成功;否则失败。而对于只读属性的状态值,则不允许对其所在寄存器写入数据。这些预先设定用于比较的数值只能在配置阶段写入,超过允许时间则无法再修改。

图3 生成白名单的体系结构Fig.3 The architecture for generating whitelist

2.2多层访问控制过滤技术

为了达到信息安全防护的目的,多层访问控制过滤策略分为三个层级和两条分支。首先,系统过滤层通过对照系统白名单,对物理层、网络层与传输层的Ethernet Header、IP Header、TCP Header所蕴含的信息进行判断,识别出传入数据包的合法性,进而执行Modbus帧的接收或丢弃的动作。接下来,MBAP过滤层判断Protocol ID是否符合Modbus通信协议,Unit ID是否符合链路从机地址,以及Length数值是否与其后的字节数相符。若均相符,则该帧数据通过此过滤层;否则丢弃。在检测阶段,PDU检测是核心部分。对于通过前两层过滤的数据包,按照主机操作意图分成读和写两个分支进行PDU检测。其中,读操作报文查询PDU白名单。只有功能码、寄存器起始地址与寄存器数目能够在PDU白名单内找到完全匹配,读操作才允许执行;不完全匹配则一律丢弃。对于写操作报文,要识别欲写入的寄存器位置及数值。根据寄存器位置可以了解其代表的数据含义,与此数据含义对应的自定义寄存器内保存有其允许值,将欲写入的数值与允许值进行比较,满足条件则成功写入数据,否则丢弃数据包。多层访问控制过滤策略的处理流程如图4所示。

图4 数据包处理流程图Fig.4 The processing flow of data packet

该过程主要由以下步骤构成:

①接收到一帧数据后对当前阶段是否处在分析阶段进行判断。若处在分析阶段,则执行步骤②,否则转而执行步骤③。

②处于分析阶段,利用接收到的报文按层次自动生成白名单,增加其对应白名单内容后,执行步骤⑩。

③继续判断当前所处在的阶段是否为配置阶段,若处在配置阶段,则执行步骤④;否则执行步骤⑤。

④对写敏感的寄存器状态值进行安全配置,结束后跳转到步骤⑩。

⑤当前处于对网络报文的检测阶段,利用系统白名单对数据包进行过滤操作。

⑥用MBAP过滤规则处理通过系统白名单过滤的报文。

⑦判断报文中Modbus功能码,若为读功能码则执行步骤⑧,否则执行步骤⑨。

⑧通过在分析阶段建立的PDU白名单能否找到匹配来过滤读报文,结束后转步骤⑩。

⑨将欲写入寄存器的数值与其所允许的范围进行比较,判断是否允许当前写操作,结束后转步骤⑩。

⑩一次完整的数据包访问控制过滤处理流程结束。

3试验验证

3.1试验环境搭建与设计

为验证本文提出的安全策略,搭建了Modbus/TCP通信试验平台。试验平台分三层,依次是数据监控层、协议转换层以及现场设备层。数据监控层包含两个Modbus客户端,分别是基于组态王软件开发的监控画面和模拟攻击源的上位机调试软件Modbus Poll。协议转换层指的是网关服务器,该服务器采用ARM硬件平台,以STM32为核心,实现HART与Modbus/TCP之间的互相转换,同时在与上位机的通信中执行Modbus/TCP多层访问控制过滤策略。现场设备层采用支持HART应用层协议的压力变送器。

为使上位机能够对变送器进行监控以及配置,在上位机与变送器之间连入网关服务器。STM32为网关服务器的核心,具有丰富的片上资源,性价比高。其底层通过RS-232接口与压力变送器连接,通过以太网接口与上位机组态软件连接。串行通信采用HART应用层协议,网关作为主设备向压力变送器发送HART命令请求,变送器作为从设备回复HART响应;以太网通信采用Modbus/TCP协议,上位机作为Modbus主机,网关作为从机。网关运行嵌入式平台FreeModbus协议栈[9],定义部分保持寄存器存储变送器上传的状态值以及上位机对变送器配置的参数,并在协议栈的基础上增加多层访问控制过滤策略。网关负责上位机和变送器之间的通信:一方面将变送器按HART协议传送的数据提取出来存放在特定保持寄存器供上位机读取监控,另一方面将上位机对寄存器的写操作转化为HART命令通过串口发送给变送器。为简化试验,假设系统中仅存在对动态变量和主变量电流的读操作和报警压力上限值这一个可写数据对象。表1列出自定义寄存器地址及其对应关系。

表1 自定义寄存器的地址及其对应关系Tab.1 The custom register addresses and corresponding relationship

3.2试验过程与结果

抵御应用层攻击的方法,就是在试验环境中网关服务器能够按照多层过滤控制的逻辑正常工作,建立白名单,明确Modbus客户端与服务器之间读操作通信的最小集合,以及写操作对象的允许值。网关服务器的注册IP是192.168.1.7,子网掩码是255.255.255.0,仅192.168.1.X网段内主机可与其通信。在实际工业环境中,服务器与上位机之间的网络地址分配在同网段中,而外部攻击者的IP地址往往是不同的。外部攻击者要先伪装成与注册IP同网段的主机之一,然后才能通过Modbus数据包与服务器通信,并对其展开攻击。试验过程如下。

(1)组态监控上位机IP为192.168.1.101,与网关服务器建立TCP连接后周期性读取动态变量和主变量电流值,并利用PacketSniffer抓取Mdobus/TCP通信报文。

控制策略在分析阶段捕获网络报文生成如下白名单。

①系统白名单:

[SourceMAC:0x90,0xe6,0xba,0x7d,0x8c,0x22 ]

[Source IP :192.168.1.101]

[Destination IP:192.168.1.7][Destination Port:502]

②MBAP白名单:[Protocol ID:0][Unit ID:1]

③PDU白名单:[Function Code:03]

[Reference Num:43][Word Count:14]

(2)配置阶段内,预定义寄存器地址写入报警压力上限值允许的波动范围,0x0080寄存器存允许最大值0x0045,0x0081寄存器存允许最小值0x0040。配置阶段结束后,利用多层访问控制过滤策略对数据包进行处理。

(3)攻击者通过三次握手建立TCP伪连接,伪装成注册IP网段的一个主机,IP为192.168.1.110。向服务器发送包含读、写信息攻击指令的Modbus数据包,其中攻击者篡改报警压力上限值欲写入数据0x0042。

(4)组态上位机模拟操作人员的误操作,向存储报警压力上限值的0x0070寄存器写入0x0100。

试验结果表明,攻击者通过IP地址伪装与服务器建立TCP连接,Modbus Poll可以向服务器发Modbus数据包,但因其IP地址不在系统白名单而被控制逻辑所丢弃。步骤(3)中的攻击者企图篡改报警压力上限值,尽管写入值在允许范围内,但写操作并未成功。Modbus Poll不具有对服务器的读、写权限,无法攻击变送器。组态上位机则能够利用03功能码,从0x0043开始读取连续14个保持寄存器,16功能码执行对0x0070地址的写操作,但欲写入数据必须在0x0080与0x0081两个寄存器存储数值范围内。步骤(4)的写操作并未成功,其操作也受多层过滤策略制约,从而消除了操作人员误操作对变送器的影响。即使攻击者能够冒充组态上位机或完全获取上位机权限,也无法对变送器关键参数进行修改。这种将白名单与参数配置相结合的多层访问控制过滤策略,能够有效抵御针对应用层的网络攻击,保障系统的安全运行。

4结束语

针对工控系统破坏性更强的应用层数据攻击,本文提出一种Modbus多层访问控制过滤技术。此过滤技术能够辅助管理者监测网络上的报文,并具有极低的误报率。经过报文分析阶段和配置阶段,系统监测控制中心与现场设备间的通信报文,利用所建立的白名单匹配读操作报文中的异常行为,并利用配置参数匹配写操作报文中的攻击行为,能有效防御针对应用层的网络攻击。该安全策略具有简洁清晰、易于推广的特点,适用于工控系统这类网络中通信模式相对固定的场合,试验结果也验证了该策略的有效性。

参考文献:

[1] GARITANO I,URIBEETXEBERRIA R,ZURUTUZA U.A review of SCADA anomaly detection systems[C]// Soft Computing Models in Industrial and Environmental Applications,6th International Conference SOCO 2011Springer Berlin Heidelberg,2011:357-366.

[2] MORRIS T H,JONES B A,VAUGHN R B,et al.Deterministic intrusion detection rules for MODBUS protocols[C]//System Sciences (HICSS),2013 46th Hawaii International Conference on.IEEE,2013: 1773-1781.

[3] GOLDENBERG N,WOOL A.Accurate modeling of Modbus/TCP for intrusion detection in SCADA systems[J].International Journal of Critical Infrastructure Protection,2013,6(2): 63-75.

[4] 张盛山,尚文利,万明,等.基于区域/边界规则的 Modbus TCP 通讯安全防御模型[J].计算机工程与设计,2014,35(11): 3701-3707.

[5] VALDES A,CHEUNG S.Communication pattern anomaly detection in process control systems[C]// Technologies for Homeland Security.IEEE Conference on IEEE,2009:22-29.

[6] CHEUNG S,DUTERTRE B,FONG M,et al.Using model-based intrusion detection for SCADA networks[C]//Proceedings of the SCADA Security Scientific Symposium,2007: 1-12.

[7] 祝木田,师勇.Modbus协议通讯的应用[J].微计算机信息:测控仪表自动化,2004,20(6):9-11.

[8] 刘威,李冬,孙波.工业控制系统安全分析[C]// 第27次全国计算机安全学术交流会论文集,2012:41-43.

[9] 王贯兵,陈洁,李新伟,等.基于μC/OS-Ⅲ的FreeModbus通信协议的实现[J].工业控制计算机,2015(11):21-23.

中图分类号:TH-39;TP309

文献标志码:A

DOI:10.16086/j.cnki.issn1000-0380.201607020

Multilayer Access Control Filtering Technique Based on Modbus/TCP Protocol

Abstract:In view of the information security defects existing in typical industrial control protocol of Modbus,the multilayer access control filtering technique based on Modbus/TCP protocol is proposed.The network data packets are processed by adopting hierarchical filtering strategy,to resist cyber attacks.The strategy consists of two phases,i.e.,analysis phase and configuration phase.In analysis phase,the legal messages are collected and analyzed in accordance with the rules,and the three-tier whitelist is established.In configuration phase,the allowable range of critical writable parameters is configured and the over limit parameters are filtered for preventing them to be written in controller.Through tests on the experimental platform built,the capability of the multiple access control filtering technique for effectively resisting the network attacks aiming at application layer of the protocol is verified.It is helpful to eliminate the influence comes from erroneous handling of operators,thus the system security is improved.

Keywords:Modbus/TCPInformation securityAccess control strategyData processingIntegration of information and industrialization

修改稿收到日期:2016-02-26。

第一作者蒋臣(1990—),男,现为华东理工大学控制科学与工程专业在读硕士研究生;主要从事工业信息安全方向的研究。

猜你喜欢
白名单访问控制变送器
一种跨策略域的林业资源访问控制模型设计
核电厂仪控系统安全防护策略研究及应用
UAC提示太烦 教你做个白名单
浅谈差压变送器的校验在应用中的几个问题
2019年“移动互联网应用自律白名单”出炉
XTR105电流变送器在温度传感器中的应用
云计算访问控制技术研究综述
ONVIF的全新主张:一致性及最访问控制的Profile A
移动互联网白名单认证向中小企业开放
浙江中控 高精度压力变送器SUPCON新一代CXT系列