网站首页 > 编程文章 正文
写在前面(文中视频演示和超链接仅在同名公众号有效,请悉知)
前面我们分享了很多工控安全相关的内容:
工业控制系统安全入门与实践——工控安全入门分析
工业控制系统安全入门与实践—从五层架构和安全标准说起
西门子S7系列PLC模拟病毒攻击实验,看看你的工业系统真的安全
罗克韦尔 MicroLogix PLC漏洞的复现及解决方案
今天以西门子S7-1500为例,来聊一聊西门子PLC的漏洞分析~
相关预告:施耐德PLC漏洞历险记—一次与施耐德PLC的非正常接触
01 研究背景
西门子PLC广泛运用在各行业的工业控制系统上,比如钢铁、石油、化工、电力、建材、机械制造、汽车、轻纺、交通运输、环保及文化娱乐等行业,其安全性直接关乎国家民生安全。
2019 BlackHat USA会议上,安全研究员Sara Bitan指出西门子PLC最新的通信协议S7Comm-Plus存在安全问题。为此,启明星辰ADLab对相关漏洞进行研究,并在西门子S7-1500设备上复现了攻击效果。
02 西门子PLC协议
西门子PLC包括S7-200、S7-300、S7-400、S7-1200以及S7-1500等多个系列。S7-200/300/400系列PLC采用早期的西门子私有协议S7comm进行通信,S7-1200/1500系列PLC采用西门子S7Comm-Plus协议进行通信。
S7Comm-Plus协议在S7comm基础上引入了密钥保护机制,以对抗会话劫持、重放攻击和中间人攻击等。TIA与PLC交互过程可分为以下4个阶段:
(1)TCP Connection。
(2)COTP Connection。
(3)S7Comm-Plus Connection,即四次握手密钥认证阶段。
(4)S7Comm-Plus Function,功能码执行阶段。
图1 S7Comm-Plus协议交互流程
密钥认证成功后方可进入功能码执行阶段,图2为四次握手认证具体流程。
图2 四次握手认证
(1)TIA向PLC发送M1开启一个新的会话。
(2)PLC将返回给TIA一个响应包M2,M2包含 PLC固件版本和随机数ServerSessionChallenge,长度20个字节。
图3 M2认证数据包
(3)TIA收到M2后,将向PLC发送M3,M3中包含SecurityKeyEncryptedKey(图4中红色框所示)。其中,Magic字段为0xfee1dead,长度180字节。SecurityKeyEncryptedKey里包含3个关键的加密字段(图4中蓝色框所示)。
图4 M3认证数据包
(4)PLC收到M3后,进行密钥认证。若认证成功,向TIA回复M4数据包。
四次握手认证完成后,TIA向PLC发送功能码数据包,功能码数据包中包含IntergrityPart字段,如图5所示。PLC收到功能码数据包后,首先校验IntergrityPart字段,若校验通过,执行相应功能码。
图5 stop功能码数据包
03 算法分析
虽然主机TIA与PLC之间的认证引入了非对称加密算法,但是PLC与主机之间并没有进行绑定,因此仍然存在安全问题,攻击者可以伪造成一个恶意的主机/工作站,利用已知的公钥及加密算法,对PLC进行非法控制或者中间人攻击。
下面介绍密钥生成算法流程。
图6 密钥生成算法
- 主机(TIA)随机生成20字节的PreKey,使用类椭圆曲线加密算法和公钥加密PreKey,作为Keying materaial 1(对应图7中M3数据包的EG1、EG2)。
- 主机(TIA)根据PreKey计算KDF,并由此生成CEK(Checksum Encryption Key),CS(Checksum Seed),KEK(Key Encryption Key)。
- 主机(TIA)将Challenge和KDK相结合,使用AES-CTR加密算法和KEK进行加密,其结果作为Keying material 3(对应M3数据包中的EncryptedChallenge和EncryptedKDK)。
- 主机(TIA)用CS和Keying material 3进行哈希运算(Tabulation Hash),得到结果TB-HASH。
- 主机(TIA)使用AES-ECB算法和CEK来加密TB-HASH并得到结果Keying material 2(对应M3数据包中的EncryptedChecksum)。
图7 M3数据包结构
04 漏洞复现
我们对OMSp_core_managed.dll进行逆向分析,通过调用关键接口函数,构造四次握手加密认证数据包。攻击端首先发送认证数据包,密钥认证完成后发送stop功能码,成功使得西门子PLC S7-1500停止运行。
正常运行时,PLC S7-1500运行指示灯为绿色。运行状态如图8所示。
图8 攻击前PLC正常运行
发送攻击脚本后,PLC S7-1500运行指示灯变为黄色,PLC停止运行,PLC状态如图9所示。
图9 攻击后PLC停止运行
攻击演示视频如下所示:
05 安全建议
西门子官方已发布安全补丁:
https://cert-portal.siemens.com/productcert/pdf/ssa-232418.pdf
https://cert-portal.siemens.com/productcert/pdf/ssa-273799.pdf
06 小 结
在本次研究中,我们分析了西门子S7系列最新的通信协议S7Comm-Plus。虽然主机与PLC之间的通信协议采用了强大的加密算法,但是PLC并没有对TIA进行认证,使得攻击者可以伪装成一个恶意的TIA,在其通信过程中插入任意指令,如PLC的启停指令,即可达到远程控制PLC的效果。除此之外,相同型号/固件版本的PLC,其私钥完全相同,这意味着同样的攻击方法适用于所有相同的PLC。
参考链接:
[1]https://i.blackhat.com/USA-19/Thursday/us-19-Bitan-Rogue7-Rogue-Engineering-Station-Attacks-On-S7-Simatic-PLCs.pdf
[2]https://i.blackhat.com/USA-19/Thursday/us-19-Bitan-Rogue7-Rogue-Engineering-Station-Attacks-On-S7-Simatic-PLCs-wp.pdf
[3]https://www.secshi.com/30290.html
本文来源:启明星辰
07 相关推荐
S7-300F 与ET200S 安全通讯—完整的安全PLC软硬件配置案例
本田汽车遭工业型勒索软件攻击,致生产系统中断,工业安全任重道远
从GuardLogix 和 CIP Safety认识安全PLC控制器
浅谈从PROFINET到PROFIsafe的安全通信,西门子安全PLC与普通PLC的区别
什么是PLC安全模块 的1oo1 和1oo2 评估?
罗克韦尔AB全系列PLC产品介绍(附AB安全PLC资料下载)
免责申明:本公众号所载文章为本公众号原创或根据网络搜索编辑整理,文章版权归原作者所有。因转载众多,无法找到真正来源,如标错来源,或对于文中所使用的图片,资料,下载链接中所包含的软件,资料等,如有侵权,请跟我们联系协商或删除,谢谢!
往期热文
工业软件行业深度报告:132页深度剖析全球工业软件
玩转西门子全集成自动化之TIA Selection Tool
物流自动化的底层技术—信息流、数据采集与信息管理
一个月内接连收购两家企业,西门子不断加码工业软件,巨头的数字化决心
一文读懂国产AGV调度系统发展现状
S7-300F 与ET200S 安全通讯—完整的安全PLC软硬件配置案例
体系解读罗克韦尔MES平台FTPC-跟我入门MES/MOM系列特别篇
- 上一篇: S7 - 200 SMART 调试工具
- 下一篇: 神秘恶意软件瞄准工控系统 震网魅影再现
猜你喜欢
- 2025-03-12 魔兽世界BUFF缺失自动私聊(可能打扰对方慎用)
- 2025-03-12 魔兽世界WLK战士通用技能提示WA
- 2025-03-12 C#操作Redis实现读写、订阅发布功能
- 2025-03-12 天鬼指示器-WA字符串
- 2025-03-12 一篇文章告诉你!西门子HMI如何进行授权传送
- 2025-03-12 C#实现串口通讯
- 2025-03-12 福建新画卷,把福建成绩“画”给你看
- 2025-03-12 Win10预览版跳至Build 14251 改善语音助手
- 2025-03-12 C#连接FTP实现文件上传下载
- 2025-03-12 windows SERVER2008/2012 安全设置要点
你 发表评论:
欢迎- 最近发表
-
- 90岁老人科目三一把过火爆网络!考驾照、爱美甲……这群“90后”比年轻人潮
- DNF:遗忘之地任务流程,适用于新手起小号,装备修理白漂
- dnf手游:“首款流拍宝珠”,6位玩家眼睁睁看着500万泰拉丢失!
- dnf手游:小熊卡正式升级!可附魔到工会勋章,千万别卖!
- dnf手游:首张“涨抗魔”粉卡火了!以前3万没人要现在准备断货!
- dnf手游:团本币增加!3月26号打团有坑提前避开,浪费门票?
- dnf手游:涨价20倍!曾经没人要的,如今已是妥妥的T0材料!
- dnf手游:“官方鼓励回归”火了,白送玩家+20装备和王子卡等!
- dnf手游:无根之源千万别用!竞拍系统一定要抢否则错过崛起机会
- dnf手游:DNF手游各职业技能加点攻略、装备推荐!小白一看就会
- 标签列表
-
- spire.doc (70)
- instanceclient (62)
- solidworks (78)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)