用于保护可编程逻辑控制器的基于属性的访问控制模型

用于保护可编程逻辑控制器的基于属性的访问控制模型

原文
Attribute Based Access Control Model for Protecting Programmable Logic Controllers
申明
版权归原文作者及出版单位所有,如有侵权请联系删除。

摘要

​ 工业控制系统 (ICS) 传统上被设计为独立的系统并与互联网技术 (IT) 网络隔离开来。 随着通信技术的进步,攻击面增加; 现在可以访问和利用可编程逻辑控制器 (PLC) 和人机界面 (HMI) 等 ICS 组件中的漏洞。 身份验证和访问控制构成了保护 ICS 免受攻击的第一道防线。 不幸的是,由不正确的身份验证和访问控制引起的漏洞非常普遍。 我们将注意力集中在调查这些漏洞上,特别是那些以 PLC 为中心的漏洞,并展示如何使用基于属性的访问控制 (ABAC) 来帮助防范这些漏洞并使 ICS 对攻击更具弹性。 我们为 PLC 设计了一个 ABAC 模型,展示了如何实施它,分析了生成的系统并展示了它们对一些示例漏洞的弹性。

1 介绍

​ 工业控制系统 (ICS) 由操作或自动化工业过程所需的控制系统和相关仪器组成。 ICS 通常包括人机界面 (HMI)、可编程逻辑控制器 (PLC)、现场设备(传感器、执行器)、网络系统和通信协议。 ICS 通常构成国家的关键基础设施,因此必须保护其免受安全漏洞的影响。

​ 最初的 ICS 与信息技术 (IT) 网络隔离,因此不易受到安全威胁。由于 PLC 和 HMI 设计的技术进步,现代 ICS 可以连接到其他 IT 系统进行远程监控、控制和数据收集。当前的 PLC 和 HMI 可以支持以太网上的通信协议。它们还为远程通信提供了便利的远程 Web 服务器。虽然 PLC 和 HMI 的设计在功能和通信方面有所发展,但安全问题在很大程度上被忽略了,导致诸如 Stuxnet 对伊朗核离心机的攻击等攻击 [6]。工具的可用性,例如“Shodan”[14] 等搜索引擎有助于定位连接到 Internet 的 ICS 系统,有助于攻击者。对 ICS 的网络攻击可能导致严重后果。示例包括阻止或延迟信息、未经授权的软件修改、公用事业中断、设施恐怖主义和对系统安全运行的干扰。

​ 最初的 ICS 与信息技术 (IT) 网络隔离,因此不易受到安全威胁。由于 PLC 和 HMI 设计的技术进步,现代 ICS 可以连接到其他 IT 系统进行远程监控、控制和数据收集。当前的 PLC 和 HMI 可以支持以太网上的通信协议。它们还为远程通信提供了便利的远程 Web 服务器。虽然 PLC 和 HMI 的设计在功能和通信方面有所发展,但安全问题在很大程度上被忽略了,导致诸如 Stuxnet 对伊朗核离心机的攻击等攻击 [6]。工具的可用性,例如“Shodan”[14] 等搜索引擎有助于定位连接到 Internet 的 ICS 系统,有助于攻击者。对 ICS 的网络攻击可能导致严重后果。示例包括阻止或延迟信息、未经授权的软件修改、公用事业中断、设施恐怖主义和对系统安全运行的干扰。

​ 我们首先讨论了PLC的安全特性以及与认证和访问控制有关的漏洞。然后,我们展示了如何通过加强认证机制来改善PLC的安全状况,并提倡使用ABAC模型进行访问控制。与RBAC相比,ABAC更灵活、更动态,并提供更精细的访问控制[3]。在ABAC中,用户属性、资源属性和环境属性被结合起来定义复杂的策略,使ABAC成为更有效的访问控制方法。这些属性的性质可以是静态的或动态的。在ABAC模型方面,有两个标准化的努力。一个是eXtensible Access Control Markup Language(XACML)模型,另一个是NIST Next Generation Access Control(NGAC)[7]。我们选择NGAC的原因是,它允许政策管理的便利性,以及它对动态政策的建模能力–通过义务的概念,政策在部署时可以被改变。我们制定了一个用于PLC的ABAC模型,并提供了一个执行架构。然后,我们对我们的方法进行了安全分析,并展示了它是如何防止最近发现的一些漏洞的。

2 背景情况
2.1 工业控制系统ICS

​ 图1显示了ICS的通用结构。它包括可编程逻辑控制器(PLC)、人机界面(HMI)、现场设备,如执行器和传感器,以及可选的远程监测和控制(RMC)。PLC是一种工业化的计算机,专门用于监测和控制一个过程。它通常由数字和模拟模块、通信模块、软件模块和固件模块组成。人机界面是一个图形用户界面,用于配置设置、与PLC进行参数通信、过程监控和事件记录。PLC从HMI或RMC接收配置设置和控制过程的命令。它接收来自传感器的反馈,并通过操纵控制变量来控制执行器。它将控制过程的数据和状态传达给HMI或RMC。ICS的典型生命周期包括设计、构建、调试、运行和退役。除了硬件组件外,ICS供应商通常还提供一个工程框架,其中的工程工作站可以运行应用软件,用于设计和开发控制软件、更新固件和控制软件,以及排除故障。
在这里插入图片描述

