用途:监测以 DNP3 为主要协议的 SCADA 系统,构建针对 RTU 与变电站的检测规则,调查疑似未授权控制命令,或在变电站部署带 DNP3 深度包检测的 IDS,并响应 OT 监控平台的 DNP3 流量告警。不适用于非 DNP3 协议监测、DNP3 安全认证配置或与协议无关的网络异常检测。
主要能力:解析 DNP3 数据链路层与传输/应用层头部,识别功能码;检测未授权 DNP3 主站、冷/热重启命令、文件操作(潜在固件更新或 PIPEDREAM 指标)、Select/Operate 等控制命令,以及偏离基线的异常功能码,并映射 MITRE ICS 技术编号。
使用方式:需在 DNP3 通信段(TCP 20000 端口或串口)部署网络 TAP/SPAN,准备正常流量基线(主站、从站、轮询间隔、功能码),启用 Suricata 或 Zeek 的 DNP3 解析器,并了解环境中的功能码与对象组及主从拓扑。脚本依赖 scapy,缺失时提示 pip install scapy。运行命令为 python dnp3_detector.py <capture.pcap> [baseline.json],基线文件为可选 JSON,包含 authorized_communications 等字段。
限制:仅针对 DNP3,需预先建立基线才能进行部分检测;资料未提供部署平台、性能指标或收费信息。