工业控制系统应用与安全防护技术(微课版)课件 第3章 工业控制系统网络协议_第1页
工业控制系统应用与安全防护技术(微课版)课件 第3章 工业控制系统网络协议_第2页
工业控制系统应用与安全防护技术(微课版)课件 第3章 工业控制系统网络协议_第3页
工业控制系统应用与安全防护技术(微课版)课件 第3章 工业控制系统网络协议_第4页
工业控制系统应用与安全防护技术(微课版)课件 第3章 工业控制系统网络协议_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

工业控制系统应用与安全防护技术第3章

工业控制系统网络协议工业控制协议是沟通ICS组件之间的桥梁,其安全性和稳定性关系到整个ICS系统的安全。工业控制协议基于高可靠性和高效率进行设计,互联网通信协议不一定适用于工业控制系统。在众多工控协议中大致可以分为三类:(1)标准协议。例如Modbus协议等,这类协议是国际标准或者被国际所公认的协议。(2)私有但公开协议。例如三菱的Melsec协议等,这类协议一般由厂商提供协议的官方文档。(3)私有不公开协议。例如西门子的S7协议等。相对于标准协议和私有公开协议,其受到的威胁会有所降低。但对于一些私有协议,同样也会被破解。因此私有协议也无法确保安全。工控协议的安全性也在影响着ICS系统安全。3.1Modbus协议由于Modbus协议具有消息帧格式简单紧凑、协议标准公开免费、支持多种电气接口以及基于Modbus进行通信程序开发方便快捷等特点,它已经成为工业自动化领域应用最为广泛的通信协议。经过多年的发展,Modbus又陆续推出多个版本:用于串行链路中的ModbusRTU和ModbusASCII,MODICON公司专有的经过扩展的ModbusPlus版本,以及用于以太网通信的ModbusTCP等。3.1.1ModbusTCP协议概述Modbus协议由MODICON公司在1979年开发,是全世界首个真正用于工业现场的总线协议。Modbus协议能够让不同的工控设备实现在多种网络体系结构中进行数据交互通信的功能,例如:PLC、HMI、输入/输出等多种设备,使用Modbus协议进行通信,实现远程控制操作。在Modbus串行链路版本中,Modbus采用主/从架构,或者说是单客户端/多服务器端架构。而在ModbusTCP版本中则演变成多客户端/多服务器端架构,即可以有多个主站或者从站。客户端相当于主/从架构下的主设备,而服务器端相当于从设备。作为主设备的客户端向作为从设备的服务器端发送请求报文,服务器端在收到请求报文后会处理报文并执行相关命令,随后给客户端发送响应报文,响应报文中包含命令是否执行成功或者客户端所请求的数据等信息。按照数据包是否为请求报文进行划分,ModbusTCP数据报文可以分成三种类型:请求报文、正常响应报文、异常响应报文。ModbusTCP的请求报文和正常响应报文具有相似的帧格式。一次正常的Modbus事务处理过程:ModbusTCP异常响应报文帧格式:一次异常的事务处理过程:Modbus功能码是Modbus数据报文中最重要的信息,它表示从站设备要执行何种操作等。功能码在报文中占1字节,它能表示的数据范围为[1,255]。由于Modbus事务处理发生异常时,返回的响应报文中功能码等于正常功能码与0x80之和,因此[128,255]的功能码不会使用,它仅出现在异常响应报文中。有效功能码范围为[1,127],又可分成3种类别:公共功能码、用户自定义功能码和保留功能码。公共功能码的范围为[1,64]∪[73,99]∪[111,127],它们具有唯一性,所表示的功能定义明确。公共功能码主要用于完成线圈/寄存器/离散量的读写、设备诊断和异常响应等功能。用户自定义功能码的范围为[65,72]∪[100,110]。用户根据自己需要自定义功能码的功能,这些功能码不具有唯一性,具体含义取决于使用的用户。保留功能码是一些公司对一些历史产品使用的功能码,不作为公共码使用。Modbus协议中的数据类型可以分成4种:线圈、离散量输入、保持寄存器、输入寄存器。表3-4描述了这4种数据类型的特性。3.1.2ModbusTCP协议安全性分析ModbusTCP协议设计缺陷包括如下5个方面。(1)报文缺乏加密机制,Modbus数据报文采用明文传输,攻击者只要捕获到数据包就能够轻松解析和篡改报文信息。(2)缺乏认证机制,认证主要用来确保接收到的数据来自被认证的合法用户,服务器不会响应未被认证的用户发送的数据。(3)缺乏授权机制,

