控制不变量下的PLC入侵检测系统

摘要

​ 可编程逻辑控制器(PLC),即控制系统的核心。众所周知PLC容易受到各种网络攻击。为了缓解这个问题,我们设计了 PLC‑Sleuth,这是一种用于 PLC 的新型非侵入式入侵检测/定位系统,它建立在一组控制不变量(即传感器读数与同时触发的PLC命令之间的相关性)之上,这些变量普遍存在所有的控制系统中。具体而言,PLC‑Sleuth 以系统的监控和数据采集日志为输入,利用数据驱动的结构学习,将系统的控制不变量抽象/识别为控制图,然后监测图边的权重以检测其异常,即反过来,入侵的现象。我们已经使用乙醇蒸馏系统 (EDS) 平台和真实模拟的田纳西伊士曼 (TE) 过程来实施和评估 PLC‑Sleuth。结果表明,PLC‑Sleuth 可以:1)以 100%/98.11% 的准确率识别 EDS/TE 的控制不变量; 2) 以98.33%/0.85‰ 真/假阳性 (TPs/FPs) 为 EDS 和 100%/0% TP/FP 为 TE 检测 PLC 入侵; 3) 针对 EDS/TE 以 93.22%/96.76% 的准确率定位入侵。

一、引言

​ PLC广泛应用于工业控制系统 (ICS)。 通过读取传感器读数并发出伴随的控制命令,PLC 根据指定的控制规则操作 ICS。

​ 然而,PLC 容易受到网络攻击。更糟糕的是,工业物联网的进步和日益联网的 ICS 使得对 PLC 的攻击更容易发起。研究人员已经确定超过 36.7k 的 PLC 可以直接从 Internet 访问。Symantec还证实了 ICS 网络 [8] 的入侵,从中可以访问目标 PLC。同时,由于大多数商业PLC 协议通常只支持弱身份验证,因此允许攻击者向 PLC 管理破坏性有效载荷(例如,恶意代码和伪造命令)以操纵嵌入式控制规则。此外,开发的自主 PLC 二进制反编译器 [14]、[15] 和提出的模糊测试框架 [16] 都促进了 PLC 漏洞能力的武器化 [17]。一旦攻破 PLC,攻击者就可以发起各种攻击,包括以下内容。

1)命令注入攻击:

​ 恶意软件 TRITON 于 2017 年在沙特阿拉伯远程启动 ,以扰乱石化设施中安全执行器的操作。这些执行器最初设计用于在紧急情况下采取补救措施,而 TRITON 则向它们发送对抗性命令以关闭设施。

2)协同隐身攻击:

​ 为了隐藏攻击不被发现,对手甚至可以对PLC发起高级隐身攻击,不仅可以篡改控制命令,还可以协同伪造具有历史记录的监控和数据采集(SCADA)日志数据。这种隐形攻击的一个例子是 Stuxnet,它秘密地损坏了数百个离心机。 2017 年暴露的 Allen Bradley PLC 的固件漏洞也允许修改 PLC 的控制命令和伪造传感器读数。

​ 为了保护 PLC 免受上述攻击,我们为 PLC 设计了一种非侵入性数据驱动的入侵检测系统 (IDS),称为 PLC‑Sleuth。具体来说,PLC‑Sleuth 使用在所有控制系统中普遍存在的一组控制不变量来检测非法控制命令,即 PLC 发出的控制命令与伴随的传感器读数密切相关。以系统 SCADA 日志为输入,PLC‑Sleuth 自动识别控制不变量并将其抽象为控制图,其中节点表示系统变量和边的权重量化系统变量之间的相关性。然后,PLC‑Sleuth 使用数据驱动方法将控制命令的合法性描述为图边的权重,并在运行时检测非法性。

​ 我们已经使用我们的 ICS 乙醇蒸馏系统 (EDS) 平台实施并评估了 PLC‑Sleuth和具有现实代表的 TE 化学工艺。。我们首先通过比较 PLC‑Sleuth 获取数据(即平均 0.0016 秒)和检测攻击(即平均 0.015 秒)所需的时间与记录周期来证实 PLC‑Sleuth 的实时能力SCADA(即默认情况下为 0.5 秒)。然后,我们评估 PLC‑Sleuth 对控制不变量的识别,以及针对命令注入攻击和协作隐身攻击的入侵检测/定位。结果表明,对于 EDS 和 TE,PLC‑Sleuth 分别以 {100%,98.11%} 的准确率识别系统不变量,以 {98.33%/0.85‰ 检测 PLC 攻击,即使是那些仅改变正常命令 0.12% 的攻击, 100%/0%} 真/假阳性 (TPs/FPs),并以 {93.22%, 96.76%} 的准确度定位 com 承诺的控制循环。

总之,PLC‑Sleuth 具有以下特性。

1)Cyber‑Physical IDS:

​ PLC‑Sleuth 建立在一组物理诱导的控制系统不变量之上,即给定的驱动总是由特定的实时传感器测量触发,可以观察为发出的控制命令和伴随的传感器读数。这种物理诱导的控制不变量使 PLC‑Sleuth可靠,因为除非控制规则被更新,否则相关性保持不变,并且由于这种控制不变量存在于所有控制系统中,因此可以大范围部署。

2)Noninvasive IDS(非侵入式):

​ PLC‑Sleuth以ICS的SCADA日志为输入,自动识别控制不变量,并利用它们保护PLC而不干扰PLC,即PLC‑Sleuth是非侵入式的,因此易于部署。

3)IDS Localizing Intrusions(定位入侵):

​ PLC‑Sleuth除了检测PLC的入侵外,还定位其所承诺的控制回路,便于PLC的快速修复/取证;否则,无论入侵检测得多么好,控制系统仍然不可靠。

二、预备知识和基本想法

​ 下面我们以我们的 EDS 平台为例,介绍 ICS 的必要背景和 PLC‑Sleuth 的基本思想。蒸馏过程根据其挥发性的差异分离液体混合物中的成分。 EDS 是一个按比例缩小但全面运行的蒸馏厂,可从水中提纯酒精,并能够生产纯度为 90% 的酒精。

A. EDS 平台

典型的控制系统由四个主要组件组成,组织为反馈控制回路。

