1、相关研究
前期已有对S7-1200/S7-1500 PLC的研究文章,对S7ComPlus协议的多个版本做了分析,下图对此作了梳理:S7-1200 和 S7-1500 PLC 协议和安全性比较的基本情况如下:S7CommPlus协议在 TCP (TTPKT)和面向连接的传输协议 (COTP) 上运行,用于在 PLC 和工程软件之间传输关键的操作和配置信息、例如 PLC 逻辑、诊断信息、配置详细信息和数据块值。操作员从TIA Portal初始化到 PLC连接,例如,点击TIA 门户中的“ Go online ”按钮,如下图:以下步骤将被执行:1、TIA Portal 向 网络广播 Profinet Discovery 和基本配置协议 (PN-DCP) “Identify All”数据包。2、所有PLC或设备都使用PN-DCP “Identify OK” 数据包回复 TIA Portal。3、TIA Portal初始化与PLC的TCP握手,PLC将回复。4、TIA Portal和PLC交换COTP连接信息。5、TIA Portal发送第一个S7数据包。6、PLC使用包含1字节和20字节反重放机制的数据包进行回复。7、TIA Portal 会回复一个包含反重播字节和 132 字节阵列的数据包、即反重放响应。8、TIA Portal将数据包连同请求的操作一起发送到PLC,并在每个数据包中进行20字节的完整性检查,其中包含特殊字节,如果任何 S7CommPlus反重放字节数或完整性检查值数据不正确,连接的另一端将发送TCP重置数据包,会话将终止。图4 S7CommPlus 会话和反重放机制图5 S7CommPlus (连接)请求(来自 TIA 门户)图6 S7 质询数据包(来自 PLC )图7 S7CommPlus 响应数据包(来自 TIA 门户)(左:流量捕获、右:字节位置表示)
1.1 抗重放字节S7CommPlus协议在防重放机制中使用1个字节值,自S7-1200固件版本3开始使用。当TIA Portal初始化连接时,PLC发送0x06至0x7F范围内的质询字节,TIA Portal将向PLC回复一个响应,该响应通过将值0x80添加到质询中来计算。例如,如果PLC质询为0x08,则TIA响应将为0x08+0x80=0x88,如图中的标签④所示。图上质询位于第25个字节位置,响应位于相应数据包的第24个和第29个字节。在PLC固件版本3中,S7响应数据包之后的后续功能数据包必须在第24个字节位置包含相同的防重放字节;在固件版本4中,发现它是相关数据包的第57个字节或第62个字节。
1.2 响应数据包中的加密从固件版本4开始,来自TIA Portal的响应数据包必须包括除上述单个防重放字节之外的几个字节。2017年,Cheng[6]发现了数据包中涉及的两个16字节加密,其中第二个加密依赖于第一个加密。两个16字节的值开始于S7响应包的第235和第291字节,如上图中的标签⑨和⑩所示。第一次加密是XOR运算,而第二次加密是通过更复杂的算法生成的。
1.3 功能包“加密”响应数据包发送到PLC后,TIA Portal将开始发送与TIA Portal功能相关的字节,本文其余部分将其命名为“功能数据包”。所有这些分组必须包括32字节的“加密”值,如下图的标签⑪所示。该“加密”被发现是由基于散列的消息认证码(HMAC)促进的完整性检查,并且与防重放字节有关。Cheng[6]提出了通过利用协议来启动和停止PLC的可能性,但没有提供描述协议漏洞的详细信息,只是指出数据包完整性检查功能是一种“加密”。随后,Biham将S7协议中使用的底层机制确定为HMAC,并发现HMAC的密钥细节是通过椭圆曲线EL-Gamal类密钥交换来交换的。然而,没有描述具体的协议机制,例如,反重放响应的每个字段都用伪代码松散地标识,而算法执行细节缺失。类似地,在函数分组HMAC计算中,发现先前未识别的具有两个不同密钥的两组HMAC.因此,在第四节中对解决这些差距的研究进行了调查,并与相关算法一起进行了进一步介绍,其中对协议和漏洞进行了详细分析,以提供支持加密的机制的更详细视图。图8 S7CommPlus功能包(来自TIA门户)如下表,对上述几个图中的标号字段进行了总结:
2、脆弱性实验分析
实验环境包括运行TIA Portal V14的工程站、两个固件版本为V4.1.3和V4.2.3的S7-1211C PLC和一台“受损”机器,所有这些都通过交换机连接到共享LAN。2.1 TIA Portal分析为了了解生成反重放响应的算法,并探索可能的漏洞,使用WinDBG对TIA Portal进行了分析。本节描述了在实验过程中进行的逐步分析过程。出于实验目的,在TIA Portal中搜索可访问设备的功能用于生成S7CommPlus流量。在分析过程中发现的结果如图所示。下图中的标签A-F将在整个讨论中被引用。图中有两个主要部分:如何处理挑战数组(蓝色框)和此后命名为“函数B”(黄色框)的进程,该进程是生成反重放机制的大多数字节的地方。图9 步骤A至F,用于分析TIA门户流程。蓝框显示“挑战阵列”。黄色框显示“功能B ”
- 工业数字化实践:西门子PLC多层次通信方案介绍 2024-11-23
- 数字化工厂整体架构与转型核心——MES/MOM落地 2024-11-23
- 西门子MES流程行业套件与PLC、WinCC深度集成 2024-11-23
- 西门子MES Opcenter流程行业套件与APS系统集成 2024-11-23
- PLC/SCADA/DCS通讯:工控防火墙架构与技术解析 2024-11-23
- 电气传动数字化工厂系统(ERP/PLM/MES/SCADA/WMS)规划设计方案 2024-11-23
- 智能制造(MES/WMS/QMS/LIMS)系统搭建、验证与实施方案 2024-11-23
- 数字化工业网络需求、架构与关键技术分析 2024-11-23
- 西门子TIA+Plant Simulation+WinCC完成SIMOVE AGV虚拟调试 2024-11-23
- 西门子PLM实践:TC客户端、AWC实现单点登录 2024-11-23