Modbus没有实现基于角色的访问控制机制,所有用户具有相同的权限,甚至能够执行重要操作。攻击者只要进入到Modbus网络内,就能够执行任意危险的指令,例如重启Modbus服务器等。(4)功能码滥用,ModbusPDU的关键组成部分就是功能码,功能码指示接收报文的设备应当执行何种操作。这使得攻击者可以滥用功能码从而构造各类数据报文,再去实现拒绝服务攻击或者窃取系统关键信息等。(5)TCP协议存在自身设计上的缺点,攻击者可以利用这些缺点去构造洪泛攻击等拒绝服务攻击。Modbus协议受到的攻击主要分为4类:信息扫描攻击、响应注入攻击、命令注入攻击、拒绝服务攻击等。信息扫描攻击是黑客实施更危险复杂的攻击前的准备阶段,它旨在收集工控系统中的各种网络信息,识别工控设备的各种关键属性,如设备厂商、型号、支持的工控协议、系统合法地址和内存映射等,基于这些信息去寻找边界突破的方法以获取生产环境访问权限。具体的实现细节如下所述:(1)向所有合法的Modbus地址发送请求,通过Modbus服务器端发送的响应报文判断有效的设备地址;(2)构造各种功能码的请求报文,如果Modbus服务器端收到不支持的功能码报文,则会收到一个异常响应数据包,通过这样的方法,扫描出哪些Modbus功能码是可用的;(3)通过Modbus协议中内置的读设备标识函数来获取设备信息,然后继续去匹配可用的漏洞;(4)当对Modbus线圈、寄存器进行读写时,如果地址不合法,则Modbus客户端会收到一个异常响应数据包,从而扫描出被攻击设备线圈和寄存器的可用地址范围。响应注入攻击是指通过捕获工控系统内的Modbus响应数据包,然后恶意篡改数据包内容(例如使系统测量值为非法数据类型或者超出合法范围等),再注入到工控系统的一种攻击方式。这种攻击方式可以欺骗系统操作员或者导致工控系统做出错误的反应。命令注入攻击是指向工控系统中注入错误控制或配置指令。例如利用工控系统漏洞注入恶意命令,破坏从设备的工作状态,使其由正常工作状态转变成危险的临界状态。注入恶意参数命令以修改工控系统内的某些关键参数,这些参数可以是水箱水位、管道压强等,从而使工控系统或从设备工作异常。注入恶意功能码,控制工控系统去执行某些特定操作,从而导致Modbus服务器重启、或者停止传输消息等,以此达到攻击目的。拒绝服务攻击是指通过大量合法或者伪造的请求去占用被攻击设备的带宽或者系统资源,使得其无法正常工作的一种攻击方式。对于ModbusTCP来说,主要包括TCPFIN洪泛攻击、TCPRST洪泛攻击、TCP连接池耗尽等。3.1.3ModbusTCP协议安全防护技术为了针对性地解决Modbus通信协议中的安全威胁,需从协议设计阶段、开发阶段、测试与部署阶段分段实施Modbus安全防护。例如,在协议设计阶段,可融入异常行为预警功能。该功能可对工控系统的每次操作行为子属性进行扫描分析,并综合各子属性的安全等级,最终通过子决策融合实现单次操作行为的综合判定。对于异常行为,可采用报警触发或实例记录等手段,实现安全威胁预警。在线下阶段,可利用每次预警的实例记录组建综合的异常操作数据库,对数据库中单次操作进行深度解码分析,输出预警系统的虚警率、漏警率、预警率。这些综合指标可反映预警安全防护系统的性能,同时可反向地指导预警安全防护系统检测标准的改进。利用该协议操作数据库可使得工控系统中发生的安全事件具有可追查性。深度包检测技术是一种基于应用层的流量检测和控制技术,当IP数据包、TCP或UDP数据流通过基于该技术的带宽管理系统时,该系统会深入读取IP包载荷的内容,对OSI七层协议中的应用层信息进行重组,从而得到整个应用程序的内容,然后按照系统定义的管理策略对流量进行整形操作。为了保障ModbusTCP协议在工业控制网络中数据传输的安全性,可建立基于深度包检测技术的防护模型。防护模型包括身份合法性检测、协议完整性检测、功能码使用安全性检测等组成模块。其中,身份合法性检测模块通过对访问地址的解析判断访问者身份的合法性;协议完整性检测模块则通过对ModbusTCP协议特征的解析判断数据包的规范性;功能码使用安全性检测基于对ModbusTCP数据报文中功能码和数据的解析,以及对应用户授权的操作行为判断操作的合法性。身份合法性检测的功能主要包括数据链路层检测和网络层检测。数据链路层检测通过对数据包源MAC地址和目的MAC地址的解析和过滤可以阻断非法设备的访问,网络层检测则通过解析数据包中的源IP和目的IP以保护合法的IP访问顺利进行。协议完整性检测的功能主要包括端口检测、协议标识符检测和超长数据报文检测。端口检测通过解析数据报文的源端口和目的端口是否为502来识别ModbusTCP报文,协议标识符检测则通过解析协议标识符是否为0X0000判断ModbusTCP数据,同时对数据报文的长度进行检测,若数据载荷过长则判断报文为恶意构造的数据包。在功能码的使用安全性检测中,可以设置访问控制规则,允许符合规则的ModbusTCP数据报文通过,不符合的数据报文则丢弃。其内容应包括功能码、地址范围、阈值范围,并且是基于白名单的工作机制,以限制主站对从站的访问。例如:白名单规则:Pass[功能码:15][地址范围:5-9][阈值范围:50-100],默认规则:全部禁止。3.2PROFINET协议PROFINET是由PROFIBUS国际组织在2000年提出并于4年后构建起来的一套全面的标准,包含安装技术、实时通信、分布式现场设备、分布式智能以及运动控制等。依据应用场景不同,PROFINET应用可分为两种类型:PROFINETIO,用于集成分布式IO,支持分布式现场设备直接接入以太网;PROFINETCBA,用于在分布式自动化中创建模块化设备系统。PROFINET通信分为三个等级,可以在一根电缆上提供适应各种类型设备的3种通信信道:TCP/IP、实时通信(Real-Time,RT)和等时同步实时通信(IsochronousReal-Time,IRT)。3.2.1PROFINET-RT1.协议概述实时,表示系统在一个确定的时间内处理外部事件。确定性,表示系统有一个可预知的响应。因此,实时通信的一般要求是确定性的响应和标准应用的响应时间小于等于5ms。使用标准的通信协议TCP/IP或UDP/IP是实现实时通信的一种方法,然而使用它们会存在相应的缺点:当帧过载时,帧的长度会增加,从而引起线路上传输时间的增加。此外,由于标准通信协议分层较多,占用处理器的计算时间会相对较长,从而导致发送周期增加。PROFINET使用优化的通道进行实时通信,该通道基于ISO/OSI参考模型的第二层。此外,数据包使用接收设备的MAC地址进行寻址,在放弃了路由功能的代价下保证了工业控制系统网络中的不同站点能够在可预见的时间间隔内传输时间要求严格的数据。2.通信流程在PROFINETIO应用中,实时信号主要分为周期I/O数据和警报信号(非周期)。系统启动之后,己配置好的IO控制器和IO设备之间开始周期性的数据交换。每条I/O数据(RTC:实时周期)都包含两种属性:IO供应者状态(IOProviderStatus,IOPS)和IO消费者状态(IOConsumerStatus,IOCS)。IO控制器和IO设备依次评估传输的质量。3.协议结构PROFINET-RT通信协议是在EthernetII标准报文的基础上,加入了IEEE802.1Q标签头以及PROFINET-RT专有数据。PRE表示前导码,代表数据包的开始部分,由7个字节的1和0交替的二进制序列构成,用于接收器同步。SFD表示帧开始定界符。DST和SRC分别代表目的MAC地址和源MAC地址,MAC地址中前三字节用于标识制造商。VLAN包括4部分。其中TPID为一个特定的值0x8100,表明紧随其后的是VLAN标签协议标识符。Priority占用3位,代表帧的优先级,此优先级可以设置0x00至0x07的优先级别,数值越大代表的优先级越高,PROFINET-RT帧结构的优先级一般为0x06;CFI占用1位,值为0说明是规范格式,1为非规范格式;VID是一个12位的域,指明VLAN的ID,每个支持802.1Q协议的交换机发送出来的数据包都会包含这个域。EthType代表以太网类型,PROFINET实时数据釆用0x8892。Data部分在PROFINETIO中表示I/O数据,如果实时帧的长度小于64Byte,则PROFINET实时数据的长度必须扩展到最少40Byte,最长为1440Byte。APDU表示PROFINET实时数据帧的状态,由三部分组成。具体的取值及含义如表3-6所示。CycleCount表示周期计数器,每经过一个发送周期,计数器的值增加1。DataStatus代表传输的数据状态,每一位都有其固定含义,例如标识通道、数据有效性、问题指示器等。TransferStatus代表传输状态,取值为固定值0。FCS为帧检验序列。3.2.2PROFINET-DCP1.协议概述