1)实现特定任务的物理过程,例如用于提纯酒精的蒸馏塔。

2)一组传感器来测量过程的实时状态y ,例如,一个液位传感器来测量蒸馏塔中液体材料的量。

3)一组控制器根据传感器读数y和预期设定点s之间的差异(即控制误差xs ‑ y)发出控制命令u 。

4)一组执行器根据发出的控制命令u调节过程状态,例如关闭入口阀以降低塔液位。

图1 我们实验室的EDS平台。(a)试验台(b)控制网络(c)工艺流程图

​ 图 1(a) 显示了我们的 EDS 平台,使用反馈控制回路实现,该回路由一个 SIMATIC S7‑300 PLC、11 个传感器和三个执行器组成,如图 1(b) 所示。这些组件共同形成三个反馈回路来实现 EDS 的操作,如图 1© 所示。

​ 1)回路1将塔温调节到预定义的设定点s1,在该设定点 EDS 实现了高分离效率。温度控制器 (TC) 根据s1和使用温度传感器收集的温度y1之间的差值(即x1 = s1 ‑ y1 ) 生成命令u1 ,以控制阀门V1的开度(进而控制热量)以调节温度。塔温。

​ 2)回路 2将冷凝器的冷却水流量y2 (由液体流量传感器测量)保持在预定义的设定点s2附近,以将乙醇从气体冷凝为液体,然后将其回流到塔中以进一步提高蒸馏浓度。过量或不足的乙醇回流都会阻碍传热/传质并降低蒸馏质量。此外,不稳定的冷却水流可能会对泵造成物理损坏。流量控制器 (FC)向阀门V2发出命令u2 ,以根据x2 = s2 ‑ y2 调节冷却水。

​ 3)回路 3将蒸馏塔的液位y3控制到优化的设定点s3,这也受到回路 2 的乙醇回流的影响。不稳定的液位会导致过早溢流,从而降低蒸馏效率。与 TC 和 FC 类似,液位控制器 (LC)根据x3 = s3 ‑ y3生成命u3并将其发送到阀门V3以调节材料输入和蒸馏液位塔

​ 这些循环的具体控制规则嵌入在EDS的S7-300 PLC,使用Bang-Bang和比例积分微分(PID)算法,根据当前和历史控制误差生成控制信号u,x。EDS维护系统状态{y1,y2,y3}围绕设定点{s1,s2,s3}使用控制命令{u1,u2,u3}.传感器、设定点和控制命令之间的这些相互作用构成了所有控制系统的基础。同时,连同其他传感器读数{y4,…, y11}用于实现物理过程,上述控制回路的操作是 由 WinCC SCADA 系统监控和记录。

B.攻击模型

我们考虑以下针对给定控制系统的 PLC 的攻击模型。

1)攻击者可以挂载命令注入攻击在程序执行期间(图2)通过将恶意代码下载到PLC。

图2 PLC中的CPU执行顺序

2)在注入攻击之上,攻击者可以通过进一步将正常的传感器读数重播到 PLC 的过程映像输入 (PII) 表来提供协同隐身攻击。 请注意,SCADA 从 PII 表中读取传感器读数,这发生在执行恶意代码之后(图 2)。 这样,即使已经发起了攻击,攻击者也可以欺骗 SCADA 以结束正常操作。

3)攻击者无法修改程序运行过程中发出的命令记录,即攻击者发出的任何伪造命令都将被原样记录下来。 这是因为过程映像输出 (PIO) 表记录了所有命令,并且在程序执行后保持不变 。 通过读取 PIO 表(图 2),SCADA 获得实际发出的控制命令。

​ 接下来,我们使用安装在 EDS 上的合作隐形攻击来激发 PLC-Sleuth,其中对手使用伪造的控制命令破坏 EDS 和伪造的传感器日志来欺骗系统监视器以完成正常的系统操作。 具体来说,让我们考虑一个攻击者旨在通过入侵 EDS 的 Loop 2 以破坏回流稳定性来降低蒸馏质量的情况。 在没有攻击的情况下,命令 u2 的增加与 x2 成正比,即 x2 = (s2 - y2)L/min 的流量差驱动阀门为

​ 通过利用 PLC 的漏洞,例如修改 Step 7 编程软件的 s7otbxdx.dll 文件,攻击者将破坏性有效载荷下载到 PLC 并操纵 u2 的生成为

​ 因此,降解乙醇气体冷凝并引起乙醇回流中的振荡。 请注意,不稳定的乙醇回流会使塔液位 y3 不稳定,并进一步降低蒸馏质量。 为了隐藏 {y2, y3} 的异常偏差,攻击者通过覆盖 PLC 的 PII 表,将真实的传感器日志替换为历史稳定记录。 这样,SCADA 中的传感器日志看起来正常,而 EDS 的蒸馏质量实际上下降了。

C.PLC-Sleuth 的基本思想

​ 如上所述,PLC 根据控制误差 x = s - y 生成控制命令 u。 这会在 u 和 x 之间产生强大且可靠的相关性,我们将其用作 PLC 的控制不变量。 图 3 可视化了 u2 和 x2 之间的这种控制不变量:当 EDS 的 PLC 如上所述受到损害时,控制不变量 [如图 3(a) 所示] 由于 (2) 的操纵控制规则而显着变化 ),在命令注入攻击 [如图 3(b)] 和协同隐身攻击 [如图 3©] 下。 PLC-Sleuth 使用这些控制不变量来检测 PLC 入侵,通过检测这些控制不变量与其预期行为的偏差。 反过来,挑战在于识别/抽象系统的控制不变量,PLC-Sleuth 使用控制图解决这些问题。

图3 EDS指令u2与流量差x2的相关性。(a)正常运行,无攻击 (b)使用命令注入攻击 (c)与协同隐身攻击

三、抽象控制不变量

​ 对于给定的控制系统,PLC-Sleuth 使用控制图 G(V, E, W) 识别和抽象其控制不变量(由系统变量及其相互作用定义),其中: 1) V 是 代表系统变量的节点(即设定点、传感器读数和命令); 2) E是连接V中节点的有向边的集合,表示系统变量之间的相关性; 3) W 是边缘权重的集合,捕获了 E 描述的相关性的强度。具体如下:

