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


宝运莱·(中国区)最新官方网站

图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职能码数据包


算法分析


固然主机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数据包结构


缝隙复现


我们对OMSp_core_managed.dll进行逆向分析,通过挪用关键接口函数,机关四次握手加密认证数据包 。攻击端首先发送认证数据包,密钥认证实现后发送stop职能码,成功使得西门子PLC S7-1500终场运行 。


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


宝运莱·(中国区)最新官方网站

图8 攻击前PLC正常运行


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


宝运莱·(中国区)最新官方网站

图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