PROFINET-DCP为发现和基本配置协议,由PROFINET协议簇定义,协议结构与PROFINET-RT相似,寻址方式、EtherType取值和PROFINET-RT信号相同,但在PROFINETIO中被分类为标准数据。PROFINET-DCP是以太网链路层协议并提供多种服务。它用来发现、识别和配置设备信息,例如PROFINET设备名称和IP地址。每个PROFINET设备分配一个唯一的基于域名系统(DNS)命名约定的设备名称和一个IP地址。2.通信流程发现和基本配置协议PROFINET-DCP是系统初始化时的重要协议之一,主要负责分配设备名称、IP地址。1)给IO设备分配名称在系统开始工作之前,IO设备必须被分配名称,分配名称过程一般由IO监视器完成。在运行期间名称是IO设备的标识,且可以由用户按一定规则选择。名称也可以由IO控制器给IO设备分配。分配设备名称分为三个阶段:

(1)识别请求:IO监视器或IO控制器以名称为标识搜索设备。

(2)设置请求:当检测设备名称但无回应时,向IO设备写入设备名称。

(3)设置响应:对设置请求的确认。使用PROFINET-DCP分配设备名称的序列:2)给IO设备分配IP地址

在系统启动阶段,IO控制器为IO设备分配一个IP地址,分配设备地址分为五个阶段:

(1)识别请求:IO控制器或IO监视器依据设备名称搜索设备。

(2)请求响应:表示己搜索到设备。

(3)地址解析请求:确认IP地址与设备MAC地址的对应关系。

(4)设置请求:向IO设备写入IP地址、网关地址等。

(5)设置响应:设置请求的确认。使用PROFINET-DCP分配设备IP的序列如图3-12所示。在DCP_Set正确接收之后,IO控制器与IO设备之间建立应用关系(ApplicationRelations,AR),建立成功后开始传输IO数据。3.协议结构PROFINET-DCP的帧结构(不包括前导码和帧开始标志):图中DST和SRC分别代表目的MAC地址和源MAC地址。与PROFINET实时信号相同,EtherType字段取值为0x8892。FrameID代表传输的实时数据帧的类型,对于PROFINET-DCP,FrameID取值处于0xFEFD~0xFEFF之间。对于一些有优先级要求的数据报文,源地址SRC和以太网类型EtherType字段之间,按照IEEE802.1Q规范被分配传输优先级,存储在VLAN标签中。Xid代表交换标识,为一个4字节的随机数,一般情况下请求和响应的Xid相同。Reversed代表保留位,取值为0。Vlen代表其后Block的长度。ServiceID和ServiceType以及Block决定了报文的具体操作内容。与PROFINET-RT信号相比,取消了末尾的APDU和FCS字段。4.字段详解PROFINET-DCP协议的大部分字段都有固定取值范围和意义。DCPGet即ServiceID取值为0x03,为单播的一种报文,用来从设备中读取相关信息。例如通过配置或诊断工具可以读取设备名称、设备IP、设备制造商信息以及供应商ID、设备ID、设备角色(控制器或设备)等等。DCPSet即ServiceID取值为0x04,为单播的一种报文,用来设置设备名称或设备IP。设备名称可以设置为保持型名称或临时型名称。保持型名称在设备断电后依然保留(默认情况下为保持型);临时型名称在设备断电后即返回到默认值。DCPIdentify即ServiceID取值为0x05,为多播的一种报文,用来使用特定的设备名称以便在网络上寻找对应的设备。DCPHello即ServiceID取值为0x06,为多播的一种报文。当在设备上使用并启用快速启动时,可以使用DCPHello服务。它不是使设备在断电重启后等待控制器找到它,而是通知控制器此设备已重新在线,从而缩短启动时间。ServiceID代表服务类型,ServiceType代表报文的状态,例如请求或响应成功以及响应失败。Block中保存着数据报文传输的具体信息,每一个报文可以包含多个Block,每个Block中可以包含多个选项Option和子选项Suboption,每一对都有其具体含义。1)IP相关信息(0x01)Option取值为0x01时表示传输IP相关信息。2)设备相关信息(0x02)