1)V = {S, Y, U}由设定点节点集S、传感器节点集Y和命令节点集U组成,可以从SCADA日志中自动获取和识别。 注意,在控制系统中,U中的节点数不小于S中的节点数,即|U|≥|S|;

2)E={Eys,Euy}由连接 S 中的节点和 Y 中的节点的控制错误边集Eys和连接 Y 中的节点和 U 中的节点的控制命令边集Euy组成。边在其两个节点属于同一个控制环时存在。 常用的分散控制方案——一个传感器被反馈以生成一个控制命令,反之亦然——使得 Y 中节点的出度和 U 中节点的入度都等于 1 ;

3)W={Wys,Wuy} 由误差权重集 Wys 和命令权重集 Wuy 组成,捕捉 Eys 中节点对 {si, yj}s 的差异和 Euy 中节点对 {yj, uk}s 的相关性, 分别。 PLC-Sleuth 利用 Wu 通过实时监控 Wuy 并检测其异常来检测和定位 PLC 入侵。 请注意,Wys 中的误差权重也可用于检测 PLC 攻击,即在稳定的 ICS 中,Y 中的传感器读数应接近其在 S 中的相应设定点。 然而,这种方法很容易受到合作隐形攻击中重放的传感器日志的影响。

​ 设定点节点集 S:设定点节点 si ∈ S 表示系统的预期状态,在系统运行时不会波动,如图 4(a) 所示。

​ 传感器节点集 Y:传感器节点 yj ∈ Y 捕获系统的实时状态。 由于环境噪声和传感器测量误差,yj 的读数显示出很小但一致的振动,如图 4(b) 所示。

​ 命令节点集 U:命令节点 uk ∈ U 反映了实现预定义系统状态的驱动,并随着相应传感器的读数而波动。 发出的命令 uk 将平滑地保护执行器,如图 4© 所示

图4 EDS循环2设定点、传感器和命令变量的不同模式。(a)设定点s2的日志 (b)传感器y2的日志 (c)命令u2的日志

​ 误差权重集 Wys :控制误差边 wyj si ∈ Wys 的权重捕获最近 l 个样本上系统状态 yj 与相应设定点 si 之间的差异

其中 d 是用于使用函数 f 估计系统状态的传感器数量,可以从控制算法的表达式或二进制文件中获得。命令权重集 Wuy :互信息 (MI) - 一种常用的度量标准,用于使用其后验概率分布来表征变量之间的依赖关系 - 是定义命令权重 wuk yj ∈ Wuy 的直观度量。具体来说,命令边的权重可以定义为归一化的 MI,即

其中 xi 是 si 和 yj 之间的控制误差,H(uk) 是最近命令序列 uk 的熵,I(xi, uk) 表示 xi 和 uk 之间的 MI,使用联合概率密度函数计算 变量 xi 和 uk [表示为 p(ξ , η)] 为

​ 然而,由于变量的后验概率仅描述静态信息,因此 MI 量化传感器测量 y 和命令 u 之间的动态相关性的能力有限。 图 5 显示了 EDS 传感器读数 {y2, y3} 和控制命令 {u2, u3} 的散点图,表明仅考虑在给定时刻采集的样本(即加权方案)时,它们的相关性较低 在 (4) 中可能不适用于 PLC-Sleuth。

图5 EDS的命令和传感器读数之间的静态相关性 (a)冷却水回路 (b)塔液位环形

​ 为了减轻上述限制,我们使用两个时间序列 u 和 y 之间的相关性定义了一个新的转换相关性,如图 6 所示,其中接近对角线的路径表示更强的相关性(与 图 5)。

图6 EDS之间的转换相关性命令和传感器读数 (a)冷却水回路 (b)塔液位环形

​ 具体来说,受命令 uk 是根据其对应的错误序列 xi = si−yi 的当前值和历史值触发这一事实的启发,我们将转换 MI (TMI) 定义为

其中 τ 是用于表征变量转换的序列长度。 PLC-Sleuth 将命令权重W 计算为

图7 EDS的控制图

控制图示例:作为示例,图 7 显示了 EDS 的控制图 G(VSEDS, ESEDS, WSEDS),其中

请注意,{y1, y2, y3} 的out-degree和 {u1, u2, u3} 的in-dgree都等于 1。传感器变量 {y4,…,y11} 是 仅用于系统监控,为清楚起见未在图 7 中显示。

四、PLC-Sleuth的设计

​ 图 8 展示了 PLC-Sleuth 的逻辑流程:通过识别变量的连接(即 E 中的边)和相应的权重,构建感兴趣系统的控制图 G(V, E, W) W,并实时监控 wuy 的每个权重,以检测和定位 PLC 攻击。

图8 PLC-Sleuth的架构

A. 控制图的构建

​ 构建控制图的一种直观方法是让系统设计人员从系统文档(例如,工程流程图、回路图、逻辑图、电气控制图等)中手动提取它。 然而,这需要大量的人力或领域专业知识,并且容易出错。 作为替代方案,PLC-Sleuth 使用历史SCADA 日志以数据驱动的方法自动构建控制图 G。 请注意,G 由两种类型的边组成,这与传统的结构学习不同。

识别顶点集:PLC-Sleuth 使用 SCADA 日志自动识别 G 的节点: 1) 设定点变量具有恒定值; 2) 传感器读数一致且振动小; 3) 控制命令具有连续/平滑值,如图 4 所示。PLC-Sleuth 首先通过查找常数变量(即 H(si) = 0)来识别设定点节点集 S。 然后通过计算变量 yj 的振动信号比(VSR),PLC-Sleuth 从具有一致性的变量中识别出传感器节点集 Y的波动。 在这里,我们将振动定义为 yj 中的曲线波峰/波谷 yj(t),其中 y j(t) × y j(t + 1) < 0,并且 VSRyj 是一个周期内波峰/波谷的最大比率 yj 的样本。 在 10 个持久样本设置下,EDS 中的所有传感器节点的 VSR 为 1,如图 9 所示。选择具有高 VSR 的节点(例如,图 9 中 > 0.5)作为传感器节点集后,未分类变量为 分类为命令节点集 U。

图9 EDS中波动量的VRS

