第二章:工控系统架构与脆弱性
大家好,我是老张。在工控安全这行摸爬滚打了十几年,今天咱们来聊聊工控系统的骨架——它的分层架构,以及每层最容易出问题的地方。
很多人一上来就问我:“工控系统到底长什么样?” 其实说白了,它跟咱们人一样,有大脑、有手脚、有神经。工控系统也是分层的,每一层干每一层的活。我习惯把它分成三层:现场层、控制层、管理层。
2.1 工控系统分层架构
先看一张我手绘的简图,你心里就有数了:
┌─────────────────────────────────────────┐
│ 管理层 (Level 3) │
│ (MES、ERP、历史数据库、工程师站) │
├─────────────────────────────────────────┤
│ 控制层 (Level 2) │
│ (PLC、DCS控制器、RTU、SCADA服务器) │
├─────────────────────────────────────────┤
│ 现场层 (Level 1) │
│ (传感器、执行器、变频器、仪表) │
└─────────────────────────────────────────┘
嗯,就是这么个结构。每一层之间通过工业以太网、现场总线(比如 Profibus、Modbus TCP)或者 OPC 协议通信。你想想看,如果哪一层出了问题,整个生产都可能停摆。
2.1.1 现场层
这是最底层,也是工控系统的“手脚”。包括各种传感器(温度、压力、流量)、执行器(阀门、电机)、变频器、智能仪表等。
特点:
- 直接跟物理世界打交道,环境恶劣(高温、高湿、振动)。
- 计算能力弱,很多设备连操作系统都没有,就是裸机跑固件。
- 通信协议简单,很多还是串口(RS-232/485)或者 4-20mA 模拟信号。
2.1.2 控制层
这是工控系统的“大脑”。包括 PLC、DCS 控制器、RTU、SCADA 服务器等。它们负责执行逻辑控制、数据采集、报警处理。
特点:
- 实时性要求极高,控制周期通常在毫秒级。
- 运行专用的实时操作系统(如 VxWorks、QNX)或嵌入式 Linux。
- 通信协议多样,但很多缺乏安全机制(如 Modbus TCP 无认证、无加密)。
2.1.3 管理层
这是工控系统的“决策层”。包括 MES(制造执行系统)、ERP(企业资源计划)、历史数据库、工程师站、操作员站等。
特点:
- 通常运行 Windows Server 或 Linux 服务器。
- 连接企业办公网络,甚至互联网(远程运维)。
- 存储大量生产数据、配方、工艺参数。
说白了,管理层就是 IT 和 OT 的交汇点。很多攻击就是从管理层渗透进来的,然后横向移动到控制层。
2.2 各层常见脆弱性分析
好,架构讲完了。咱们来聊聊每层最容易被“捅刀子”的地方。我按层来拆解,你对照着看自己项目里有没有类似问题。
2.2.1 现场层脆弱性
- 物理安全缺失: 很多传感器和执行器直接暴露在车间里,没有物理防护。我记得有个项目,现场的温度传感器接线盒被人恶意剪断,导致温度数据一直报错,整个反应釜停了两天。
- 固件更新困难: 现场设备固件通常几年甚至十几年不更新。漏洞被发现后,厂商可能已经停止支持。说白了,就是“带病运行”。
- 通信协议裸奔: 很多现场总线协议(如 HART、Profibus PA)没有加密和认证。攻击者只要物理接入总线,就能监听甚至伪造数据。
- 默认凭证问题: 我刚才提过,默认密码不改是常态。我曾经用 Shodan 搜过,全球有上万个工控设备使用默认密码在线。
2.2.2 控制层脆弱性
- PLC 逻辑篡改: 这是最致命的。攻击者通过漏洞上传恶意梯形图,可以导致设备误动作、停机甚至物理损坏。
- SCADA 服务器漏洞: SCADA 软件(如 Wonderware、iFIX)通常运行在 Windows 上,且需要开放大量端口。我记得有个项目,SCADA 服务器上竟然还装了 QQ 和迅雷,你说危不危险?
- 通信协议缺陷: Modbus TCP 没有认证,任何客户端都可以读写任意寄存器。DNP3 虽然有认证选项,但很多现场根本没启用。
- 实时操作系统漏洞: VxWorks 等 RTOS 被发现过多个远程代码执行漏洞(如 CVE-2019-12255)。但很多 PLC 厂商迟迟不发布补丁。
2.2.3 管理层脆弱性
- 操作系统老旧: 很多管理层服务器还在跑 Windows 7、Windows Server 2008,甚至 Windows XP。这些系统早已停止安全更新。
- 补丁管理混乱: 怕打补丁影响生产,所以干脆不打。我见过一台工程师站,连续 5 年没打过补丁,上面全是漏洞。
- 远程访问风险: 为了远程运维,很多企业开放了 RDP、VNC 或 VPN。但弱密码、未启用双因素认证是常态。
- 数据泄露风险: 历史数据库里存着工艺参数、配方等核心机密。如果被窃取,竞争对手可能直接复制你的生产线。
2.3 总结与思考
你看,工控系统的脆弱性,说白了就是“先天不足”加上“后天失养”。
- 先天不足: 很多协议设计之初就没考虑安全,比如 Modbus、Profibus。
- 后天失养: 补丁不打、密码不改、网络不隔离、运维不规范。
为什么会这样?因为工控系统追求的是稳定性和实时性,安全往往被排在后面。但你要知道,安全出问题,稳定性和实时性也就无从谈起。
我个人习惯,在评估一个工控系统时,会先画一张网络拓扑图,标出每一层的设备、协议、端口。然后对照着脆弱性清单,一个一个排查。嗯,这个方法虽然笨,但最有效。
下一章,咱们聊聊具体的攻击路径和手法。到时候我会分享几个我亲身经历的攻击案例,保证让你后背发凉。
- 工控系统分三层:现场层(手脚)、控制层(大脑)、管理层(决策)。
- 现场层脆弱性:物理安全、固件老旧、协议裸奔、默认密码。
- 控制层脆弱性:逻辑篡改、SCADA漏洞、协议缺陷、RTOS漏洞。
- 管理层脆弱性:系统老旧、补丁缺失、远程访问风险、数据泄露。
- 安全防护的核心:网络隔离、最小权限、强密码、补丁管理。
好了,今天就聊到这儿。记住,安全不是一蹴而就的,而是一个持续改进的过程。咱们下节课见。