当Option取值为0x02时,表示传输的是设备相关信息,包括工厂自定义信息、设备ID、设备角色(控制端或被控制端)等。Suboption取值及其对应关系如表3-10所示。3)动态主机相关信息(0x03)Option取值为0x03时代表传输的是动态主机配置相关信息,包括主机名、供应商信息、服务端标识、请求参数列表等。4)控制相关信息(0x05)Option取值为0x05时代表传输的是控制相关信息,包括启动传输、终止传输、重置到出厂设定、信号标识、响应信息等。

5)设备主动发起信息(0x06)

Option取值为0x06时代表传输的是设备主动传输的信息,Suboption只开放了0x01。

6)所有信息(0xff)

Option取值为0xff代表获取设备的所有信息,此时Suboption取值也为0xff。3.2.3PROFINET安全性分析一般早期工业控制系统都是与IT网络相互隔离,因此大部分应用于工控系统的协议都没有考虑安全性问题。与其他应用在工业控制系统中的通信协议一样,PROFINET协议缺乏认证、授权和加密等安全机制。除了工控协议的常见安全问题之外,PROFINET-DCP协议中的服务ID与服务类型成为主要的攻击目标。ServiceID和ServiceType是PROFINET-DCP的重要组成部分,在使用过程中,ServiceID和ServiceType虽然仅开放了其中的一小部分,但仍具有一定的潜在脆弱性。对于PROFINET应用系统中常见的异常行为总结下:3.2.4PROFINET安全防护技术PROFINET的一个重要特征就是可以同时传递实时数据和标准的TCP/IP数据。在其传递TCP/IP数据的公共通道中,各种经过验证的IT技术都可以使用(如HTTP、HTML、SNMP、DHCP和XML等)。在使用PROFINET的时候,可以通过使用这些IT标准服务加强对整个网络的管理和维护,这有利于在调试和维护中节省成本。PROFINET实现了从现场级到管理层的纵向通讯集成。一方面,方便管理层获取现场级的数据,另一方面,原本在管理层存在的数据安全性问题也延伸到了现场级。为了保证现场级控制数据的安全,PROFINET提供了特有的安全机制,通过使用专用的安全模块,可以保护自动化控制系统,使自动化通讯网络的安全风险最小化。PROFIsafe是由PROFIBUS国际组织提出的加载在PROFIBUS和PROFINET通信协议基础上的功能安全通信行规,符合IEC61508(《电气/电子/可编程电子安全相关系统的功能安全》)功能安全国际标准,满足SIL3等级的故障安全,很好地保证了整个系统的安全。PROFIsafe使标准现场总线技术和故障安全技术合为一个系统,即故障安全通信和标准通信在同一根电缆上共存,安全通信不通过冗余电缆来实现。这不仅在布线上和品种多样性方面可以节约成本,而且也方便日后系统的改造。采用PROFIsafe既可使用单总线结构也可根据要求采用标准总线和安全总线分开的结构。与标准ROFIBUS相比,标准通信部件,如电缆、专用芯片、堆栈软件等等,无任何变化;简化了设备、工程设计和安装成本,既可用于低能耗的过程自动化,又可用于反应迅速的制造业自动化。此外,PROFIsafe还采用了SIL-Monitor专利技术,借助SIL-Monitor,系统能够在故障率超过一定限度之前即采取有效的安全保护措施,从而避免系统出现危险故障。PROFIsafe通过一系列的现场案例证明系统的灵活性,同时可满足工业4.0中的柔性化生产需求。3.3SiemensS7协议西门子PLC使用私有协议进行通信,端口为102。西门子PLC协议有3个版本:S7Comm协议、早期S7Comm-Plus协议和最新的S7Comm-Plus协议。S7-200、S7-300、S7-400系列的PLC采用早期的西门子私有协议S7comm进行通信,S7-1200系列v3.0版本之前的通信协议采用早期S7Comm-Plus协议,S7-1200系列v4.0版本、S7-1500系列采用了最新的S7Comm-Plus协议,最新的S7Comm-Plus协议引入了会话ID来防止重放攻击,且对关键流量有加密处理。3.3.1SiemensS7协议概述S7comm通信协议是西门子的私有协议,主要应用于西门子S7系列的PLC设备上,帮助西门子设备之间交换数据。S7comm是一个主从协议,现场PLC设备一般作为从站,装有上位机软件的PC是作为主站,主站向从站发送请求数据。S7comm协议也是根据TCP/IP协议栈实现的,属于OSI七层模型中的应用层协议。其中,低四层主要完成底层驱动程序。第五层TPKT层,是用来在第四层和第六层之间建立纽带作用的应用数据传输服务协议。第六层是COTP层,是位于TCP之上的协议,以“包”为基本单位传输数据,使得接收方获得和发送方具有相同边界的数据。第七层S7communication层对应于应用层,该层主要封装用户执行操作的数据。S7通信协议包前面封装COTP头,再接着封装TPKT头,数据包打包完成后通过TCP建立连接进行传输。S7comm是私有协议,可以使用Wireshark抓包工具来分析S7comm报文的格式及通信过程。Wireshark是一款网络分析工具,可以抓取网络中的通信流量,并能显示出最为详细的网络封包信息。1)TPKT协议格式分析S7comm协议在通信传输过程中是被封装在COTP协议中的,而COTP协议又被封装在TPKT(ISOtransportservicesontopoftheTCP)协议中。2)COTP协议格式分析COTP协议数据包包括ConnectionPacket和FunctionPacket两种形式。其中,ConnectionPacket又分为ConnectionRequestionPacket和ConnectionConfirmPacket两种。在COTP数据包中Payload和Trailer部分均可能为0,并且只有在Type字段为0xf0时,OPT字段才存在,Type字段的含义如表3-15所示。通过对数据报文的分析得出COTP协议的ConnectionPacket和FunctionPacket报文格式如下。3.3.2SiemensS7协议脆弱性分析目前存在针对西门子工业控制系统的攻击方式主要包括:IP欺骗、服务拒绝(DoS)攻击、TCPSYNFlood攻击、Land攻击、ICMPSmurf攻击、PingofDeath攻击、UDPFlood攻击、Teardrop攻击、中间人攻击、重放攻击等。中间人攻击和重放攻击是两种常见的攻击方式。1.中间人攻击中间人攻击(Man-in-the-MiddleAttack,简称MITM攻击)是一种间接的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为“中间人”。中间人攻击中有两个受害者,分别为上位机和PLC。中间人在双方都不知情的情况下实施攻击,攻击对象是经过中间人传送的上位机和PLC的传输内容。传输内容被中间人截获,如果截获信息中有用户名和密码,危害就会更大,而且中间人攻击不会损害两者之间的通讯。2.重放攻击重放攻击(ReplayAttacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。在工控系统中的重放攻击利用了S7协议缺乏认证的脆弱性问题,将上位机软件编译好的程序重新下装到PLC机器中。把以前窃听到的数据原封不动地重新发送给接收方。很多时候,网络上传输的数据是加密过的,此时窃听者无法得到数据的准确意义。但如果知道这些数据的作用,就可以在不知道数据内容的情况下通过再次发送这些数据达到欺骗接收端的目的。3.3.3SiemensS7协议安全防护技术在目前工控系统网络安全形势下,加强安全防护显得更为重要。通过对工控网络流量、工控主机状态等进行监控,收集并分析工控网络数据及软件运行状态,建立工控系统正常工作环境下的安全状态基线和模型,全面构筑工控安全技术体系,进而保障西门子工业控制系统的稳定运行。进一步加强工控系统安全防护措施如下:1)区域边界访问控制在生产网上位机与PLC设备之间部署工业防火墙,实现S7等工业控制协议的识别与深度解析,实时拦截非法指令和恶意指令下发等不法行为。在工业现场生产业务固化后,通过工业防火墙智能学习功能固化安全防护策略,使之更加符合生产业务需求。结合工业防火墙硬件级安全策略写保护特性功能,实现安全策略只读权限的物理级控制。强化对西门子工业控制系统的边界隔离与防护,确保控制系统的持续稳定运行。2)工控主机安全防护与加固在生产网工控主机上部署工控安全防护软件,通过白名单技术、漏洞防御、安全基线及外设管控等技术措施实现对工控主机的安全防护与加固,杜绝重放攻击、中间人攻击等攻击手段危害生产业务安全。3)生产网络流量监测及预警在生产网内部关键网络节点处旁路部署工控安全监测与审计系统,实时检测针对S7协议的网络攻击、用户误操作、用户违规操作、非法设备接入以及蠕虫、病毒等恶意软件的传播并实时报警,同时有效记录一切网络通信行为。4)统一安全管控构建安全管理中心并部署统一安全管理平台,对生产网络中部署的工业防火墙、工控安全防护软件、工控安全监测与审计系统等工控安全设备进行集中管控;同时统一安全管理平台兼备基于资产的集中管理功能,有效帮助运维人员提升网络安全运维工作效率,降低安全运维成本。3.4DNP3协议DNP(DistributedNetworkProtocol,分布式网络协议)是一种应用于自动化组件之间的通讯协议,常见于电力、水处理等行业。DNP协议标准主要为了解决SCADA行业中协议混杂、没有公认标准的问题。SCADA可以使用DNP协议与主站、RTU及IED进行通讯。DNP协议有一定的可靠性,这种可靠性可以用来对抗恶劣环境中产生的电磁干扰、元件老化等信号失真现象,但不保证在黑客的攻击下、或者恶意破坏控制系统的情况下的可靠性。DNP协议提供了对数据的分片、重组、数据校验、链路控制、优先级等一系列的服务,在协议中大量使用了CRC校验来保证数据的准确性。3.4.1DNP3协议概述DNP3协议层是基于IEC60870-5标准的增强型性能架构(EPA)。但是,DNP3协议引入了一个称为“伪传输层”的“透明”层,作为现有EPA结构的附加层。因此,DNP3协议由应用层、伪传输层、数据链路层和物理层组成。各层功能如下:(1)应用层:该层主要负责为用户提供访问应用进程的服务,其报文形式参考IEC60870标准定义的数据报文格式。(2)伪传输层:该层的主要功能是对应用层数据包进行处理,将输入的数据分解,以数据块为单位传送给链路层。(3)数据链路层:该层主要负责将应用层数据分成多个有序的传输数据单元,并将每个数据单元传送到链路充当链路层数据。(4)物理层:为链路层提供基本服务以及相应的接口。DNP3可以通过TCP/UDP进行封装,以便在以太网上运行,支持DNP3协议的从设备会开放TCP的20000端口用于通信。DNP3在主站会话上需要约定目的地址、源地址,而从设备收到后需要验证目的地址,再进行处理,如果目的地址不相同则会根据在协议栈实现的处理来决定是否不响应和关闭连接,或者返回异常功能报文等。1.应用层结构应用层数据单元APDU包含了报文头、对象标题和数据,其结构如表3-16所示。报文头:表示了报文的目的,其中包含了应用协议控制信息(APCI),可分为请求报文头和响应报文头;对象标题:表示随后的数据对象;数据:表示对象标题指定的数据对象类型。1)应用层报文头在应用层中,应用层报头APCI包含请求报文和响应报文。APCI负责主从站之间传输报文的顺序与流向,以及控制应用服务数据单元(ASDU)。在APCI部分,从站响应报文包含了2个字节的内部信号标志(InternalIndications,IIN),而主站请求报文没有此标志。

