原创 | PLC钥匙开关监控确保关键系统更安全

admin 2022年1月6日04:49:31IoT评论13 views4296字阅读14分19秒阅读模式

作者 | 安帝科技

编者按】:可编程逻辑控制器(PLC)的钥匙开关或许不为人熟知,但其对IT/OT安全有重要的意义。不同品牌的PLC钥匙开关拥有不同的位置,用来进行不同的操作和场景设置。当钥匙开关位于权限较高的位置时,面临被攻击的风险就越高。因此保持对钥匙开关位置的监控是必要的,当PLC钥匙开关在操作过程中脱离正常状态时,监控系统将发出警报提示操作人员。本文将首先介绍PLC钥匙开关处于不同位置时,各种模式的差别,之后简单介绍PLC钥匙开关状态检测,接下来以Allen Bradley PLC为例,介绍其钥匙开关逻辑检测,最后介绍使用RSLinx和预定义属性的钥匙开关功能。本文编译自Dragos 今年8月发布的一篇博客,在文章末尾将附上原文链接。

可编程逻辑控制器(PLC)和安全仪表系统(SIS)控制器历来包括一个外部开关,它们通常以钥匙的形式存在,用于执行维护和故障排除。对于维护这些系统的自动化工程师和技术人员来说,钥匙开关已变得司空见惯,因为这些开关会影响底层流程,他们清楚其在整个设备操作中的重要性。

然而,除了控制系统和自动化支持人员之外,这些开关的位置对于操作人员来说相对未知或在很大程度上没有考虑。这个情况一直持续到2017年,当时XENOTIME活动小组破坏了施耐德电气的Triconex SIS控制器。TRISIS恶意软件之所以能部署到SIS控制器,是因为控制器的钥匙开关处于“程序”模式,允许从受感染的工程工作站上传和下载项目文件。如果钥匙开关处于“运行”模式,则TRISIS恶意软件攻击不会成功。

 钥匙开关位置的细微差别

在Triconix TriStation手册中,Triconix使用四种不同的钥匙开关位置,以允许不同的操作模式和不同的场景设置。

运行:具有只读功能的正常操作。主处理器执行先前加载的控制程序。拒绝通过TriStation、Modbus主站或外部主机修改程序变量的尝试。但是,控制程序可能会调用门控访问功能,以在指定的时间窗口内启用外部主机写入。

程序:用于程序加载和检出。允许从TriStation平台控制Tricon系统,包括全部下载和下载更改。它还允许外部主机写入程序变量。

停止:停止读取输入,强制非保留数字和模拟输出为0,并停止控制程序。(保留输出会保留钥匙开关转到STOP位置之前的值。)STOP设置可用于安装和维护过程相关设备,但不是Tricon服务所必需的。

远程:允许TriStation和外部主机写入程序变量。(不允许通过TriStation下载全部和下载更改。)不允许修改程序逻辑。

了解Triconix控制器的细微差别有助于了解在正常操作期间应使用哪些位置。例如,“远程”并不意味着可以上传或下载项目文件,但控制器会接受来自外部源的程序写入,这可能会被滥用。

其他控制器制造商,例如Rockwell,在Logix系列PLC上也使用钥匙开关。Control LogixPLC钥匙开关具有三个物理位置,但总共有五种操作模式。关键开关位置包括“运行”、“远程”和“程序”。在“远程”位置,在工程工作站上使用Rockwell Studio的人员可以将模式更改为“远程运行”、“远程程序”或“远程测试”。

Rockwell提供的这些设置的详细信息如下:

运行模式:控制器正在主动控制过程/机器。在运行模式下,无法在Logix Designer应用程序中编辑项目。

远程运行模式:此模式与运行模式相同,但可以在线编辑项目并通过Logix Designer应用程序更改控制器模式。

远程程序模式:此模式的功能类似于程序模式,但可以通过Logix Designer应用程序更改控制器模式。

远程测试模式:此控制器模式执行代码,但不控制I/O。可以通过Logix Designer应用程序在线编辑项目并更改控制器模式。输出模块被命令进入它们的程序模式状态(开、关或保持)。

程序模式:此控制器模式不执行代码或控制I/O,但可以进行编辑操作。输出模块被命令进入它们的最后状态(开、关或保持)。在此位置,无法通过Logix Designer应用程序更改控制器模式。

同样,如Rockwell文档中所述:“将钥匙开关从“运行”移动到“远程”会使控制器处于远程运行模式,而将开关从“程序”移动到“远程”会使控制器处于远程程序模式。不能单独通过钥匙开关选择远程测试模式,它只能通过Logix Designer应用程序使用。”对于不熟悉底层操作、从程序切换到远程并期望PLC代码自动执行的技术人员来说,这个小细节会引起很多混乱。必须将密钥更改为“运行”,然后返回到“远程”以执行代码,而无需通过Logix Designer登录并手动更改模式。

 PLC钥匙开关状态检测

一些供应商通过公开的逻辑指令利用PLC数据采集已有一段时间,就像Rockwell PLC的情况一样,它通过模式变量检测钥匙开关的状态。

工程师必须从项目软件的设计开始就包含逻辑,以便在发生特定操作(例如钥匙开关的位置转换)时通知操作人员。如果操作员可以在HMI上监控这些操作,他们就可以立即通知相关人员有人可能正在修改PLC逻辑。将操作作为检测的一部分有助于在将逻辑下载到PLC之前预测响应和动作。

在PLC上创建检测逻辑的另一个优点是所有资源都直接从CPU集成。无需使用项目已有的额外资源,如新界面或特殊软件。该检测逻辑不复杂,不会对PLC的性能、测试和开发造成任何问题。

