APP下载

基于区域/边界规则的Modbus TCP通讯安全防御模型

2014-12-23张盛山尚文利张华良

计算机工程与设计 2014年11期
关键词:报文数据包通讯

张盛山,尚文利,万 明,张华良,曾 鹏

(1.中国科学院 沈阳自动化研究所,辽宁 沈阳110016;2.中国科学院大学,北京100049)

0 引 言

在设计之初,工业控制系统大多采用专有的通信协议、操作系统、硬件设备,并且与其它网络隔离,因此业界普遍认为其不存在信息安全问题。随着工业化与信息化进程的不断交汇融合,工业通讯系统广泛采用TCP/IP 技术[1]、开放的工业通讯协议、通用软硬件和网络设施,甚至与企业管理信息系统和互联网产生数据交换。工业控制系统的封闭性正在逐渐被打破,而且原本存在诸多安全缺陷也使工业控制系统更容易遭受黑客、病毒、与敌对势力的渗透攻击[2-5]。

因此,如何阻止病毒入侵工业控制系统、抵御恶意攻击与工控系统入侵行为检测成为当前研究热点,国内相关研究机构与专家学者纷纷在该领域展开研究工作,并且取得了一定的成果。Snort2.9 版本开始加入Modbus等协议的预处理器[6,7],可对通讯协议的部分字段和数据包的完整性进行分析;第三方机构发布,例如Digital Bond发布了入侵检测规则集合[7],描述了部分典型的工业控制系统中的异常行为。Niv Coldenberg等[9]提出了一种基于有限状态自动机的Modbus TCP通讯精确建模方法,根据人机界面与可编程控制器之间的通讯流量构建了有限状态自动机的模型,该方法具有较低误报率,不过需要建立在人机界面与可编程控制器之间通讯具有周期性特征的基础之上。Dale Peterson等[10]设计了DCS系统SCADA 系统的安全事件被动生成方法,弥补了工控系统中控制器缺乏记录安全事件的缺陷,使得行为审计、故障追踪成为可能。Hadeli Hadeli等[11]认为可以通过工控系统中的确定行为和系统描述文件来可靠地识别异常行为,并为防火墙等安全设施配置规则设计实现了自动产生配置规则的框架。Wojciech Tylman[12,13]提出了基于Snort数据获取模块DAQ 的非IP协议的处理方法,使得Snort可以深入现场总线层进行入侵检测,并不必添加硬件或修改Snort代码本身。

上述各研究方法如文献 [5-7,12]可以归为误用检测范畴,即根据已知攻击特征匹配网络中的通讯流量,具有误报率较低的特性,但由于工控系统攻击行为特征库不可能包含所有的攻击行为,使用误用检测的方式容易产生漏报的情况。文献 [8-10]可归为异常检测范畴,该方法建立在工业控制系统本身通讯流量具有简单固定的通讯模式的基础之上,通过建立系统正常行为的轮廓模型识别出异常的流量,其优势是能够探测出未知特征的攻击行为甚至操作人员的误操作,然而无法像误用检测那样清晰地定位错误,且容易出现误警现象。

上述方法均在很大程度上增强了系统识别恶意攻击行为的能力,提升了系统的安全性,然而工业控制系统的信息安全需要从不同的维度进行强化,明确而合理的安全策略是工业控制系统信息安全的重要环节。在异常检测方法的基础之上,本文选取了具有代表性的Modbus通讯协议作为研究对象,针对其安全缺陷导致其易遭受来自于应用协议的攻击的问题,本文提出了ModbusTCP 协议深度解析方法和ModbusTCP 通讯安全规则模型,并在此基础上设计了基于入侵检测规则与 “白名单”相结合的ModbusTCP区域与边界安全防护模型。

1 Modbus TCP安全性分析

1.1 Modbus与Modbus TCP

Modbus是OSI模型第七层上的应用层报文传输协议,已经成为一种通用的标准。其实现方式主要包括基于串行链路的实现 (Modbus RTU/Modbus ASCII)、基于高速令牌环的实现 (Modbus Plus)和基于以太网上TCP/IP 技术的实现 (Modbus TCP/IP)以下简称Modbus TCP)。如图1所示,Modbus各种通讯在可以无缝的衔接在同样的通讯系统中[14],网关的作用是保证协议的不同底层的Modbus通讯的转换。

