[西门子] S7-1200+SCADA:详解西门子S7协议与数据读写

[复制链接]
查看53717 | 回复0 | 2024-3-26 09:32:52 | 显示全部楼层 |阅读模式
↑ 点击上方

“智能制造之家”

关注我们

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



写在前面

前面我们说了工业控制系统的通讯,大家肯定会想到PROFINET、ETHERNET/IP、ETHERCAT等工业以太网:

最详细的工业网络通讯技术与协议总结解读(现场总线、工业以太网、工业无线)

技术解读PROFINET、Ethernet/IP等7种主流工业以太网

最全整理工业通讯上的领域各种总线+协议+规范+接口—数据采集与控制

但是说到协议的分析,我们不得不提到安全问题,前面西门子、施耐德、罗克韦尔等国际大厂的相关安全漏洞:

基于S7协议对西门子PLC S7-1500的漏洞分析与复现(附演示视频)

施耐德PLC漏洞历险记—一次与施耐德PLC的非正常接触

罗克韦尔 MicroLogix PLC漏洞的复现及解决方案

说到西门子PLC,我们不得不提S7协议,今天我们就来系统聊一聊~



00 西门子S7 系列PLC与S7协议
‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

西门子PLC使用私有协议进行通信,端口为102。西门子PLC协议有3个版本,S7Comm协议,早期S7CommPlus协议和最新的S7CommPlus协议。S7-200、S7-300、S7-400系列的PLC采用早期的西门子私有协议S7comm进行通信,S7-1200系列v3.0版本之前的通信协议采用早期S7Comm-Plus协议,S7-1200系列v4.0版本、S7-1500系列采用了最新的S7Comm-Plus协议,本文以工控常见业务场景为例,分析Wincc V7.4作为上位机对PLC数据区的访问操作,现实场景中工控流量占比最大的也是上位机的SCADA环境对下位机PLC数据区的一些读写操作,而非组态软件对PLC的启停、下装上载操作,只有在调试运维过程中才会使用组态软件。



01 S7-1200与SCADA配置
整个协议分析的基本环境配置如下:Win7 x64虚拟机:PLC:S7-1200,6ES7214-1AG40-0XB0Firmware: V4.2.3Software:Wincc V7.4S7Comm-Plus Wiresharkdissector plugin: V0.0.8配置环境搭建的框架图如下所示,通过交换机连接SCADA上位机与S7-1214C的PLC,wireshark安装在连接镜像端口的PC机中,wireshark中导入S7Comm-Plus的解析插件。


本文所述的数据区特指S7系列PLC中的DB块、M区(I区、Q区与M区类似)。



02 读数据区的读变量操作

Wincc对PLC的读变量操作,首先需要组态Wincc V7.4在画面中建立输出控件,关联上PLC的对应地址变量,运行系统后在控件中就可读取对应变量的值,如下所示:


组态读取MD92地址处的变量值,读取变量的操作码Opcode为0X31,Function为CreateObject(0x04ca),寻找第7个Attribute属性中ID Number字段SubscriptionReferenceList。

展开SubscriptionReferenceList的详细描述,在SubscriptionList下包含了具体的访问区域与详细地址信息,Accessbase-area区域显示M区(0x52),Blob startoffset为92,表示M区中的访问地址,读取字节数Blob bytecount为2,表示读取两个字节长度。

组态读取DB59999.DBW6地址处的变量值(wincc对于DB块进行读取操作必须不加入优化,DB块中的变量必须有确定分配的地址),读取变量的操作码Opcode为0X31,Function为CreateObject(0x04ca),寻找第7个Attribute属性中ID Number字段SubscriptionReferenceList。

展开SubscriptionReferenceList的详细描述,在SubscriptionList下包含了具体的访问区域与详细地址信息,Accessbase-areaa区域经过算法解析后得到0x8a0eea5f,表示DB59999(原始数据帧中字节为0x88 d0 bb d4 5f),Blob startoffset为6,表示DB5999中的访问地址,读取字节数Blob bytecount为2,表示读取两个字节长度。

备注:VLQ相关编码算法可参考S7Comm-plus wireshark插件的源码,源码地址https://sourceforge.net/p/s7commwireshark/code/HEAD/tree/trunk/src/



03 对数据区的写变量操作
Wincc对PLC的写值操作一般会在画面中建立输入控件,关联上PLC的对应地址变量,在控件中写值,按enter键后写入成功,如下所示:

在MD92写入变量过程中抓取到请求数据帧

写入变量的操作码Opcode为0X31,Function为SetMultiVariables(0x0542),Access base-areaa字段显示为M区(0x52),写入地址Blob startoffset为92,写入字节数Blob bytecount为4,写入的值为value:0x0001046a。

在DB59999.DBW6地址处写入变量过程中抓取到请求数据帧,(Wincc写DB块必须保证DB块不优化,有自己的实际地址)

写入变量的操作码Opcode为0X31,Function为SetMultiVariables(0x0542),Access base-areaa字段显示为DB59999(0x8a0eea5f),写入地址Blob startoffset为6,写入字节数Blob bytecount为2,写入的值为value:0x8235。




04 流量中关键点提取
从以上的分析中可以总结如下表格,不论是工业防火墙还是审计系统,均需要将关键字段识别并加入至白名单中,在S7Comm-plus协议的流量中,识别表格中的关键信息就能命中各种业务操作,比如读M区变量、写Q区变量等。但是想和实际工艺场景结合,比如命中流量中对污水处理加药间加药量阀门的操作需要做进一步的工作。

读DB块读M区读I区读Q区
OpcodeRequest(0X31)
FunctionCreateObject(0x04ca)
ID NumberSubscriptionReferenceList
Base-area0x8a0e0x520x500x51

写DB块写M区——写Q区
OpcodeRequest(0X31)
FunctionSetMultiVariables(0x0542)
Base-area0x8a0e0x52——0x51




05 总结

本文以Wincc V7.4作为上位机,调用S7Comm-plus的驱动访问S7-1200系列PLC,具体访问了PLC的DB块、M区等,在访问过程中通过wireshark抓取对应报文,并做了简单分析,并通过表格形式总结出S7Comm-plus访问西门子系列PLC常用数据区的关键字段,在工业安全产品中要解析或者捕获流量是需要命中这些字段,通过这些字段关联到对应的操作区域。但如果想再次区分流量中对M区的哪个地址写入了什么数据还需要深入解析后续的value字段。如若需要和工艺流程联动,还需要将工程点表和安全产品中的命中规则联动和融合,这样才能更接近工业现场。




硬核专辑

ERP/PLM/MES/SCADA/PLC/工业软件研究报告

信息化、数字化、智能制造、工业互联网解决方案

自动化、信息化、数字化、工业网络、仿真与虚拟调试入门

WinCC技术 | 工业网络 | MES技术相关| 工业巨头战略布局 | 工业通讯案例

仿真与虚拟调试 | 职业感悟、认知提升 | 自动化控制标准合集



2021中国工控自动化行业产业分析(PLC\DCS\变频\伺服\步进)

2021-04-18



S7-1500+TIA+MCD:西门子仿真与虚拟调试的硬件在环调试流程

2021-04-12



200页PPT,详述MES/MOM与APS系统及其选型(下载)

2021-04-22



机械加工行业数字化车间规划与方案

2021-04-20



107页PPT,讲透MES与APS系统及其选型

2021-03-30



107页全球工控深度报告:西门子、ABB、施耐德、三菱VS汇川、中控..

2021-03-26



西门子、SAP、达索、PTC、AVEVA:六大海外工业软件巨头的2020

2021-03-24



智能制造之中国物流自动化装备行业分析(软件、立体库、分拣设备、AGV)

2021-03-20



某智能工厂调研、规划、实施整体解决方案

2021-03-19



达索、西门子、PTC:工业软件三大顶部PLM玩家的战略布局分析

2021-03-17



智能制造数据采集之RFID全产业链研究报告

2021-03-16



西门子、RA、施耐德、三菱、汇川、和利时:中国PLC市场及产业链分析

2021-03-14



2020中国工业软件企业排行&2020中国智能制造企业排行

2021-03-13



西门子、ABB、霍尼韦尔、中控、力控...中国SCADA&DCS市场报告

2021-03-09



100大产业链全景图(2020版)及智能制造50大产业链

2021-03-04



中国ERP软件行业研究—SAP、金蝶、用友、浪潮、鼎捷哪家强

2021-03-02



欢迎关注"智能制造之家"

免责申明:本公众号所载文章为本公众号原创或根据网络搜索编辑整理,文章版权归原作者所有。因转载众多,无法找到真正来源,如标错来源,或对于文中所使用的图片,资料,下载链接中所包含的软件,资料等,如有侵权,请联系删除~----智能制造之家

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则