应用控制字节(AC)包含1个字节,它表示构造分段报文的基本信息。FIN:尾包标志,值为1时,表示整个报文的最后一个分段;FIR:首包标志,值为1时,表示整个报文的第一个分段;CON:确认标志,值为1时,需要接收方给予确认;序号:表示分段序号。应用层功能码(FC)包含1个字节,它表示请求/响应报文的目的。2)应用层对象标题(ObjectHeader)DNP3应用层对象标题表示报文中的数据,具体的含义要取决于报文中的功能码字段。无论是请求报文还是响应报文,对象标题的格式没有变化。对象:包含2个字节,表示指定对象以及后面对象的变化。限定词:包含1个字节,规定后面变程的意义。变程:包含0-8个字节,表示对象的数量。2.伪传输层结构伪传输层的功能是将应用层数据分成多个有序的传输数据单元(TPDU),并将每个TPDU送到链路层充当链路层数据。伪传输层对于数据链路层来说执行了传输功能,如图3-21所示。TH:包含1个字节,传输控制字;UserData:包含1-249个字节,用户数据块。应用层数据的大小是可变的,当应用层发送的数据大于249字节时,伪传输层的功能是将大于249字节的数据分成多个数据块进行传送,并在每个数据块前面加入1个字节的传输层报文头(TH)。其中传输报文头部分结构包含1个字节,结构由以下三段组成:FIN:尾包标志,值为1时,表示数据块为最后一帧;FIR:首包标志,值为1时,表示数据块为第一帧;序号:表示第几帧数据,范围为0-63。3.数据链路层结构DNP3协议数据链路层数据单元(LPDU)长度不超过292字节,采用一种可变帧长格式FT3,如图3-22所示。起始字:包含2字节,0x0564;长度:包含1字节,表示用户数据、源地址、目的地址和控制字本身之和,长度在5-255字节之间;