​ 为具有单反馈回路的 PLC 识别边缘集:在识别的节点之上,PLC-Sleuth 必须识别边缘并确定它们的权重。 为了便于描述,让我们首先考虑由只有一个反馈通道的回路组成的 PLC 控制图的构造,例如 EDS 中的三个控制回路。 稍后我们将把图构造扩展到涉及多个(并且可能是耦合的)反馈通道的更复杂的控制回路。

图10 耦合反馈控制方案的示例 (a)串级控制回路 (b)比率控制回路

第一步(识别 Eys 边缘):PLC-Sleuth 首先识别 Eys 中的错误边缘,这允许稍后识别 Euy 中的命令边缘。 希望控制系统在导致高系统效率的稳定状态下运行,这在实践中通过为 PLC 的每个反馈回路使用一组设定点来实现。 因此,我们期望传感器读数 y 接近其相应的设定点 s,这将引导 PLC-Sleuth 在 Eys 中识别边缘。 基本思想是,对于每个节点 s~i ∈ S,PLC-Sleuth 通过找到节点 y~j ∈ Y 来识别其在 Eys 中的对应边,使得权重 wy~j s~i 是所有 {∼si, yj} 对中最小的。以 EDS 为例,{s1,s2,s3} 设置为 {51 ◦C, 4.5 L/min, 0.29 m},传感器读数 { y1, y2, y3} 在 {51, 4.5, 0.29} 附近波动,因此 {wy1s1 , wy2s2 , wy3s3 } 的权重往往是小的正值。

​ 在识别出连接 yj 到 si 的边之后,PLC-Sleuth 得到相应的控制误差时间序列 xi(t) = si(t) − yj(t),用于识别 Euy 中的命令边,我们接下来会解释 .

第二步(识别Euy边):对于上面识别的每一个误差边eyj si ∈ Eys,PLC-Sleuth进一步将其传感器节点yj与同一控制回路的命令节点uk进行匹配。 通常,控制算法根据传感器测量值调节执行器的动作,以最大限度地减少控制误差,使命令节点 uk 与同一控制回路的传感器读数 yj 密切相关。 我们使用 (7) 基于识别的 Eys 来量化节点 yj 和 uk 之间的相关性。 与 Eys 中的边识别类似,PLC-Sleuth 通过找到最大 wu~k y~j在所有的 {~yj, uk} 对中。 这样,PLC-Sleuth 将 Eys 中已识别边缘的每个传感器节点 y~j 与最相关的命令节点 u~k ∈ U 进行匹配。

第二部(重复 Euy 边的重新匹配):控制命令 u 操作同一控制回路中的执行器。然而,被操作的执行器不仅影响其所属的控制回路,而且由于物理相互作用,还可能影响其他控制回路。例如,EDS 中的命令 u3 不仅会影响塔的液位 y3,还会影响塔的温度 y1,因为更多的冷材料摄入会使塔冷却得更多。因此,y1 和 y3 都可能与 u3 匹配。一般来说,如果一个控制系统有两个或多个紧密耦合的组件,可能会发生一个命令节点 u∗k 匹配到多个不同 eyj sis 边缘的传感器节点 yjs,从而违反了命令节点的入度应该是 1. 我们称与多个 yjs 匹配的命令节点 u∗k 为重复命令节点。对于重复的命令节点 u∗k ,PLC-Sleuth 通过仅保留具有最大权重的边从 G 中删除其边。重复节点的一个示例是 EDS 的 u3,它可能与 y1 和 y3 都匹配。 PLC-Sleuth 最终删除 eu3 y1 因为 wu3 y1 < wu3 y3 。

​ 在寻址所有重复的命令节点之后,PLC-Sleuth 对剩余的不匹配的 yj 和 uk 重复步骤 II 和 III,直到 Eys 中的所有边,或者更具体地说,它们相应的传感器读取节点 yjs 与命令节点 uk 匹配。

识别具有多个反馈回路的 PLC 的边缘集:许多现实世界的控制系统使用具有耦合反馈通道的控制回路——例如级联控制和比率控制——以提高其效率。 这些耦合回路通常以主从方式运行,如图 10 所示。以 EDS 为例,为了将回流温度稳定在设定值水平,我们可以将另一个 TC 部署到 EDS 的 Loop 2 以调整 FC 的设定值 , 使FC成为TC的从控制器。

​ 传输节点 rm ∈ R,其中 R ⊂ U,被引入以构建具有耦合反馈通道的控制图,该控制图负责将控制命令从主环传输到从环(例如,图 10 中的 r2)。 请注意,大多数传输节点还充当从环的设定点。 我们将不充当从环设定点的传输节点称为传输节点。 PLC-Sleuth 从 U 中识别出 R。具体来说,PLC 的每个控制回路都会生成一个相应的命令,所有这些命令都形成 U。请注意,在耦合反馈控制中,只有 U ⊆ U 的一个子集将被发送到执行器,1 剩余的指令 U\U^ 形成转移节点集 R。

​ 下面,我们将解释 PLC-Sleuth 如何为具有多个通道的反馈回路构建控制图。

第四步(构建主回路):主回路是那些在 S 中包含设定点节点的回路。我们从节点集 {S,Y,R} 构建主回路的控制图。 主循环 Eys 中错误边的识别与步骤 I 相同。此外,主循环中 Ery 中的命令边的识别与步骤 II 和 III 类似,通过将节点 uk ∈ U 替换为节点 rm ∈ R。

第五步(构建从环):从环的控制图由节点集 {R, Y, U^} 构建。 从环的 Eyr 中的错误边沿与步骤 I 类似,通过将 (3) 替换为 w(y1,…,yd) rm = min{|Lt=1(rm - f(y1,…, yd) ))|, |Lt=1(rm∗rn−f(y1,…,yd))|}。 此步骤为传输节点 r~m 识别传感器节点 y~j(以及 r~n,如果存在比率控制方案)。 与传感器节点不匹配的传输节点被视为传输节点。 基于从集合 R 到集合 Y 的识别边,用与步骤 II 和 III 中相同的方法识别从循环的 Euy 中的命令边。

