找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3890|回复: 13

西门子 S7-1500的漏洞分析与复现(附演示视频)

 火.. [复制链接]
  • 打卡等级:即来则安
  • 打卡总天数:29
  • 打卡月天数:1
  • 打卡总奖励:7791
  • 最近打卡:2025-12-13 17:25:16

2540

主题

1355

回帖

2万

积分

管理员

积分
21304
发表于 2020-7-12 12:23:42 | 显示全部楼层 |阅读模式

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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
工控课堂 www.gkket.com

0

主题

531

回帖

2056

积分

高级会员

积分
2056
发表于 2020-7-12 12:23:43 | 显示全部楼层
无私奉献,好工控人,32个赞送给你!!
工控课堂 www.gkket.com

0

主题

94

回帖

163

积分

新手上路

积分
163
发表于 2020-7-14 16:10:56 | 显示全部楼层

工控课堂 www.gkket.com

13

主题

396

回帖

2653

积分

高级会员

积分
2653
发表于 2020-10-9 04:27:53 | 显示全部楼层
加油,加油,不要沉下去,我是最热贴
工控课堂 www.gkket.com

0

主题

81

回帖

121

积分

新手上路

积分
121
发表于 2025-11-15 05:08:09 | 显示全部楼层
评论区人才辈出,笑到停不下来😂
工控课堂 www.gkket.com

0

主题

349

回帖

466

积分

注册会员

积分
466
发表于 2025-11-15 10:13:55 | 显示全部楼层
学到干货了,感谢分享,已火速收藏
工控课堂 www.gkket.com

0

主题

95

回帖

158

积分

新手上路

积分
158
发表于 2025-11-15 21:32:43 | 显示全部楼层
赞同 + 10086,没毛病,完全没毛病
工控课堂 www.gkket.com

0

主题

1451

回帖

4571

积分

金牌会员

积分
4571
发表于 2025-11-16 19:46:10 | 显示全部楼层
水个经验,支持楼主,加油呀
工控课堂 www.gkket.com

0

主题

100

回帖

153

积分

新手上路

积分
153
发表于 2025-11-18 01:57:33 | 显示全部楼层
被戳中笑点 / 泪点,太真实了!
工控课堂 www.gkket.com

0

主题

306

回帖

1037

积分

中级会员

积分
1037
发表于 2025-11-23 11:16:12 | 显示全部楼层
不请自来,只为说一句:太精彩了!
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-23 11:25 , Processed in 0.295076 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表