PLC脆弱性评估及相应解决方案
Vulnerability analysis of S7 PLCs: Manipulating the security mechanism
文章目录
- 一、摘要
- 二、相关技术介绍
- (一)隔离网络(air-gapped network)
- (二)S7CommPlus会话
- (三)S7CommPlus抗重放机制
- (1)抗重放机制流程
- (2)密钥生成算法
- 三、脆弱性分析
- (一)未经授权修改PLC状态
- (二)通信DOS攻击
- (三)会话劫持(ARP攻击)
- (四)删除主程序块
- 四、应对措施
- (一)改变哈希算法的输入
- (二)限制会话的生命周期
一、摘要
工业控制系统(ICS)广泛运用于关键基础设施中,而可编程逻辑控制器(PLC)是它的重要组件。PLC提供了网络和现实世界中的交互服务,因此一直是网络攻击的目标。本文对PLC组件中安全机制的有效性进行深入分析,特别是S7commplus通信协议,该协议是实现Siemens端点和PLC之间的通信。本文主要对S7协议通信过程,抗重放机制,以及TIA Portal和PLC会话过程中存在的漏洞,应对措施进行重点介绍。
二、相关技术介绍
(一)隔离网络(air-gapped network)
通过无法访问互联网的封闭网络保护重要资产,攻击者不能与隔离网络直接通过网络接触,传统攻击渗透手段都会失效,但是隔离网络并不代表绝对安全,虽然隔离了网络访问,但由于网络维护、数据交互等原因,无法阻断物理介质数据传输和物理设备的接入,如光盘、U盘等移动数据载体、键盘、鼠标等硬件设备、移动笔记本、临时热点等未按规定接入等,这些行为极有可能成为突破隔离网络的桥梁。
(二)S7CommPlus会话
(1)TIA Portal在网络内广播,寻找与之通信的组件
(2)PLC接受到广播的信息,向TIA回复收到
(3)TIA Portal与PLC通过TCP三次握手,实现连接
(4)TIA Portal与PLC交换COTP连接信息(COTP是面向连接的传输协议,在进行TCP连接之后,COTP会纯属CR和CC两个包,CR是 connection request,CC是connection confirm,之后COTP会发送DT包,也就是data数据包。)
(5)TIA Portal首先发送S7数据包
(6)PLC回复一个包含1字节和20字节的抗重放攻击的challenge
(7)TIA Portal回复一个包含抗重放字节和一个132字节长度数组的数据包,这是抗重放响应
(8)TIA Portal向PLC发送所请求的操作包,并对每个包进行20字节的完整性检查
(9)TCP会话终止
(三)S7CommPlus抗重放机制
(1)抗重放机制流程
TIA和PLC开启会话后,PLC会给TIA发送一个单字节和一个20字节抗重放的challenge,如下图所示:
4标识的就是单字节的位置,5标识的是一个20字节的数据。需要注意的是单字节和20字节所在的位置是固定的,不同的两次会话,challenge的内容不同,但位置是一致的。
TIA接收到后,会将位置4的单字节加上0x80计算,然后回复一个132字节长度的数组,既下图位置8所示。
PLC接收到TIA的answer后,进行密钥认证,完成通信的认证过程。
(2)密钥生成算法
1.TIA随机生成20字节的PreKey,使用类椭圆算法和公钥加密PreKey,作为Keying material 1。
2.TIA根据PreKey计算KDF,并由此生成CEK,CS,KEK。
3.TIA将challen和KDK结合,使用AES-CTR加密算法和KEK进行加密,结果作为Keying material 3。
4.TIA用CS和Keying material 3 进行哈希运算,得到结果TB-HASH。
5.TIA使用AES-ECB算法和CEK来加密TB-HASH并得到结果Keying material 2
三、脆弱性分析
(一)未经授权修改PLC状态
由于TIA Portal执行的所有操作都可以使用S7协议发送到PLC,通过修改PLC变量值,设置密码,以及修改PLC状态实现对PLC的重新编程,这可能会导致过程的中断。攻击者希望通过构造欺骗数据包来远程修改PLC状态,而欺骗数据包和正常的数据包相比,只有抗重放字节,完整性检验序列,序列号不同。此外,需要注意的是,即使在不同的S7会话中,所有抗重放字节都是基于相同的加密密钥和必要的字节生成。也就是说,只要攻击者能够识别序列号和PLC本身直接的关系,那么去修改编程逻辑的攻击是可行的。
(二)通信DOS攻击
这是通过向PLC发送一个设计好的数据包来建立并维护新的S7会话的DOS攻击。这将阻止TIA门户连接到PLC。因为如果已经存在一个现有的会话,那么S7-1211C将不允许启动一个新的会话。
与PLC在同一局域网上的主机可以通过通常的握手和交换COTP数据包来启动与PLC的TCP连接。通过使用包含适当的抗重放字节的数据包响应来自PLC的挑战包,然后是“S7-ACK”包,攻击者可以阻止来自TIA门户的真正连接。为了保持一个正常的会话活动,例如在进程执行时要求另一端等待,这种等待似乎是无限期的,任何一端连接都可以回复这样一个S7-ACK数据包。“S7-ack”数据包缺乏抗重放会完整性检查功能。在这种情况下,虽然PLC将继续运行预编程的逻辑,但它是不会停止的,也无法重新配置。手动重启可能会终止现有的会话,但是网络中受损的主机或设备可能会重新启动一个新的DOS会话。
(三)会话劫持(ARP攻击)
通过与传统的网络攻击手段结合,通过设计好数据包实现ARP劫持。
(四)删除主程序块
该漏洞通过删除PLC的主程序块,导致TIA Portal 提供错误或者不完成的PLC信息。而这一过程可通过重放TIA Portal中异常用例下捕获到的S7来实现。
四、应对措施
(一)改变哈希算法的输入
TIA和PLC会话过程会分配服务器序号,但这些序号并没有利用到,而且在不同的会话中可以重复使用。此外,前文介绍过PLC发送的20字节的challenge,而只有16位用于抗重放攻击,有4位是浪费掉的。可以考虑将服务器序号和challenge中的剩余4位输入哈希算法中,来生成加密密钥。
(二)限制会话的生命周期
在TIA Potral和PLC会话过程中,如果TIA没有接收到终止TCP连接的数据包或者是没有接收到PLC发送的S7数据包,那么TCP连接将会一直保持。由于PLC中用于通信的资源是有限的,可以通过耗尽PLC的通信资源来实现DOS攻击。具体解决办法就是更新PLC的配置,如果管理员没有特殊的配置,那么在给定时间段内没有接受到合法的S7包,将会断开连接。
PLC脆弱性评估及相应解决方案相关推荐
- 业务脆弱性评估是业务持续性保障(BCM)的基础数据
业务脆弱性评估是业务持续性保障(BCM)的基础数据 ---CVSS方法的理解 从风险评估的观点来看,业务的中断是由于系统自身的故障或外部的***,而这些***是因为系统本身存在"漏洞与弱点& ...
- 卫星导航系统脆弱性评估与对策
随着卫星导航系统及其应用的发展,卫星导航系统已经成为重要的.不可或缺的空间基础设施,其应用已经渗透到几乎所有领域,成为国防能力的倍增器,经济发展的助推器,在保障国家安全与促进经济发展中发挥着不可替代的 ...
- 你的企业混合云了吗?来看看评估混合云解决方案时要注意的6个原则!
作者| Matt Kimball 翻译 | 天道酬勤,编辑 | Carol 出品| CSDN云计算(ID:CSDNcloud) 混合云如今很流行.几乎每个IT公司都声称已部署了解决方案,但实际上实现的 ...
- 计算机网络脆弱性评估技术研究
前言 计算机工程 作者:夏阳 指导老师:陆余良 2007/10(发表时间距今过久只做脆弱性评估技术发展背景参考) 脆弱性研究目标 评估的目标 评估的标准 评估的规范流程 评估技术及评估模型 评估辅助决 ...
- PROFINET转CANopen网关连接西门子PLC与汇川变频器解决方案
EnTalk PROFINET Slave to CANopen Master网关 连接西门子PLC与汇川变频器解决方案 1 摘要 PLC通过CANopen监控变频器的运行是工业中较为常见的应用,控制 ...
- 三菱服务器报系统错误,10个三菱PLC常见错误代码大全及解决方案
10个三菱PLC常见错误代码大全及解决方案的在这10个三菱PLC常见错误代码中,一般工程师经常会遇到这样问题,往往很简单,但有些三菱PLC工程师无法解决,下面小编再跟你分享10个三菱PLC常见错误代码 ...
- 用于连接PLC与数据库的定制解决方案
当涉及到可编程逻辑控制器(PLC)项目和PLC连接解决方案时,系统集成商通常会定制解决方案,毕竟定制解决方案是系统集成商的专长.许多项目应用如可追溯性.质量监控.生产指标监控或高速排序,都涉及将工厂车 ...
- 5G智慧工业 | PLC设备远程监控系统解决方案
PLC作为目前信息采集.控制的主要技术手段,势必将在物联网的建设中起到关键性作用,这就是PLC行业的机遇.然而传统的PLC虽然能够接入物联网,但实施步骤复杂,成本高昂:物联网的信息交换和通信也是复杂的 ...
- 三菱PLC常见故障及远程维护解决方案
三菱PLC作为国内优质的PLC品牌,在各类工业控制系统都有所应用,承担复杂繁重的工作.在追求效率的工业领域中,PLC运行时间长.造成损耗大.磨损快等问题,因此往往很容易出现故障,影响后续的生产和管理. ...
最新文章
- [面试]future模式
- 有了Gradle,还会选Maven吗?
- 数学建模学习笔记——模糊综合评价模型(评价类,发放问卷一般不用)
- 旋转数组中的最小元素 java_程序员算法面试题之旋转数组的最小值
- 国外数学奇才称:“平行线可相交”,到死未被认可,12年后被证实
- vue项目使用sass-loader
- php study是什么,phpstudy有什么用
- 在centos6.5中安装reids
- GDAL 2.0版本RPC校正速度测试
- 序列化与反序列化二叉树
- linux md5sum 文件夹,linux md5sum 的用法
- Python代码 52周存钱计划
- 【优化模型】求非齐次线性方程组的通解
- Hardhat创建、编译、测试智能合约
- 苹果证书导出p12文件
- Python课程入门之Pycharm创建PY文件的使用步骤与模板创建
- iOS 如何连接打印机
- 跑步进入元宇宙,王老吉能看到不一样的未来吗?
- 私募量化对冲:百舸争流,高频当道
- 微信投票系统源码--微信投票系统开发功能介绍以及源码分享
热门文章
- Oracle 11g OCP考试总结
- 老照片怎么修复清晰?轻松几步让图片焕发新生
- 华中师大计算机专业陈鹏,考完就放假!这套华师真题,你能拿多少分
- 计算机是如何做加法的?(7)——回顾与总结
- 小白也可以看懂的Numpy实操演示教程
- 由微软裁员产生的随想
- 简单算法之丢手绢游戏/c++
- java 垃圾回收题目_Java垃圾收集题目分析
- 在计算机应用领域中深蓝,2015年计算机二级MS Office习题及答案解析(13)
- Educational Codeforces Round 128 (Rated for Div. 2) E. Moving Chips(玄学)