第六步(组合控制回路):使用 R 中的传输节点组合主从回路。当主回路中的传感器节点 y~j 与传输节点 r^n 匹配时,传输节点 r^n 传输控制命令但不充当 从设定点,PLC-Sleuth 进一步将 r^n 与从设定点节点 r~m 匹配,在所有 {^rn, rm} 对中具有最大 wr~mr^n [用 (7) 计算]。 对于不是由发送节点构建的主回路的命令边er~my~j,传感器节点y~j直接匹配到从回路的设定点节点r~m。 当主循环中命令边缘ermyj的所有传输节点rm与从循环匹配时,该过程终止。 然后,通过比较 wu~k y~j 和 wrmyj(或 wrnyj )的权重,PLC-Sleuth 确定节点 s~ 的具体控制图(即单个反馈回路或多个反馈回路) i, y~j, r~m, r~n, 和 u~k 属于。

B. PLC 入侵的检测和定位

​ PLC-Sleuth 然后在运行时使用构建的控制图 G(V, E, W) 检测/定位 PLC 入侵。

​ 如第 II-C 节所示,篡改控制命令将违反命令与相应传感器读数之间的控制不变量。 控制不变量的违反将被观察为 G 中权重的偏差。PLC-Sleuth 使用滑动窗口 T 构建一个在线检测器,通过以下方式监控 Euy 中的边权重:

其中 xi([t−T, t]) 对应 yj(t) 在窗口 T 中的控制误差, uk([t−T, t]) 表示 PLC 在同一窗口中的控制命令。

入侵检测:PLC-Sleuth 使用基于内存的方法,例如非参数累积和 (CUSUM) [36],如果在 (8) 中检测到异常,则向操作员发出警报。 CUSUM 被递归定义为

其中 νt 是来自期望值 w^ uk yj (t) 的权重误差,定义为

当系统正常运行时δ 设为 δ > |νt−1| 的一个小的正常数,防止 St 持续增加。 每当 St 大于预定义阈值时触发警报,即St>x此时检测将重置为 St = 0。

入侵定位:如果仅检测到一个异常边缘,即负责该边缘的命令被破坏,则定位伪造命令是微不足道的。 当检测到多个异常时,PLC-Sleuth 将伪造的命令定位为首先触发异常警报的命令。 这种贪婪策略是有效的,因为与直接伪造命令相比,级联异常需要更长的时间才能导致控制系统不稳定。 以 EDS 为例,这可以很好地证明:(2)中伪造的 ua2 首先降低了 Loop 2 中乙醇回流的稳定性,在 eu2 y2 边缘引起警报,然后进一步振荡 Loop 中的液位 y3 3 通过流体输送,这可能会在触发第一个警报后在边缘 eu3 y3 处引发警报。 这样,PLC-Sleuth 将伪造的命令本地化为控制循环 2。

五、实施与评估

​ 我们已将 PLC-Sleuth 作为 EDS 的 SCADA 的软件模块实施和评估,该模块部署在配备 Intel Celeron 处理器 G3930 (2.90 GHz) 和 4 GB RAM 的计算机上。 PLC-Sleuth 使用 OPC 协议从 SCADA 运行时数据库(例如 Siemens WinCC 的 OLE DB)获取控制命令和伴随的传感器读数。 我们还使用模拟的田纳西伊士曼 (TE) 过程评估了 PLC-Sleuth,这是连续化学过程的代表性基准。

A.方法

​ 我们对 PLC-Sleuth 的评估由两部分组成。 我们首先评估 PLC-Sleuth 的控制图构造,将其与使用结构学习中提出的其他四个指标定义 wuk yj ∈ Wuy 时的情况进行比较:1)贝叶斯评分指标 K2; 2)对数似然(LL); 3)最小描述长度(MDL); 4) (4) 中的 MI。

​ 使用如此确定的控制图,然后我们评估 PLC-Sleuth 的入侵检测和攻击定位在两种情况下导致不同的偏差。

攻击一:控制命令注入攻击,通过将恶意控制命令ua(t)注入PIO表并篡改控制算法参数来实现。

攻击 二:通过在攻击期间重放历史正常传感器测量值 ya(t),在攻击一之上进行合作隐形攻击。

​ 上述攻击是通过利用 PLC 编程软件的漏洞凭经验安装的。 例如,对于 Siemens 步骤 7 的修改“s7otbxdx.dll”,第 II-B 节中的激励攻击——即破坏乙醇回流的稳定性——是通过 1) 连接“将 u2 放大十倍”的逻辑进行的 在合法 PLC 代码的末尾和 2) 在合法 PLC 代码的开头连接“为 y2 分配存储的正常记录”的逻辑。

B.使用 EDS 进行评估

我们首先在 EDS 平台上实施和评估 PLC-Sleuth。

实时能力:一旦安装,PLC-Sleuth 将定期从 SCADA 的数据库中获取系统状态。 如图 11 所示,获取数据的平均操作时间为 0.0016 秒,远短于 SCADA 记录周期。 构建控制图后,PLC-Sleuth 通过验证每条边的权重来检测攻击。 图 11 中获取数据然后检测攻击的平均操作时间为 0.015 秒 0.5 秒,这也证实了 PLC-Sleuth 的实时能力。

图11 PLC‑Sleuth完成每次数据采集的操作时间

构建 EDS 的控制图:我们接下来检查 PLC-Sleuth 是否能够准确地构建 EDS 的控制图。 请注意,EDS 具有三个去耦的单反馈回路,如图 7 所示。

数据收集:我们使用其 SCADA 系统记录了 EDS 的 9.8 小时操作,在此期间以 2 Hz 收集了总共 17 个变量,包括三个设定点变量(即 |S| = 3)、11 个传感器变量 (即 |Y| = 11)和三个命令变量(即 |U| = 3)。 然后我们使用这些日志来评估 PLC-Sleuth 的控制图结构。

图构建的准确性:在训练数据为 2 h 的情况下,表 I 比较了使用 PLC-Sleuth 和使用 K2、LL、MDL 和 MI 作为权重时获得的 EDS 的 euk yj s(即 wuk yj s)的权重 公制,显示。

  1. PLC-Sleuth 准确识别 EDS 的命令边,没有重复边。
  2. 由于{eu3 y1 , eu1 y3 } 和{eu2 y1 , eu1 y2 } 的边分别错误匹配,K2 和MDL 无法正确识别命令边。
  3. 虽然 LL 和 MI 成功地将传感器节点匹配到相应的命令节点,但它们不能准确地表征节点 u1 和 y1 之间的相关强度,这从 wu1 y1 < wu1 y3 的结果可以看出。

