0x00 概述
Sinec H1是第一个基于以太网的工业协议,可提供传输层功能。该协议由西门子推出,目的是使用现有标准并丰富工业通信协议的相关细节,主要用于控制系统之间的数据传输。它具有大带宽特点,非常适合传输大量数据。基于ISO / IEC 8073标准,定义了不同的传输方法。
当PLC之间进行通讯时,采用在OSI第4层上的对等数据传输模式,称为传输层连接;
当上位机与PLC之间通讯时,在OSI的第7层上进行TF (Technology Function)通信。
TF(Technology Function)通信服务通常在监控上位机和PLC之间使用,以进行数据采集和控制,在典型的H1网络中,可以使用具有该功能的上位机连接一个或多个PLC。上位机系统必须具有以下功能:可在PLC中读取和写入数据。
虽然该协议推出时间较早,但是其用法简单传输数据量大,现在依然存在于大多数工业现场,尤其是和上位机SCADA进行数据交换时应用广泛。各个厂家在SCADA的通信驱动中集成了该协议,但有的命名为Siemens S7驱动而未提及Sinec H1相关内容。
具有Sinec H1 传输通信接口板的Simatic S5和S7系列PLC,例如CP1430,CP143,CP535,CP443-1均支持Sinec H1协议,编址方式为TSAP节点、访问块、word形式、数据长度。
0x01 协议分析
分析Sinec H1协议的测试环境如下图:
追踪send_to_lan函数,查看是否还有其余处理程序调用该函数。得到如下图示:
针对于6个不同功能的操作函数,梳理其对应的数据结构如下图:
注意:
A.将Sinec H1协议中固定字段值设置为无需fuzz属性,fuzzable=false;
B.脚本代码依照解析出的协议子块内容编写,便于维护与阅读;
C.在connecttion参数中需要注意,该协议不能重用连接,必须等待1次完成连接fuzz后再次启用1个连接;
D.同上,在fuzz过程中发现了下位机PLC处理fuzz包的过程缓慢(猜测PLC接收到不在认可范围内的包处理流程复杂,还需断开连接操作),因此restart_sleep_time值要根据实际情况调整;
0x03 总结
本文主要以西门子早期的协议Sinec H1为背景,介绍了协议分析和针对工控协议fuzz测试的大致思路和应用实践,旨在通过这些分享让更多人了解工控安全中协议方面的入门姿势,也希望通过本文为寻找Sinec H1协议相关资料的研究者们提供些许帮助。如若能帮助到需要的人,甚感欣慰。
原文来源:绿盟科技研究通讯
![811d3594a23f29e8b149f5dfc58fdf7f.png](https://i-blog.csdnimg.cn/blog_migrate/ffcce79d5c8ea429b0a5eb6aa8febe64.jpeg)
![fa441bf586e432a2f6239628ed99abb0.png](https://i-blog.csdnimg.cn/blog_migrate/b913475037fe2ea5191a25b527ecad84.jpeg)
![611c28b13615b9ef8d27fbc670c2c9ac.png](https://i-blog.csdnimg.cn/blog_migrate/2c5bfca72e23c021f0cd239e9284603a.jpeg)