原创 | 西门子S7CommPlus_TLS协议浅析

admin 2021年10月24日09:02:39评论483 views字数 2475阅读8分15秒阅读模式

作者 | 绿盟科技格物实验室 高剑

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

1
研究对象

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

原创 | 西门子S7CommPlus_TLS协议浅析

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

原创 | 西门子S7CommPlus_TLS协议浅析

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

原创 | 西门子S7CommPlus_TLS协议浅析

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

上位机:TIA V17

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

2
环境搭建

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

原创 | 西门子S7CommPlus_TLS协议浅析

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

原创 | 西门子S7CommPlus_TLS协议浅析

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

原创 | 西门子S7CommPlus_TLS协议浅析

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

原创 | 西门子S7CommPlus_TLS协议浅析
3
通信过程分析

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

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

原创 | 西门子S7CommPlus_TLS协议浅析

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

原创 | 西门子S7CommPlus_TLS协议浅析

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

原创 | 西门子S7CommPlus_TLS协议浅析

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

原创 | 西门子S7CommPlus_TLS协议浅析

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

原创 | 西门子S7CommPlus_TLS协议浅析

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

原创 | 西门子S7CommPlus_TLS协议浅析

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

原创 | 西门子S7CommPlus_TLS协议浅析

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

原创 | 西门子S7CommPlus_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加密的报文数据;

4
总结

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

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

 


转载请注明来源:网络安全应急技术国家工程实验室
原创 | 西门子S7CommPlus_TLS协议浅析

本文始发于微信公众号(网络安全应急技术国家工程实验室):原创 | 西门子S7CommPlus_TLS协议浅析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年10月24日09:02:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   原创 | 西门子S7CommPlus_TLS协议浅析https://cn-sec.com/archives/393134.html

发表评论

匿名网友 填写信息