表1 不同加权方案获得的EDS指令边的权重

我们进一步评估了具有不同训练数据量的 PLC-Sleuth,如图 12 所示,通过从 9.8 小时系统日志中随机选择训练序列的开始时间,准确度在 1000 次运行中得到平均。 PLC-Sleuth 的图构建准确度优于所有其他四种加权方案,并且随着训练数据的增加而提高——在使用 0.5 小时的系统日志进行训练时达到 100%。

图12 在图7中使用不同的度量来定义w,y时构造 PLC-Sleuth 的控制图

图13 将PLC-Sleuth应用于具有不同检测窗口T和阈值μ的EDS (a)止盈率 (b)FP率 (c)延迟

使用 EDS 进行入侵检测/定位:我们接下来在两种攻击场景下评估 PLC Sleuth 的入侵检测/定位。 命令注入攻击以两种方式发起,即; 1) 将输出命令序列替换为 PIO 表中设计的攻击向量(例如,将 u2 = [0.2757, 0.2762, 0.2766] 替换为 ua2 = [0.2967, 0.2968, 0.2969])和 2) 篡改控制规则的参数(例如,更改 Kp 在 u2 = −Kp( x2+0.17×x2) 的规则中,从 Kp = 0.01 到 Kap = 0.1)。 每个控制回路都被攻击十次,即总共有 10 × 3 = 30 次攻击被安装到 EDS。 此外,通过重放相应传感器的正常日志,我们又发起了 10 × 3 = 30 次协同隐身攻击。

检测和定位准确率:PLC-Sleuth 平均达到 98.33%/0.85‰ TP/FP 报警率,以 93.22%阳性预测值 (PPV) 对伪造指令进行定位。

攻击一:注入的伪造命令导致EDS的蒸馏过程不稳定,如图14上部子图的红色虚线所示。PLC-Sleuth在攻击后立即检测到监控边缘的权重变化,从而触发警报 . 在针对塔液位(即 EDS 的 Loop 3)的已安装命令注入攻击中,图 13(a)和(b)给出了 PLC-Sleuth 的检测结果,具有各种检测窗口(T)和 阈值(μ)。 增加阈值对TP率几乎没有影响,但会显着降低FP告警。但是,较大的检测窗口由于其对参数更改攻击不敏感,导致TP率相对较低。

图14 检测安装在EDS的三个控制回路上的两次攻击 (a) 回路1 塔温 (b)回路2 冷却水流 (c)回路3 塔液位

攻击二:协同回放的传感器日志隐藏了操作员的攻击,如图 14 中上部子图的紫色虚线所示。但是,监测到的权重明显偏离其正常值。 需要注意的是,Loop 1(即温度环)发生了一个漏电报警,该环的控制周期为 1800 s,对变量的相关性造成不敏感的变化。 出于同样的原因,循环 1 的本地化 PPV 相对较低(与循环 2 和 3 相比)。

检测延迟:我们还检查了 PLC-Sleuth 在检测 PLC 入侵方面的延迟。 尽管攻击对系统造成物理干扰存在延迟,但当攻击发起时,控制图的权重会立即发生变化,如图 14 的中间子图所示。因此,PLC-Sleuth 检测到这些攻击 短延迟,例如 {50, 12.5, 10.5} s 分别用于图 14(a)-© 中的攻击。 此外,图 13© 表明,较大的检测阈值会增加检测延迟。 另一方面,检测延迟随着检测窗口 T 的增大而降低,因为较大的时间窗口有助于 PLC-Sleuth 更可靠地捕获控制不变量。

C.使用TE流程进行评估

​ 为了进一步评估在大规模控制系统中部署的 PLC-Sleuth,我们在真实模拟的 TE 过程中实施了 PLC-Sleuth。 TE 过程包含 S 中的 12 个设定点变量、Y 中的 41 个测量变量、U 中的 12 个终端命令变量和 R 中的 14 个传递变量。这些变量共同形成 17 个反馈回路,其中 16 个形成七个多反馈回路 。

构建 TE 的控制图:同样,我们首先检查 PLC-Sleuth 构建 TE 控制图的准确性。 图 15 描绘了构建的控制图,其中总共需要识别 45 条边。

图15 TE过程的控制图

数据收集:通过模拟 TE 过程的 72 小时操作,我们获得了以 1.8 Hz 记录的训练数据。

图构建的准确性:我们在不同的运行期间使用各种训练数据量对 PLC-Sleuth 进行了评估。 图 16 绘制了 1000 次运行的平均结果。 PLC-Sleuth 的图构建即使只用 2 小时的短轨迹进行训练,也能达到 95.76% 的高精度,随着训练数据量的增加而进一步提高。 使用 20 小时的训练数据,平均准确率达到 98.11%,即 PLC-Sleuth 准确识别了 TE 的几乎所有 45 条边。 请注意,由于传输节点和传输节点之间的相似性,构造错误主要发生在传输变量上(例如,图 15 中 y40 与 r2 不匹配)。 图 16 还绘制了使用 wuk yj 的不同权重度量构建控制图时的结果,表明 PLC-Sleuth 实现了最佳构建精度。

图16 在7中使用不同的度量来定义w,y时构建TE过程的控制图

TE 的入侵检测/定位:接下来我们在 TE 中使用两种攻击场景来研究 PLC-Sleuth 的入侵检测/定位。 在这两种攻击场景中,17 个循环中的每一个都被攻击了 10 次。

检测/定位精度:PLC-Sleuth 检测攻击,TP 告警率 100%,无任何 FP 告警。 对于 340 个警报,PLC-Sleuth 以 96.76% 的 PPV(即 340 个中的 329 个)定位伪造的命令。