在创建这些检测功能时,工程师应考虑将它们嵌入到功能块中并添加特殊的安全例程。这样块密码保护可以增强块的完整性。以Rockwell为例,其PLC运行时逻辑无法被操纵。

 Allen Bradley PLC钥匙开关逻辑检测

Allen Bradley PLC能够通过提供大量内部状态数据来监控控制器的运行状况。需要一条获取系统值(GSV)指令才能从控制器中提取信息并创建控制器设备对象的状态位组合,以反映钥匙开关的位置。

在HMI端将警报配置为自清除或保留。警报设置和配置应与运营团队讨论,并根据底层流程的必要性进行评估,因为并非所有警报都是关键的或能够导致流程停止。

该功能的目的是将被视为警报的相关状态发送到HMI,以及检测钥匙处于运行位置时的运行状态,如图1所示。

原创 | PLC钥匙开关监控确保关键系统更安全

图1 PLC运行模式逻辑检测

值得一提的是不要因额外的警报/信息而导致HMI上的警报疲劳将操作忽略。带有相关信息的警报越少,操作端的响应就越好。根据逻辑提出的警告有:

程序:这意味着PLC执行已停止,PLC编辑功能可用。当处于远程程序模式时,状态也会升高。无论是哪种状态,都有可能改变逻辑的风险。图2显示了程序模式逻辑状态检测。

原创 | PLC钥匙开关监控确保关键系统更安全

图2 PLC程序模式逻辑检测

远程:这意味着PLC正在运行,具有远程在线编辑或下载功能。这种状态是最容易受到攻击的,因为PLC可以控制实时操作,并且系统可能会在没有任何通知的情况下发生中断。图3显示了远程模式的逻辑检测。

原创 | PLC钥匙开关监控确保关键系统更安全

图3 PLC远程模式逻辑检测

但任何逻辑都可以被篡改和禁用。这就存在一个问题:Add On(封装代码的功能块)可以被攻击者停用吗?也许是的。然而,通知这个潜在的恶意活动的操作的一个方法是使用添加的参数将EnableIn作为警报。如果进程和操作允许,该参数还可用于锁定其他设备。对于这种情况,不需要额外的逻辑,因为标签是嵌入式逻辑的一部分。

原创 | PLC钥匙开关监控确保关键系统更安全

图4 功能块不可用,HMI上的警报检测

 使用RSLinx和预定义属性的钥匙开关功能

Allen Bradley还使用了预定义属性的诊断变量,这些属性被识别为@。这些标签通过RSLinx来检测PLC的状态。但是,在实现上也存在差异,例如,如果不使用Factory Talk,PLC逻辑和HMI就会发生变化。图5显示了RSLinx从PLC获得的预定义属性的列表。

原创 | PLC钥匙开关监控确保关键系统更安全
图5 带有PLC预定义属性列表的RSLInx帮助页面

如果与HMI的连接是FactoryTalk,则它们之间的通信直接通过Factory TalkLinx完成,标签位于PLC的诊断标签上。另一方面,如果HMI的品牌与Rockwell不同,则必须使用DDE或OPC经典(OPCDA)通信主题通过OPC服务器(例如RSLinx classic)建立此连接。例如,如果正在使用Wonderware Intouch HMI,则需要DDE主题进行连接。但是,不建议将RSLinx classic用于具有大量数据传输的应用程序。

例如,@Mode是预定义属性,可用于以字符串格式显示多状态钥匙开关状态。这迫使用户通过开发脚本和/或宏在HMI端创建自定义代码,在检测到远程和程序模式时生成警报。从工程和安全角度来看,应尽量减少在HMI上使用代码。HMI项目中的脚本和宏比PLC逻辑更容易访问,而且它们也更容易从内部实体进行操作,这样就不会在系统上发出警报。

图6显示了从Wonderware客户端HMI监控钥匙开关。PLC逻辑和RSLinx预定义属性的组合用于生成警报和状态。此外,还利用预定义属性来使用字符值显示钥匙的位置。在此示例中,警报配置为自清除,Wonderware Intouch和PLC之间的通信使用DDE主题完成。

原创 | PLC钥匙开关监控确保关键系统更安全

图6 HMI远程模式状态检测示例

图7是使用PLC逻辑和Factory talk Client HMI上的预定义属性来监控钥匙开关的示例。在此示例中,通信是使用Factory Talk Linx本地完成的,并且警报配置为保持性。

原创 | PLC钥匙开关监控确保关键系统更安全

图7 HMI程序模式状态检测示例

 结论

在未建立钥匙开关监控时,开发PLC程序的技术人员和工程师必须意识到存在的风险。工程师应该了解PLC及其通信可以带来的内在能力,以帮助安全运营中心(SOC)团队对钥匙状态的监控,以及使用普渡模型的1级和2级设备工厂车间的运营。这样操作人员可以随时了解他们的关键设备状态,而不必等待IT/OT SOC团队通知他们。如果操作人员知道工厂维护窗口的状态,当关键的PLC钥匙开关在操作过程中脱离正常状态时,他们可以预测操作并向事件响应团队发出警报。

尽管存在多种检测选项,它们看起来很容易实现,但工程师必须始终分析利弊,并在可能的情况下尝试实现PLC中的功能,这一点至关重要。此外,这些功能应该应用在与控制程序分开的专用安全程序中。在PLC中拥有这些功能避免了对PLC外部(例如HMI内部)的附加通信软件和逻辑开发的依赖。


 

转载请注明来源:关键基础设施安全应急响应中心

“投稿联系方式:010-82992251   [email protected]
原创 | PLC钥匙开关监控确保关键系统更安全

本文始发于微信公众号(关键基础设施安全应急响应中心):原创 | PLC钥匙开关监控确保关键系统更安全

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月6日04:49:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  原创 | PLC钥匙开关监控确保关键系统更安全 http://cn-sec.com/archives/475248.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: