1. 工控资产清单采集与安全评估范围界定
为什么资产清单是评估的起点
工控安全评估的第一步不是扫漏洞,而是回答三个问题:有哪些资产、它们在哪里、它们之间怎么通信。资产清单决定了评估边界——边界之外的设备不纳入本次评估,边界之内的每个资产都要有责任人、位置、型号、固件版本和通信关系。仅靠主动扫描会漏掉不响应探测的PLC和串口设备,仅靠被动流量会漏掉当前未通信的备用设备,因此需要两者结合。
主动探测与被动分析的互补关系
主动探测通过发送探测报文获取资产响应,适合发现IP可达的设备;被动流量分析通过镜像端口或TAP采集通信数据,适合发现不响应探测但持续通信的设备。两者的覆盖范围不同,合并后才能形成完整清单。
资产清单的关键字段
一份可用于评估的资产清单至少应包含以下字段,缺一不可:
| 字段 | 说明 | 来源 |
|---|---|---|
| IP 地址 | 资产在网络中的逻辑地址 | 主动探测 / 被动流量 |
| MAC 地址 | 物理地址,用于去重和厂商识别 | 被动流量 / ARP 表 |
| 资产类型 | PLC / HMI / 工程师站 / 交换机 / 网关 | 协议指纹 + 人工确认 |
| 厂商与型号 | 设备制造商和具体型号 | SNMP / 协议指纹 / 铭牌 |
| 固件版本 | 影响漏洞匹配的关键信息 | SNMP / 协议响应 / 人工确认 |
| 物理位置 | 机柜编号、车间、产线 | 现场确认 |
| 责任人 | 设备归属和联系人 | 运维台账 / 现场确认 |
| 通信关系 | 与哪些资产通信、用什么协议、方向 | 被动流量分析 |
| 确认状态 | 已确认 / 待确认 / 疑似 | 人工复核 |
实操:从探测到清单的完整过程
以下以一个小型工控网络为例,演示主动探测与被动分析结合的操作流程。示例网络为 192.168.10.0/24,包含 1 台 PLC、1 台 HMI、1 台工程师站、1 台交换机和 1 台网关。
第一步:被动流量采集
在交换机上配置镜像端口,将工控网段流量镜像到分析主机。使用 tcpdump 抓取 10 分钟流量:
tcpdump -i eth1 -w ics_traffic.pcap -G 600 -W 1 host 192.168.10.0/24
抓包完成后,用 tshark 提取通信对和协议:
tshark -r ics_traffic.pcap -T fields -e ip.src -e ip.dst -e _ws.col.Protocol -e tcp.dstport | sort | uniq -c | sort -rn
预期输出示例(教学示例数据):
1520 192.168.10.20 192.168.10.10 Modbus/TCP 502
890 192.168.10.30 192.168.10.10 Modbus/TCP 502
340 192.168.10.10 192.168.10.20 Modbus/TCP 502
210 192.168.10.30 192.168.10.40 SNMP 161
95 192.168.10.40 192.168.10.1 SNMP 161
从流量中可初步判断:192.168.10.10 是 PLC(Modbus 服务端),192.168.10.20 是 HMI(频繁读写 PLC),192.168.10.30 是工程师站(编程和 SNMP 查询),192.168.10.40 是交换机(SNMP 代理),192.168.10.1 是网关。
第二步:主动探测补充
对网段内所有 IP 进行 ICMP 和 TCP 端口扫描,发现未在流量中出现的设备:
nmap -sn 192.168.10.0/24 -oG ping_sweep.txt
nmap -sT -p 502,102,44818,161,80,443 192.168.10.0/24 -oG port_scan.txt
假设扫描发现 192.168.10.50 开放 502 端口但无流量通信,标记为“待确认 PLC(备用)”。
第三步:合并去重与人工确认
将被动流量中的通信对与主动扫描结果合并,按 MAC 地址去重,形成初始清单。对“待确认”资产进行现场确认:查看机柜、铭牌、接线,确认设备类型和责任人。
第四步:界定评估边界
根据清单确定评估边界:
- 纳入边界:192.168.10.10(PLC)、192.168.10.20(HMI)、192.168.10.30(工程师站)、192.168.10.40(交换机)、192.168.10.1(网关)、192.168.10.50(备用PLC,待确认后纳入)。
- 边界外:未发现的其他 IP、办公网段、互联网出口。
- 边界依据:资产清单 + 通信关系矩阵。评估范围覆盖清单内所有资产及其之间的通信路径。
资产清单模板(可直接使用)
以下为 CSV 格式的资产清单模板,字段可根据实际项目增减:
ip,mac,type,vendor,model,firmware,location,owner,protocols,peers,status
192.168.10.10,00:1B:1B:3C:4D:5E,PLC,Siemens,S7-1200,V4.2.3,1号柜A3,张工,Modbus/TCP;S7comm,192.168.10.20;192.168.10.30,已确认
192.168.10.20,00:1B:1B:3C:4D:5F,HMI,Siemens,TP1200,V15.1,1号柜A1,张工,Modbus/TCP,192.168.10.10,已确认
192.168.10.30,00:1B:1B:3C:4D:60,工程师站,Dell,Precision 3560,Win10 21H2,控制室,李工,S7comm;SNMP,192.168.10.10;192.168.10.40,已确认
192.168.10.40,00:1B:1B:3C:4D:61,交换机,Cisco,IE-2000,15.2(7)E,1号柜B1,王工,SNMP,192.168.10.30;192.168.10.1,已确认
192.168.10.1,00:1B:1B:3C:4D:62,网关,Moxa,MGate-5110,V1.4,1号柜B2,王工,Modbus/TCP,192.168.10.40,已确认
192.168.10.50,00:1B:1B:3C:4D:63,PLC,Unknown,Unknown,Unknown,2号柜A2,待确认,Modbus/TCP,无,待确认
结果验证与边界确认
资产清单完成后,用以下方法验证完整性:
- 交叉验证:将清单与运维台账、采购记录、网络拓扑图对比,检查是否有遗漏设备。
- 流量回放:用历史流量回放工具(如 tcpreplay)重放一周前的流量,检查是否有清单外的通信对出现。
- 现场巡检:按机柜逐一核对设备铭牌和指示灯状态,确认清单中的“待确认”项。
- 边界评审:与运维负责人确认评估边界,明确哪些资产纳入、哪些排除,并记录排除理由。
验证通过的标准:清单中每个资产都有明确的类型、位置和责任人;所有通信关系都有对应的协议和方向记录;“待确认”项清零或明确标注为排除项。