Performs cybersecurity assessments on power grid infrastructure: NERC CIP compliance verification, IEC 61850 protocol analysis, substation automation security, PMU networks, and threats like Industroyer/CrashOverride.
npx claudepluginhub killvxk/cybersecurity-skills-zhThis skill uses the workspace's default tool permissions.
- 根据NERC CIP要求对电力电网设施进行定期网络安全评估时
Conducts cybersecurity assessments of power grid infrastructure including NERC CIP compliance, IEC 61850 protocol analysis, PMU network security, and threats like Industroyer.
Conducts cybersecurity assessments of power grid infrastructure, verifying NERC CIP compliance, analyzing IEC 61850 protocols, securing PMU networks, and addressing OT threats like Industroyer.
Implements NERC CIP compliance controls for Bulk Electric System (BES) cyber systems including asset classification (CIP-002), security perimeters (CIP-005), and 2025 updates like remote MFA. Includes Python categorization tool. Useful for power grid audits.
Share bugs, ideas, or general feedback.
不适用于低于NERC注册门槛的非BES系统、无电网专项知识的通用OT评估(参见performing-ot-network-security-assessment),或无网络范围的发电设施物理安全评估。
识别并记录所有支持电网运营的网络系统,包括EMS、SCADA、变电站自动化和通信基础设施。
# 电力电网网络架构评估
facility_type: "区域输电组织控制中心"
ems_systems:
primary_ems:
vendor: "GE Grid Solutions"
product: "EMS/SCADA (原XA/21)"
functions:
- "状态估计"
- "自动发电控制(AGC)"
- "安全约束经济调度"
- "应急分析"
protocols:
- "ICCP/TASE.2(控制中心间)"
- "DNP3(变电站RTU轮询)"
- "IEC 60870-5-104(变电站轮询)"
backup_control_center:
location: "地理分散的备用站点"
sync_method: "实时数据库镜像"
switchover_time: "< 5分钟"
substation_automation:
count: 145
system_types:
- vendor: "ABB"
product: "RTU560"
protocol: "DNP3 over TCP/IP"
count: 85
- vendor: "SEL"
product: "SEL-3530 RTAC"
protocol: "IEC 61850 MMS + GOOSE"
count: 40
- vendor: "Siemens"
product: "SICAM A8000"
protocol: "IEC 60870-5-104"
count: 20
communications:
primary: "MPLS WAN(运营商提供)"
backup: "授权微波无线电"
last_mile: "光纤到变电站"
synchrophasor_network:
pmu_count: 75
pdc: "GE PDC(相量数据集中器)"
communication: "专用网络上的IEEE C37.118.2"
data_rate: "每秒30-60个采样"
评估基于IEC 61850的变电站自动化的协议安全性、访问控制和网络分段。
#!/usr/bin/env python3
"""电力电网变电站安全评估器。
评估基于IEC 61850的变电站自动化系统安全性,
包括GOOSE消息传递、MMS客户端/服务器和
网络架构。
"""
import json
import sys
from dataclasses import dataclass, field, asdict
from datetime import datetime
@dataclass
class SubstationFinding:
finding_id: str
severity: str
category: str
title: str
description: str
affected_systems: list
nerc_cip_ref: str
iec_62351_ref: str
remediation: str
class SubstationAssessment:
"""评估变电站自动化系统的网络安全。"""
def __init__(self, substation_name):
self.name = substation_name
self.findings = []
self.counter = 1
def assess_iec61850_security(self, config):
"""评估IEC 61850协议安全性。"""
# GOOSE消息认证
if not config.get("goose_authentication"):
self.findings.append(SubstationFinding(
finding_id=f"SUB-{self.counter:03d}",
severity="critical",
category="协议安全",
title="IEC 61850 GOOSE消息缺乏认证",
description=(
"用于IED间保护信令的GOOSE消息未经认证。"
"站点总线上的攻击者可以向断路器"
"注入虚假的跳闸/合闸命令。"
),
affected_systems=config.get("goose_publishers", []),
nerc_cip_ref="CIP-005-7 R1.5 — ESP内部通信",
iec_62351_ref="IEC 62351-6 — GOOSE/SV认证",
remediation=(
"使用数字签名实现IEC 62351-6 GOOSE认证。"
"临时措施:为GOOSE流量部署VLAN隔离。"
),
))
self.counter += 1
# MMS服务访问控制
if not config.get("mms_authentication"):
self.findings.append(SubstationFinding(
finding_id=f"SUB-{self.counter:03d}",
severity="high",
category="协议安全",
title="MMS客户端连接缺乏认证",
description=(
"连接到IED的MMS(制造消息规范)连接不需要"
"客户端认证。站点总线上的任何设备"
"都可以读/写IED配置并操作断路器。"
),
affected_systems=config.get("mms_servers", []),
nerc_cip_ref="CIP-007-6 R5 — 系统访问控制",
iec_62351_ref="IEC 62351-4 — MMS安全配置文件",
remediation="按照IEC 62351-4为MMS连接启用TLS。",
))
self.counter += 1
# 站点总线分段
if not config.get("station_bus_segmented"):
self.findings.append(SubstationFinding(
finding_id=f"SUB-{self.counter:03d}",
severity="high",
category="网络架构",
title="无分段的平坦站点总线网络",
description=(
"站点总线在单个VLAN上连接所有IED、HMI、"
"工程访问和WAN网关,没有分段。"
),
affected_systems=["所有站点总线设备"],
nerc_cip_ref="CIP-005-7 R1 — ESP边界",
iec_62351_ref="IEC 62351-10 — 安全架构",
remediation=(
"将站点总线分段为VLAN:保护IED、"
"测量IED、站点HMI和WAN网关。"
),
))
self.counter += 1
def assess_remote_access(self, config):
"""评估变电站的远程访问安全性。"""
if config.get("direct_vendor_access"):
self.findings.append(SubstationFinding(
finding_id=f"SUB-{self.counter:03d}",
severity="critical",
category="远程访问",
title="供应商无需MFA直接远程访问变电站",
description=(
"供应商支持可直接VPN访问变电站网络,"
"无需通过中间系统或要求MFA。"
),
affected_systems=["变电站WAN网关"],
nerc_cip_ref="CIP-005-7 R2 — 远程访问管理",
iec_62351_ref="IEC 62351-8 — 基于角色的访问控制",
remediation=(
"通过带MFA的企业跳板服务器路由供应商访问。"
"按CIP-005-7 R2.4实施会话记录。"
),
))
self.counter += 1
def generate_report(self):
"""生成变电站评估报告。"""
report = []
report.append("=" * 70)
report.append(f"变电站网络安全评估: {self.name}")
report.append(f"日期: {datetime.now().isoformat()}")
report.append("=" * 70)
for sev in ["critical", "high", "medium", "low"]:
findings = [f for f in self.findings if f.severity == sev]
if findings:
report.append(f"\n--- {sev.upper()} ({len(findings)}) ---")
for f in findings:
report.append(f" [{f.finding_id}] {f.title}")
report.append(f" {f.description[:100]}...")
report.append(f" NERC CIP: {f.nerc_cip_ref}")
report.append(f" 修复: {f.remediation[:80]}...")
return "\n".join(report)
if __name__ == "__main__":
assessment = SubstationAssessment("Alpha变电站 — 345kV")
assessment.assess_iec61850_security({
"goose_authentication": False,
"mms_authentication": False,
"station_bus_segmented": False,
"goose_publishers": ["SEL-411L-01", "SEL-411L-02", "SEL-487E-01"],
"mms_servers": ["SEL-3530-RTAC", "ABB-REF615-01"],
})
assessment.assess_remote_access({
"direct_vendor_access": True,
})
print(assessment.generate_report())
| 术语 | 定义 |
|---|---|
| IEC 61850 | 变电站通信网络和系统的国际标准,使用GOOSE进行保护信令,使用MMS进行SCADA数据传输 |
| GOOSE | 通用面向对象变电站事件(Generic Object Oriented Substation Event)——IED间快速点对点保护信令的多播协议(< 4ms跳闸时间) |
| MMS | 制造消息规范(Manufacturing Message Specification)——用于读写IED数据和操作断路器的客户端/服务器协议 |
| IEC 62351 | 电力系统通信协议安全标准系列,为IEC 61850、DNP3和IEC 104提供认证和加密 |
| ICCP/TASE.2 | 控制中心间通信协议(Inter-Control Center Communications Protocol),用于不同电力公司控制中心之间的数据交换 |
| 同步相量(PMU) | 相量测量单元(Phasor Measurement Unit),以每秒30-60个采样的频率提供时间同步的电压/电流测量,用于广域监测 |
电力电网网络安全评估报告
=============================================
设施: [名称和类型]
NERC注册: [实体ID]
BES影响评级: [高/中/低]
变电站发现: [N]
EMS/SCADA发现: [N]
通信发现: [N]
NERC CIP合规性:
CIP-002: [状态]
CIP-005: [状态]
CIP-007: [状态]