CyberKevCL/ot-soc-lab
GitHub: CyberKevCL/ot-soc-lab
基于 Purdue 模型和 IEC 62443 标准构建的家庭 OT/ICS 安全监控实验室,集成 IDS、SIEM 和仿真 PLC,用于工业网络安全攻防实践。
Stars: 0 | Forks: 0
# 家庭 SOC 实验室 — OT/ICS 安全监控
## 为什么选择这个项目
工业环境需要与
传统 IT 不同的安全策略:
专有协议(Modbus、DNP3),
可用性优先于机密性,以及
一个很少像企业网络那样受到
严格监控的攻击面。我希望构建一个端到端的真实环境
——从网络分段到 SIEM 中的检测——
以实践的方式了解如何防御(以及如何攻击)
此类基础设施。
## 架构(Purdue 模型)
采用 pfSense 作为中央路由器的 4 区架构,每个区域
拥有一个直接接口。现场层(OT)被刻意
置于企业防火墙的管控范围之外,这重现了
真实环境中的常见模式,即 IT 管理并不总是
延伸到工厂车间层。
| Purdue 区域 | 内容 |
|---|---|
| Level 4 (企业) | 攻击机 (Kali Linux) |
| DMZ | 网络传感器 (Suricata IDS) |
| Level 3 (SCADA/SIEM) | Suricata, ELK Stack, HMI (ScadaBR) |
| Level 1/2 (现场/PLC) | HMI (网桥), 仿真 PLC (OpenPLC) |
Level 3 和 Level 1/2 之间的网桥由 HMI 机器自身管理,
而不是防火墙 —— 以此模拟企业防火墙并不总是
能对现场层具有可见性的情况。
## 技术栈
| 组件 | 技术 |
|---|---|
| Hypervisor | VirtualBox 7.x |
| 防火墙 / 分段 | pfSense (区域与管道,IEC 62443) |
| IDS | Suricata,带有针对 Modbus/DNP3 的自定义规则 |
| SIEM | ELK Stack (Elasticsearch, Kibana, Logstash, Filebeat) |
| 仿真 PLC | OpenPLC Runtime,采用 IEC 61131-3 (结构化文本) 编写的程序 |
| HMI | ScadaBR |
| 现场协议 | Modbus TCP |
## 项目状态
| 阶段 | 内容 | 状态 |
|---|---|---|
| 0-3 | 网络,虚拟机,pfSense,按区域进行分段 | ✅ 已完成并通过交叉测试验证 |
| 4 | 带有自定义 OT 规则的 Suricata IDS | ✅ 已完成 — 正在捕获真实流量 |
| 5-6 | 完整的 ELK pipeline (Elasticsearch/Kibana/Logstash/Filebeat) | ✅ 已完成并验证 |
| 8 | OpenPLC — 安装与 ST 程序 | 🔧 进行中 — 正在调试变量映射问题 |
| 9 | 持续的 Modbus 流量生成 | ⏳ 被阶段 8 阻塞 |
| 10 | 带有 Modbus 数据源的 HMI | ⏳ 待处理 |
| 11 | 映射到 MITRE ATT&CK for ICS 的攻击场景 | ⏳ 待处理 |
| 12 | Kibana 中的仪表板和警报 | ⏳ 待处理 |
## 最新里程碑
仿真 PLC 运行着一个逼真的过程(带有充注阀和阈值警报的
储罐液位),并通过 Modbus TCP 暴露。调试为什么
过程变量在运行时没有更新
——尽管 runtime 处于活动状态且 Modbus
服务器正在响应——导致了排除几种假设(Modbus 暴露、runtime 停止、寻址语法),之后才
找到真正原因:一个没有分配物理地址的
控制变量在执行周期之间不会持久化其状态。详细
信息请参阅经验教训。
HMI (ScadaBR) 现已部署,并正通过
配置好的 Modbus TCP Data Source 从 PLC 读取真实数据。
## 经验教训
本项目生成了已解决的基础设施事件的真实目录
——从 Suricata 的重启循环到 OpenPLC 依赖项的
编译不兼容性——。记录在 [docs/lessons-learned.md](docs/lessons-learned.md) 中。
## 参考
- [MITRE ATT&CK for ICS](https://attack.mitre.org/matrices/ics/)
- [IEC 62443 — 区域与管道](https://www.isa.org/standards-and-publications/isa-standards/isa-iec-62443-series-of-standards)
- [OpenPLC Runtime](https://autonomylogic.com/)
标签:ELK Stack, Metaprompt, OT/ICS安全, Purdue模型, SOC实验环境, Suricata, 内容过滤, 工业控制系统, 现代安全运营, 越狱测试, 防御绕过