攻击一:通过以下方式生成的伪造时间序列:1)向正常输出命令添加随机噪声,2)将常数值与随机白噪声混合以隐藏攻击,被注入 17 个控制循环中的每一个。这些攻击通过以下方式降低物理过程: 1) 破坏反应堆温度; 2)压倒反应堆; 3) 增大反应器压力; 4)降低产品质量;图 17 显示了上述攻击下权重 wuk yj 的变化。我们可以看到,当攻击发生时,对应于受损控制环的所有边 euk yj 的权重都会发生变化,从而使 PLC-Sleuth 可以检测到它们。我们使用对 TE 反应堆液位控制的十次攻击进一步评估检测窗口 (T) 和阈值 (μ) 的影响,如图 18 所示,表明检测窗口和阈值对 TP/FP 的影响有限率,但对检测延迟有显着影响——检测延迟与窗口大小成反比。这是因为具有较长日志周期的检测数据能够更好地捕获正常命令权重,从而识别异常。

攻击二:通过将伪造的命令 ua 注入每个控制回路,并将传感器测量值替换为其历史正常记录,再执行 17 × 10 = 170 次攻击。 这些攻击对 TE 过程的影响与攻击 1 类似。无论重放传感器测量值如何,监控的重量w,y都会发生显着变化,如图 17 所示。

图17 命令权重在两次攻击下的四个控制回路的w y (a) 反应器温度 (b) 反应堆水平 (c) 反应堆压力 (d) 产品质量

对不准确控制图的错误范围:我们检查了 PLC-Sleuth 对少数构造不准确的控制图的容忍度。 在 PLC-Sleuth 中,错误匹配的边缘主要发生在包含传输变量的控制回路中,我们称之为内回路故障。 对于使用其他学习指标构建的控制图,错误匹配的边还包括来自不同控制环的节点,我们称之为环间故障(例如,图 15 中连接节点 y11 到 u8 的边)。 图 20 显示了两种攻击场景下的检测结果,通过使用具有两种不同构造错误的控制图。 具有内环构造错误的控制图仍然可以检测到攻击,尽管 FP 率更高; 但是,具有环间故障的那一种不再适用。

图20 两种攻击场景下错误匹配边的权重 (a) 内环故障 (b) 环间故障

Wys 和 Wuy 在入侵检测中的比较:Wys 中的控制错误权重也可用于攻击检测:与正常错误权重的持续偏差表明存在攻击。 图 21(a) 显示了在命令注入攻击下 CUSUM 误差的增加,分别使用权重 wys ∈ Wys 和 wuy ∈ Wuy 。 以 wuy 为基础,PLC-Sleuth 甚至适用于协同隐身攻击的场景,其中 wys 的检测方案失败,如图 21(b) 所示。 此外,PLC-Sleuth 在两种攻击场景中都比使用 wys 的检测器更及时地发出警报,为 ICS 提供了更多的响应时间。

图21 使用两种边缘权重进行攻击检测的比较 (a) 攻击 1 (b) 攻击 2

六、自定义规避攻击

​ 我们基于对手的控制系统的了解进一步探索了对 PLC-Sleuth 的可能规避攻击: 1)物理过程的动态[系统状态 yj(t) 如何基于命令 u(t-1) 演变] 2)PLC 的控制规则[如何根据传感器读数 y(t) 生成命令 uk(t)]。

​ 根据物理过程的动态,攻击者可以通过将控制命令 u(t-1) 作为输入来预测每个时刻 t 的传感器读数 y^j(t)。通过对 y^(t) 的预测,攻击者可以根据对 PLC 控制规则的理解进一步预测伴随的控制命令 u^(t)。使用预测的命令 u^k(t) 和传感器读数 y^j(t),对手可以通过 uak (t) u^k(t)+ 和 yaj (t) y^j(t)+ε 破坏 PLC,其中和 ε分别是操纵的控制命令和传感器读取。这样,对手可以在不被 PLC-Sleuth 检测到的情况下破坏物理过程,因为 uak (t) 和相应的 yaj (t) 之间的关系与正常情况下保持相同。图 22 显示了针对 TE 过程的此类攻击之一,即对传感器和命令的重放记录攻击。可以看出,根据特定物理过程的动态,这种规避攻击的影响是不同的从彼此。

图22 传感器和命令联合重放的影响 (a) 无明显影响 (b) 改变分离水平 (c) 反应堆温度不稳定

​ 然而,在实践中发起此类攻击具有挑战性。 首先,同一物理过程(例如 EDS 的反应器和加热器)之间的控制回路是相互依赖的,并且没有标准的动力学模型,这使得对手很难预测传感器的行为。 其次,对手不仅需要全面了解同一控制回路中的相关变量对,还需要了解定义它们之间关系的特定控制算法。

七、相关工作

对 PLC 的攻击:已报告了许多针对 PLC 的系统性攻击。 通过利用 PLC 通信协议的漏洞,攻击者可以操纵 PLC 内存,包括输入/输出内存、控制逻辑内存等。此外,PLC 固件,其 提供 PLC 内存和硬件输入/输出模块之间的接口,已被恶意 rootkit入侵。 受损固件向物理进程发出非法控制命令,同时向SCADA报告伪造的系统状态。 在上述攻击之上,攻击者还通过劫持 SCADA 日志流量来隐藏受感染的 PLC 内存。

​ 检测/定位 PLC 攻击:为了防御 PLC 攻击,已经提出了许多使用 PLC 程序和/或 SCADA 数据中的系统不变量的检测方法。在PLC程序中,控制流的系统不变量通常被抽象为显式规则,通过这些规则验证操作码和输出变量状态的合法性和正确性。但是,检查控制流非常耗时,使其不适合实时攻击检测场景。使用 SCADA 数据,执行器如何影响传感器读数的系统不变量被抽象为物理模型和变量相关性。通过使用这些不变量预测系统状态,检测到操纵的传感器读数。此外,传感器读数和同时触发的命令之间的系统不变量被抽象为控制图和神经网络,它们允许检测操纵的命令。通过主动改变这些系统不变量,基于记录的和预期的系统状态之间的偏差来检测协同隐身攻击。与现有的方法不同,这些方法基于给定数据变量是否表示传感器读数或控制命令的先验知识来捕获系统不变量PLC-Sleuth识别系统不变量并检测具有更少先验知识的攻击。

八、结论

