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脆弱性评估及相应解决方案相关推荐

  1. 业务脆弱性评估是业务持续性保障(BCM)的基础数据

    业务脆弱性评估是业务持续性保障(BCM)的基础数据 ---CVSS方法的理解 从风险评估的观点来看,业务的中断是由于系统自身的故障或外部的***,而这些***是因为系统本身存在"漏洞与弱点& ...

  2. 卫星导航系统脆弱性评估与对策

    随着卫星导航系统及其应用的发展,卫星导航系统已经成为重要的.不可或缺的空间基础设施,其应用已经渗透到几乎所有领域,成为国防能力的倍增器,经济发展的助推器,在保障国家安全与促进经济发展中发挥着不可替代的 ...

  3. 你的企业混合云了吗?来看看评估混合云解决方案时要注意的6个原则!

    作者| Matt Kimball 翻译 | 天道酬勤,编辑 | Carol 出品| CSDN云计算(ID:CSDNcloud) 混合云如今很流行.几乎每个IT公司都声称已部署了解决方案,但实际上实现的 ...

  4. 计算机网络脆弱性评估技术研究

    前言 计算机工程 作者:夏阳 指导老师:陆余良 2007/10(发表时间距今过久只做脆弱性评估技术发展背景参考) 脆弱性研究目标 评估的目标 评估的标准 评估的规范流程 评估技术及评估模型 评估辅助决 ...

  5. PROFINET转CANopen网关连接西门子PLC与汇川变频器解决方案

    EnTalk PROFINET Slave to CANopen Master网关 连接西门子PLC与汇川变频器解决方案 1 摘要 PLC通过CANopen监控变频器的运行是工业中较为常见的应用,控制 ...

  6. 三菱服务器报系统错误,10个三菱PLC常见错误代码大全及解决方案

    10个三菱PLC常见错误代码大全及解决方案的在这10个三菱PLC常见错误代码中,一般工程师经常会遇到这样问题,往往很简单,但有些三菱PLC工程师无法解决,下面小编再跟你分享10个三菱PLC常见错误代码 ...

  7. 用于连接PLC与数据库的定制解决方案

    当涉及到可编程逻辑控制器(PLC)项目和PLC连接解决方案时,系统集成商通常会定制解决方案,毕竟定制解决方案是系统集成商的专长.许多项目应用如可追溯性.质量监控.生产指标监控或高速排序,都涉及将工厂车 ...

  8. 5G智慧工业 | PLC设备远程监控系统解决方案

    PLC作为目前信息采集.控制的主要技术手段,势必将在物联网的建设中起到关键性作用,这就是PLC行业的机遇.然而传统的PLC虽然能够接入物联网,但实施步骤复杂,成本高昂:物联网的信息交换和通信也是复杂的 ...

  9. 三菱PLC常见故障及远程维护解决方案

    三菱PLC作为国内优质的PLC品牌,在各类工业控制系统都有所应用,承担复杂繁重的工作.在追求效率的工业领域中,PLC运行时间长.造成损耗大.磨损快等问题,因此往往很容易出现故障,影响后续的生产和管理. ...

最新文章

  1. [面试]future模式
  2. 有了Gradle,还会选Maven吗?
  3. 数学建模学习笔记——模糊综合评价模型(评价类,发放问卷一般不用)
  4. 旋转数组中的最小元素 java_程序员算法面试题之旋转数组的最小值
  5. 国外数学奇才称:“平行线可相交”,到死未被认可,12年后被证实
  6. vue项目使用sass-loader
  7. php study是什么,phpstudy有什么用
  8. 在centos6.5中安装reids
  9. GDAL 2.0版本RPC校正速度测试
  10. 序列化与反序列化二叉树
  11. linux md5sum 文件夹,linux md5sum 的用法
  12. Python代码 52周存钱计划
  13. 【优化模型】求非齐次线性方程组的通解
  14. Hardhat创建、编译、测试智能合约
  15. 苹果证书导出p12文件
  16. Python课程入门之Pycharm创建PY文件的使用步骤与模板创建
  17. iOS 如何连接打印机
  18. 跑步进入元宇宙,王老吉能看到不一样的未来吗?
  19. 私募量化对冲:百舸争流,高频当道
  20. 微信投票系统源码--微信投票系统开发功能介绍以及源码分享

热门文章

  1. Oracle 11g OCP考试总结
  2. 老照片怎么修复清晰?轻松几步让图片焕发新生
  3. 华中师大计算机专业陈鹏,考完就放假!这套华师真题,你能拿多少分
  4. 计算机是如何做加法的?(7)——回顾与总结
  5. 小白也可以看懂的Numpy实操演示教程
  6. 由微软裁员产生的随想
  7. 简单算法之丢手绢游戏/c++
  8. java 垃圾回收题目_Java垃圾收集题目分析
  9. 在计算机应用领域中深蓝,2015年计算机二级MS Office习题及答案解析(13)
  10. Educational Codeforces Round 128 (Rated for Div. 2) E. Moving Chips(玄学)