图1 Modbus TCP结构拓扑

本文主要关注Modbus通讯在以太网上基于TCP/IP技术的通讯安全,其请求与响应报文均封装为如图2所示的格式。

图2 Modbus TCP包格式

其中MBAP HEADER 为Modbus应用协议报文头,目的是识别Modbus应用数据单元。该部分主要包含事务处理标志符 (TRANSACTION IDENTIFIER)、协议标志符(PROTOCOL IDENTIFIER)、长度 (LENGTH)、单元标志符 (UNIT IDENTIFIER)4 个部分。功能码是Modbus客户端 (MASTER)向服务端 (SLAVE)指示进行何种操作的标志字段,最能够体现客户端对服务器的操作意图。数据部分 (DATA)由客户机根据具体的应用和功能码的不同进行设置并由服务端进行相应的回答[15]。

1.2 缺乏验证/加密/授权

目前广泛使用的工控协议在设计之初,几乎都是运行在相对封闭孤立的网络环境中,不会产生与其它网络的数据交换,因此信息安全与网络安全因素并不需要着重考虑,而更多关心的是功能安全和物理安全[16]。工业控制系统通讯协议的信息安全需求虽然存在,但是考虑到向工业通讯协议中增添安全机制是一个繁杂的系统工程,笔者认为在相当长工业控制系统通讯协议自身存在安全风险的局面并不会改变。

Modbus TCP通讯底层基于标准的以太网TCP/IP技术,因此底层协议的安全缺陷均被继承保留下来,也就是说针对IT 网络的常规攻击方式也适用于工业控制系统,甚至造成的危害更大[17]。例如,受制于工业控制器有限的运算资源、可能不够健壮网络协议栈,拒绝服务方式的攻击更容易使工业控制器宕机失效。

对于工控系统更为有效、破坏力更大的方式是针对应用层数据构建攻击行为,这主要是由于Modbus协议应用层设计存在的缺陷,主要表现为缺乏认证、授权和加密等安全机制。缺乏认证表现在仅需要一个合法的Modbus地址与合法的功能码即可以建立一个Modbus会话;缺乏授权体现在没有基于角色的访问控制机制,任意用户可以执行任意的功能;缺乏加密体现在地址和命令使用明文传输,很容易捕获并进行解析。

当攻击者通过一系列的渗透攻击手段,获得了某系统的控制权限或者网络的访问权限后,可以通过监听网络中Modbus TCP通讯流量,获取其关心的信息,并且可以按照协议轻松地构造Modbus TCP 数据包,甚至可以直接借助相应的调试工具向重要控制器展开攻击。

例如,在现实的工业控制系统中,数字量可能分别对应于可编程控制器的线圈和保持寄存器,则篡改了可编程控制器中的某一个线圈的数值很有可能使得某一个本来应该处于闭合状态开关打开,显然这在要求极其严苛的可靠性的工业控制系统将会造成很严重的后果。另一种情况是,攻击者篡改了某个保持寄存器中的数值,而保持寄存器可能对应于模拟量输入输出或者工业控制过程中的重要参数,从而造成工艺不能达标或者直接造成事故。

2 Modbus TCP深度解析方法

上文中分析表明若要切实保护基于Modbus通讯的工业控制系统信息安全,需要对Modbus报文进行深度解析,从而发现入侵行为与攻击企图,因此本小节建立了Modbus报文的深度解析的一般模型,如图3所示。

图3 Modbus TCP深度解析

Modbus协议深度解析模型主要包含3部分,分别为网络层与传输层解析、Modbus报文头解析、Modbus报文解析,其流程如下:

步骤1 网络层与传输层解析:该环节主要提取源与目的IP地址和源与目的端口号,解析该部分信息为在网络层与传输层进行访问控制或者入侵检测提供基础信息,通过IP地址与端口号标示网络中进行通讯的设备。

步骤2 Modbus报文头解析:该环节主要解析Modbus报文头中事务处理标识符、协议标识符、长度和单元标识符。其中,协议标识符为判定是否是Modbus通讯提供了依据;而长度字段的数值代表了单元标识符与其后数据的总长度,可据此判别人为构造的异常数据包;单元标识符为Modbus串行链路上的地址,长度为一个字节,根据该字段对连接在同一个协议转换网关并且共享相同IP地址的不同Modbus设备进行寻址,因此该字段具有重要意义。

