2. 工控系统基础

在工控网络流量取证与复盘工程中,第一步不是抓包,而是建立“资产—角色—协议—路径”的完整认知。只有先理解 SCADA、DCS、PLC、RTU、HMI 等核心组件在系统中的位置与职责,才能判断一条流量是正常轮询、组态下发、报警上报,还是异常横向探测。本章从组件职责、典型拓扑、通信协议三个层面建立基础模型,为后续流量基线、异常检测与取证复盘提供参照。

一、核心组件与职责边界

工控系统并非单一设备,而是由监控层、控制层、现场层协同构成的分层体系。各组件在流量特征上差异明显,取证时需先定位其角色。

  • SCADA(数据采集与监控系统):面向广域、分散的现场,负责集中监视、数据采集、报警与历史存储。典型协议包括 Modbus TCP、DNP3、IEC 60870-5-104。其流量常表现为周期性轮询与突发报警。
  • DCS(集散控制系统):面向连续过程工业(化工、电力、冶金),强调闭环控制与高可靠性。控制器、I/O 与操作站之间多为私有或工业以太网协议,流量稳定、周期性强。
  • PLC(可编程逻辑控制器):执行逻辑控制与顺序控制,是控制层的核心执行单元。常见协议有 Modbus、EtherNet/IP、PROFINET、S7comm。组态下载与在线修改会产生大流量突发。
  • RTU(远程终端单元):部署在无人值守站点,负责遥测、遥信、遥控,常通过无线或串口回传。协议以 DNP3、IEC 101/104 为主,报文短、频率低。
  • HMI(人机界面):操作员与系统的交互入口,负责画面显示、参数设定与操作指令下发。其流量多指向 PLC/DCS 控制器,是操作行为取证的关键节点。

取证视角:SCADA 是“看全局”,DCS 是“控过程”,PLC 是“执行逻辑”,RTU 是“远程采集”,HMI 是“人机操作”。五类角色的流量方向、周期、报文长度各不相同,是建立流量基线的第一层分类依据。

二、典型工控网络拓扑与数据流

典型工控网络按层级划分为企业层、DMZ、监控层、控制层与现场层。层级之间通过防火墙或工业隔离设备分隔,但实际工程中常存在跨层直连,这正是取证复盘需要重点关注的路径。

典型工控网络分层拓扑与数据流 企业层 ERP / MES 历史数据库 运维终端 DMZ 数据采集网关 工业防火墙 监控层 SCADA 服务器 轮询 / 报警 HMI 操作站 画面 / 指令 工程师站 组态 / 下载 控制层 DCS 控制器 闭环控制 PLC 主站 逻辑执行 PLC 从站 I/O 采集 现场层 RTU 远程站 传感器 / 执行器 智能仪表 管理流 监控流 控制流 采集流

从数据流方向看,现场层向上汇聚遥测数据,控制层执行逻辑并回传状态,监控层进行集中展示与指令下发,企业层通过 DMZ 获取汇总数据。取证时,若发现控制层设备直接与企业层通信,或 HMI 向非控制器地址发起连接,即为高风险异常路径。

三、通信协议概览与流量特征

工控协议多为明文、无认证、面向轮询设计,这既是取证的优势(可解析),也是安全的弱点(可篡改)。下表汇总常见协议及其流量特征,便于快速识别。

协议 典型端口 主要承载 流量特征 取证关注点
Modbus TCP 502 PLC / RTU 周期轮询,功能码固定 异常功能码、非授权写线圈
DNP3 20000 RTU / SCADA 短报文,事件上报 未授权遥控、时间同步异常
IEC 60870-5-104 2404 SCADA / RTU APCI 帧,周期总召 总召频率突变、遥控命令
S7comm 102 西门子 PLC 组态下载突发大流量 非工程师站下载、停止 CPU
EtherNet/IP 44818 / 2222 PLC / I/O 隐式实时 I/O 数据 连接数异常、非授权显式报文
PROFINET 以太网层 0x8892 PLC / 远程 I/O 实时循环,低延迟 设备名冲突、非组态设备接入

四、案例场景:一次异常写入的复盘

某水厂 SCADA 系统在夜间出现阀门异常动作。复盘时按以下流程定位:

  1. 从 SCADA 服务器抓取 Modbus TCP 流量,过滤功能码 0x05(写单线圈)与 0x0F(写多线圈)。
  2. 发现写操作源 IP 并非 HMI 操作站,而是一台工程师站,且目标为现场 RTU 地址。
  3. 进一步查看该工程师站的 S7comm 会话,发现存在非工作时间的组态下载记录。
  4. 结合 HMI 操作日志,确认该时段无人工操作,判定为异常写入。
# 过滤 Modbus 写操作(Wireshark 显示过滤器)
modbus.func_code == 5 || modbus.func_code == 15

# 过滤 S7comm 下载相关
s7comm.param.func == 0x1a || s7comm.param.func == 0x1b

# 统计源 IP 与目标 IP 的会话
tshark -r capture.pcap -Y "modbus" -T fields -e ip.src -e ip.dst | sort | uniq -c

复盘要点:工控协议通常不加密,取证时应优先保存原始 pcap,再按“源—目的—功能码—时间”四元组建立会话基线。异常往往不在单包,而在“谁在非预期时间、以非预期身份、对非预期目标执行了写操作”。

五、常见误区与复盘清单

误区一:把 SCADA 与 DCS 混为一谈。SCADA 偏广域采集监控,DCS 偏过程闭环控制,两者流量模型不同。
误区二:只关注 IP 层,忽略协议功能码。工控攻击常复用合法端口,仅靠端口无法识别。
误区三:忽略 HMI 与工程师站的差异。HMI 是操作入口,工程师站是组态入口,权限与流量特征完全不同。

建议在每轮取证复盘后维护以下清单:

  • 资产清单:设备角色、IP、MAC、协议、固件版本。
  • 通信基线:正常会话对、周期、功能码分布。
  • 异常路径:跨层直连、非授权源、非工作时间写操作。
  • 证据链:pcap 文件、时间戳、会话索引、操作日志。