图1 ICS的通用架构
2.2 ICS中的身份验证和访问控制

​ 认证一般来说,大多数PLC为访问、软件、固件和通信模块提供两步认证。在第一步中,用户被认证以获得对PLC的在线访问。在第二步中,连接的用户将被再次认证,以执行特定的操作。访问控制 一般来说,PLC为其CPU的访问提供自由决定的访问控制(DAC)。人机界面和远程监控组件提供基于密码的认证和基于角色的访问控制(RBAC),用于访问不同的功能,如配置设置和远程操作。

2.3 PLC的安全特性和漏洞

我们现在讨论两个例子的PLC的安全问题。西门子S7-1500 PLC和罗克韦尔Compact Logix PLC。

2.3.1

S7-1500:安全特性和漏洞。S7-1500 PLC是由西门子制造的新一代PLC。它有基于密码的两步认证和用于授权的DAC。该工程框架被称为完全集成自动化(TIA)系统。

​ 信息保护 S7-1500 PLC使用S7-协议版本P3,它是通过TCP/IP设计的客户-服务器模型[5]。P3协议中的一些加密保护包括一个密钥交换协议,PLC和TIA门户用来建立一个秘密的共享密钥,这被称为会话密钥,密钥交换协议通过以下四个步骤来完成会话密钥的建立。(i) TIA门户首先向PLC发送一个请求信息Hello,以启动一个新的会话。(ii) PLC回应一个包含PLC固件版本和挑战文本的消息,我们称其为ServerSessionChallenge。(iii) TIA门户网站收到PLC的回应。它确定了

​ PLC 公 钥 来 自 固 件 版 本 , 并 使 用 随 机 生 成 的 密 钥 (KeyDerivationKey)和ServerSessionChallenge创建Ses- sionKey。它将 SessionKey发送给PLC,用PLC的公钥对其进行加密。(iv) PLC用其对应于固件版本的私钥对SessionKey进行解密,并向TIA门户发送OK响应,从而建立与TIA门户的通信。P3协议还提供了一种消息完整性保护算法,根据会话密钥和消息类型计算消息验证码(MAC)值。

​ 访问控制和认证漏洞 P3协议的密钥交换使用单向组认证。所有具有相同固件的S7-1500 PLC拥有相同的公钥。因此,共享相同固件版本的PLC可以相互模仿。如果这些PLC中的任何一个的私钥通过分析固件被提取出来,那么公-私密钥交换就被破坏了。此外,TIA门户会验证来自PLC的信息的完整性,但PLC不会验证来自TIA门户的信息的完整性。因此,PLC不能确保目前正在通信的TIA门户是与先前成功通信的会议相同。这导致了P3协议中的以下漏洞。

​ • CVE-2019-10943:认证绕过漏洞。at- tacker可以利用这个漏洞,直接向TCP端口102发送精心制作的TCP数据包,以修改运行代码。二进制代码被修改而不改变源代码,造成对目标PLC的完整性攻击。利用这个漏洞不需要认证[9]。

​ • CVE-2020-15782:高严重的内存保护绕过漏洞。攻击者可以利用这个漏洞直接写到目标PLC的内存位置,造成内存保护的违反[11]。拥有TCP 102端口网络访问权的攻击者可以向受保护的内存区域写入代码和假数据,或读取敏感数据以发起进一步攻击。

2.3.2

​ 凑型Logix PLC:安全特性和漏洞。Compact Logix PLC是由Allen-Bradley/Rockwell制造的。它有两步基于密码的认证,用于访问软件模块,并对其CPU的访问进行基于角色的访问控制。Stu- dio 5000是工程框架。所有Allen-Bradley/Rockwell的PLC都采用TCP/IP封装的通用工业协议(CIP)进行通信。消息保护 CIP提供(i)通过TLS基于哈希的消息A uthentication Code (HMAC)的数据完整性。(ii)通过数据加密的保密性。(iii) 通过TLS(RFC 5246)和DTLS实现安全数据传输。访问控制和认证漏洞 以下是在Compact Logix PLC中发现的漏洞。

​ • CVE-2021-22681:认证绕过漏洞。Studio 5000 Logix设计器使用硬编码的密钥来验证与Studio 5000软件通信的Rock- well Logix PLC。验证绕过漏洞允许攻击者发现PLC和Studio 5000之间共享的硬编码加密密钥。攻击者可以使用这个硬编码的密钥来冒充Studio 5000应用程序与罗克韦尔PLC进行连接,造成完整性攻击[12]。

​ • CVE-2019-10952:拒绝服务(Denial-Of-Service)漏洞。PLC网络服务器中的这一漏洞允许认证用户直接向网络服务器端口发送精心制作的HTTP或HTTPS数据包,迫使网络服务器处于不可达状态,导致DoS攻击[10]。

2.4 基于属性的访问控制(ABCD)