步骤3 Modbus报文解析:该部分为Modbus协议深度解析的核心与关键,主要解析能够代表操作意图的Modbus功能码,并且根据不同的Modbus功能码进一步解析相应的数据。

Modbus协议中定义了4种数据类型分别为输入线圈、线圈、输入寄存器和保持寄存器,分别对应于工控环境中的相应变量,比如数字量输入输出,模拟量输入输出,对应于特定的功能码。例如,功能码02为读取输入量线圈操作,操作对象为输入线圈;功能码03为读取保持寄存器,操作对象为保持寄存器。由于协议中不同功能码可能操作单个或者多个数据对象,因此需要提出一个通用的Modbus报文解析模型,如图4所示。

该过程主要分为如下几步构成:

(1)解析Modbus功能码字段,如果与Modbus协议规定的4种数据类型的读写操作无关,则执行步骤2,否则转而执行步骤3。

图4 Modbus TCP报文解析

(2)解析可能存在的功能码子码,并且解析对应功能的关键字段,然后结束整个解析流程。

(3)根据功能码识别,所要操作的数据对象。

(4)解析所操作的数据对象的起始地址。

(5)解析该数据对象的数目信息。

(6)保存相应的字段信息,流程结束。

3 基于区域/边界规则的工业协议通讯安全防御模型

目前学术界与业界普遍认为,保证工业控制系统的信息安全和网络安全的最有效方法是构建工业控制系统 “纵深防御”体系[18]。 “纵深防御”体系包含诸多方面,本文从工业通讯协议深度解析的角度,认为构建工控SCADA系统的纵深防御体系主要分为两个核心环节,分别是区域划分与边界建立和安全策略设计。

3.1 工业控制系统区域划分与边界建立

区域一般有执行或者支持相同的功能,具有相同的安全需求的若干资产构成。边界存在于不同的区域之间,是不同区域进行数据交换的通道。区域和边界的合理划分与设置对于保证工业通讯系统信心安全具有重要意义。一般来说区域的划分可以从网络连接、控制功能、数据存储、远程访问、通讯协议、关键性程度等几个维度进行考虑。本文主要考虑基于Modbus TCP 的工业SCADA 系统,因此将系统区域划分与边界建立的一般方法简化为如下流程:

(1)对系统进行风险评估,并且进行重要资产识别,并且建立相应的文档记录。

(2)按照重要资产所处的企业业务的层次,将整个系统按照从上至下的顺序分为四层,分别为企业管理信息层、数据监控采集网层、控制单元层与现场设备层。

(3)在每一个层次内部按照所实现的功能或者操作权限进一步划分不同的区域。例如在数据监控采集层中有仅从底层PLC中读取数据和对站点可能进行写操作的监控画面站点,应当属于数据采集监控层的不同子区域。

(4)在有数据通讯的不同区域之间进行边界设定,使得两个区域之间的通讯流量都经过该边界,以便进行区域间通讯的管理和控制。

需要指出的是,一个区域内的子区域的划分是对区域内不同资产的安全需求的进一步刻画,因此如果 “粒度”越细,则划分的区域越多和嵌套的子区域也就越多;此外,可以调整工业控制系统网络结构,使得区域在逻辑上和物理上能够重合。

3.2 安全策略设计

区域间的边界防护可能采用不同的安全防御技术和设备,规则描述也不尽相同,因此这里首先抽象出安全规则的一般模型

其中,SourceAdress表示源地址,SourcePort表示源端口,DestnationAddress代表目的地址,DestnationPort表示目的端口,也代表着何种服务,Action表示是通讯流量符合后面的描述后,所应该采取的动作,主要包含如下几种:

Allow:判定对应的数据包合法并且放行,不产生其它任何动作。

Deny:判定对应的数据包为非法并且丢弃,并且进行报警。

Alert:判定对应的数据包为异常但是予以放行,并且进行报警。

另外SpecificProtocolFields字段表示通讯协议相关的字段条件,对于Modbus TC通讯而言,其详细的格式如下

