# Performing Power Grid Cybersecurity Assessment

> 本技能涵盖对电力电网基础设施进行网络安全评估，包括发电设施、输电变电站、配电系统和能源管理系统（EMS）控制中心。涉及NERC CIP合规性验证、变电站自动化安全、IEC 61850协议分析、同步相量（PMU）网络安全，以及Industroyer/CrashOverride等攻击所展示的针对电网运营的独特威胁格局。

- Skill: `killvxk/performing-power-grid-cybersecurity-assessment` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add killvxk/performing-power-grid-cybersecurity-assessment`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/performing-power-grid-cybersecurity-assessment/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/performing-power-grid-cybersecurity-assessment

---


# 执行电力电网网络安全评估

## 适用场景

- 根据NERC CIP要求对电力电网设施进行定期网络安全评估时
- 评估使用IEC 61850 GOOSE和MMS协议的变电站自动化系统时
- 评估能源管理系统（EMS）或SCADA控制中心的安全性时
- 评估同步相量（PMU）网络和广域监测系统时
- 准备区域实体合规审计或内部安全审查时

**不适用于**低于NERC注册门槛的非BES系统、无电网专项知识的通用OT评估（参见performing-ot-network-security-assessment），或无网络范围的发电设施物理安全评估。

## 前置条件

- 了解电力电网架构（发电、输电、配电）
- 熟悉NERC CIP标准和BES网络系统分类
- 掌握电网协议知识（IEC 61850、IEC 60870-5-104、DNP3、ICCP/TASE.2）
- 用于变电站网络流量分析的被动监控工具
- 能够访问EMS/SCADA架构文档和网络图

## 工作流程

### 步骤 1：映射电力电网网络架构

识别并记录所有支持电网运营的网络系统，包括EMS、SCADA、变电站自动化和通信基础设施。

```yaml
# 电力电网网络架构评估
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个采样"
```

### 步骤 2：评估变电站自动化安全性

评估基于IEC 61850的变电站自动化的协议安全性、访问控制和网络分段。

```python
#!/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个采样的频率提供时间同步的电压/电流测量，用于广域监测 |

## 工具和系统

- **Dragos Platform**: OT安全平台，具有针对电网攻击组织（ELECTRUM、KAMACITE）的专项威胁情报
- **SEL-3620以太网安全网关**: 提供加密、访问控制和入侵检测的变电站安全设备
- **GRIDsure**: 爱达荷国家实验室开发的电力电网网络安全评估框架
- **Wireshark with IEC 61850 Dissector**: 用于变电站GOOSE和MMS流量的协议分析

## 输出格式

```
电力电网网络安全评估报告
=============================================
设施: [名称和类型]
NERC注册: [实体ID]
BES影响评级: [高/中/低]

变电站发现: [N]
EMS/SCADA发现: [N]
通信发现: [N]

NERC CIP合规性:
  CIP-002: [状态]
  CIP-005: [状态]
  CIP-007: [状态]
```

