工控通信协议分析.docx
- 文档编号:17569788
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:25
- 大小:615.07KB
工控通信协议分析.docx
《工控通信协议分析.docx》由会员分享,可在线阅读,更多相关《工控通信协议分析.docx(25页珍藏版)》请在冰点文库上搜索。
工控通信协议分析
典型工业控制系统通信协议平安性分析报告
启明星辰集团
工控平安事业部
2021/10/26
前言
网络协议是计算机网络中进展数据交换而建立的规那么、标准或约定。
要理解工业网络如何工作,首先要理解他们所使用的底层通信协议,及其应用场景和选择这些协议的原因。
目前,已有的许多工业控制专用协议,大多是为了进步效率和可靠性而设计的,以满足大规模分布式控制系统的运行需要。
同时,令人堪忧的是为了提升效率,而放弃了协议的平安特性,例如:
要求额外开销的认证和加密等措施。
更有许多工控协议为了可以适应以太网运行做了修改,使得协议存在可以被利用的破绽。
因此,启明星辰对常见的ModbusTCP、OPC、DNP3、Ethernet/IP、EtherCAT这五种常见协议进展平安性分析,以期发现基于协议破绽的攻击方式。
欢送各位专家提珍贵意见。
技术联络人:
郑凌鹏:
.cn孟雅辉:
.cn
1ModbusTCP协议
1.1协议简介
Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年创造的,是一个划时代、里程碑式的网络协议,作为上个世纪第一个在工业现场总线发挥作用的工业总线协议,Modbus协议由于其免费、开放、简单等优点,至今仍然活泼在工业、建筑、根底设施等领域中。
随着时代的开展和需求的变化,Modbus己经衍生出ModbusPlus.ModbusTCP/IP等协议,其已经开展成一个协议簇。
在我国,已制定国家标准GB/T19582-2021?
基于Modbus协议的工业自动化
网络标准?
。
Modbus协议是应用于电子控制器上的一种通用语言。
通过此协议,控制器互相之间、控制器经由网络〔例如以太网〕和其它设备之间可以通信。
使用Modbus协议,不同厂商消费的控制设备在各种网络体系构造内进展简单通信,每种设备(PLC、HMI、控制面板、驱动程序、动作控制、输入\输出设备)都能使用Modbus协议来启动远程操作,在基于串行链路和以太TCP/IP网络的MODBUS上可以进展一样通信。
ModbusTCP以一种比拟简单的方式将Modbus帧嵌入TCP帧中。
IANA(互联网编号分配管理机构)给Modbus协议赋予TCP端口502。
如以下列图所示,每种设备都能使用Modbus协议来启动远程操作,在基于串行链路和以太网TCP/IP的Modbus上可以进展一样的通信,一些网关允许在几种使用Modbus协议的总线或网络之间进展通信。
图1-1ModbusTCP通信网络
1.2协议标准
ModbusTCP是OSI通信参考模型第七层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/效劳器通信。
如以下列图所示:
协议格式如下:
MBAP报文头
功能代码
数据
图1-2ModbusTCP协议应用数据单元的构造
Modbus协议的功能码分为三类:
〔1〕公共功能码
Ø是较好地被定义的功能码;
Ø保证是唯一的;
ØMODBUS组织可改变的;
Ø公开证明的;
Ø具有可用的一致性测试;
ØMBIETFRFC中证明的;
Ø包含已被定义的公共指配功能码和将来使用的未指配保存供功能码。
〔2〕用户定义功能码
Ø有两个用户定义功能码的定义范围,即65至72和十进制100至110;
Ø用户没有MODBUS组织的任何批准就可以选择和实现一个功能码;
Ø不能保证被选功能码的使用是唯一的;
Ø假如用户要重新设置功能作为一个公共功能码,那么用户必须启动RFC,以便将改变引入公共分类中,并且指配一个新的公共功能码。
〔3〕保存功能码
Ø一些公司对传统产品通常使用的功能码,并且对公共使用是无效的功能码。
图1-3Modbus功能码分类
图1-4公共功能码定义
1.3协议平安性分析
(1)没有认证机制
在网络连接方面,利用的是TCP协议。
在知道目的IP地址的情况下,只要通过502端口就可以发起并建立通信连接。
假如应用数据单元携带的功能码是Modbus设备所支持的,那么就可以建立起一个合法的Modbus会话。
没有消息校验(只有ModbusTCP存在该问题)。
在某些ModbusTCP实现中,校验和是在传输层而非应用层生成,从而使得假冒命令更加容易。
(2)没有权限区分
对于任何人,只要他可以连接到目的Modbus设备上,那么他就可以执行所有Modbus设备所具有的功能。
(3)数据明文传输
Modbus协议封装的是ADU,传输的也是这个ADU,在网络上都是以明文的形式传输,通过抓包技术就可以获取并解析出里面的数据。
由于工厂消费环境特殊性,不到万不得已的地步,工厂很难做到随时停工停产进展消费设备的更新换代,因此在现有条件根底上对Modbus协议以上三点缺点进展平安加固工作很有必要。
(4)没有播送抑制(只有串行Modbus变体存在该问题)
串行连接的所有设备都会收到所有消息,意味着在串行连接设备链中,可以通过对不明地址进展播送,有效地实现回绝效劳(Dos)攻击。
(5)可编程性
Modbus最危险的特点是它为编程控制器设计的,因此可以用来向RTU或PLC中注入恶意代码,该问题也存在于许多其他工业协议中。
一些需要特别关注的Modbus消息的例子包括:
Ø强迫从设备转到“只听〞(ListenOnly)形式的功能码
Ø重启通信的功能码
Ø去除、擦除或重置诊断信息(如计数器与诊断存放器)的功能码
Ø恳求关于Modbus效劳器、PLC配置或其他敏感信息的功能码
Ø对定义点列表及其值的Modbus恳求(配置扫描)
Ø恳求从站标志信息Ø恳求从站附加信息
Ø大小或长度有问题的ModbusTCP数据包。
可能的回绝效劳攻击
Ø从效劳器到多个节点的Modbus流量,可能的回绝效劳攻击
ØTCP端口502上的非Modbus或缺陷Modbus报文
Ø从设备忙异常代码延迟〔异常码06〕,可能的回绝效劳攻击
Ø确认异常代码延迟〔异常码05〕,可能的回绝效劳攻击
Ø不正确的报文长度〔最大253〕,可能的回绝效劳攻击
Ø配置扫描〔例如定义的点列及其值〕〔30秒内5个异常码02〕
Ø可用功能码扫描〔60秒内3个异常码01〕
Ø修改分隔符〔08-03〕
Ø周期较短〔实际阈值待定〕的无意义命令,暴力回绝效劳
Ø播送性质的报文或一个主站向多个从站的恳求
Ø包含在异常协议数据单元中的信息
Ø列出所有可用功能码的命令(功能扫描)
2OPC协议
OPC(OLEforProcessControl,用于过程控制的OLE)是一个工业标准,管理这个标准国际组织是OPC基金会,OPC基金会现有会员已超过220家。
遍布全球,包括世界上所有主要的自动化控制系统、仪器仪表及过程控制系统的公司。
基于微软的OLE(如今的ActiveX)、COM〔部件对象模型〕和DCOM〔分布式部件对象模型〕技术。
OPC包括一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统。
OPC的出现解决了控制系统打破“信息孤岛〞的瓶颈问题。
OPC技术建立了一组符合工业控制要求的接口标准,将现场信号按照统一的标准与SCADA,HMI等软件无缝连接起来,同时将硬件和应用软件有效地别分开。
只要硬件开发商提供带有OPC接口的效劳器,任何支持OPC接口的客户程序均可采用统一的方式对不同硬件厂商的设备进展存取,无须重复开发驱动程序。
这样大大进步了控制系统的互操作性和适应性。
1995年,由Fisher-Rosemount、RockwellSoftware、Opto22、Intellution和IntuitiveTechnology发起成立OPC基金会。
第一份OPC标准草案于1995年12月发布,第二份草案于1996年3月发布,第二份草案成功的吸引了大量开发人员的注意,并将其理念推向世界。
OPC标准1.0版本于1996年8月29日正式出版,开始了全球范围的活动。
截止2021年,OPC国际基金会总共拥有440余位公司成员/80多位最终用户成员,3500多家致力于开发OPC产品的公司,超过22000种产品,拥有3000多种产品资料,在包括中国在内的全球52个国家和地区拥有众多分支机构。
随着技术的开展和市场的需求,OPC技术的开展经历了三个主要阶段,即经典OPC、OPCXML-DA和OPCUA。
2.1协议简介
(1)经典OPC
OPC第一阶段的技术称为经典的OPC。
根据工业应用的不同需求,经典OPC包括的标准:
DataAccess(DA),Alarm&Events(A&E),HistoricalDataAccess(HDA),OPCBatch,OPCSecurity,OPCDX和OPCComplexData。
其中应用较多的有DA,AE和HAD。
DA指出如何访问当前的过程数据,A&E提供了基于事件信息的接口,HDA描绘了如何访问已存档的数据。
所有的接口都提供通过地址空间导航获取可用数据的方法。
(2)OPCDA
OPCDA即OPC数据访问标准,它是由OPC基金会定义的其中一种通信标准,定义了实时数据如何在数据源和数据接收体〔比方PLC,HMI〕之间,在不知道彼此特定通信协议的情况下仍然进展交换、传输。
年份
版本
备注
1996
1.0
初始标准
1997
1.0a
数据访问,该名称用于区分与其并行开发的其它
1998
2.0-2.05a
多处标准澄清和修改
2003
3.0
进一步补充和修改
表2-1OPCDA标准主要版本
OPC数据存取标准定义了OPC效劳器中一组COM对象及其接口,并规定了客户程序对效劳器程序进展数据存取时需要遵循的标准。
OPC数据存取标准以OPC对象模型逻辑为根底,该模型包含三类对象:
OPC效劳器对象,OPC组对象和OPC项对象。
OPC效劳器对象并作为OPC组对象的包容器维护有关效劳器的信息,OPC效劳器对象主要实现IUnknown和IOPCServer接口,OPC客户程序通过OPC效劳器的接口与OPC对象进展通信,存取数据源,数据源可以是现场设备,也可以是应用程序,效劳器内部封装了与I/O控制设备通讯及操作的详细实现过程;OPC组对象维护有关其自身的信息,提供包容OPC项的机制,并管理OPC项,它提供了一种客户程序组织数据的手段,例如一个组中可以包括一个设备中所有的数据项,客户程序和数据项之间可以建立基于“订阅〞的连接;有两种类型的组,公共组和局域组,公共组可以被多个客户共享,而局域组只能被一个客户使用,每个组中都可以定义一个或多个OPC项。
图2-1OPCDA中的对象
〔3〕OPCHDA
OPCHDA即OPC历史数据存取标准,提供了一种统一的在各种不同的应用层面之间传递数据的方式,但跟OPCDA完全不同的是,OPCHDA在不同角色之间传递的是非实时数据,即不是当下的时刻,而是过去某点或某段时间内的过程数据。
任何支持OPCHDA标准的数据可视化、数据分析或者趋势汇报的软件,都可以从任何一个支持OPCHDA的过程历史数据库中读取数据。
因为OPCHDA已经是一种非常之成熟的OPC访问标准,所以如今市场上的主要过程历史数据库都支持OPCHDA,即使用户所用的历史数据库没有提供OPC通信,如今各大OPC供给商也都有为不同历史数据库提供OPC接口的软件。
可以看出其应用主要不同的地方在于它是和过程数据库进展数据交换,其余的应用和之前的
OPCDA标准根本一样,是为了适应新需求而晋级的标准。
OPC历史数据效劳器对象实现了与历史效劳器进展读取或写入数据的功能,
数据类型取决于效劳器。
通过接口可以获取所有的COM对象,客户端只能看到这些COM对象。
〔4〕OPCA&E
OPCA&E即OPC报警事件标准,提供了基于事件信息的接口。
OPC支持两种类型的报警事件效劳器:
简单的和复杂的。
简单效劳器监测报警或事件,并提供给报警事件客户;复杂效劳器从多个数据源处(包括简单效劳器)监测报警或事件信息,并向报警事件客户提供信息。
报警事件客户也分为三类:
操作站、报警
事件管理子系统和报警事件logging组件。
OPC报警事件效劳器包含一系列的对象和接口,这些对象和接口向客户提供报警事件信息。
OPC报警事件效劳器中涉及以下几个概念:
报警〔Alarm〕:
报警是一种非正常的状态。
状态〔Condition〕:
状态是OPC报警事件效劳器定义的,每个状态还可以包含假设干个子状态,状态最终是和现场数据项联络的。
每一个状态都包含一个或多个子状态、属性和质量等属性。
OPC报警事件效劳器中定义状态机处理相应的状态或子状态之间的变化。
事件:
OPC标准中定义了三种事件。
条件事件:
定义描绘了状态的变化。
跟踪事件:
指当客户与OPC事件效劳器中定义的数据项之间发生交互时引发的事件。
简单事件:
指除以上两种事件以外的任何事件,例如,效劳器中定义的物理系统和设备的错误等。
OPCA&E效劳器主要包括OPC事件效劳器对象、OPC事件订阅对象和OPC事件区域阅读对象。
〔5〕OPCXML-DA
OPCXML-DA是OPC基金会提出的一个基于XML标准和SOAP技术的接口标准,OPCXML-DA将要交换的构造化数据信息组织为SOAP消息来传送。
基于XML技术和SOAP技术的特征使得它可以更好地促进工业现场数据跨越Internet的传输,简化不同应用间的互操作性,并将现场数据统一到企业层的运用中,实现诸如MES和ERP等系统的一体化连接,XML在OPC标准中的引入,为控制系统到信息系统之间的数据交换搭建了一个桥梁。
控制系统现场采用XML描绘的数据可以被管理信息系统中的标准XML解析器解析,而不需要根据不同的控制系统数据描绘开发多种解析器,这使得统一和标准化的数据传输成为可能。
OPCXML-DA支持8种效劳,每种效劳都包括1个恳求和1个响应。
通过对这些效劳的定义,提供了访问工业现场数据的标准接口,恳求和响应按照SOAP协议标准被包装成SOAP信封,信封标题说明消息如何被处理,信封正文那么包含工业过程信息。
OPCXML-DA支持的效劳类型详细包括:
ØGetStatus:
返回关于效劳器、版本、当前形式、运行状态等信息;
ØBrowse:
在效劳器的命名空间里搜索所有可获取的项的名字;
ØGetProperties:
返回1个或多个项的属性相关信息;
ØWrite:
向1个或多个项中写入新值;
ØRead:
返回1个或多个项的值、品质和时间戳;
ØSubscribe:
指定1个客户希望持续更新的项列表;
ØSubscriptionCancel:
删除在前一个Subscrible调用中指定的项列表;
ØSubscriptionPolledRefresh:
返回上次调用以来在项列表中数值发生变化的所有项。
〔6〕OPCUA
OPC通信标准的核心是互通性(Interoperability)和标准化(Standardization)问题。
传统的OPC技术在控制级别很好地解决了硬件设备间的互通性问题,在企业层面的通信标准化是同样需要的。
OPCUA之前的访问标准都是基于微软的COM/DCOM技术,这会给新增层面的通信带来不可铲除的弱点。
随着传统OPC技术不够灵敏、平台局限等问题逐渐凸显,OPC基金会于2006年发布了最新的OPC技术标准—OPC统一体系架构(OPCUA),涵盖了OPC实时数据访问标准(OPCDA)、OPC历史数据访问标准(OPCHDA)、OPC报警事件访问标准(OPCA&E)和OPC平安协议(OPCSecurity)的不同方面,但在其根底之上进展了功能扩展。
OPCUA是在传统OPC技术获得很大成功之后的又一个打破,让数据采集、信息模型化以及工厂底层与企业层面之间的通讯更加平安、可靠,它是将来OPC技术的核心开展技术标准。
OPCUA的几大优势:
Ø与平台无关,可在任何操作系统上运行
Ø为将来的先进系统做好准备,与保存系统继续兼容
Ø配置和维护更加方便
Ø基于效劳的技术
Ø可见性增加
Ø通信范围更广
Ø通信性能进步
OPCUA有效地将现有的OPC标准〔DA、A&E、HDA、命令、复杂数据和对象类型〕集成进来,成为如今的新的OPCUA标准。
OPCUA提供了一致、完好的地址空间和效劳模型,解决了过去同一系统的信息不能以统一方式被访问的问题。
(1)通信性高
OPCUA标准可以通过任何单一端口进展通信。
这让穿越防火墙不再是OPC通信的路障,并且为进步传输性能控制工程网版权所有,OPCUA消息的编码格式可以是XML文本格式或二进制格式,也可使用多种传输协议进展传输,比方:
TCP和通过的网络效劳。
(2)可靠性、冗余性
OPCUA的开发含有高度可靠性和冗余性的设计。
可调试的逾时设置控制工程网版权所有,错误发现和自动纠正等新特征,都使得符合OPCUA标准的软件产品可以很自如地处理通信错误和失败。
OPCUA的标准冗余模型也使得来自不同厂商的软件应用可以同时被采纳并彼此兼容。
(3)标准平安模型
OPCUA访问标准明确提出了标准平安模型,每个OPCUA应用都必须执行OPCUA平安协议,这在进步互通性的同时降低了维护和额外配置费用。
用于OPCUA应用程序之间传递消息的底层通信技术提供了加密功能和标记技术,保证了消息的完好性,也防止信息的泄漏。
(4)平台无关
OPCUA软件的开发不再依靠和局限于任何特定的操作平台。
过去只局限于Windows平台的OPC技术拓展到了Linux、Unix、Mac等各种其它平台。
基于Internet的WebService效劳架构(SOA)和非常灵敏的数据交换系统,OPCUA的开展不仅立足于如今控制工程网版权所有,更加面向将来。
OPCUA定义了一系列效劳器所能提供的效劳,特定的效劳器需要向客户打量细说明它们所支持的效劳;信息通过使用标准的和宿主程序定义的数据类型进展表达,效劳器定义客户端可识别的对象模型,效劳器可以提供查看实时数据和历史数据的接口,并且由报警和事件组件来通知客户端重要的变量或事件变化,OPCUA可以被映射到一种通信协议上并且数据可以以不同的形式进展编码来到达传输便捷和高效的目的。
OPCUA的总体架构如以下列图所示。
图2-3OPCUA总体架构
2.2协议平安性分析
由于使用DCOM与RPC、OPC与OLE受到同样破绽的影响,从而导致OPC很容易受到攻击。
此外,OPC基于Windows操作系统,很容易受到针对windows破绽的攻击影响。
虽然OPC及相关控制系统破绽只有ICS-CERT受权会员才能获得,但大量现存OLE与RPC破绽早已广为人知。
因为在工业网络中为产品系统打补丁存在困难,所以目前正在使用的工控系统仍然存在许多这样的破绽,哪怕微软公司已经提供了相应的补丁,但这种平安状态一直没有得到改变。
而且由于OPC基于Windows系统,通常的主机平安问题也会影响OPC系
统。
大量OPC主机使用弱平安认证机制,即使启用了认证机制也常使用弱口令。
许多系统启用了与SCADA系统无关的额外Windows效劳,导致非必需的运行进程和开放端口。
这些问题将OPC系统广泛暴露于攻击之下。
令问题更严重的是,由于Windows2000/XP审计设置默认不会记录DCOM连接恳求,因此攻击发生时,日志记录往往不充分甚至缺失,无法提供足够的详细证据。
也就是说,与前述的简单且目的单一的协议不同,OPC必须使用最新操作系统与网络平安手段,将其作为大型系统对待。
由于OPC依赖于微软公司受权机制,因此弱口令是威胁OPC效劳器平安的最严重脆弱性之一。
另一个主要问题是,由于windows2000/XP的审计设置默认不会记录DCOM的连接恳求、
SMB登录以及访问系统对象的尝试,从而导致日志记录不充分。
其他OPC平安问题包括:
(1)过时的受权效劳。
受限于维护窗口、解释性问题等诸多因素,工业网络系统晋级困难,导致
不平安的受权机制仍在使用。
例如,在许多系统中,仍在使用默认的Windows2000LanMan(LM)和WindowsNTLanMan(NTLM)机制,这些机制与其他过时的受权机制过于脆弱而易受攻击。
(2)RPC破绽。
由于OPC使用RPC,因此易受所有RPC相关破绽影响,包括几个在受权前就暴露的破绽。
攻击底层RPC破绽可以导致非法执行代码或DoS攻击。
(3)不必要的端口与效劳。
OPC支持除TCP/IP外的其他网络协议,包括NetBEUI、在Ipx协议上面向连接的NetBIOS和互联网效劳等。
(4)OPC效劳器完好性。
攻击者可以创立一个假冒OPC效劳器,并使用这个效劳器进展效劳干扰、
DoS攻击、通过总线监听窃取信息或注入恶意代码。
通过监控OPC网络或OPC效劳器〔效劳器活动可以通过采集与分析
Windows日志监控〕可疑行为可以检测多种威胁,包括:
Ø从OPC效劳器发起的使用非OPC的端口与效劳。
Ø出现OPC(包括底层OLERPC与DCOM)攻击。
Ø来自未知OPC效劳器的OPC效劳(意味着存在假冒效劳器)。
ØOPC效劳器上的失败受权尝试或其他受权异常。
ØOPC效劳器上由未知或未受权用户发起的成功受权尝。
3DNP3协议
3.1协议简介
DNP〔DistributedNetworkProtocol,分布式网络协议〕是HARRIS公司推出的一种远动通信协议,是目前电力系统自动化产品市场上的一种主流通信协议。
DNP3.0是美国IEEE电力工程协会(PES)在IEC的根底上制定的国家标准。
DNP3.0的开发是HARRIS公司集其多年SCADA通信规约应用经历,并参与了多个标准委员会的经历交流的结果(如IEEE,IEC,EPRI/UCA,MMSForum,
AMRA,ANSI,CCAC,CIGRE等标准委员会组织)。
3.2协议标准
DNP3.0基于IEC870-5标准,采用了ISO七层模型中的三层:
物理层、数据链路层和应用层,其构造为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信协议 分析