其中,ProtocolIdentifier指Modbus报文头中的协议标识符,UnitID 指Modbus报文头中的单元标识符,FunctionCode表示Modbus规定的功能码,而Data字段表示与Modbus功能码相关的,当Modbus功能码读写对应的4种数据类型或者其它操作时,可能有标识数据类型的起始地址与数量或者子功能码构成,即为

在边界采用的安全防护防御技术可能包含防火墙、入侵检测系统IDS[19]与入侵防御系统IPS等。防火墙主要进行传输层或者网络层的访问控制功能,缺乏对工业通讯协议应用层的支持;入侵检测系统和入侵防御系统采用模式匹配的方法,对符合特征的数据包采取相应的动作。

从部署方式上看,IDS系统以旁路监听的方式获取网络中的流量,不会对网络中的通讯造成延时的影响;IPS则串联在通讯链路上,可以将违法的通讯包拦截丢弃。从传统IT 领域信息安全规则配置所体现出来的安全策略来看,IDS与IPS 的安全策略多采取罗列检测规则的方式,数据包如匹配则报警或者丢弃;而另一种IPS的安全策略则是先定义合法的数据包类型,然后丢弃其它任何流量。这两种安全策略如图5所示。

图5 入侵检测与 “白名单”策略

上述两种安全策略对于工业SCADA 系统而言均有极大的局限性。首先,IDS系统虽然允许存在一定的误判和误判,不能拦截非法的数据包;而采用 “白名单”IPS策略如果配置规则不当,可能将合法的数据包丢弃,这对可靠性要求极高的工业控制系统中是相当危险的。

本文提出了结合IDS策略与 “白名单”策略相结合的Modbus TCP通讯安全防御模型,与前文中区域划分与边界设立合起来,如图6所示,包含如下步骤:

步骤1 进行SCADA 系统区域划分和边界设定。按照工业控制系统企业生产信息层、数据监控采集层、控制单元层与现场设备层进行区域划分。若需要对每一个区域进行进一步的区域划分,并且符号化记录分区结果以方便进一步的安全策略设定。

步骤2 “白名单”IPS策略部分设定。

(1)明确不同区域或者子区域之间进行数据交换,所需要的ModbusTCP 通讯的最小集合,定义此部分通讯为合法通讯。这里的合法数据可能根据ModbustTCP 协议深度解析部分的功能码以及功能码所需要的数据共同定义。

(2)用安全规则描述语言表示所定义的合法数据包,例如一条表示可以Modbus客户机可以使用01功能码访问Modbus服务器地址从0x0000开始的3个线圈的安全规则可以表示为:

图6 Modbus TCP通讯安全防御模型

步骤3 对于无法完全认定为合法的采取IDS策略进行报警而不是拦截。这部分通讯可能包括攻击者和系统本身都可能用到的通讯,例如功能码为08且子功能码为01的重启通信功能,不能一定认定为攻击行为,因此最佳的选择使及时报警。

步骤4 默认规则设置,即放弃其它一切不在步骤2与步骤3中的设置的ModbusTCP通讯包。

事实上,该模型不仅仅适合于ModbusTCP 通讯安全防护,如果增加其它通讯协议的深度解析机制,例如MMS、GOOSE、FF-HSE 与DNP3 等,则可以按照相同的流程推广到其它通讯协议从而成为一个通用的模型。

4 实验环境搭建

4.1 模拟实验环境搭建与实验设计

为了验证本文提出的Modbus系统防御方法实验室环境下搭建了基于Modbus TCP 通讯的工业SCADA 系统仿真实验环境,其拓扑与结构如图7所示。

该仿真实验环境分为三层,依次是数据监控采集层、主控单元层、以及虚拟现场设备层。数据监控采集层包含两个Modbus客户端,分别基于KingSCADA 软件开发监控画面,和模拟攻击源的调试测试软件diagslave;主控单元层选择施耐德M340PLC,CPU 型号为2020;虚拟现场设备层在可编程逻辑控制器M340中的控制逻辑中实现。

图7 仿真实验环境

其中,在虚拟现场设备层中包含3个标识开关开闭的开关量,和3个电磁流量阀的开度的模拟量以及容器液位上下限和当前液位高度。可编程逻辑控制器的逻辑需要将当前液位限定在液位上限和液位下限之间。在实际的工业控制系统中,当前液位不在上下限之间,可能会导致容器爆炸或者工艺质量受到严重影响。因此,这里的攻击方法设计为通过diagslave软件修改保持液位上限的保持寄存器,则容器中实际液位高度超过真实的限度后,PLC 中的控制逻辑也不会改变输入与输出的阀门状态从而控制液位。

