龙空技术网

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

智能制造之家 1572

前言:

眼前兄弟们对“kingscada趋势曲线”可能比较注重,同学们都需要学习一些“kingscada趋势曲线”的相关内容。那么小编在网络上汇集了一些对于“kingscada趋势曲线””的相关文章,希望你们能喜欢,我们快快来了解一下吧!

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

来源:网络安全应急技术国家工程实验室

写在前面(文中超链接、PPT等仅在微信公众号“智能制造之家”有效)

前面我们说了工业控制系统的通讯,大家肯定会想到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-0XB0

Firmware: V4.2.3

Software:Wincc V7.4

S7Comm-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插件的源码,源码地址

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区

Opcode

Request(0X31)

Function

CreateObject(0x04ca)

ID Number

SubscriptionReferenceList

Base-area

0x8a0e

0x52

0x50

0x51

写DB块

写M区

——

写Q区

Opcode

Request(0X31)

Function

SetMultiVariables(0x0542)

Base-area

0x8a0e

0x52

——

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

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

标签: #kingscada趋势曲线