在使用Profinet IO运行的工业自动化网络中检测和防止重放攻击
摘要
现代工业设施由控制器、执行器和传感器组成,这些设备通过传统信息技术设备连接。这些系统持续集成到通信网络中,带来了新的威胁和攻击可能性。在工业网络中,通常使用诸如Profinet IO (PNIO) 等独特的通信协议。这些协议通常不被典型的网络安全工具所支持。在本研究中,我们提出了两种攻击技术,可使攻击者接管PNIO设备的控制权,从而重放先前记录的流量。我们建模了攻击检测规则,并提出了一种适用于工业网络的入侵检测系统(IDS),该系统能够通过将传统IT入侵检测系统的告警与特定PNIO报警进行关联来检测此类重放攻击。作为进一步的努力,我们引入了纵深防御机制,以防止这些攻击在物理世界中产生影响。随后,我们在一个物理演示系统中评估了我们的入侵检测系统,并将其与另一种专用于保护PNIO网络的入侵检测系统进行了比较。在概念设计中,我们展示了通过流量控制实现网络分段如何能够预防部分但并非全部的攻击。
关键词 工业网络 · 重放攻击 · 入侵检测与防御 · 攻击检测建模 · 纵深防御
1 引言
自动化系统在现代工业设施中发挥着关键作用,因此是我们经济的重要组成部分。新技术通过简化自动化系统的安装,并将可用数据提供给企业层面,从而最大限度地提高这些系统的效率。近年来,越来越多地通过将众所周知的IT技术引入过去使用专用且不兼容技术的领域来实现这一目标。尽管自动化和控制系统仍然有某些特定要求,但新标准旨在使用标准IT技术来满足这些要求。其中一种标准是Profinet IO (PNIO),如[14]中所规定。该工业以太网标准能够连接各种自动化系统,并为其提供实时通信。PNIO与大多数新型自动化标准一样,主要是关注提供可靠的服务,而不提供任何明确的安全机制。
这种情况,加上前文提到的网络越来越多地连接到各种服务的趋势,使得网络攻击的威胁成为一个现实的场景。即使PNIO中没有内置的安全控制,检测针对PNIO设备的攻击也至关重要。由于此类攻击几乎不需要对正在运行的工业流程有任何了解且易于实施,因此它们成为任何攻击者的有利目标。
在本研究中,我们将展示自动化协议中缺失的安全性如何通过在PNIO上使用重放攻击方法,使攻击控制系统设备变得更为容易。随后,我们将说明如何利用多个信息源作为入侵检测系统(IDS)的输入,以检测此类攻击。结合纵深防御(DiD)机制,我们进一步描述了通过采用带流量控制的网络隔离来防止部分此类攻击的可能性。为了能够理解该攻击方式及所提出的检测模型,本工作还包括对PNIO相关细节的简要概述。
这意味着此类PNIO网络理想情况下应在完全隔离的环境中运行,且不与外部有任何连接。
2 背景与相关工作
在本节中,我们将介绍与PNIO相关性以及对我们的研究重要的协议规范的背景信息。本节的第二部分专门介绍DiD的概念。第三部分将重点关注自动化协议的安全方法。最后一部分介绍了控制系统安全领域以及PNIO安全方面的相关工作。
2.1 Profinet IO
根据最近的一项研究[13],在工业自动化系统中,基于以太网的现场总线占38%的市场份额,传统现场总线占58%,无线变体占4%。基于以太网的现场总线年增长率估计为20%,而西门子凭借其包含PNIO[12]的“Profibus家族”在欧洲和中国市场上处于领先地位。总体而言,销售的基于以太网的自动化系统中有21%运行PNIO。
PNIO是在IEC61158-6-10中定义的实时工业以太网标准。图1描述了PNIO系统的典型配置。该标准定义了三种不同角色:PNIO主管、PNIO控制器和PNIO设备。
PNIO主管(例如编程站)负责PNIO系统的初始设置和诊断。PNIO控制器通常为可编程逻辑控制器(PLC),用于对连接的PNIO设备进行参数化并运行过程。PNIO设备是一种现场设备,能够将虚拟过程数据转换为物理过程数据,反之亦然,并且能够指示关键的系统状态。
在接下来的章节中,我们将使用一个PNIO过程的示例场景。在此场景中,一个可编程逻辑控制器(作为PNIO控制器)正在操作一个步进电机(PNIO设备)。以下小节将提供与此场景相关的PNIO协议行为的技术细节。首先从发现和配置开始。
在描述了发现与配置协议DCP和上下文管理协议CM之后,我们阐述了PNIO网络的启动阶段,例如在断电恢复供电后所发生的情况。最后一小节涵盖了PNIO中的报警管理。
2.1.1 PNIO 发现和配置
发现和配置协议 (DCP) 是PNIO协议套件中基于以太网的协议。控制器可通过使用DCP设置请求来配置PNIO设备。此类请求可包含多个配置选项块,例如仅通过单个数据包设置名称和IP地址。该请求随后由DCP设置响应进行应答,以指示尝试设置的配置选项以及请求是否成功执行。但该响应不包含来自DCP设置请求的实际值。
2.1.2 PNIO 上下文管理
CM(上下文管理)是一种基于UDP的PNIO协议,用于在PNIO控制器和设备之间建立应用关系 (AR)。控制器发送一个CM连接请求,指定通信通道的各个属性,包括其通信关系 (CR)。这些通信关系可以是数据输入和输出 (IO),以及报警处理的相关属性。IO CR的属性包括数据保持因子、发送时钟因子和缩减比。根据这些值可计算出相应CR的数据保持时间,如公式1所示。
$$
\text{DataHoldTime} = \text{DataHoldFactor} \times \text{SendClockFactor} \times \text{ReductionRatio} \times 31.25\mu s \quad (1)
$$
每次接收到相应CR的数据时,都会设置一个持续时间相同的看门狗定时器。当该定时器超时时,将触发一个PN-RT报警帧,并附带相应的错误信息,表明发生了超时。
2.1.3 PNIO 启动
当使用PNIO运行的工业系统启动时,可以观察到图2中所示的网络数据包序列。我们将重点关注PLC(作为PNIO控制器)与电机(作为PNIO设备)之间的连接建立。此外,我们假设所有组件均已配置为运行状态,这意味着该过程已经处于运行中,这在处理实际生产环境时是一个合理的假设。
从Profinet协议套件中,涉及三个协议:DCP、CM和RT(实时协议)。此外,还有PNIO使用ARP(地址解析协议)。CM是基于UDP的协议,而其他协议则直接在MAC层(以太网)上运行。
启动过程由PNIO控制器发起。它通过多播DCP Ident Request请求查找在PLC程序中最初配置了PNIO名称的设备。具有该特定名称的PNIO设备通过单播向PLC发送DCP Ident OK进行响应。Ident OK消息中包含该设备的IP地址配置等信息。
随后,控制器向PNIO设备提供的IP地址发起ARP请求。如果该设备尚未配置此IP地址,控制器将发送一个DCP设置请求,以设置PNIO设备的IP地址配置,从而能够在下一步通过UDP与该设备进行PNIO-CM通信。
2.1.4 PNIO报警管理
错误和警告的指示也是PNIO的一个重要组成部分。在网络层面,这种指示通过使用特殊的报警帧来实现。根据报警的来源和原因,存在多种报警类型。例如,过程报警来自现场设备上执行的过程,而诊断报警则来自现场设备本身[23]。只有过程报警的优先级被设置为HIGH,所有其他类型的优先级均为LOW。报警会根据其优先级被排队进入缓冲区,并且只有在得到确认后才会从缓冲区中移除。因此,每个报警都被分配一个序列号,该序列号也必须包含在通信伙伴(即PNIO控制器或设备)的确认信息中。这意味着在队列缓冲区中排在其前面的所有同优先级报警未被清除之前,后续的报警不会被上报。当控制器与设备之间的应用关系 (AR) 被终止时(例如由于新的连接请求),报警缓冲区将被清空。
PNIO标准包含一个预定义的报警消息列表,该列表可通过制造商特定的消息进行扩展。报警在非周期性的PN-RT帧(即报警帧PN-AL)中发送,其中指定了报警类型、报警源以及报警消息的结构。
2.2 纵深防御
关于网络攻击的威胁,必须在工业IT领域部署相应的应对措施。传统的IT安全方法在众多报告和国际标准(如ISO 27000或IEC 62443系列)中有所描述。这些应对措施是降低组织所有重要资产风险策略的一部分,所涉及的资产不仅包括技术设备,还包括各种类型的信息、软件、服务以及人员及其资质。
在信息安全领域,资产的风险通常由三个维度定义:关键性、漏洞和威胁,如[4]所述。关键性描述了资产对组织的重要性以及成功攻击所造成的影响。漏洞是资产中可被利用的特性,例如缺陷或错误配置。威胁则指能够利用此类漏洞的情况。风险管理的目标是降低组织的整体风险水平。为实现该目标,需通过检测性、预防性和纠正性措施来降低上述三个资产维度。
纵深防御在信息安全中描述了一种降低这些维度的基本策略,并力求提供一种成本效益解决方案,以达到期望的风险水平。它通常被定义为一种分层方法。这种分层是对以下认识的回应:任何单一保护点都可能并且很可能被攻破[15]。这意味着任何集中于单一防御机制的安全架构也会导致单点故障。DiD的分层方法通过要求设置多重防御线来应对这一问题,从而增加攻击者达成其目标的难度。
图3展示了一个使用多种检测与防御机制的纵深防御(DiD)策略示例。在该示例中,采用虚拟专用网络(VPN)实现安全远程访问。基于规则集,防火墙结合分段网络能够限制攻击者在网络中横向移动的能力。入侵检测系统使得检测潜在攻击并采取相应措施成为可能。通过实施访问控制进一步增强了防护,用户和服务必须经过身份验证才能在系统上执行操作。包含非军事区(DMZ)概念的策略减少了攻击者在网络中扩散的可能性。DMZ构成一个额外的网络段,可用于在未直接连接的不同网络区域之间交换数据。
为了使纵深防御策略有效,不同的层级需要采用不同的技术防护机制,并且应保持正交性,以确保某一层级的突破不会导致所有其他层级同时被突破。通过实施合理的纵深防御策略,即使攻击者利用了安全系统设计时未考虑到的攻击路径,也能降低其成功利用的可能性。
2.3 自动化协议中的安全方法
在传统信息技术中,安全通信协议利用加密方法来实现保护目标。例如,对消息进行签名和加密可以确保其机密性和完整性。
在工业自动化领域中,一种日益广泛使用的协议是OPC统一架构(OPC UA)。该协议基于传输控制协议(TCP),专为工业自动化系统设计的机器对机器通信协议。它采用客户端-服务器架构,并具有内置安全模型。德国联邦信息安全局(BSI)最近对该协议的一项审查[7]证明,只要启用了可选的安全机制,OPC UA的设计就是安全的。
当前的一种方法是OPC UA TSN。通过使用时间敏感网络(TSN)技术,OPC基金会及多家自动化组件制造商试图以OPC UA取代传统工业自动化协议。OPC UA TSN将保证抖动和实时循环时间达到2毫秒以内。在启用安全功能的前提下,OPC UA TSN有望提升自动化领域的安全性。然而,该技术目前尚未标准化,且由于自动化设备通常会使用数十年,因此在近期难以取代传统工业自动化协议。
相比之下,传统工业自动化协议主要关注可用性和以毫秒为单位的实时保证。然而,[3]已经提出了关于在安全方面增强PNIO的建议。建议通过引入基于PROFIsafe安全配置文件概念的安全模块来扩展PNIO。该扩展应包含一个附加层,以确保PNIO过程数据的真实性、完整性和机密性。目前,PNIO标准中尚未引入此类扩展。
2.4 相关工作
关于工业控制系统安全技术现状的广泛概述已经给出[17]。这项工作提倡使用工业控制系统(ICS)测试平台,以帮助识别、利用和缓解网络安全漏洞。该方法遵循一种安全评估方法,用于分析ICS架构并识别漏洞。作者将针对控制器和传感器的攻击确定为当前工业控制系统威胁格局中的两类攻击类别,并将虚假数据注入(FDI)视为该领域的新兴威胁。
在[22]中,我们根据该建议建立了用于检测漏洞的测试平台。我们引入了ISuTest,一种面向工业自动化系统的全自动安全测试框架。该框架主要关注检测系统实现和配置中的漏洞,而重放攻击则利用了PNIO的设计漏洞。
PNIO的系统架构及其功能的简明概述见[23]。关于PNIO网络中报警管理的更多细节在[9]中进行描述。然而,本工作主要关注PNIO系统的性能方面。
在控制系统领域,针对重放攻击的研究已在[18]中进行了探讨。在此研究中,作者假设存在一个攻击者试图通过注入控制输入来破坏控制系统的运行而不被发现。本工作的主要贡献在于提出了一种新的问题建模方法,以提供关于对控制系统实施重放攻击的可行性信息。
在[5]中,已探讨了使用PNIO一致性等级A时PNIO对中间人(MitM)攻击的漏洞。对于该一致性等级,允许使用传统的网络基础设施组件(如标准以太网交换机),且无需在PNIO网络中进行认证。在这项工作中,作者描述了通信建立过程以及在此过程中可能出现的错误,例如站点名称或IP地址的重复分配。作者尝试使用ettercap等开源工具实施MitM方法,但由于PNIO周期速度的原因,该尝试未能成功,正如所预期的那样。
PNIO的安全性也在[2]中进行了探讨。在此,作者遵循了两种攻击场景。在第一种场景中,系统使用共享介质进行通信,而在第二种场景中,系统通过分组交换网络进行通信。在共享介质场景中,攻击方法是注入PNIO帧,使其在正确帧之前到达目标。这需要高精度定时以及对协议的深入了解。在分组交换场景中,采用中间人攻击来截获并篡改PNIO帧。这种方法比第一种场景简单得多,因为攻击者只需等待帧到达,篡改后再转发,而无需了解PNIO控制器与设备之间应用关系的任何细节。尽管成功实现了该攻击,但作者注意到某些情况由于其基于PC的攻击系统在处理帧时存在部分延迟,导致不可靠性。
两种攻击类型,即拒绝服务(DoS)和中间人攻击(MitM攻击),以及针对PNIO的相关攻击也已被[19]研究。对DCP协议的攻击依赖于伪造的DCP识别请求帧,以阻止设备名称的成功分配。类似地,通过发送恶意的DCP或ARP帧也可以阻止IP地址分配。这两种攻击都会导致拒绝服务(DoS)。所提出的中间人攻击分为启动过程期间和运行阶段期间的攻击。这些中间人攻击依赖于端口窃取方法,即操纵交换机以捕获PNIO控制器与设备之间的通信流量。在这项工作中,作者还研究了基于异常检测的工业控制系统(ICS)入侵检测系统(IDS)的构建,并证明该入侵检测系统能够检测上述拒绝服务和中间人攻击。所提出的异常检测仅使用DCP帧序列来判断异常行为,而未结合PNIO协议的指标,也未采用手段直接检测端口窃取行为。在第6.3节中,我们将利用这项工作对所提出的解决方案进行对比评估。
已有进一步的研究致力于探讨PNIO的安全性。[1]中研究了PROFIsafe(处理安全方面的PNIO附加层)的安全性。
3 攻击案例研究
攻击案例研究部分首先介绍了本研究中使用的攻击者模型。随后,描述了案例研究的环境设置以及所选的攻击类型。本节最后详细说明了所采用的攻击检测技术及其在评估设置中的实现。
3.1 攻击者模型和攻击源
在本研究中,我们假设存在一个外部攻击者。该攻击者在不了解正在进行的工业流程的情况下,试图破坏工业流程,并考虑对系统造成永久性损坏。
我们区分了攻击者发起攻击的生产网络中的三个不同来源:
ORIGINRemote 位于远程人机界面(Remote HMI)。攻击者首先获得对企业网络的访问权限。其目标是例如具有访问远程人机界面权限的管理员。此类攻击的一个示例是向该管理员发送一封伪造电子邮件。当邮件被打开时,附带的恶意软件将被执行并攻击系统。
ORIGINOPCUA 是OPC UA服务器。该服务器已被攻击者渗透,例如通过利用远程人机界面中的其他漏洞进行攻击,如来源Remote中所述。
ORIGINLocal 是本地人机界面,一种直接连接到与可编程逻辑控制器相同交换机的设备。攻击者已获得对该设备的访问权限,例如从ORIGINOPCUA开始,利用权限和/或漏洞。
3.2 环境设置
本工作的场景在工业IT安全实验室中实现。该实验室包括物理部分和虚拟化环境,如[20]所述。在物理部分中,使用典型的工业协议(如PNIO、西门子 S7、EtherCAT和OPC UA)将可编程逻辑控制器、传感器、执行器、交换机等真实的工业组件相互连接。
在虚拟化环境(下文称为“云”)中,使用虚拟交换机和虚拟防火墙建立了不同的网络。连接到这些网络的虚拟机提供了自动化系统的组件(例如PLC编程站、SCADA服务器)、管理工具以及各种攻击和检测工具。
如图4所示,该场景的物理部分使用了西门子PLC(S7-300)、步进电机(Schneider Electric mdrive)、人机界面(西门子KTP-700)和工业交换机(赫斯曼 RS-20)。此外,还有一台嗅探设备连接到交换机的一个端口上,该端口接收前述三个设备的所有流量(端口镜像)。
该场景中实现的物理过程是将安装在电机轴上的磁盘顺时针从一个位置旋转到下一个位置,并暂停2秒。我们演示装置所基于的真实工业流程还包括一个钻头,当且仅当工件被磁盘运送至钻孔位置时,钻头才会在工件上钻孔。
物理交换机通过网络主干连接到云。在此场景的虚拟部分,生产网络上连接有一个OPC UA服务器(西门子OPC网关)、远程人机界面(基于OPC UA 的可视化)、编程站(西门子TIA Portal)以及一台嗅探设备。
来自生产网络物理部分和虚拟部分的镜像数据流都被导向一个集中器,该集中器将它们合并,并向检测工具提供生产网络的全部流量。
3.3 攻击选择与执行
为了控制步进电机,我们专注于重放网络流量。这是一种非常普遍的攻击,甚至外部攻击者也可以实施,本文正是基于这一假设。实施此类攻击无需了解所执行的工业流程,只需具备观察和记录流经网络的网络流量的能力和时间即可。该方法的一个限制是,只能记录在监视流量期间发生的操作。但我们并不认为这是一个主要缺点,因为大多数工业流程都依赖于非常精确的定时,因此即使是在无效的时间段内触发有效的操作,也可能对系统造成损害。例如,考虑上述钻孔示例中,钻头将孔钻在磁盘上而非工件上。
3.3.1 夺取控制权
为了攻击特定的PNIO设备而重放流量,要求攻击者至少接管与其的一个连接。为此,我们选择了两种合适的攻击类型。尽管重点是两种重放攻击,但其他类型的重放攻击的检测方法也可以类推:根据定义,每次重放攻击都会中断现有的通信关系,因为典型的PNIO设备只能维持单个PNIO连接。
第一种攻击是攻击基于以太网的协议的经典方式:使用端口窃取。通常,网络交换机会通过维护一个查找表来学习哪个设备连接到哪个硬件端口。当它从端口Pj接收到源MAC地址为Mi的以太网数据包时,便会得知目的MAC地址为Mi的数据包必须被转发到端口Pj。具有相同MAC地址的先前条目将因此丢失。这种标准机制非常有用,因为它能够在有新设备接入交换机或拓扑结构发生变化时自动适应。
端口窃取攻击利用此行为的方式如下:被攻击的设备具有MAC地址Mvictim,并连接到端口Pvictim。攻击者连接到端口Pattacker,并发送任何类型的基于以太网的数据包,其源MAC地址为Mvictim。此时,交换机会学习到发往MAC地址Mvictim的数据包应被转发至端口Pattacker。如果受害设备自身发送一个网络数据包,交换机将恢复MAC地址Mvictim与端口Pvictim之间的原始关系,但攻击者以极高的频率发送其端口窃取数据包,导致这种恢复无法长时间维持。
在我们的研究中,可编程逻辑控制器作为端口窃取攻击的受害者。图5展示了攻击序列及相应的网络通信过程。当电机向可编程逻辑控制器发送数据包时,这些数据包将不再到达可编程逻辑控制器,而是到达攻击者的交换机端口。与此同时,攻击者能够直接向电机发送数据包。真实的可编程逻辑控制器也能够向电机发送数据包,但这对攻击者来说并不构成问题,因为PNIO标准规定,如果通信伙伴没有实时响应,则必须关闭现有连接。
第二种攻击类型专门针对采用PNIO协议运行的设备:利用DCP进行的重新配置攻击。由于该协议在设计上没有任何身份验证措施,位于同一子网中的任何设备都能够对PNIO设备进行重新配置。有两种可用选项:Set IP 和 Set Name。由于PNIO设备的标识符是其名称,因此我们在此攻击中选择了该选项。
在图6中,显示了DCP重新配置攻击的序列图。涉及三个设备,每个设备都有其IP和MAC接口:可编程逻辑控制器、电机(其原始设备名称为Dold)以及攻击者。在攻击发生之前,可编程逻辑控制器与电机之间交换实时数据(RT)。
攻击者通过发送DCP Set Request要求电机将其名称更改为Dnew。电机会向其Profinet通信伙伴——可编程逻辑控制器(PLC)发出一条PNIO报警帧“设备名称已更改”。PLC确认该报警帧后,PLC与电机之间的连接将被终止。最后一步,电机通过向攻击者发送DCP Set Response来确认DCP Set Request。此后,PLC会持续寻找名称为Dold的设备(该名称仍配置在其设置中),但将无法找到,不会收到任何响应,因为目前没有设备被配置为对该名称作出反应。
3.3.2 重放流量
在采用PNIO运行的系统中成功重放流量,除了需要通信连接外,还需要如前所述的应用关系(AR)(见第2.1.2节)。一旦像步进电机这样的PNIO设备与其可编程逻辑控制器(PLC)建立了应用关系,它将拒绝任何进一步的通信请求,并返回错误响应。因此,在继续重放之前,必须中断可编程逻辑控制器与电机之间现有的通信关系。
幸运的是,3.3.1节中描述的这两类攻击都会导致原始通信关系中断:在端口窃取情况下,可编程逻辑控制器(PLC)不再收到来自电机的实时数据,因为这些数据现在被重定向到了攻击者。在经过2.1.2节中描述的数据保持时间后,若仍未收到来自电机的任何消息,PLC将终止连接并发送一个报警帧。因此,电机也将停止收到来自PLC的实时数据,并以相同方式终止其通信。在DCP重新配置攻击的情况下,连接会立即丢失。
一旦电机不再参与通信关系,攻击者就能够与该电机建立新的连接。攻击者首先发送CM Connect Request,电机则通过发送CM Connect Response进行响应。随后,攻击者发送一个CM Control Request,电机以CM Control Response进行回应。在原始流量中,电机会继续发送一个CM Control Request,但攻击者无需对此请求作出回复,而可以直接开始重放PNIO实时数据包。需要说明的是,攻击者甚至不需要处理或响应电机的回复。
4 攻击检测
在本节中,我们将首先介绍一个用于检测前几节所述攻击的模型。在第二部分,我们将解释如何使用现有的基于开源的入侵检测框架来实现该模型。
4.1 攻击检测模型
在基于端口窃取的重放攻击情况下,存在用于端口窃取的数据包证据。因此,如果在网络中观察到此类异常流量,通常会引发怀疑。由于端口窃取方法依赖于攻击者在被攻击设备发出正确数据包与其响应之间的有限时间内发送伪造数据包,因此攻击者必须在短时间内生成大量数据包。检测这种巨量流量的一种方法是使用基于流的入侵检测系统。这些系统通过考虑源地址和目的地址以及一些其他可配置的键,将单个数据包聚合成数据包流。另一种检测方法是配置交换机,当MAC地址从一个接口更改为另一个接口时发出告警。
我们将此证据称为〈port-stealing〉,执行该分析的工具称为Port stealing detector。
此外,网络中将出现两个类型为“AR 消费者 DHT/WDT 已过期 (RTA_ERR_ABORT)”的PNIO报警帧:第一个来自不再接收来自电机的周期性数据的PLC (〈al-plc-expired〉),第二个来自电机,抱怨PLC停止发送周期性数据 (〈al-motor-expired〉)。
检测DCP重新配置攻击非常困难,因为在特定网络中不会出现任何异常的数据包。然而,工业网络 tends to be very stable and are run for a long time。因此,设备的重新配置不属于日常工作,基于此,检测那些更改设备名称的DCP数据包似乎是合理的。我们将称该数据包为〈dcp-setname〉。
为了完善检测,当名称交换成功完成后,网络上将出现一个PNIO报警帧“站名称已更改”(〈al-station-name-changed〉)。该报警将由可编程逻辑控制器通过一个报警进行确认(〈al-generic〉)。此后,可编程逻辑控制器将定期发送DCP识别请求,以查询电机的初始名称 (〈dcp-ident-req-oldname〉)。
综上所述,可以通过以下证据发现端口窃取攻击:
〈端口窃取〉 AND 〈PLC超时报警〉 AND 〈电机超时报警〉
在发生DCP重新配置攻击的情况下,我们会观察到以下证据:
〈dcp-setname〉 AND 〈al-station-name-changed〉 AND 〈al-generic〉 AND 〈dcp-ident-req-oldname〉 (repeated)
需要注意的是,并非所有AND条件中的证据都必须存在才能判断攻击正在进行:在第一种情况下,只需发现〈端口窃取〉以及〈PLC超时报警〉或〈电机超时报警〉其中之一即可,因为可以推断出当通信的一方停止时,另一方很快也会停止。在第二种情况下,〈al-generic〉和〈dcp-ident-req-oldname〉仅用于提高检测的准确性。这一点非常重要,因为在某些拓扑配置中,并非所有数据包都能被入侵检测系统观察到(参见第6节)。
为了消除误报,我们期望接收来自入侵检测系统的告警的操作员能够了解所有维护工作。
4.2 攻击检测实现
图7描述了攻击检测系统的架构。通过硬件交换机对PLC和电机的特定端口进行监控,从而在物理环境中实现网络流量的镜像。由于分布式入侵检测系统位于实验室的虚拟部分,因此需要通过通用路由封装(GRE)隧道将镜像流量转发至云中。
网络数据包的镜像流有两个使用者:镜像流中的端口窃取检测器和PNIO检测器。当它们在网络数据包流中检测到任何可疑活动时,都会生成告警。
相关器接收这些告警。它能够聚合这些告警并生成新的告警,发送给操作员。
4.2.1 端口窃取检测器
一方面,Port stealing detector从镜像流中嗅探数据包。开放的IPFIX标准(互联网协议流信息导出,[8])为第二层通信定义了流密钥,例如MAC源地址和目的地址。然而,目前常见的基于流的开源入侵检测系统 Flow-tools[10], Silk[16]和nf dump[11]的实现并不支持这些密钥,因为它们仅限于第三层通信。因此,我们目前无法使用基于流的入侵检测系统作为端口窃取检测器。
作为实现端口窃取检测器的替代方案,我们已设置连接物理组件的交换机在MAC地址从一个接口切换到另一个接口时向相关器发送告警。
该解决方案的一个巨大优势在于其可用性。缺点是需要对交换机进行重新配置,这在某些生产环境中并不可行。
4.2.2 PNIO检测器
另一方面,PNIO检测器从镜像流中接收网络数据包。在第一阶段,它由一个在后台运行的Python脚本构成,并使用“网络数据包和pcap文件构造/嗅探/操作/可视化安全工具”Scapy[6]。它过滤PNIO的Ethertype 0x8892,并在接收到特定的PNIO报警帧(见第2.1.4节)或DCP数据包(见第2.1.1节)时生成告警。不使用Snort等标准的基于网络的入侵检测系统[24]的原因在于这些工具基于IP流量,而PNIO基于以太网。
同时,我们开发了一种称为Snort预处理器的组件。该预处理器使Snort入侵检测系统能够对PNIO以太网帧做出响应。这种响应由根据先前Python脚本定义的特定规则触发。预处理器的优势在于它可以集成到标准入侵检测系统中,包括使用成熟的工具和技术来处理大量的网络流量和告警。
列表1展示了一个PNIO预处理器规则,当相应的PNIO报警帧通过镜像流时将触发该规则。第1行定义了一条告警并为其分配了告警消息。第2行通过关键字 profinet 引用PNIO预处理器,该关键字注册于以太类型0x8892。此外,它规定网络数据包必须是由PNIO设备发送至PNIO控制器的报警。第3行检测是否设置了PNIO过期报警所指定的错误代码。第4行为告警添加组织信息后将其关闭。
列表1 检测PNIO过期报警的Snort PNIO预处理器规则示例。
1 告警 ( msg : 控制器过期报警
2 Profinet:报警 IO 设备 -> IO - 控制器
3 [错误代码1 == 253,错误代码2 == 5];
4 组ID : 8892;规则ID : 9088941;版本 : 1;)
在列表2中,显示了一个生成的Snort告警。第1行以规则标识符和告警消息标识符开头。第2行使用错误代码重复了文本信息。第3行和第4行以及第5行和第6行提供了PNIO报警发送方和接收方的信息:MAC地址、PNIO角色和PNIO设备名称。
这只是针对所用攻击场景的开发PNIO预处理器在Snort中的快速概述。
列表2 PNIO已过期生成的Snort告警。
1 [**][8892:9088941:1]控制器 已过期报警
2 [错误代码2 == 5;错误代码1 == 253;][]{ 报警 }
3 40: D8 :55: XX:XX :6C IO‐设备 , mdrive ,
4 192.168. X.22) ->
5 28:63:36: XX:XX :44 (IO ‐ 控制器 , " plcmaster ",
6 192.168. X.20) [**]
5 攻击预防
在本节中,我们将探讨如何通过纵深防御措施来防止第3节所述的攻击。正如第2.2节所述,应用不同且正交的保护机制非常重要。然而,我们重点关注使用具备流量控制功能的防火墙进行网络分段以及隔离区的部署。这些是针对本文所提出的重放攻击等网络攻击最合适的应对措施。
在图8中,展示了四种不同的预防场景。圆柱体代表网络交换机,其中每一行文本表示连接到特定交换机的服务器。带有流量控制功能的防火墙用带有火焰装饰的墙表示。防火墙将网络划分为不同区域,这些区域相应地进行了着色和命名。需要注意的是,这并不是自动化企业网络的完整图示,图中仅展示了与场景相关的资产。作为一般假设,我们在企业网络和生产网络之间设置了一个防火墙。
PREVNone 说明了生产网络中没有任何分段的基本场景,如第3.2节所介绍。作为企业网络中系统的示例,图中显示了一个管理员PC(MgrPC)。在生产网络内部,有两种不同的交换机:左侧是一个虚拟交换机,为远程人机界面(R-HMI)、OPC UA服务器(OPC UA)和编程站(Pr.stat.)提供网络接入。右侧的一个物理交换机连接了现场设备本地人机界面(L-HMI)、可编程逻辑控制器(PLC)和步进电机(Motor)。
PREVDMZ 利用虚拟网络内的隔离区。OPC UA服务器和编程站均位于隔离区内,而远程HMI位于企业网络中。从企业网络到生产网络的连接在隔离区内终止,不允许直接访问物理设备。建立隔离区的防火墙可以是虚拟或物理防火墙。
PREVProdFw 在PLC前方放置一个防火墙,将可编程逻辑控制器和步进电机与其余物理设备隔离开来网络。由于可编程逻辑控制器与步进电机之间的实时通信,无法在两个物理资产前部署防火墙的场景:防火墙的数据包检查过程速度不够快。企业网络和生产网络的虚拟部分与基本场景PREVNone中的相同。
PREVDMZ+ProdFw 是PREVDMZ和PREVProdFw的组合:既采用了隔离区方法,也在可编程逻辑控制器和步进电机前部署了本地防火墙。
5.1 流量控制
部署防火墙只是保护网络的第一步。为了控制网络流量,必须添加针对网络流量的具体规则,以定义允许和禁止的内容。
在图9中,展示了各个场景的不同网络,包括允许和禁止的网络流量。需要注意的是,默认规则是“拒绝所有”,即只允许明确描述的流量通过。
FLOWEnterprise 适用于场景PREVNone和PREVProdFw中企业与生产网络之间使用的防火墙。为了访问远程人机界面和编程站,需要允许RDP(Windows远程桌面)或VNC(虚拟网络计算)等桌面共享协议通过防火墙。无需任何自动化流量(如PNIO)通过防火墙。
FLOWDMZ 适用于实现生产DMZ的场景PREVDMZ和PREVDMZ+ProdFw。其基本特征是,无法直接从企业网络向生产网络传输流量。来自企业网络以及生产网络的所有流量均终止于隔离区。与FLOWEnterprise不同,为了操作R-HMI,OPC UA必须往返于企业网络。
在隔离区和生产网络之间,必须允许S7和DCP协议。西门子TIA Portal使用这两种协议来配置、维护和调试西门子PLC和PNIO设备。一些PNIO设备甚至提供Web界面。根据业务需求,需要决定是否应允许通过HTTP或HTTPS进行访问。
还需要确定如何更新生产网络中的服务器,这对于定期修补漏洞至关重要。漏洞需要定期修补。一个基本的场景是允许生产网络中的服务器连接到企业网络中的更新服务器。更高级的场景会在隔离区中部署一个本地更新服务器,该服务器从企业更新服务器接收推送的新更新。然而,这些考虑不在本研究范围内。
明确禁止从隔离区到生产网络的实时通信。
FLOWProduction 适用于场景PREVProdFw和PREVDMZ+ProdFw,这两个场景将生产网络划分为两个不同的子网。由于编程站的原因,必须允许S7和DCP通过,而实时协议不得通过。
6 评估
在本节中,我们将评估我们针对第3.3节所述的针对PNIO网络的两种重放攻击的检测和防护方法。对于检测部分,我们在不同配置下进行并记录了多次测试;而防护评估则是基于防火墙理论以及我们在实验室中的观察和经验所进行的概念性评估。本节最后对所提出的检测方案进行了对比评估。
6.1 检测评估
图10显示了基本设置,其中可编程逻辑控制器(右下)和电机(隐藏在左侧彩色磁盘后面)通过交换机(中下)以星型拓扑结构连接。嵌入式电脑位于中上位置,连接到交换机的镜像端口和云上行链路。人机界面位于右上角,用于反映系统的状态。
表1
重放攻击检测评估中检查的不同设置
| # | 拓扑结构 | 攻击源 | 操作 | 证据 | 检测 | 备注 |
|—|--------|-------|------|------|------|------|
| 1 | Star | L-HMI | 端口窃取 | 防护状态, Pex, Mex | Yes | |
| 2 | Star | L-HMI | DCP重新配置 | SET,Msnc,Pgen,ID | Yes | |
| 3 | Star | R-HMI,OPC UA | 端口窃取 | 防护状态, Pex, Mex | Yes | |
| 4 | Star | R-HMI,OPC UA | DCP重新配置 | SET, Msnc, Pgen, ID | Yes | |
| 5 | Line | L-HMI | 端口窃取 | PS | No | 漏报 |
| 6 | Line | L-HMI | DCP重新配置 | SET, ID | Yes | |
| 7 | Line | R-HMI,OPC UA | 端口窃取 | PS | No | 漏报 * |
| 8 | Line | R-HMI,OPC UA | DCP重新配置 | SET, ID | Yes | |
| 9 | Star | – | PLC插头已拆除 | Mex | No | |
| 10 | Star | – | 电机插头已拆除 | Pex | No | |
| 11 | Line | – | PLC插头已拆除 | – | No | 电机持续旋转 |
| 12 | Line | – | 电机插头已拆除 | – | No | 电机停止 |
| 13 | Star | R-HMI,OPC UA | 可编程逻辑控制器更改名称 | – | No | 西门子 S7 流量 |
| 14 | Star | R-HMI,OPC UA | 电机更改名称 | – | No | 专有协议流量 |
- 在之前的论文中[21],我们将此情况评估为“未成功攻击”。然而,在进一步的测试中,我们得出结论,该攻击也像案例#5一样成功了
表1列出了我们在评估中考虑的场景。第一列表示场景。第二列描述了演示装置的拓扑结构:在“星型”拓扑中,PLC和电机都连接到交换机;在“线路”情况下,电机直接连接到PLC的第二个以太网端口。
一方面,攻击者可以通过使用恶意笔记本电脑在本地(ORIGINLocal)发起攻击,或者通过感染L-HMI等物理设备进行攻击。在这两种情况下,攻击者都连接到交换机的一个端口,该端口配置的VLAN与可编程逻辑控制器和电机所在的VLAN相同。另一方面,攻击也可以从远程位置(OPC UA、R-HMI)发起。由于攻击检测评估未考虑任何预防性方法,因此不对ORIGINOPCUA和ORIGINRemote进行区分。攻击来源由“Attack Origin”列表示。
“操作”列指明了在特定场景中执行的操作类型:主要包括两种攻击类型,此外还考虑了两种情况,在这些情况下,我们预期会出现与攻击场景中观察到的类似的PNIO报警帧。一方面,是指从交换机上移除PLC或电机的插头;另一方面,是指通过相应的编程站替换PNIO名称:对于PLC,使用的是西门子TIA Portal;对于电机,则使用的是Lexium软件套件。
在“证据”一栏中,我们列出了第4.1节所述证据的缩写:PS代表〈端口窃取〉。不同的PNIO报警帧以前缀标明其来源:P表示由可编程逻辑控制器发出的报警,M表示由电机发出的报警。索引表示报警类型:ex表示〈al-plc-电机-已过期〉, snc用于〈al-station-name-changed〉和gen用于〈al-generic〉。还有几种DCP数据包的缩写:SET代表〈dcp-setname〉,而ID代表〈dcp-ident-req-oldname〉。
下一列“检测”表明了我们提出的入侵检测系统是否检测到了攻击。
在我们的评估中,考虑了14种不同的场景。前八种案例源于演示装置的拓扑排列、攻击来源及攻击类型。案例#9至#12反映了电缆被拔下的位置与拓扑结构的排列组合,最后两个案例描述了可编程逻辑控制器和电机分别与位于生产网络虚拟部分的管理站之间的交互。
首先需要注意的是,在星型拓扑结构中,这两种类型的重放攻击都能成功。然而,如果物理组件采用线型拓扑连接,则使用端口窃取攻击进行重放无法完全成功,但使用DCP重新配置攻击仍能成功。在线型拓扑结构中,重放攻击的部分成功表现为:根据随机数据包时序,电机交替执行真实PLC和攻击者的命令。尽管如此,这也是一种严重的攻击,因为电机不会按预期动作,并可能造成危害。
所提出的检测方法在攻击者从远程位置发送重放数据包时有效。在线型拓扑情况下,端口窃取攻击将无法被检测,导致两次漏报(案例#5和#7)。此种情况下无法检测攻击的原因是PNIO报警不会突出可编程逻辑控制器和电机之间的连接。为了解决此问题,必须在两个物理组件之间放置一个网络分流器,并将这些数据包也转发到镜像流中。
在线型拓扑中的DCP重新配置攻击(情况#6和#8)中,只能发现DCP数据包。然而,从观察到的DCP设置请求以及随后重复出现的DCP识别请求仍可推断出已发生攻击。
为了验证所提出的入侵检测系统(IDS),我们进行了可能导致类似告警的测试:在星型拓扑结构中,从交换机上拔下电缆会导致电机或PLC发出“已过期”的报警。由于此时既没有发生端口窃取攻击,也无法发现任何DCP数据包,因此IDS不会生成告警。当管理站更改设备名称时也是如此:Siemens TIAportal和Lex-ium Software Suite均未使用DCP来实现此目的,而是分别使用西门子-S7或其他专有协议。尽管如此,西门子TIA Portal仍会将DCP用于其他用途,例如发现PNIO设备。
综上所述,在所有测试案例中均未出现误报。此外,我们评估了PNIO检测器(即Snort预处理器)的性能。性能评估的测试环境为一台运行着Ubuntu 16.04.1和Snort2.9.8.3的物理机(Intel i7,2.6GHz,8GB内存)。我们使用tcpreplay 3.4.4在虚拟网络接口上重放网络数据包,并检测Snort分析100%网络数据包时的最大负载情况。
结果表明,在启用预处理器的情况下,Snort每秒最多可处理143,000个PNIO数据包(pps)(164兆比特每秒(mbps))。在合理的PNIO告警率(0.03%)下,该性能并未发生变化。当告警率超过90%时,Snort仅能处理32,000 pps(16.3 mbps)。在典型的PNIO设置中,PNIO设备和控制器以1毫秒的最小周期时间传输 2× 1,000 pps。理论上,此设置可用于监控来自100多个PNIO设备的PNIO流量。
6.2 防护评估
表2
关于攻击源1至3的防范场景分析
| 预防场景 | PREVNone | PREVDMZ | PREVProdFw | PREVDMZ+ProdFw |
|---------|----------|---------|------------|----------------|
|
来源Remote(R-HMI)
| 防护状态: X
DCP: X | 防护状态: ✓
DCP: ✓ | 防护状态: X
DCP: X
| 防护状态: ✓
DCP: ✓ |
|
来源OPCUA(OPC UA)
| 防护状态: X
DCP: X | 防护状态: X
DCP: X
| 防护状态: X*
DCP: X
| 防护状态: X
DCP: X
|
|
来源Local(L-HMI)
| 防护状态: X
DCP: X | 防护状态: X
DCP: X | 防护状态: X
DCP: X
| 防护状态: X*
DCP: X
|
✓=攻击被阻止 X=攻击未被阻止 X =攻击影响降低为临时拒绝服务攻击 X *=攻击影响降低为持续拒绝服务攻击
表2显示了通过不同纵深防御措施实现的攻击预防结果。在行中列出了第3.1节所述的三个攻击源。在列中展示了四种场景,从没有采取任何安全控制的基本场景,到增设防火墙的隔离区场景。
每个表格单元格中均列出了端口窃取和DCP重新配置攻击的结果。✓符号表示攻击已被阻止,而X表示攻击未能被阻止。在某些情况下,防护机制会降低攻击的影响:对于以星号标注的情况,攻击者会导致暂时性或持续性的拒绝服务,但不会导致步进电机其他功能异常。
如果不应用任何预防机制,如第一列(基本场景 PREVNone)所示,每种攻击都可能毫无阻碍地发生。
隔离区方法PREVDMZ如预期般有助于防止来自ORIGINRemote的攻击。它还有助于降低来自隔离区内(ORIGINOPCUA)发起攻击的攻击面。在这些情况下,步进电机受到拒绝服务攻击的影响。如果是端口窃取引起的,则攻击结束时拒绝服务也随之结束;如果是DCP重新配置引起的,则拒绝服务会持续到电机被手动重新配置为止。如果攻击发生在本地,例如来自ORIGINLocal,则隔离区无法改善情况。
防护场景PREVProdFw通过在生产网络中增加防火墙,有助于将攻击影响降低为拒绝服务。与PREVDMZ相比,此措施对所有三个攻击源均有效。
组合场景PREVDMZ+ProdFw结合了PREVDMZ和PREVProdFw的优势:从ORIGINRemote来看,隔离区完全阻止了攻击。隔离区和额外的防火墙都降低了攻击表面暴露于来自ORIGINOPCUA的拒绝服务攻击。从ORIGINLocal出发,额外的防火墙降低了拒绝服务攻击的暴露面。
总之,通过在所有三种攻击来源上应用隔离区和额外的防火墙,可以防止导致电机以非预期方式运行的完整重放攻击。然而,拒绝服务攻击仍可能成功阻止步进电机运行,这也是一种风险。从整体防护的角度来看,关键在于应用更多层的纵深防御机制,以防止攻击者进入生产网络。
6.3 对比评估
由[19]提出的入侵检测系统(下文简称PAUL)也专注于PNIO网络的入侵检测。因此,我们将尝试与我们的方法进行比较评估。然而,由于目前没有PAUL的任何实现可用,我们只能将比较限制在概念层面。
PAUL从镜像的网络流中提取DCP数据包的n元语法。在学习阶段出现的每个n元语法都被视为正常的,而在正常运行阶段观察到的任何其他n元语法则被视为异常,表示存在攻击。
与PAUL不同,我们提出了一种入侵检测系统,该系统无需任何学习阶段,只需在配置完成后即可立即投入使用,用于检测PNIO网络中的安全漏洞。在工业自动化系统中,学习阶段几乎无法应用,因为可用性是最关键的参数。例如,为了检测重命名PNIO设备的DCP数据包,必须中断现有的通信关系,甚至可能需要停止整个工业流程。
第二个区别在于,我们的解决方案采用双重方法,结合了来自知名IT领域的入侵证据和来自自动化协议的异常证据。PAUL仅限于PNIO DCP,而我们的入侵检测系统(IDS)还考虑了PNIO协议套件中的其他协议,如CM和报警帧。这使得我们的IDS比PAUL更加全面。
7 结论和未来工作
在本研究中,我们考察了工业以太网协议Profinet IO的安全性,该协议是欧洲安装最广泛的自动化协议之一。首先,我们解释了启动阶段及运行过程中相关功能和机制。我们还介绍了纵深防御的概念,并讨论了相关工作。在一个攻击案例研究中,我们提出了一个包含三个不同攻击来源的攻击者模型以及基础场景。我们在其中开展了研究。随后,我们阐述了选择重放攻击作为攻击方式的原因以及这些攻击的实施方法。
接着,我们提出了一种用于入侵检测系统(IDS)的攻击检测模型,该模型能够检测此类攻击,并详细说明了该模型在我们的场景中的实现方式。下一步,我们介绍了遵循纵深防御策略的攻击预防措施。为此,我们在基本场景的基础上扩展了另外三个场景,采用并结合了不同的纵深防御机制。我们还描述了防火墙中可用于防止重放攻击的不同流量控制规则。
随后,我们评估了我们的检测方法,该方法同时考虑了来自知名IT领域的报警以及工业以太网领域不同协议的报警。在14个不同的测试用例中,最终在一种特殊配置下(没有正确实施镜像)出现了零次误报和两次漏报。我们还对防护方法进行了概念性评估,分析了不同场景和攻击源配置下的攻击结果。评估结果表明,使用非军事区(aDMZ)和网络分段可提升攻击预防能力,而采用纵深防御分层策略可进一步改善效果。当多种防护机制共同部署时,可取得最佳效果。最后,我们通过将我们的检测机制与另一种机制进行比较,完成了评估,并证明了我们所提出方案的优势。
根据评估,有可能使网络对网络攻击更具抵抗力。然而,攻击者对网络的渗透越深,防御过程并保持其不受干扰运行的难度就越大,甚至可能完全无法实现。防范重放攻击至关重要,因为PNIO设备是一个极具价值的目标。这是因为攻击者不需要具备任何特殊技能或对被控过程的知识,使得此类攻击易于实施。
为了在所谓的“工业4.0”或“(工业)物联网”的用例中实现与其他系统的数据交换,许多公司将他们的工业网络与办公网络及互联网进行连接。这些连接的不当和不安全的配置正在增加风险和危险。而这种危险是众所周知的:工业流程控制着真实设备。例如,如果电机、阀门、机器人未能按预期运行,可能会对财产和生命造成严重的物理损害。这进一步加强了在工业环境中使用适应性的入侵检测与防御系统的必要性。
7.1 未来工作
实施与测试是在一个原型场景中完成的。我们将进一步研究并部署不同的不同供应商在网络中的防火墙。一个挑战是配置此类工业防火墙的方法多种多样。其中一些甚至提供深度包检测功能,可能有助于防止进一步的攻击。
当部署本文提出的纵深防御机制时,可以防止攻击者对电机的操控。然而,攻击仍可能以拒绝服务的形式产生影响。为了进一步防止此类拒绝服务攻击,一种可行方法是使用白名单。防火墙中的白名单不仅将通信协议或端口绑定到特定角色,还可以通过MAC地址将具体硬件设备进行绑定。然而,该硬件地址可能被伪造。
因此,进一步的措施是在网络交换机上部署白名单。这种白名单机制将硬件地址绑定到交换机端口。假设远程攻击者无法物理访问交换机,则该措施可提高PNIO系统的安全性。其缺点是降低了PNIO固有的灵活性:更换有故障的PNIO设备不仅需要能够配置PNIO设备名称的自动化专家,还需要网络工程师重新配置网络基础设施。尽管如此,这一方法仍值得尝试。
在自动化系统中实施重放攻击只是可能扰乱或破坏工业流程的手段之一,但却是简单且易于执行的一种。还有许多其他攻击向量值得考虑和评估,例如对可视化中呈现的数据进行篡改。评估标准包括攻击者需要掌握的关于工业流程的知识量、攻击的易实施程度以及可能造成的损害程度。这项工作将继续开展,针对所使用的演示装置进行全面的攻击案例研究,包括可编程逻辑控制器(PLC)、电机、本地人机界面(HMI)以及从PLC访问数据并在企业网络中的Web界面上展示数据的人机界面(HMI)。
欧洲的许多自动化系统都采用PNIO运行。然而,还有许多其他广泛应用的自动化协议。我们将搭建基于PNIO以外协议(例如EtherCAT)的演示装置,并尝试迁移我们的攻击和检测技术。
正在进行的任务是在我们分布式的开源IDS中实施相关工作。该任务涉及一个主要问题,即常见的IDS从IP层开始分析,它们不支持在工业自动化网络中通常使用的基于以太网的协议,并且无法关注此类网络的实时性要求。为弥补这一差距,曾开发了一个针对流行IDS系统Snort的预处理器,使其能够处理PNIO流量。这项工作还需继续深入,定义用于检测重放攻击以外其他攻击类型的规则。
另一项工作是研究不同的关联技术,这些技术必须应用于一个中央关联引擎中,以控制来自传统IT领域和自动化领域的大量不同告警信息。
1107

被折叠的 条评论
为什么被折叠?