​ ABAC是最通用的访问控制模型,对资源的访问取决于用户、资源的属性。和环境,这被称为属性。ABAC有两个标准化工作,即eXtensible Access Control Markup Language XACML[7] 和 NIST Next Generation Access Control(NGAC)[7]。XACML是为协作环境而开发的,例如在不同的组织领域内的数据共享。XACML提供了一个策略架构和一个策略规范语言。XACML具有很强的表现力,可以将不同类型的策略表达为规则,并可以使用算法进行组合。

​ NIST NGAC使用关系来表达策略。两个重要的关系是分配和关联。用户和资源的属性以容器的形式表示。如果用户/资源拥有相应的属性,它们就被分配到容器中。当一个容器的存在意味着另一个容器的存在时,容器可以通过赋值关系被组织成一个层次结构的形式。关联关系是用户属性和资源属性之间的关系。这些关系被标记为操作。这意味着拥有关联关系所示属性的用户可以对拥有关联关系相关属性的资源进行标记的操作。NGAC还支持义务策略,即在访问之前或之后可以执行的操作。我们选择NGAC而不是XACML是因为通过义务动态策略可以被支持。此外,政策管理在NGAC中得到更好的支持。

3 相关工作

​ Duka等人[2]提出在ICS组件(如PLC和HMI)之间通过消息认证码(MAC)进行认证数据交换。PLC和HMI中的控制软件是用MAC构建的,这样用户和PLC之间交换的数据就能得到验证和完整性。这为防止中间人攻击提供了更好的安全保障,但并没有解决如何防止中间人攻击来自流氓PLC的问题。这也需要改变PLC的设计,使其能够构建和验证MAC。实施起来就成了供应商的事,而且不能为复杂的ICS系统提供集中的解决方案。此外,这项工作并没有解决第1节中描述的基于密码的攻击。

​ 许多行业和组织正朝着ICS采用RBAC机制[13]的方向发展。RBAC被用来限制ICS用户基于其角色的权限。主要的PLC和HMI制造商正在将RBAC纳入他们的PLC和HMI安全功能中。罗克韦尔的工厂对话安全软件为访问PLC和HMI提供RBAC[4]。霍尼韦尔ACS实验室[8]为ICS提出了一个两层的RBAC,它比单层的RBAC提供了更好的安全性。

​ M.Onori等人[16]为ICS应用实现了ABAC。它用用户属性、资源属性和环境属性制定访问策略,提供复杂的安全策略和认证。它没有解决组件层面的安全问题,如PLC和HMI的漏洞,它没有解决认证问题。另外,本文采用了XACML标准,不支持动态策略。我们将ABAC作为工程工作站和ICS之间的一个网关模块来实现。ICS不能从工程工作站直接访问。ABAC网关模块对来自工程工作站的每个传入请求进行完整性、真实性和访问权限的验证,从而防止来自流氓工作站的攻击。此外,它还通过对不同的操作实施策略,并在ABAC网关模块中封装不同ICS组件的IP地址,来解决与访问控制相关的组件级漏洞。此外,我们的方法结合了支持动态策略的NGAC标准。动态策略更适用于事件驱动的系统,如ICS。

4 剑桥大学经济学的应用

​ 我们首先介绍了我们的威胁模型,然后是我们使用NIST NGAC ABAC模型的解决方案。

4.1 威胁模型和攻击实例

​ 根据Bhiam等人[5]进行的工作和第2.3.1节和第2.3.2节讨论的漏洞,我们对我们的威胁模型做了以下假设。我们假设攻击者是一个没有授权访问PLC或工程工作站的外人。攻击者可以通过Inter-net访问PLC。攻击者可以冒充经过认证的工程工作站。攻击者可以捕获并修改工程工作站和PLC之间的TCP数据包。

4.1.1

​ 中间人攻击 - 第一阶段:截获PLC和工程工作站之间的授权通信。攻击者在阶段1中执行以下操作。

​ (1) 通过内部资源或外部网站如Shodan[14]获得PLC的IP地址。

​ (2) 拦截目标PLC和经过验证的工程工作站之间的通信。

​ (3) 从数据包中提取建立通信所需的关键信息,并生成一个精心制作的TCP数据包。例如,西门子S7-1500 PLC和TIA门户网站之间的TCP数据包,包含了PLC固件信息的纯文本。所有具有相同固件版本的S7-1500 PLC都有相同的公钥。攻击者可以从TCP数据包中提取固件版本以获得公钥。使用这个公钥,攻击者可以成功地与目标PLC建立通信[5]。同样,罗克韦尔的PLC在其通信数据包中包含硬编码的加密密钥。攻击者可以从TCP数据包中提取硬编码的加密密钥,并模仿经过验证的Studio 5000,与目标罗克韦尔PLC建立通信[12]。

​ (4) 为目标PLC创建精心制作的TCP数据包。

​ (5) 攻击者还可以在这个阶段从捕获的TCP数据包中提取其他机密信息。

4.1.2

​ 中间人攻击 - 第二阶段:在第二阶段,攻击者与目标PLC建立通信,以造成完整性或可用性攻击。

​ (1) 攻击者创建并向目标PLC的IP地址和TCP端口发送一个通信请求TCP包。