4.2 实验过程设计与结果

抵御上面提到的攻击的最佳方法,就是根据实验仿真环境能够按照控制逻辑正常工作,明确Modbus客户端与Modbus服务器端所需要的最小通讯集合,定义完善的边界防护策略。这里边界安全防御措施选择的是开源软件Snort,安全防御策略也是基于Snort的语法规则进行描述,为了简洁地描述安全策略,这里仍然采用和上文相同的安全规则描述方式。

对上面描述的场景分析可知,diagslave所模拟的数据采集软件应该仅仅应该具有读取开关量与模拟量的权限,而KingSCADA 应该具有开关量与模拟量的读写权限;然而,对于液位上下限值不会经常性的改变,即使是来自于KingSCADA 的写操作也应该认定为异常操作而触发报警信息。

这里为了简化规则,假设系统中仅存在液位上限值这一个数据对象且其地址为0x0000,则该系统的安全规则设计流程按照如下步骤进行:

步骤1 将系统划分为数据监控采集层与控制单元层,分别对应于Modbus客户端和服务器,并且进一步将数据监控采集层中按照是否可以对液位上限值进行写操作的划分为2个不同的子区域。

步骤2 设置 “白名单”规则,允许KingSCADA 与diagslave对PLC 中地址为0x0000 的保持寄存器进行读操作。

步骤3 设置异常行为的入侵检测规则,如果King-SCADA 对PLC进行了写操作,则进行报警。

设置默认规则,拦截其它一切未在前面 “白名单”中的通讯。

步骤4 设置默认规则,拦截其它一切未在前面步骤2与步骤3中的数据包。

实验结果表明,diagslave与所模拟的攻击源与King-SCADA 只能读取PLC的0x0000保持寄存器;同时,如果KingSCADA 修改了液位上限值,则会触发Snort报警。这种将入侵检测规则与 “白名单”相结合的工业控制系统区域间安全防护策略能够极大程度的消除了风险敞口,保障系统安全运行。

5 结束语

本文针对目前工业控制系统面临的新型病毒入侵难以检测和工业通讯协议设计存在缺陷等问题,提出了对工业通讯协议进行深度解析方法和ModbusTCP 通讯的安全规则描述的一般形式。在此基础之上,本文设计了基于入侵检测规则与 “白名单”相结合的ModbusTCP区域与边界安全防护模型,该模型的核心思想是明确指明区域间合法的ModbusTCP通讯,禁止其它一切不必要的数据在区域间进行交换,而可能合法但可疑的通讯将触发报警。该防护策略具有简洁清晰,易于推广的特点,非常适合于应用在工业控制系统这样网络中通讯流量模式相对固定的场合。验证实验结果也表明了该方法的有效性。

然而,本文所提出的ModbusTCP 安全规则描述模型,难以有效描述同时存在于几个数据包中的通讯行为特征的能力;所提出的ModbusTCP通讯防护策略,依赖于安全设计人员对于通讯协议、工业流程的充分了解和把握,出现理解偏差会导致安全规则设置错误。另外,引入在线的防御措施会对工业控制系统的通讯的实时性和可靠性造成影响。因此,未来可以从解决攻击行为隐含在多个Modbus数据包以及该安全防护策略对系统通讯实时性和可靠性影响的角度展开进一步的研究。

[1]TIAN Zhongda,GAO Xianwen,LI Kun,et al.The improvement of IEEE 802.1p priority scheduling protocol in industrial Ethernet[J].Information and Control,2012,41 (1):117-122 (in Chinese).[田中大,高宪文,李琨,等.工业以太网中IEEE 802.1p 优先权调度协议改进 [J].信息与控制,2012,41 (1):117-122.]

[2]WEI Qinzhi.Industrial network control system security and management[J].Measurement &Control Technology,2013,32 (2):87-92 (in Chinese).[魏钦志.工业网络控制系统的安全与管理 [J].测控技术,2013,32 (2):87-92.]

