S7 通信协议

Siemens S7 Communication Protocol for PLC

S7 通信协议是西门子 PLC 的专有通信协议,用于 S7-300/400/1200/1500 系列编程、数据采集和远程控制。协议缺乏加密认证机制,是工控安全事件中暴露最多的 PLC 协议之一。

概述

S7 通信协议(S7comm)是西门子公司为 SIMATIC S7 系列 PLC 设计的专有通信协议,是西门子工业自动化生态系统的核心通信基础。S7 协议覆盖 S7-200、S7-300、S7-400、S7-1200 和 S7-1500 系列 PLC,以及对应的 HMI、上位机组态软件(如 WinCC、TIA Portal)等设备。

S7 协议是工控安全研究领域关注最多的 PLC 协议之一。由于协议规范长期未公开,安全社区通过逆向工程分析了协议的报文格式和功能机制,发现了大量安全隐患。根据 CNVD 和 NVD 的公开数据,涉及西门子 S7 协议的漏洞通报数量在 PLC 厂商中位居前列。

通信机制

S7 通信协议基于 TCP 102 端口,采用客户端-服务器模型,通常由编程软件、HMI 或 SCADA 系统作为客户端(上位机),PLC 作为服务端。协议握手过程分为三个阶段:首先是 COTP(Connection Oriented Transport Protocol)连接建立,协商 TPKT 参数;然后是 S7 Connection Setup,协商通信参数(如 PDU 大小、功能码范围);最后进入 S7 数据交换阶段。

S7 协议支持多种功能码,包括 Upload/Download(程序上传下载)、Read/Write Variable(变量读写)、Start/Stop(PLC 启停)、Diagnostics(诊断)、PLC Scan Cycle 控制(强制 I/O、设置系统状态)等。S7 数据报文包含 TPKT 头(4字节)、COTP 头和 S7 参数/数据域,数据编码采用大端序。

S7-1200/1500 系列引入了优化的块访问和 PUT/GET 通信机制。PUT/GET 支持双向数据交换,可通过 TIA Portal 配置通信伙伴关系(伙伴名称和 IP 地址白名单),并在较新固件版本中提供 TLS 加密选项。

安全风险分析

S7 协议的安全风险极其突出。传统 S7comm 协议无任何加密和认证机制——通信内容明文传输,TCP 连接建立无需身份验证,任何能到达 102 端口的设备均可发起 S7 通信。攻击者可执行的操作包括:读取 PLC 程序代码获取工艺逻辑、读写数据块(DB)修改控制参数、发送 Stop 命令停止 PLC 运行、通过强制功能(Force)覆盖 I/O 状态直接操控物理设备。

S7 协议的配置功能也带来信息泄露风险。通过 S7 协议的诊断请求,攻击者可获取 PLC 型号、固件版本、模块列表和系统状态等详细信息。COTP 连接参数中的 PDU 大小、功能码支持范围等也为攻击者提供了侦察信息。

S7-1200/1500 的 PUT/GET 通信虽然引入了伙伴白名单和可选的 TLS 加密,但在许多实际部署中 PUT/GET 功能被全局启用而未配置伙伴限制,安全机制形同虚设。西门子 PLC 的 Web 服务器(通过 HTTP/HTTPS 访问)如果暴露在网络上,也可能成为辅助攻击入口。

应用场景

S7 协议在中国工业领域应用极为广泛,覆盖汽车制造、化工、冶金、电力、水处理、轨道交通等几乎所有工业行业。S7-300/S7-400 系列在存量设备中占比较大,S7-1200/S7-1500 是新建项目的主流选择。S7 协议不仅用于 PLC 编程和维护,也是 SCADA 系统(如 WinCC)、MES 和 DCS 与西门子 PLC 之间数据交换的主要通道。

安全防护建议

在 PLC 前置部署工控防火墙,对 TCP 102 端口实施深度协议检测,仅允许授权的上位机 IP 地址访问,并基于 S7 功能码白名单进行细粒度控制(例如禁止 Upload 功能码以保护程序知识产权)。对于 S7-1200/1500,在 TIA Portal 中配置 PUT/GET 白名单并启用 TLS 加密。关闭 PLC 的 Web 服务器功能或将其限制在独立的维护网络中。部署终端白名单系统,确保只有经过认证的设备能够与 PLC 建立 S7 通信。在网络层实施 VLAN 隔离,将 PLC 所在的控制网络与其他网络区域严格分离。定期审查 S7 通信日志,检测异常的连接请求和功能码调用。

常见问题

Q: S7 协议使用哪个 TCP 端口?
S7 通信协议默认使用 TCP 102 端口,支持 S7-200/300/400/1200/1500 系列 PLC。工控防火墙通常通过监控 102 端口实现对 S7 协议的深度检测和访问控制。
Q: S7 协议是否支持加密传输?
传统 S7 协议(S7comm)不支持加密传输,所有数据明文交换。西门子 S7-1500 系列 PLC 的 PUT/GET 通信支持 TLS 加密,但需要配置通信伙伴关系。
Q: 攻击者通过 S7 协议能做什么?
公开安全研究表明,攻击者可通过 S7 协议读取 PLC 程序、修改内存数据、启停 PLC 运行、强制改变 I/O 状态,造成严重的设备失控和安全事故。
标签:S7协议西门子PLC工控通信
发布日期:2026-05-19
选择区号