广东湘恒智能科技有限公司
主营产品: 西门子变频器,西门子PLC\西门子模块、西门子触摸屏、西门子伺服电机、西门子工控机、西门子集成系统、西门子低压、西门子控制单元、西门子CPU,广东省西门子授权代理商,等
西门子S7 1200/1500通信协议分析与漏洞攻击实验
发布时间:2024-11-23

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 ”


展开全文
拨打电话 微信咨询 发送询价