​ (2) PLC用一个挑战问题来回应。

​ (3) 攻击者用挑战响应来回应,用阶段1中提取的加密密钥对其进行加密。

​ (4) PLC用私钥对挑战响应进行解密,并与攻击者的工程工作站建立通信。

​ (5) 攻击者向PLC的TCP端口发送伪造的TCP数据包,以造成完整性或可用性攻击。

以类似的方式,攻击者可以利用第2.3.1和2.3.2节中讨论的漏洞对PLC发起攻击。

4.2 ICS的NIST NGAC

​ 我们的NGAC模型由以下实体组成。

用户是需要访问资源的实体。

资源是需要保护的对象。我们将考虑把PLC作为我们实施的目标资源。

环境定义了关于用户和访问所需资源的外部因素的条件。

操作是允许用户在目标PLC上执行的行动。

​ NIST NGAC模型,如图2所示,以图的形式绘制。节点对应于用户(由用户图标显示)、属性(显示为实心框)和资源(显示为椭圆)。实线箭头边表示分配关系。虚线表示关联关系。关联边上的标签表示具有关联边的一个节点所表示的属性的用户对具有关联边的另一个节点所表示的属性的资源可以进行的操作名称。图中没有显示环境属性和义务政策。下面列出了各种属性和操作。

PLC属性

(1) 模块={通信,软件,内存,固件,输入/输出}代表PLC的一个模块。

(2) 状态={停止,运行,紧急停止激活}代表PLC的当前运行状态。

(3) Port = 是字符串类型,表示PLC的通信端口。

用户属性

(1) AccessLevel = {Operator, Engineer, Administrator}代表请求用户的访问级别。

(2) DeviceID是字符串类型的。我们使用授权工程工作站的硬盘序列号作为DeviceID,因为要改变攻击者设备的硬盘序列号以匹配授权的DeviceID是比较困难的。

环境属性

(1) 时间是字符串类型,代表用户要求的访问时间。

(2) Loc是字符串类型,代表用户试图访问PLC的位置。

操 作 = { CommSetup, Download, Update, ReadMem, WriteMem, ChangeMode, ResetMem, CommTerm } 代表在PLC上执行的操作。
在这里插入图片描述

图2 用于NGAC ABAC模型
4.3 政策的正规化

​ 每个政策都表示为一个元组,如下所示。⟨{𝑢𝑠𝑒𝑟 }, {𝑟𝑒𝑠𝑜𝑢𝑟𝑐𝑒 }, {𝑒𝑛𝑣𝐴𝑡𝑟 }, {𝑜𝑝 }⟩其中userAttr,re- sourceAttr, 和envAttr 分别表示对用户属性、资源属性和环境属性的条件,而 op 表示操作。上述策略指出,只有当 userAttr、resourceAttr 和envAttr 得到满足时才允许 op。如果任何条件为假,则拒绝访问。

4.3.1 通信设置政策

​ 如果用户的访问级别为操作员、工程师或管理员,设备为 “4c174602”,并且访问时间在美国东部时间7:00-16:00之间,则允许CommSetup操作。元组中的第一个组件给出了用户属性的条件。由于资源属性上没有明确的条件,第二部分是 “真”。第三个分量表示环境属性的条件,在本例中是位置和时间。最后一个部分表示可允许的操作。这被形式化为以下内容。

⟨{𝑈 𝑠𝑒𝑟 .𝑠𝑒𝑟 ∈ {𝑐𝑐𝑒𝑠𝑠𝐿𝑒𝑣𝑒𝑙, 𝐸𝑛𝑔𝑖𝑛𝑒𝑟, 𝑂𝑝𝑒𝑟 }∧
𝑈𝑠𝑒𝑟 .𝐷𝑒𝑣 = "4𝑐174602"},{𝑇 𝑟𝑢𝑒}。
{𝐸𝑛𝑣.𝑇𝑖𝑚𝑒= 700 - 16 :00𝐸𝑆𝑇 ∧𝐸𝑛𝑣.𝐿𝑜𝑐="𝑂𝑟𝑔.𝑙𝑜𝑐"}。
{𝐶𝑜𝑚𝑚𝑆𝑒𝑡𝑢𝑝 }⟩
4.3.2 内存写入策略

​ WriteMem操作是被允许的,前提是用户具有工程师或管理员访问级别人员的PLC的状态是禁止的这被正式确定为以下几点。

