chutrunganh/Security-on-Siemens-S7-protocol

GitHub: chutrunganh/Security-on-Siemens-S7-protocol

针对西门子 S7Comm 工业协议的攻击研究与基于 Suricata 的被动式入侵检测规则开发项目。

Stars: 0 | Forks: 0

# ICS/OT 网络中针对 Siemens S7Comm 协议攻击的研究与检测 # 1. 引言 ## OT 中的安全风险 ![alt text](https://static.pigsec.cn/wp-content/uploads/repos/cas/30/308651b43ab9e6167f83e400c432cae44836cba48c8ed45f45e07d39d829f18f.png) 由于 OT 环境的特殊要求,ICS 协议通常是: - **专有的**,以确保制造商生态系统内设备之间通信的可靠性和最优化。 - **在设计上缺乏加密、身份验证或完整性机制**,以实现实时性能,因为这些安全特性需要额外的处理时间。 最初,人们认为不需要强大的安全性,因为工业工厂中的 OT 网络通常与外部世界隔离,使得外部攻击者的攻击面几乎为零。然而,随着工厂规模和复杂性的不断增加,现代 OT 网络需要更强的连通性来支持新的运营需求,例如连接到: - **企业 IT 网络**,以将生产与供应链管理、资源规划和供应商管理等业务活动进行协调。 - **MES (制造执行系统)**,用于生产调度和执行管理。 - **SCADA (监控与数据采集系统)**,用于对工业过程进行集中监控和控制。 这种演变极大地改变了 OT 环境的攻击面。随着连通性的增加,攻击者有更多机会接触 OT 网络。这造成了技术上的鸿沟,因为许多工业协议是几十年前设计的,具有漫长的运行寿命,并且在设计时并没有考虑到现代网络安全原则。 ## 挑战 在尝试保护 OT 网络安全时,面临的一些主要挑战包括: - 网络攻击数量不断增加,其中许多被认为是出于国家行为体或政治动机。最近一些众所周知的攻击被归咎于与俄罗斯、中国或朝鲜等国家有关的组织。即使对攻击者有强烈的怀疑,也绝不要想着踏入他们的领地一步去进行调查。 - 工厂需要连续运行,这使得不可能以“安全设计”的理念从头开始重新设计现有系统。新的安全解决方案必须适应现有的工厂基础设施,而不是期望工厂去适应解决方案。此外,重要的不仅是解决方案的有效性,部署时间同样关键。在生产线上花费过多时间部署解决方案是不可接受的。每个人都知道在 CIA 三要素中,A(可用性)是 OT 环境中的最高优先级。然而,根据我的经验,直到你在现场工作,你才能真正理解那个“A”字有多重。成千上万的人日复一日、每周 7 天、每天 24 小时、一年 365 天连续工作,只为了确保这一个字。 - 将主动安全方法应用于工业设备(例如主动监控或安装安全代理)是极其危险的。在你出现并为了安装新的安全代理而重启它们之前,这些设备可能已经连续运行多年且没有出现任何问题。没人知道重启后会发生什么故障。大多数工业系统运行着厂商专有软件,并且由来自不同国家的多个承包商构建或集成。如果发生故障,无法保证仍然能获得厂商或承包商的支持。 因此,本论文旨在构建一个专为工业协议设计的被动监控解决方案,以最大程度地减少对工厂运营的影响。 从这些挑战来看,可以系统地将其归纳为 3 个主要问题: ``` flowchart LR %% Row 1 A1["Availability and real-time requirements come first in OT.
Inline controls are risky."] --> B1["PLC traffic is rarely inspected."] --> C1["Deploy Suricata IDS
in passive mode on a SPAN port."] %% Row 2 A2["No authentication.
Benign and malicious traffic look alike."] --> B2["PLC programs can be modified freely
to disrupt the production process."] --> C2["Combine packet content,
direction, and source address."] %% Row 3 A3["Limited public documentation and
rulesets due to the proprietary nature
of industrial protocols."] --> B3["General IT rulesets are not suitable
for S7comm behavior and
industrial context."] --> C3["Build a scenario-based ruleset
covering common attack scenarios."] classDef challenge fill:#FDE2D5,stroke:#E53935,stroke-width:2px,color:#000; classDef problem fill:#FFF2CC,stroke:#F9A825,stroke-width:2px,color:#000; classDef solution fill:#D9EAD3,stroke:#43A047,stroke-width:2px,color:#000; class A1,A2,A3 challenge; class B1,B2,B3 problem; class C1,C2,C3 solution; ``` # 2. 背景理论 两个主要的核心概念理论包括 **S7comm 协议** 和 **Suricata IDS**。 ## S7comm 协议 **Siemens S7**(或通常简称为 **S7 Comm**),是由 Siemens(德国)设计的一种专有协议,用于在 Siemens 生态系统内对工业设备进行编程、监控和控制。它通常由编程软件 Tia Portal(运行在工程工作站上)用于与 PLC 通信,以及 PLC 与 HMI 之间通信。该协议工作在控制器和监控层。S7 不在现场设备层工作(在该层,PLC 与传感器、执行器等其他现场设备进行通信。这通常由 Modbus、OPC UA 等其他协议完成)。 ![alt text](https://static.pigsec.cn/wp-content/uploads/repos/cas/7f/7fcf71f3d2b7d7ea724c1dd16dea0990035bc2f364d4548d6cfbcafb75152dab.png) S7 Comm 用于旧款 PLC,如 S7-200、S7-300、S7-400。它不包含任何**身份验证**、**授权**、**加密**或**完整性**机制,所有数据均以明文形式传输。 有关 S7 Comm 协议的详细信息可以在[这里](./docs/Theory_S7.pdf)找到。 ## IDS ![alt text](https://static.pigsec.cn/wp-content/uploads/repos/cas/59/59c2d3a7854748ed9019e17ddfc1efc88ff7f0f628a435cd2a3de4a267de2ba8.png) IDS(入侵检测系统):监控网络流量并针对可疑活动生成警报。 检测方法: - **基于特征的**:使用预定义的规则或特征。 ➜ 检测稳定,误报率低。 - **基于异常的**:检测偏离正常行为的情况。 ➜ 能检测零日攻击,但误报率较高。 本论文采用 **Suricata IDS**,一种基于特征的入侵检测系统。 有关 IDS 的通用详细信息可以在[这里](./docs/Theory_IDS_1.pdf)找到,关于 Suricata IDS 的具体信息可以在[这里](./docs/Theory_IDS_2.pdf)找到。 # 3. 系统与方法论 ![alt text](https://static.pigsec.cn/wp-content/uploads/repos/cas/b1/b1dc9ca66ec98d01a2d887e52e286d2fda3a498a4960921bbc70909f836d770c.png) 1. **部署仿真**:在 VMware 上部署仿真环境 2. **构建攻击模块**:使用 Snap 7 和工具构建攻击场景 3. **流量收集与分析**:使用 Wireshark 捕获网络流量,分析 S7comm 数据包结构 4. **检测规则开发**:基于字节偏移、功能码、频率阈值和异常语法,将观察到的指标转换为 Suricata 特征。 5. **IDS 测试**:在流量副本上运行 Suricata,并将警报与每个模拟场景进行比较。 ## 3.1 部署仿真 在 VMware 上部署仿真环境。以下是网络拓扑: ![alt text](https://static.pigsec.cn/wp-content/uploads/repos/cas/1b/1b20de787602540f344039f61c92adff2763fa61b7739efd9ed69ddc57acefee.png) - PLC(通过 OpenPLC Runtime v4 模拟)运行在控制段 - HMI(通过 Fuxa 模拟)运行在监控段 - Suricata IDS 运行在监控段 - 攻击者运行在外部段 *在现实中,IDS 将连接到核心交换机的 SPAN 端口,但在 VMware 中,只需将其放置在你要监控的同一 LAN 段中并开启混杂模式即可。这是因为 VMware 中的 vSwitch 在底层作为物理集线器而非“真正的”交换机工作。* ## 3.2 构建攻击模块 使用 **Snap 7** 和工具来构建攻击场景。 ## 3.3 流量收集与分析 使用 Wireshark 捕获网络流量,分析 S7comm 数据包结构。 ## 3.4 检测规则开发 基于字节偏移、功能码、频率阈值和异常语法,将观察到的指标转换为 Suricata 特征。 ## 3.5 IDS 测试 在流量副本上运行 Suricata,并将警报与每个模拟场景进行比较。
标签:OT安全, PKINIT, S7Comm协议, SCADA, 协议分析, 哈希传递, 工控安全, 权限提升, 防御绕过