西门子PLC S7-1500误差剖析与复现

宣布时间 2020-04-23

研究配景


西门子PLC普遍运用在各行业的工业控制系统上 ,好比钢铁、石油、化工、电力、建材、机械制造、汽车、轻纺、交通运输、环保及文化娱乐等行业 ,其清静性直接关乎国家民生清静 。


2019 BlackHat USA聚会上 ,清静研究员Sara Bitan指出西门子PLC最新的通讯协议S7Comm-Plus保存清静问题 。为此 ,酷游官网ADLab对相关误差举行研究 ,并在西门子S7-1500装备上复现了攻击效果 。


西门子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 ,功效码执行阶段 。


ku酷游(集团)官方网站

图1 S7Comm-Plus协议交互流程


密钥认证乐成后方可进入功效码执行阶段 ,图2为四次握手认证详细流程 。


ku酷游(集团)官方网站

图2 四次握手认证


(1)TIA向PLC发送M1开启一个新的会话 。

(2)PLC将返回给TIA一个响应包M2 ,M2包括 PLC固件版本和随机数ServerSessionChallenge ,长度20个字节 。


ku酷游(集团)官方网站

图3 M2认证数据包


(3)TIA收到M2后 ,将向PLC发送M3 ,M3中包括SecurityKeyEncryptedKey(图4中红色框所示) 。其中 ,Magic字段为0xfee1dead ,长度180字节 。SecurityKeyEncryptedKey里包括3个要害的加密字段(图4中蓝色框所示) 。


ku酷游(集团)官方网站

图4 M3认证数据包


(4)PLC收到M3后 ,举行密钥认证 。若认证乐成 ,向TIA回复M4数据包 。

四次握手认证完成后 ,TIA向PLC发送功效码数据包 ,功效码数据包中包括IntergrityPart字段 ,如图5所示 。PLC收到功效码数据包后 ,首先校验IntergrityPart字段 ,若校验通过 ,执行响应功效码 。


ku酷游(集团)官方网站

图5 stop功效码数据包


算法剖析


虽然主机TIA与PLC之间的认证引入了非对称加密算法 ,可是PLC与主机之间并没有举行绑定 ,因此仍然保存清静问题 ,攻击者可以伪造成一个恶意的主机/事情站 ,使用已知的公钥及加密算法 ,对PLC举行不法控制或者中心人攻击 。


下面先容密钥天生算法流程 。


ku酷游(集团)官方网站

图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) 。


ku酷游(集团)官方网站

图7 M3数据包结构


误差复现


我们对OMSp_core_managed.dll举行逆向剖析 ,通过挪用要害接口函数 ,结构四次握手加密认证数据包 。攻击端首先发送认证数据包 ,密钥认证完成后发送stop功效码 ,乐成使得西门子PLC S7-1500阻止运行 。


正常运行时 ,PLC S7-1500运行指示灯为绿色 。运行状态如图8所示 。


ku酷游(集团)官方网站

图8 攻击前PLC正常运行


发送攻击剧本后 ,PLC S7-1500运行指示灯变为黄色 ,PLC阻止运行 ,PLC状态如图9所示 。


ku酷游(集团)官方网站

图9 攻击后PLC阻止运行


清静建议


西门子官方已宣布清静补� 。�


https://cert-portal.siemens.com/productcert/pdf/ssa-232418.pdf

https://cert-portal.siemens.com/productcert/pdf/ssa-273799.pdf


小 结


在本次研究中 ,我们剖析了西门子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