⟨{𝑈 𝑠𝑒𝑟 .𝑠𝑒𝑟 ∈ {𝐸𝑛𝑔𝑖𝑛𝑒𝑟,𝑐𝑐𝑒𝑠𝑠𝐿𝑒𝑣𝑒𝑙 }。
{𝑃𝐿𝐶.𝑆𝑡𝑎𝑢𝑠 = 𝑜𝑝𝑝𝑒𝑑 }, {𝑇 𝑟𝑢𝑒 }, {𝑊 𝑒𝑀𝑒𝑚}⟩
4.3.3 固件更新政策

​ 只要用户的访问级别是管理员,并且PLC的操作模式是停止的,就允许进行更新操作。这方面的规定如下。

⟨{𝑈𝑠𝑒𝑟.𝑠𝑒𝑟 ∈ {𝑐𝑐𝑒𝑠𝑠𝐿𝑒𝑣𝑒𝑙 },{𝑃𝐿𝐶.𝑆𝑡𝑎𝑡𝑢𝑠 = 𝑆 }。
{𝑇 𝑟𝑢𝑒}, {𝑈 𝑝𝑑𝑎𝑡𝑒 }⟩
4.4 访问控制架构

​ ABAC作为一个独立的网关模块在企业网络和嵌入式控制器上的PLC之间实现。它由一个认证模块、一个通信处理器和一个访问控制模块组成。图3中的虚线显示了ABAC网关架构的概况,其中ABAC组件用粉色表示。

工程工作站 用户通过工程工作站与PLC进行通信,在图3中显示为一个蓝色方框。认证模块通过有效的用户ID(UId)和密码(Pwd)对请求访问PLC的用户的身份进行认证。当用户请求访问PLC时,认证模块会提示用户输入用户ID(UId)和密码(Pwd)。此外,它还捕捉到用户试图登录的设备(DeviceID)的硬盘序列号。认证模块将在ABAC网关中实现,由一个登录数据库组成,用于存储用户身份的详细信息。登录数据库的模式,我们称之为LoginDB,符合当前的标准,具体如下。

LoginDB = ⟨UId, Pwd, LoginCreateTime, LastModTime, PwdExpTime⟩其中UId, Pwd, LoginCreateTime, LastModTime, PwdExpTime去注意用户ID、密码、创建登录的时间、最后修改密码的时间和密码到期时间。认证模块对UId、Pwd和DeviceID进行加密。

​ 通信处理程序处理企业网络和ABAC模块之间的所有通信。它包括通信设置,如端口转发、网络地址转换(NAT)和其他通信功能。通信处理程序使用数据包嗅探功能[15]从传入的连接中提取以下组件。它附上日期和时间,计算校验和,并将其打包成一个综合包,我们将其称为AccessRequestPacket,其结构如下。

​ AccessRequestPacket = ⟨ Src.Port, Dst.Port, Src.IPAddr, Dst.IPAddr, Length, DataPacket, DateTime, Checksum ⟩ 其中。(i) Src.Port和Dst.Port表示从TCP层提取的源端口和目的端口。PLC属性Port是从Dst.Port组件中提取的。(ii) Src.IPAddr和Dst.IPAddr表示从IPv4层提取的源和目的IP地址。源IP地址是从Src.IPAddr组件中提取的。(iii) 从TCP中提取长度和加密的DataPacket。DataPacket由请求的操作、PLC属性模块和相关数据组成。(iv) DateTime表示传入数据包的日期和时间。通信处理程序记录收到传入数据包的日期和时间,并添加到AccessRequestPacket中。环境属性DateTime是从DateTime组件中提取的。(v) 计算校验和,并添加到请求包的末尾,以便以后验证。

​ 访问控制模块描述如下。

[政策执行点(PEP)]。PEP接收来自用户的访问请求,通过执行初步的检查和验证对数据包进行认证,并将其转发给PDP进行决策。

[政策决定点(PDP)]。PDP在收到重新查询后,根据存储在PIP中的政策计算决定,并向PEP返回授予或拒绝的决定。它还会生成一个事件日志,并将其转发给EPP以保存记录。

[政策信息点(PIP)]。PIP存储访问关键资源的政策信息。PIP包含用户属性、访问策略的数据库,以及用于映射IP地址和位置的地理ip数据库。

[资源访问点(RAP)]。PDP和EPP模块以及通信处理程序通过RAP模块与PLC通信。[事件处理点(EPP)]。EPP存储所有由PDP收到的事件。

RAP是作为一个软件库实现的,并将在PLC软件中进行配置。PLC通过RAP与ABAC模块进行通信。PEP模块由用户属性、访问策略和地理ip数据库组成,用于将IP地址与相应的位置进行映射。这些数据库的模式如下。

AttributesDB = ⟨UId, DeviceID, AccessLevel⟩ 其中UId, DeviceID, AccessLevel表示用户ID,设备ID,以及相关用户的访问级别。

PolicyDB = ⟨Operation, Policy⟩ 其中Operation, Policy表示PLC操作和相应的策略。GeoIPDB = ⟨IPAddress, Loc⟩ 其中IPAddress, Loc表示IP地址和相应的位置。地点可以是任何地理位置或组织的域名地址。

EPP模块包括一个被称为EventDB的事件日志数据库,其模式如下。EventDB = ⟨UId, Operation, Src.IPAddr, Decision, DateTime⟩ 其中UId, Operation, Src.IPAddr, Decision, DateTime表示用户ID、请求的操作、源IP地址、做出的决定以及日期和时间的访问。决定值是授予或拒绝。
在这里插入图片描述

图3 工程工作站和PLC之间通过ABC网关进行通信
4.5 工程工作站和PLC之间的通信协议

​ PLC的IP地址被封装在具有端口转发规则的ABAC模块中。用户通过ABAC网关访问PLC。用户的访问请求被封装在一个TCP数据包中,我们将其称为RequestPacket。另外,在我们的协议中,我们把加密的数据表示为Enc.X,其中X是未加密的数据。RequestPacket的内容如下。

RequestPacket = ⟨ Header, Src.Port, Dst.Port, Length, Enc.DataPacket, Checksum ⟩ 其中Header表示TCP协议头,Src.Port表示源端口,Dst.Port表示目的(PLC)端口,Length表示Enc.DataPacket的长度。DataPacket,Enc.DataPacket去掉了对PLC的加密用户请求,包括操作、PLC属性模块和相关数据,以及用于验证数据包的Checksum。

​ 为了执行下载 、读 取 内 存 、写 入 内 存 、改 变 模 式 和CommTerm操作,第一步是通过ABAC网关建立工程工作站和PLC之间的通信。这是通过执行CommSetup操作完成的。CommSetup操作的访问策略定义在第4.3节。协议顺序如下。

[步骤1:工程工作站{Enc.UId, Enc.Pwd, Re-questPacket}。→ 认证模块] 工程工作站在启动与PLC的通信时将被引导到认证模块,提示用户输入她的证书。认证模块捕捉Enc.UId、Enc.Pwd和用户登录时的Enc.DeviceID。

[步骤2:认证模块{UId, RequestPacket, DeviceID}→通信处理程序] 认证模块将{UId, RequestPacket, DeviceID}转发给有效认证的通信处理程序。

[步骤3:认证模块{Deny}→工程工作站】认证模块拒绝来自工程工作站的无效认证的连接,并断开连接。

[步骤4:通信处理程序{UId, AccessRequestPacket, DeviceID}→PEP] 通信处理程序从RequestPacket创建AccessRequest- Packet,并将其与UId和DeviceID一起转发给PEP。

[步骤5:PEP {UId,AccessRequestPacket,DeviceID} → PDP] PEP将UId、AccessRequestPacket和DeviceID转发给PDP进行决策。

[步骤6:PDP {UId, Operation, Src.IPAddr} → PIP] PDP从Access- RequestPacket 中 取 出 Operation 、 PLC.Module 和Src.IPAddr。这种情况下的操作是CommSetup。它与PIP通信以提取Comm-Setup的策略、User.AccessLevel、Loc和User.DeviceID。

[步骤 7: PIP {Policy, User.AccessLevel, Loc, User.DeviceID} → PDP] PIP向PDP返回CommSetup的策略、User.AccessLevel、Location和User.DeviceID。

[步骤 8: PDP{request PLC.Status} → RAP] PDP与RAP进行通信,以获得PLC的当前状态。

[步骤9:RAP {request PLC.Status} → PLC] RAP与PLC通信,提取当前状态。

[步骤10:PLC {PLC.Status} → RAP] PLC以其当前状态回应RAP。

[步骤11:RAP{PLC.Status}→PDP] RAP向PDP响应PLC的状态。

[步骤12:PDP {Decision} → PEP] PDP计算Deci- sion并将其转发给PEP。

[步骤13:PDP {Event} → EPP] PDP向EPP记录一个由UId、Operation、Src.IPAddr、Decision和DateTime组成的事件。

[步骤14:PEP {决定→通信处理程序] PEP将决定转发给通信处理程序。如果决定是拒绝,那么通信处理程序就会断开与工程工作站的连接。

[步骤15:通信处理程序{RequestPacket → RAP] 如果决定是授予,那么通信处理程序将RequestPacket转发到RAP。

[步骤 16: RAP {RequestPacket } → PLC] RAP 将RequestPacket转发给PLC,执行CommSetup操作。

[步骤17:PLC {ResponsePacket} → 通信处理程序] PLC接受来自工程工作站的连接并建立通信。它通过RAP向通信处理程序发送响应。ResponsePacket的格式与RequestPacket相似,由相同的字段组成。Enc.DataPacket组件包括从PLC到用户的响应。

[步骤18:通信处理程序{ResponsePacket}→工程工作站]。通信处理程序将ResponsePacket转发给工程工作站。

4.6 通过ABAC网关的WriteMem操作

​ WriteMem操作用于向PLC的一个内存位置写入。WriteMem的策略在第4.3节定义。下面给出了执行该操作的协议。

[步骤1] 对PLC进行任何操作的前提条件是执行第4.5节中的CommSetup操作。

[步骤2] 工程工作站要求写入内存通过ABAC网关的操作。

[步骤3] 通过CommSetup操作捕获用户属性(UID和User.DeviceID)。

[步骤4] ABAC网关收到WriteMem操作,并验证当前登录的用户和当前PLC的WriteMem操作的访问策略4.3。

[步骤5] 如果决定批准,ABAC网关将WriteMem操作转交给PLC。PLC执行操作并通过ABAC网关向工程工作站发送响应。

[步骤6] 如果决定为拒绝,ABAC网关断开与工程工作站的连接。
在这里插入图片描述

图4 通信设置协议
5 安全分析

​ 各个组件之间的通信显示在图5中。我们假设我们的ABAC模块是可信的和防篡改的。我们还假设ABAC网关和PLC之间的通信是受保护的。

​ 我们现在讨论如何利用第2.3.1和2.3.2节中讨论的与访问控制或授权有关的漏洞的攻击可以被我们的ABAC模块所预防。预防攻击的顺序图如图6所示。攻击者不能直接访问PLC,因为它的IP地址被封装在具有端口转发规则的ABAC网关中。攻击者必须通过ABAC网关来执行对PLC的攻击。

​ 攻击者可以使用工程框架,如TIA门户或Studio5000,从流氓工程工作站或冒充工程框架的自定义应用程序。我们把攻击者使用的用户界面称为AttackInterface。这种攻击可以通过ABAC网关在多个层面上进行预防,如下所述。

[步骤1:攻击界面{Enc.UId, Enc.Pwd, RequestPacket}。→ Auth Module] 为了进行攻击,攻击者发送RequestPacket来执行CommSetup操作,作为初始步骤,他或她会被提示输入有效的凭证。

[步骤2:认证模块{UId, RequestPacket, Enc. DeviceID}→通信处理程序] 如果攻击者通过暴力攻击成功破解了认证模块,那么认证模块就会捕获Enc.DeviceID,并将UId、RequestPacket和DeviceID转发给通信处理程序。

[步骤3:认证模块 {Deny}] 如果攻击者未能输入有效的证书,那么认证模块会拒绝RequestPacket并断开连接,从而防止攻击。

[步骤4:通信处理程序 {UId,AccessRequestPacket, DeviceID}→PEP] 通信处理程序从RequestPacket创建AccessRequest- Packet,并将其与UId和DeviceID一起转发给PEP。

[步骤 5 : PEP {UId, AccessRequestPacket, DeviceID} → PDP] PEP将UId,AccessRequestPacket和DeviceID转发给PDP进行决策。

[步骤6:PDP {UId, Operation, Src.IPAddr} → PIP] PDP从Ac- cessRequestPacket 中提取 Operation 、 PLC.Module 和Src.IPAddr。这种情况下的操作是CommSetup。它与PIP通信以提取 Comm-Setup 的 策 略 、 User.AccessLevel 、 Loc 和User.DeviceID。

[步骤7:PIP {Policy, User.AccessLevel, Location, DeviceID} → PDP。→ PDP PIP向PDP返回CommSetup的策略、User.AccessLevel、User.DeviceID和Loc。

[步骤 8: PDP {request PLC.Status} → RAP] PDP与RAP进 行通信,以 获 得 PLC 的当前状 态 。

[步骤 9 : RAP {request PLC.Status} → PLC] RAP与PLC进行通信,以提取当前状态。

[步骤10:PLC {PLC.Status} → RAP] PLC以其当前的操作模式响应RAP。

[步骤11:RAP {PLC.Status}→PDP] RAP向PDP回应PLC的当前工作模式。

[步骤12:{决定}→PEP] PDP根据访问策略计算决定,并做出拒绝决定,因为批准的条件不合格,因为。

​ • User.DeviceID是唯一的,并在授权组织或生产设施中注册。我们使用硬盘序列号作为User.DeviceID。只要设备没有被盗,或者at- tack不是由流氓或心怀不满的员工执行,攻击者的DeviceID就不匹配。

​ • Event.Loc对组织来说是唯一的。请求必须通过公司域名地址(例如,“Or- gABC.local”),如4.3中的访问策略所定义的。只要攻击不是由仍然在职的流氓或心怀不满的雇员实施的,远程攻击者就不可能从 "OrgABC.local "实施攻击。因此,攻击在步骤12被PDP模块所阻止。

[步骤13:PDP {Event} → EPP] PDP向EPP记录一个由UId、操 作、Src.IPAddr、De-cision和时间组成的事件。

[步骤14:PEP {决定→通信处理程序] PEP将决定传达给通信处理程序。如果决定是拒绝,那么通信处理程序就会断开与攻击者界面的连接。

因此,攻击者无法与目标PLC建立通信,也无法发送精心制作的TCP数据包来进行预期攻击。总而言之,预期的攻击可以在两个阶段进行预泄。第3步是认证模块,第12步是访问控制模块。

​ 现在我们描述一下我们的ABAC模块是如何防止各种形式的攻击的。

[防止完整性攻击]如果没有ABAC门路,攻击者可以直接从流氓工程工作站或其他应用程序发送精心制作的RequestPacket数据包到PLC,以引起完整性攻击,例如利用第2.3.1和2.3.2节中讨论的漏洞CVE-2019-10943、CVE-2020-15782和CVE-2021- 22681引起的攻击。例如, ABAC 模块通过 执行 第4.3节中描述的内存写入策略WriteMem来防止完整性攻击,通过唯一的设备ID并仅在某些条件下限制只有授权工作站才能访问。

[防止拒付攻击] ABAC网关在EventDB中记录每一个带有UId、Src.IPAddr、DateTime、Loc的请求,从而提供防止拒付攻击的保护。

[防止可用性攻击(DoS)] 攻击者不能利用第2.3.2节中讨论的CVE-2019-10952等漏洞,直接对PLC网络服务器进行DoS攻击。ABAC根据访问策略和PLC状态对每个RequestPacket和User.DeviceID进行验证,然后再将其传送到PLC。

[防止回复攻击]。ABAC网关的通信处理模块在每个会话中捕获每个传入的RequestPacket的日期和时间,以确保Request- Packet不与前一个会话重复,从而提供对回复攻击的保护。

[防止保密性攻击]即使Re-questPacket对攻击者来说是可见的,但User.DeviceID、User.AccessLevel和访问策略对用户来说是不可用的。[对特权提升的保护] User.AccessLevel存储在ABAC网关模块的一个嵌入式数据库中。它是ABAC网关本地的,外部用户不能访问,因此用户不能改变他或她的访问权限。
在这里插入图片描述

图5 通信架构

在这里插入图片描述

图6 通过ABAC模块防止攻击
6 结论

ICS的安全是一个挑战。由于ICS缺乏复杂的安全机制,石油和天然气、电力和其他制造业等行业不断受到攻击。本文研究了一些现有PLC的漏洞。我们提出了一个解决办法,加强了认证和访问控制机制。我们展示了如何实现ABAC来保护PLC。具体来说,我们展示了如何使用NIST NGAC模型来保护PLC。我们展示了如何指定和执行这种政策。在未来,我们计划探索ABAC在其他ICS组件中的应用。我们还计划开发一个模拟石油和天然气环境的测试平台。这将有助于我们评估我们的方法的有效性,以及由于执行ABAC而产生的性能损失。

[1] A. Adeen, Y. Hyunguk, and A. Irfan. 2021. Empirical Study of PLC Authentication Protocols in Industrial Control Systems. 383–397. https://doi.org/10.1109/SPW53761.2021.00058 Last accessed 12 December 2021.
[2] D. Adrian-Vasile, G. Béla, and H. Piroska. 2018. Enabling authenticated dataexchanges in industrial control systems. 1–5. https://doi.org/10.1109/ISDFS.2018.8355337 Last accessed 12 December 2021.
[3] M. Aftab, Z. Qin, S. Zakria, S. Ali, Pirah, and J. Khan. 2018. The Evaluation andComparative Analysis of Role Based Access Control and Attribute Based AccessControl Model. In International Computer Conference on Wavelet Active MediaTechnology and Information Processing (ICCWAMTIP). 35–39. https://doi.org/10.1109/ICCWAMTIP.2018.8632578
[4] Rockwell Automation. 2021. FactoryTalk Security System Configuration Guide. https://literature.rockwellautomation.com/idc/groups/literature/documents/qs/ftsec-qs001_-en-e.pdf. Last accessed 21 November 2021.
[5] E. Biham, S. Bitan, A. Carmel, A. Dankner, U. Malin, and A. Wool.2019. Rogue Engineering Station Attacks on Simatic S7 PLCs.https://i.blackhat.com/USA-19/Thursday/us-19-Bitan-Rogue7-RogueEngineering-Station-Attacks-On-S7-Simatic-PLCs.pdf/. Last accessed 5July 2021.
[6] T. M. Chen and S. Abu-Nimeh. 2011. Lessons from Stuxnet. Computer 44, 4 (2011),91–93. https://doi.org/10.1109/MC.2011.115
[7] D. Ferraiolo, R. Chandramouli, D. Kuhn., and V. Hu. 2016. Extensible Access Control Markup Language (XACML) and Next Generation Access Control (NGAC).In ACM International Workshop. 13–24. https://doi.org/10.1145/2875491.2875496
[8] Honeywell ACS Labs. 2014. RBAC Driven Least Privilege Architecture ForControl Systems. https://www.osti.gov/servlets/purl/1124080/. Technical Report(2014). Last accessed 20 June 2021.
[9] NIST. 2019. https://nvd.nist.gov/vuln/detail/CVE-2019-10943/. Last accessed 1July 2021.
[10] NIST. 2019. https://nvd.nist.gov/vuln/detail/CVE-2019-10952. Last accessed 1Jan 2022.
[11] NIST. 2021. https://nvd.nist.gov/vuln/detail/CVE-2020-15782/. Last accessed 1July 2021.
[12] NIST. 2021. https:https://nvd.nist.gov/vuln/detail/CVE-2021-22681. Last accessed1 Jan 2022.
[13] F. Santiago, A. Javier, and A. Saioba. 2019. A Role-Based Access Control Modelin Modbus SCADA Systems. A Centralized Model Approach, Vol. 19. https://doi.org/10.3390/s19204455
[14] Shodan. 
[n. d.]. https://www.shodan.io/. Last accessed 23 July 2021.
[15] Unknown. 2018. Packet Sniffing in Python. https://www.uv.mx/personal/angelperez/files/2018/10/sniffers_texto.pdf/. Last accessed 15 July 2021.
[16] E. Yalcinkaya, A. Maffei, and M. Onori. 2017. Application of Attribute BasedAccess Control Model for Industrial Control Systems. International Journal ofComputer Network and Information Security 9 (2017), 12–21. https://doi.org/10.5815/ijcnis.2017.02.02
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值