数据中的系统不变量的检测方法。在PLC程序中,控制流的系统不变量通常被抽象为显式规则,通过这些规则验证操作码和输出变量状态的合法性和正确性。但是,检查控制流非常耗时,使其不适合实时攻击检测场景。使用 SCADA 数据,执行器如何影响传感器读数的系统不变量被抽象为物理模型和变量相关性。通过使用这些不变量预测系统状态,检测到操纵的传感器读数。此外,传感器读数和同时触发的命令之间的系统不变量被抽象为控制图和神经网络,它们允许检测操纵的命令。通过主动改变这些系统不变量,基于记录的和预期的系统状态之间的偏差来检测协同隐身攻击。与现有的方法不同,这些方法基于给定数据变量是否表示传感器读数或控制命令的先验知识来捕获系统不变量PLC-Sleuth识别系统不变量并检测具有更少先验知识的攻击。

八、结论

​ 我们提出了 PLC-Sleuth,一种基于 PLC 控制图 G 的新型攻击检测并定位的方案。控制图描述了 PLC 的控制不变量,具有控制回路的固有和本质特征。 一旦 G 中的权重偏离规范,PLC-Sleuth 使用自动构建的控制图标记并定位攻击。 使用 EDS 和 TE 过程的评估结果表明,PLC-Sleuth 可以构建高精度的控制图(EDS 为 0.5 h 的对数为 100%,TE 过程为 20 h 的对数为 98.11%)。 PLC-Sleuth 的 EDS 检测 TPs/FPs 为 {98.33%, 0.85‰},TE 工艺的检测 TPs/FPs 为{100%, 0%}。 在攻击定位方面,PLC-Sleuth 对 EDS 和 TE 过程分别以 {93.22, 96.76}% 的准确率定位了伪造的命令。

控制不变量下的PLC入侵检测系统相关推荐

  1. 网络安全-防火墙与入侵检测系统

    防火墙效率 吞吐量:指防火墙在不丢失数据包的情况下能达到的最大的转发数据报的速率. 时延:能够衡量出防火墙处理数据的快慢. 丢包率:在特定负载下,指应由网络设备传输,但由资源耗尽而丢弃帧的百分比. 背 ...

  2. 基于Snort的入侵检测系统

    基于Snort的入侵检测系统 用Snort,Apache,MySQL,PHP及ACID构建高级IDS 第一章 入侵检测系统及Snort介绍 在当今的企业应用环境中,安全是所有网络面临的大问题.黑客和入 ...

  3. 基于网络(NIDS)的入侵检测系统

    入侵(Instruction)是个 广义的概念,不仅包括被发起攻击的人取得超出合法权限的系统的控制权,也包括搜集漏洞信息,造成拒绝访问(Denial of service)等对计算机系统造成危害的行为 ...

  4. 网络安全实验-入侵检测-基于网络入侵检测系统

     实验目的: 1.掌握snort IDS工作机理 2.应用snort三种方式工作 3.熟练编写snort规则 实验原理: 一.snort IDS概述 snort IDS(入侵检测系统)是一个强大的网络 ...

  5. 【1. 概述】开源入侵检测系统OSSEC详解

    一.前言       入侵检测系统(IDS)是用于检测服务器安全的防护系统,通常可分为基于主机(host-based)和基于网络(network-based)两大类.基于主机的入侵检测系统,顾名思义, ...

  6. 开源入侵检测系统OSSEC搭建之一:服务端安装

    OSSEC是一款开源的多平台的入侵检测系统,可以运行于Windows, Linux, OpenBSD/FreeBSD, 以及 MacOS等操作系统中.主要功能有日志分析.完整性检查.rootkit检测 ...

  7. 单片机补充案例--入侵检测系统

    说明:使用 STC89C52 设计入侵检测系统,给出方案和核心代码,需满足下列要求: 1. 发现入侵立刻开启 LED 闪烁警示 2. 入侵超过 5s 警报响起 3. 手动清除声光报警时,需输入安许可防 ...

  8. 信息安全体系建设☞开源入侵检测系统NIDS

    我们之前提到在边界处搭建信息安全体系,需要依赖防火墙,但是防火墙就像我们生活当中的一扇门,只是负责开和关我们不能够感知到是谁进来或者谁出去.比如说我们在制定防火墙策略的时候,我们制定的规则是人可以出去 ...

  9. linux 进程suricata,如何在 Linux 系统上安装 Suricata 入侵检测系统

    随着安全威胁的不断发生,入侵检测系统(IDS)在如今的数据中心环境中显得尤为必要.然而,随着越来越多的服务器将他们的网卡升级到10GB/40GB以太网,对如此线路上的硬件进行计算密集型的入侵检测越来越 ...

最新文章

  1. iOS 自定义双向滑块Slider
  2. 关于ngOptions的键值对
  3. 关于String的matches方法
  4. 挪动脑袋吃汉堡?AR版《贪吃蛇》帮你治好颈椎病
  5. sess.run接收返回值得变量和sess.run函数內的tensor型变量命名注意不能一致,影响迭代,产生报错:Can not convert a ndarray into a Tensor
  6. fso 拒绝访问_ASP中FSO的神奇功能 - 文件读取
  7. 从工具到平台|默安科技研发安全一体化管理平台正式发布
  8. 四、StackPanel控件
  9. 人口流动趋势matlab,中国人口增长模型(论文).doc
  10. 信道编码:编码FEC 前向纠错码
  11. 桌面虚拟化:软件为先
  12. 字节跳动AI lab计算机视觉实习生面试教训
  13. Transformer15
  14. C语言中的switch语句
  15. DevExpress 20.2.3有源码吗?一名鱼友刚刚问我的
  16. 99%苹果手机用户被“大数据杀熟”,你中招没?
  17. 事件循环EventLoop机制
  18. 3000套3d打印模型素材
  19. 测试开发人才稀缺,2018测试之旅来袭
  20. python+opencv电表读数自动识别,电表电量自动读取

热门文章

  1. WPF最新的电子书整理打包下载
  2. Cause: org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, \“wname\“)\r\n\ta
  3. three.js学习笔记(四)——Lights灯光
  4. (附源码)SSM仓库管理系统 毕业设计 061015
  5. ERP业务逻辑-进销存
  6. 【三网话费接口】源码分享
  7. 计算机开机响三声 两短,电脑开机滴滴滴响三声是什么原因 电脑开机滴滴滴响三声原因【图文】...
  8. AxureRP9 中继器的简单使用
  9. 5分钟玩转Axure之中继器(表格篇)
  10. 初识数据分析与挖掘(python)