控制字:包含1字节,表示帧传输方向和类型;目的地址:包含2字节,表示到达地址;源地址:包含2字节,表示发送地址;用户数据:包含1-16字节,跟在链路层报文头之后的用户数据块;CRC:包含2字节,校验数据,在每个数据块之后。其中链路层控制字部分为1个字节,结构为:DIR:表示方位,1代表主站发出,0代表发向主站;PRM:表示原发标志,1表示报文来自通信发起站,0表示报文来自通信应答站;FCB:表示帧的计数位;FCV:表示帧计数有效位,它可使FCB位生效;RES:表示保留;DFC:表示数据流控制,用于防止从站缓存溢出,如果主站送入的数据导致从站数据溢出,则相应消息中包含这个标示位,需要主站通过查询链路状态进行恢复;FC:链路层功能码,表示帧的类型。3.4.2DNP3协议脆弱性分析DNP3协议虽然具有一定的可靠性,但由于其公有的协议规约进而导致协议结构和数据格式都是对外开放的,在本质上与ModbusTCP协议存在的脆弱性较为相似,都是具备固有的安全问题。其主要面临着如下几方面的问题:该协议由于对主和外站所采用的判别方法过于简单,根据DIR标志位的0-1状态很容易判断当前报文发送方向,这相比于其他协议更容易遭受中间人攻击,从而导致SCADA系统发生异常。

