西门子S7CommPlus_TLS协议浅析
2021-07-14 12:31:33 Author: blog.nsfocus.net(查看原文) 阅读量:122 收藏

阅读: 8

概述

 西门子是全球顶级的自动化系统供应商,西门子SIMATIC系列PLC在全球的关键基础设施上大规模使用,也正是由于其可靠性、稳定性才会让更多的用户选择使用。随着网络攻击的日益激烈,西门子在“震网”事件之后,推出了信息安全型的S7-1200系列和S7-1500系列PLC,十多年的产品更新迭代,西门子一直在产品的信息安全方面默默耕耘,从最早的S7CommPlus-V1版本、V2版本、带有完整性校验的V3版本,到2021年5月份发布的带有TLS套接层的加强版S7CommPlus协议,足以看出西门子对于工业网络信息安全的重视程度。本文就带领大家一起看看西门子最新版本的S7CommPlus_TLS协议的具体情况。

研究对象

2021年5月28日,西门子发布了TIA V17,这是一个集成了多种高端功能的新一代自动化系统的集成开发环境,其中最有亮点的是TIA Portal 云连接器提供对本地 PC 接口和 TIA Portal Engineering 中连接的 SIMATIC 硬件的访问,而工程本身则可以通过私有云中的远程桌面执行,其他的亮点见下图。

我们关注的是西门子提及到的最新支持的安全协议。

为了配合上位机组态软件,西门子在2021年5月12日就发布了S7-1200系列的最新版本固件V4.5.0这是一个大版本的更新,不再以V4.4开头,其中修改了很多问题也增加了一些功能。

综上所述,本次研究的对象是:

上位机:TIA V17

下位机:S7-1215C DC/DC/DC & Firmware V4.5.0

环境搭建

TIA V17安装在虚拟机中,为了节约空间和计算资源,可以只安装STEP 7部分。

组态对应的S7-1215C DC/DC/DC的工程文件,编译后下载到控制器中。由于使用了最新版本TIA V17,在初始组态设备时会告知用户进行PLC的安全设置,包括了保护机密的PLC数据、PG/PC和HMI的通信模式、PLC访问保护。在此我们打开PG/PC和HMI的通信模式选择为“仅支持PG/PC和HMI的安全通信”。

在下装过程中,新加了一个可信认证的过程,必须由TIA V17认可PLC才可建立可信链接。

下装完成后,环境的配置参数如下所示。

通信过程分析

该部分我们从第一次下装初始创建的TIA V17工程开始分析,分析前需要在Wireshark中安装解析S7CommPlus的解析插件,本次使用的S7Comm-Plus Wireshark dissector plugin V0.0.8版本,以查看交互的数据是否还可以被解析。

启动Wireshark准备抓包,通过Profinet扫描到PLC后,选中需要下装的设备,点击下载按钮。此时查看通信的报文过程,首先TIA客户端发送CR请求报文,由PLC恢复CC确认报文,这一步是在创建COTP链接。

完成COPT链接后,紧接着客户端使用S7CommPlus协议的V1版本给客户端发送了一个请求报文,推测是设置通信模式。

设置完通信模式后,TIA V17给PLC发送了TLS handshake的请求client hello报文,使用的TLS协议版本为V1.2。

紧接着PLC作为服务器回复了TIA V17客户端的client请求,如下所示:

接下来就是TIA V17发送TLS V1.2协议的change_cipher_spec的content type,通知PLC后续的数据传输即将被加密。

紧接着TIA V17发送了应用层被TLS加密的数据,见下图。其中0x17是应用数据传输功能码,0x0303为TLS的协议版本V1.2,0x0100为数据域的size,紧接着为Encrypted Application Data,从0xac54到结尾。

此时PLC回复了TIA V17的请求报文,当然也是由带有TLS V1.2套接层保护的,所有数据都被加密了。

从此处往后,TIA V17与PLC交互的通信报文都带有TLS保护层。可以看出西门子虽然对S7Commplus协议做了TLS套接层处理,但是和原始的TLS V1.2协议的处理流程还是有很大区别, 下边是原始TLS的握手流程,应用到工控系统中还是做了很多调整,整个TLS的握手和证书处理、可信连接的创建都由西门子单独设计的一套机制。

综上所述,采用了S7CommPlus_TLS的通信处理流程为:

  1. TCP三次握手完成;
  2. 客户端发送CR请求;
  3. 服务器响应CC数据;
  4. 客户端发送S7CommPlus_V1的通信设置请求;
  5. 服务器回应通信设置;
  6. 客户端发送TLS handshake请求;
  7. 服务器回应handshake;
  8. 客户端发送change_cipher_spec请求,通知后续报文加密;
  9. 客户端紧接着发送TLS加密后的报文数据;
  10. 服务器回应带有TLS加密的报文数据;

总结

     在工控领域中将稳定性和实时性置于系统需求的首位,西门子在工业通信协议中加入TLS安全套接层是否会影响到控制系统的实时性,这个问题还有待于工业现场的验证,但在安全性上可以说是增加了许多,也让恶意攻击者更难通过远程的手段进行一些低等级的攻击(比如重放攻击)。但网络世界的攻防对抗是不会停止的,有加密就会有解密,有多厚重的保护装备就会有多犀利的破解法门。我们最近也针对该协议做了些许分析,知道了加密前的协议、知道了证书的交换等等,发现了一些安全隐患目前正在验证阶段。我们致力于在黑客之前找到安全问题并与厂商一起修复隐患,以做到防患于未然,更好的保护工业控制系统。

      工业系统在设计之初都没考虑到安全问题,但随着网络攻击的愈演愈烈工业系统会根据相关的规定对所有部件、协议进行加固处理,比如针对工业通信协议会做授权、认证、加密的处理,西门子已经在做这些事情,可以预计在未来的五年工业现场的通信协议都会做安全处理,对于抵御外部的威胁起到了显著的作用,但同时对于安全厂商也提出了要求,如何审计加密的工业通信流量,如何在加密流量中找到威胁行为等。

版权声明

本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。


文章来源: http://blog.nsfocus.net/s7-commplus/
如有侵权请联系:admin#unsafe.sh