[3]PENG Yong,JIANG Changqing,XIE Feng,et al.Industrial control system cyber security research [J].J Tsinghua Univ(Sci&Tech),2012,52 (10):1396-1405(in Chinese).[彭勇,江长青,谢丰,等.工业控制系统信息安全研究进展 [J].清华大学学报(自然科学版),2012,52 (10):1396-1405.]

[4]XIONG Qi,JING Xiaowei,ZHAN Feng.Summary and implications for China of the information security work of the ICS system in the oil and gas industry in America[J].China Information Security,2012,27 (3):80-83(in Chinese).[熊琦,竞小伟,詹峰.美国石油天然气行业ICS系统信息安全工作综述及对我国的启示[J].中国信息安全,2012,27 (3):80-83.]

[5]ZHANG Min,ZHANG Wuyi,HAN Guifen.Industrial control system information system security [J].Industrial Control Computer,2013,26 (10):25-27 (in Chinese). [张敏,张五一,韩桂芬.工业控制系统信息安全防护体系研究 [J].工业控制计算机,2013,26 (10):25-27.]

[6]SourceFire,Snort manual[EB/OL]. [2012-06-23].http://www.snort.org/assets/166/snort_manual.pdf.

[7]Thomas H,Morris,Bryan A,et al.Deterministic intrusion detection rules for MODBUS protocols[C]//46th Hawaii International Conference on System Sciences,2013:1773-1781.

[8]Digital bond.[EB/OL].[2013-12-28].http://www.digitalbond.com/tools/quickdraw/modbus-tcp-rules/.

[9]Niv Goldenberg,Avishai Wool.Accurate modeling of Modbus/TCP for intrusion detection in SCADA system [J].Critical Infrastructure Protection,2013,6 (2):63-75.

[10]Dale Peterson.Quickdraw:Generating security log event for legacy SCADA and control system device[C]//Cybersecurity Applications &Technology Conference For Homeland Security,2009:227-229.

[11]Hadeli Hadeli,Ragnar Schierholz,Markus Braendle.Leveraging determinism in industrial control systems for advanced anomaly detection and reliable security configuration [C]//Emerging Technologies &Factory Automation,2009:1-8.

[12]Thomas Morris,Rayford Vaughn,Yoginder Dandass.A retrofit network intrusion detection system for MODBUS RTU and ASCII industrial control systems [C]//46th Hawaii International Conference on System Sciences,2013:2338-2345.

[13]Javier J.Using SNORT for intrusion detection in MODBUSTCP/IP communications [EB/OL]. [2011-11-07].http://www.giac.org/paper/gcia/7218/snort-intrusion-detection-modbus-tcp-ip-communications/124438.

[14]GB/T 19582.3-2008,Modbus industrial automation network specification—Part3:Modbus protocol implementation guide over TCP/IP [S].(in Chinese).[GB/T 19582.3-2008,基于Modbus协议的工业自动化网络规范第3部分:Modbus协议在TCP/IP上的实现指南 [S].]

[15]GB/T 19582.1-2008,Modbus industrial automation network specification-Part1:Modbus application protocol[S]. (in Chinese).[GB/T 19582.1-2008,基于Modbus协议的工业自动化网络规范第1部分:Modbus应用协议 [S].]

[16]XIA Chunming,LIU Tao,WANG Huazhong,et al.Industrial control system security analysis[J].Information Security and Technology,2013 (2):13-17 (in Chinese). [夏春明,刘涛,王华忠,等.工业控制系统信息安全现状及发展趋势 [J].信息安全与技术,2013 (2):13-17.]

[17]Peter H,Rodrigo C,Mauricio P,et al.Attack taxonomies for the Modbus protocols[J].Critical Infrastructure Protection,2008,1:37-44.

[18]Eric K.Industrial network security securing critical infrastructure networks for smart grid,scada,and other industrial control system [M].Syngress,2011.

[19]Fovino IN,Carcano A,De Lacheze Murel T,Trombetta A,et al.Modbus/DNP3state-based intrusion detection system[C]//Advanced Information Networking and Applications,2010:729-736.

猜你喜欢

报文数据包通讯
《茶叶通讯》简介
《茶叶通讯》简介
基于J1939 协议多包报文的时序研究及应用
通讯报道
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
SmartSniff
通讯简史