十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Anthropic-Cybersecurity-Skills 实战:基于 DNP3 协议异常检测的 SCADA/ICS 入侵监测指南

Anthropic-Cybersecurity-Skills 实战:基于 DNP3 协议异常检测的 SCADA/ICS 入侵监测指南 Anthropic-Cybersecurity-Skills 实战基于 DNP3 协议异常检测的 SCADA/ICS 入侵监测指南【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills导读本文围绕 Anthropic-Cybersecurity-Skills 仓库中的detecting-dnp3-protocol-anomalies技能展开系统讲解如何在能源行业等 OT/ICS 环境中通过深度报文解析DPI与基线对比检测 DNP3 通信异常——包括未授权主站控制、固件更新尝试、协议违规与流量偏离基线。读完本文你将掌握 DNP3 功能码风险分级、Zeek/Suricata/Scapy 三类检测工具链的配置方法以及基于 scripts/agent.py 的自动告警与报告生成流程可直接落地为变电站 DNP3 网段的异常检测 IDS。DNP3 协议基础与检测适用场景DNP3Distributed Network Protocol version 3是能源行业 SCADA 系统中主站Master与从站Outstation之间通信的主导协议。从站通常是 RTU 或 IED响应主站的轮询与命令。DNP3 运行于 TCP 20000 端口也可运行于串行链路其数据链路层帧以固定起始字0x0564开头随后依次为长度、控制字、目的地址、源地址与 CRC 校验字段。本技能见 SKILL.md 元数据适用于以下场景监控以 DNP3 为主要协议的能源行业 SCADA 系统为针对 RTU 与变电站的 DNP3 攻击构建检测规则调查通过 DNP3 发送的可疑未授权控制命令在公用事业变电站部署具备 DNP3 深度报文解析能力的 IDS响应 OT 监控平台上报的 DNP3 流量异常告警。不适用场景非 DNP3 协议的监控Modbus 场景应参考仓库中的detecting-modbus-command-injection-attacks技能、DNP3 Secure Authentication 的配置实施以及协议无关的通用网络异常检测。DNP3 功能码速查与风险分级api-reference.md 给出了检测前必须熟记的核心功能码对照表这也是所有检测规则与告警判断的基准代码名称风险级别0x01READ正常0x02WRITE警告0x03SELECT警告0x04OPERATE严重0x05DIRECT_OPERATE严重0x0DCOLD_RESTART严重0x0EWARM_RESTART严重0x10INITIALIZE_APPLICATION严重0x12STOP_APPLICATION严重在实现层面scripts/agent.py 对功能码与风险等级建立了完整映射0x03/0x04/0x05/0x06的 SELECT/OPERATE/DIRECT_OPERATE含无确认变体均标记为critical0x0D/0x0E的重启命令、0x0F/0x10/0x11/0x12的应用层初始化/启停命令同样为critical而0x81/0x82响应类代码为normal用于在告警时排除常见应答流量。而 SKILL.md 中更完整的DNP3_FUNCTIONS字典见 Skill 内联代码进一步覆盖0x00 Confirm至0x1E Abort File的全部标准功能码并将以下代码划入高危集合DNP3_CRITICAL_FUNCTIONS { 0x02, # Write 0x03, 0x04, 0x05, 0x06, # Select/Operate/Direct Operate 0x0D, # Cold Restart 0x0E, # Warm Restart 0x0F, # Initialize Data 0x10, # Initialize Application 0x12, # Stop Application 0x19, 0x1A, 0x1B, # File operations (firmware update) }注意其中0x19/0x1A/0x1B等文件操作代码被显式关联到固件更新场景——这正是 PIPEDREAM 类 ICS 攻击框架的典型行为特征。关键术语术语定义DNP3Distributed Network Protocol version 3能源行业 SCADA 中主站与从站之间通信的主导协议OutstationDNP3 从站设备通常为 RTU 或 IED响应主站轮询与命令Select-Before-OperateDNP3 安全机制必须先发送 SELECT 再发送 OPERATE防止误触控制动作Cold Restart (FC 0x0D)完全重启从站并重置全部配置的 DNP3 命令属高风险的拒绝服务操作DNP3 Secure Authentication可选的 DNP3 扩展SA v5通过基于 HMAC 的认证防止命令伪造PIPEDREAM具备 DNP3 能力的 ICS 攻击框架可操纵从站并执行固件更新前置条件部署 DNP3 异常检测前需确认以下环境要素来自 SKILL.md 的 Prerequisites 章节在 DNP3 通信网段TCP 20000 端口或串行链路上具备网络 TAP/SPAN 镜像口掌握环境内正常 DNP3 流量基线主站、从站、轮询间隔、功能码分布已启用 DNP3 协议解析器的 Suricata 或 Zeek理解环境中使用的 DNP3 功能码与对象组具备 DNP3 通信拓扑图主站到从站的对应关系。其中基线是后文所有异常判定算法的输入前提务必在部署检测前完成采集。流量捕获与检测工具链配置api-reference.md 给出了三种互补的检测工具配置方案覆盖抓包分析—IDS 规则—离线解析全链路。Zeek DNP3 协议分析器Zeek原名 Bro内置 DNP3 协议分析器可通过以下命令对 pcap 文件启用# Enable DNP3 analyzer in Zeek zeek -C -r capture.pcap protocols/dnp3 # Output: dnp3.log with function codes, objects, IIN bits-C表示忽略校验和错误继续解析-r指定输入 pcap。输出产物dnp3.log记录了功能码、对象与 IIN内部指示位信息。该日志文件同时也是 scripts/agent.py 的默认输入格式。dnp3.log的标准字段定义如下TSV 格式供下游脚本解析#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p fc_request fc_reply其中ts为时间戳、uid为连接唯一标识、id.orig_h/id.orig_p为发起方地址与端口、id.resp_h/id.resp_p为响应方地址与端口、fc_request为请求方向功能码、fc_reply为应答方向功能码。Suricata DNP3 规则Suricata 通过dnp3关键字实现对功能码的匹配以下两条规则分别检测冷重启与直接操作命令alert dnp3 any any - any 20000 (msg:DNP3 Cold Restart; \ dnp3_func:cold_restart; sid:1000001; rev:1;) alert dnp3 any any - any 20000 (msg:DNP3 Direct Operate; \ dnp3_func:direct_operate; sid:1000002; rev:1;)规则要点dnp3为协议关键字目标端口固定为 20000dnp3_func支持cold_restart、direct_operate等功能码名称。实际部署时可参照上表为warm_restart、stop_application、initialize_application等功能码逐一编写告警规则并注意为自定义规则分配不与现有 SID 冲突的编号。Scapy DNP3 解析Scapy 提供了scapy.contrib.dnp3模块适合离线 pcap 的精细化解析与批处理from scapy.all import rdpcap from scapy.contrib.dnp3 import DNP3 packets rdpcap(dnp3_capture.pcap) for pkt in packets: if pkt.haslayer(DNP3): print(pkt[DNP3].func_code)这段代码逐包读取 pcap凡包含 DNP3 层的报文即打印其功能码可作为编写自定义特征脚本、统计功能码分布或构造训练数据集的基础骨架。基于 agent.py 的异常检测实现解析仓库提供了两个层级的检测实现scripts/agent.py 面向 Zeek 日志的自动化分析而 SKILL.md 内嵌的DNP3AnomalyDetector类则直接解析原始 pcap。二者共享同一套检测理念授权基线 功能码风险分级。命令行用法api-reference.md 给出的 CLI 调用方式为python agent.py --zeek-log dnp3.log python agent.py --zeek-log dnp3.log --authorized-masters masters.txt其中--zeek-log为必填参数指定 Zeek 生成的dnp3.log--authorized-masters为可选参数指向每行一个 IP 的授权主站清单支持#注释行见 load_authorized_hosts 实现。此外脚本还支持--authorized-outstations参数用于指定授权从站清单。检测逻辑一未授权主站当启用授权清单后任何来源 IP 不在authorized_masters集合中的主站流量都会触发CRITICAL级告警见 analyze_dnp3_traffic对应 ICS-CERT 检测指标中的 Unauthorized master——源 IP 不在允许列表中。检测逻辑二突发流量detect_protocol_anomalies 实现了滑动窗口突发检测对同一来源的时间戳排序后若任意 10 个事件的时间跨度小于 1 秒即判定为突发流量计算并输出每秒事件数10 events/sec 即告警。这与 ICS-CERT 指标 Burst traffic——单源每秒超过 10 个事件 完全对应。检测逻辑三pcap 深包解析与五类告警SKILL.md 内嵌的检测器以rdpcap加载 pcap先解析 DNP3 数据链路层头部校验起始字0x0564、长度、控制字、大小端地址再越过 CRC 字节解析传输层与应用层提取功能码据此触发五类告警UNAUTHORIZED_DNP3_MASTERCRITICAL非授权主站与从站通信关联 MITRE ICST0869 - Standard Application Layer ProtocolDNP3_RESTART_COMMANDCRITICAL检测到0x0D/0x0E冷/热重启命令关联T0816 - Device Restart/ShutdownDNP3_FILE_OPERATIONCRITICAL检测到文件操作功能码固件更新或 PIPEDREAM 迹象关联T0839 - Module FirmwareUNEXPECTED_CONTROL_COMMANDHIGHSELECT/OPERATE 类控制命令不在该通信对的基线功能码集合中关联T0855 - Unauthorized Command MessageANOMALOUS_FUNCTION_CODEMEDIUM该通信对出现基线外功能码排除0x00/0x81/0x82常见响应码同样关联T0855。基线通过 JSON 文件加载load_baseline格式为authorized_communications数组每项包含master_ip、outstation_ip与expected_function_codes未指定时默认[0x00, 0x01]。ICS-CERT 检测指标对照表api-reference.md 归纳了业界认可的四大 DNP3 异常检测指标及其实现方法可直接作为规则开发与告警优先级设定的依据异常检测方法未授权主站源 IP 不在允许列表中突发流量单源每秒超过 10 个事件非工作时间命令维护窗口之外出现控制操作未知功能码功能码不在正常基线中其中前两项已由 scripts/agent.py 直接实现后两项可通过基线 JSON 的expected_function_codes字段与维护窗口时间过滤规则落地。输出与报告格式检测完成后scripts/agent.py 以 JSON 输出结构化结果包含total_events、function_code_distribution功能码分布、communication_pairs通信对统计、critical_operations关键操作明细与findings告警列表。而 pcap 检测器则生成人类可读报告其标准模板如下见 SKILL.md Output Format 章节DNP3 ANOMALY DETECTION REPORT Analysis Period: [start] to [end] Monitoring Point: [substation/segment] TRAFFIC SUMMARY: DNP3 Packets: [count] Unique Master-Outstation Pairs: [count] Control Commands: [count] File Operations: [count] ALERTS: [CRITICAL] Unauthorized DNP3 master [IP] [CRITICAL] Cold restart command to outstation [addr] [HIGH] Unexpected control command from [IP] RECOMMENDATIONS: 1. Deploy DNP3 Secure Authentication (SA v5) 2. Block unauthorized sources at firewall 3. Enable DNP3 DPI on industrial firewall报告从流量总览、会话级统计每对通信的报文数、功能码、控制命令数、文件操作数、重启命令数到告警明细逐层展开每条告警携带严重级别、类型、源目地址、功能码描述与 MITRE ICS 技术编号便于直接对接 SIEM 与事件响应流程。检测规则与框架映射本技能在仓库的框架映射体系中定位于 OT/ICS 安全与异常检测域ot-ics-security。SKILL.md 的元数据声明了以下映射关系MITRE ATTCKT1078有效账户、T1190面向公网利用、T1059命令与脚本解释器、T0816设备重启/关停、T0836修改运行固件NIST CSF 2.0PR.IR-01事件响应计划、DE.CM-01网络监控、ID.AM-05资产清单、GV.OC-02供应链风险管理MITRE ATLASAML.T0043、AML.T0018NIST AI RMFMEASURE-2.7、MEASURE-2.5、MAP-5.1。同时mitre_attack映射中的 T0836修改运行固件与代码中的文件操作检测逻辑、T0816设备重启/关停与冷/热重启告警一一对应说明告警设计直接服务于框架级威胁建模便于安全团队将检测结果汇入既有 MITRE 覆盖矩阵仓库根目录 ATTACK_COVERAGE.md 即为此类覆盖度的总览。部署建议与防护加固综合 api-reference.md 与 SKILL.md 的落地经验推荐按以下顺序推进基线先行在正常运维窗口内采集至少一周的 DNP3 流量统计主站-从站通信对、功能码分布与轮询周期生成基线 JSON分层检测在变电站网段用 Suricata 规则做实时告警功能码级匹配用 Zeek 记录全量dnp3.log供离线深挖用 Scapy/agent.py 做取证复现与批量回溯持续调优利用基线外功能码告警发现异常的同时定期将新出现的正常业务功能码并入基线降低误报纵深防御部署 DNP3 Secure AuthenticationSA v5防止命令伪造、在防火墙阻断未授权源、在工业防火墙上启用 DNP3 DPI——这也是检测报告模板中默认给出的三条建议。延伸阅读技能完整定义与使用说明SKILL.md功能码与检测指标 API 参考api-reference.md自动化检测脚本scripts/agent.py框架覆盖总览ATTACK_COVERAGE.md 与 mappings/README.md【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表