从DNP3协议本身来看,存在如下问题。(1)认证机制缺失,导致入侵者能够非法建立DNP3通信会话,扰乱控制系统正常运转。在标准DNP3协议中,通过观察数据链路层的数据包格式可以发现,通过链路层控制字部分中的DIR标识来表示主从站,链路层传输单元中并不包含任何认证信息,这样就无法判断信息发送者的身份是否合法。在这种情况下,攻击者通过篡改传输数据和功能码字段等方式来达到干扰通信和恶意指令传达、设备控制等目的,从而威胁通信系统的安全。(2)加密机制缺失,在该协议中,用户数据和控制指令都是以明文形式进行传输,在这种情况下,攻击者可以通过监听、嗅探、假冒等手段达到窃取、修改用户数据等目的。(3)完整性保护缺失,虽然在标准DNP3协议中,每个数据链路层报文中都包含一个CRC校验码,它能够校验传输数据的正确性和完整性,但是并不能达到保护数据不被篡改的目的。DNP3协议在通信过程中也存在一定问题。在实时通信过程中的报文极易被截获和恶意篡改,从而导致安全隐患的发生。其主要存在被攻击的行为有窃听、中间人攻击等。(1)无法抵抗窃听攻击,当所有的用户数据和控制指令都是通过明文形式进行传输的时候,攻击者很容易获取有效的通信地址,并且对系统中传输的信息进行窃听,从而获取相应的报文信息。(2)无法抵抗中间人攻击,该协议由于对主和外站所采用的判别方法过于简单,根据DIR标志位的0-1状态很容易判断当前报文发送方向,这相比于其他协议更容易实施遭受中间人攻击,从而引发导致SCADA系统发生异常。另外,当入侵者模拟外站向主站发送非请求报文时,不需要主站给予权限便能够上传数据,因此攻击者还可利用这一漏洞发动拒绝服务攻击等。3.4.3DNP3协议安全防护技术为了弥补DNP3协议中存在的不足,认证和加密机制相继被引入其中,SecureDNP3和DNPSec是具有代表性的解决方案。SecureDNP3是针对标准DNP3协议的改进,通过修改其应用层报文结构,同时引入认证技术,保证数据的真实性和完整性,但是该方案缺乏加密机制,传输的数据仍旧是明文形式,所以攻击者能够通过监听等收到收集系统数据。DNPSec安全机制修改的对象则是数据链路层,通过添加必要的字段实现认证和加密功能,但是这种方案对设备的计算能力和存储能力要求较高,在实际中使用并不广泛。目前,一些SCADA系统中针对DNP3协议实现安全通信采用的手段仍然是通过防火墙结合SSL和入侵检测实现的。通过釆取传输层协议安全措施,如使用传输层安全协议(TLS)等,即将DNP3数据流视为机密信息,尽量使用各种TCP/IP安全手段进行保护。在实际工程部署中,DNP3主控站与子站往往被隔离到只包含授权设备的唯一分区中,因此可以通过防火墙、IDS等设备部署,对DNP3链路上的数据类型、数据源及其目的地址进行严格控制,实现分区全面的安全加固。3.5OPC协议1990年微软提出了动态数据互换技术,到了1992年对象链接与嵌入技术2.0相对成熟,推出了面向对象的设计和编程,包括COM/DCOM技术用于不同对象间的数据交换,1996年OPC基金会正式成立并发布了OPCDA1.0,之后陆续发布了DA2.0、DA3.0,以及OPCUA即OPC统一架构。OPC是OLEforProcessControl的缩写,即用于过程控制的OLE。我们所熟知的OPC规范一般是指OPCClassic,被广泛应用于各个行业,包括制造业、楼宇自动化、石油和天然气、可再生能源和公用事业等领域。3.5.1OPC协议概述OPC出现的目的是为不同的供应商设备与应用程序之间的接口标准化从而使之间的数据交换更加简单,这样可以使开发者不依靠于特定开发语言和开发环境的过程控制软件。OPC标准是把PLC特定的协议(如Modbus、Profibus等)抽象成为标准化的接口,作为“中间人”的角色把通用的OPC“读写”请求转换成具体的设备协议来与HMI/SCADA系统直接对接,反之亦然。由此出现了一个完整的产品行业,终端用户可以借助其来最优化产品,通过OPC协议来实现系统的无缝交互。OPC是一项应用于自动化行业及其他行业的数据安全交换可互操作性标准。它独立于平台,并确保来自多个厂商的设备之间信息的无缝传输,OPC基金会负责该标准的开发和维护。OPC标准是由行业供应商、终端用户和软件开发者共同制定的一系列规范。这些规范定义了客户端与服务器之间以及服务器与服务器之间的接口,比如访问实早期的过程监控中硬件和软件的设置主要利用驱动器进行系统连接。各种应用软件都必须提供设备的驱动程序,即需要若干个驱动程序维持系统的正常运行,而且各软件间不能相互通信。因为各个软件来自不同的开发商,具有对同一设备不同的相互独立的驱动程序,所以多个软件也不能同时对同一个设备存取数据,否则可能造成系统的瘫痪。同时,某一个设备的升级要求该设备的所有驱动程序升级,否则会具有严重的隐患。这样的一个系统要想要长期维护,工作量是非常大的。为了避免驱动器连接的不足,可以采用OPC控制进行系统连接,这样大大优化了系统间的通信,变得更加简便快捷。OPC技术包含一系列的标准规范如DA、HDA、A&E等。这些访问规范都是由OPC基金会创建、发行并维护,基金会创建的这些标准和维护从根本上保证了OPC技术的兼容性。随着在制造系统以服务为导向架构的引入,如何重新定义架构来确保数据的安全性,这给OPC带来了新的挑战,也促使OPC基金会创立了新的架构——OPCUA,以满足这些需求。与此同时,OPCUA也为新的开发和拓展提供了一个功能丰富的开放式技术平台。OPC协议采用客户端/服务器模式,在客户端和服务器端都各自定义了统一的符合OPC标准的接口,此接口具有不变特性。当OPC客户端与服务器在同一台计算机上时,客户端通过COM进行本地过程调用(LPC)服务;当客户端与服务器不在同一台计算机上时,客户端通过DCOM进行远程过程调用(RPC)服务与服务器进行通信。OPC服务器通常支持两种类型的访问接口,它们分别为不同的编程语言环境提供访问机制。OPC规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来。对于软件开发商而言,不再专注于开发各种硬件设备的驱动程序,而是把焦点集中在增加和完善软件的功能上,使自己的软件更易被用户接受和使用。对于硬件设备制造商,再也不必担心自己的产品因为没有为某些软件提供驱动程序而被用户所忽视或放弃。一次编写的驱动程序(OPC服务器)可以被所有的应用软件所用。不仅节省了各种I/O驱动程序的开发费用,而且可以让制造商集中精力生产更易于用户使用的、功能完善的硬件。1.OPC逻辑对象模型OPC服务中有三类对象:OPCServer对象、OPCGroup对象、OPCItem对象,每一类对象都包含一系列的接口。OPCServer对象主要是功能创建和管理OPCGroup对象、管理服务器内部的状态信息。OPCGroup对象主要管理该对象的内容状态信息、创建和管理Item对象以及服务器内部的实时数据的存取服务(同步与异步),通常分为私有组和公有组。公有组有多个客户共享、私有组只属于某个客户,大多数的服务器均未实现公有组。OPCItem对象主要用来描述实时数据,一个Item对象不能单独被OPC客户端访问,所有的对象的访问必须通过OPCGroup访问。2.OPC通信方式(1)同步通信:OPC客户端对OPC服务端进行读取操作时,OPC客户端必须等到OPC服务器端完成对应操作后才能返回,在此期间OPC客户端处于一直等待的状态。(2)异步通信:OPC客户端对OPC服务器端进行读取操作时,OPC客户端发送请求后立即返回,不用等待服务器端,当OPC服务器端完成操作后再通知客户端程序。(3)订阅:需要服务器端支持OPCAE规范,由客户端设定数据的变化限度,如果数据源的实时数据变化超过了该限度,服务器则通过回调返回数据给客户端。3.OPC系列规范OPC

Classic规范基于MicrosoftWindows技术,使用COM/DCOM(分布式组件对象模型)在软件组件之间交换数据。规范为访问过程数据、报警和历史数据提供了单独的定义。(1)OPCDataAccess(OPCDA)OPC数据访问规范:定义了数据交换,包括值、时间和质量信息。(2)OPCAlarms&Events(OPCA&E)OPC报警和事件规范:定义了报警和事件类型信息的交换,以及变量状态和状态管理。(3)OPCHistoricalDataAccess(OPCHDA)OPCHDA规范定义了可应用于历史数据、时间数据的查询和分析的方法。OPC经典规范已经很好地服务于工业企业。然而随着技术的发展,企业对OPC规范的需求也在增长。OPC基金会发布的OPC统一架构(OPCUA)是一个独立于平台的面向服务的架构,集成了OPCClassic规范的所有功能,并且兼容OPCClassic。1.OPCUA规范OPCUA规范包含核心规范部分与存取类型规范部分,其中核心规范部分包括OPCUADataAccess、OPCUAAlarmsandConditions、OPCUAPrograms以及OPCUAHistoricalAccess规范;存取规范部分包括OPCUASecurityModel、OPCUAAddressSpaceModel、OPCUAServices、OPCUAInformationModel、OPCUAServiceMappings和OPCUAProfiles等。在生产管理软件的不断发展过程中,标准的采用也在不断更新,为适应应用需求的发展,

OPCUA规范为企业软件架构的建立指明了新的方向。

OPCUA具备以下特点:

1)

功能方面

OPCUA不仅支持传统OPC的所有功能,更支持更多新的功能:网络发现:自动查询本PC机中与当前网络中可用的OPCServer。地址空间优化:所有的数据都可以分级结构定义,使得OPCClient不仅能够读取并利用简单数据,也能访问复杂的结构体。互访认证:所有的读写数据/消息行为,都必须有访问许可。数据订阅:针对OPCClient不同的配置与标准,提供数据/消息的监控,以及数值变化时的变化报告。方案功能:OPCUA中定义了通过在OPCServer中定义方案,以便让OPCClient执行特定的程序。复杂数据内置:在数据获取标准OPCDA中增加了复杂数据规范。增强的命名空间:在目前的

OPC规范中支持将数据组织成层次结构,OPCUA更支持无限的节点命名和无限的关系设定,同时每个节点均可以对其他节点有无限的关系设定。大量的服务功能:OPCUA规范定义了大量的通用服务。采用UA二进制编码,使数据快速编码和解码,提高了数据的传输速度。它还能集成现有的基于COM/DCOM技术开发的OPC服务器(DA、HDA、A&E),使它们很容易通过OPCUA映射和使用。2)平台支持方面OPCUA标准解决了跨越微软系统平台,实现了多平台的互操作性,提供了更多的可支持的硬件或软件平台。硬件平台:传统PC硬件、云服务器、PLC、微控制器(ARM等)操作系统:MicrosoftWindows、AppleOSX、Android或任何Linux发行版本等OPCUA为企业之间的互操作性提供必要的M2M、M2E及两者之间的基础架构。3)安全性方面集成的OPCUA数据加密功能符合国际安全标准,为Internet及各企业网络内的远程访问和数据共享、客户端和服务器之间的安全通讯提供了保障。最大的变化是OPCUA可以通过任何单一端口(经管理员开放后)进行通信,这使得OPC通信不再会由于防火墙受到大量的限制。和现行OPC一样,OPCUA系统结构包括OPCUA服务器和客户端两个部分,每个系统允

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论