performing-power-grid-cybersecurity-assessment

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

9 stars

Best use case

performing-power-grid-cybersecurity-assessment is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

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

Teams using performing-power-grid-cybersecurity-assessment should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/performing-power-grid-cybersecurity-assessment/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/performing-power-grid-cybersecurity-assessment/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/performing-power-grid-cybersecurity-assessment/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How performing-power-grid-cybersecurity-assessment Compares

Feature / Agentperforming-power-grid-cybersecurity-assessmentStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

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

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

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

## 适用场景

- 根据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: [状态]
```

Related Skills

performing-yara-rule-development-for-detection

9
from killvxk/cybersecurity-skills-zh

通过识别可执行文件中的唯一字节模式、字符串和行为指标,开发精准的 YARA 恶意软件检测规则,同时将误报率降至最低。

performing-wireless-security-assessment-with-kismet

9
from killvxk/cybersecurity-skills-zh

使用 Kismet 通过被动射频监控进行无线网络安全评估,检测流氓接入点(Rogue AP)、隐藏 SSID、弱加密和未授权客户端。

performing-wireless-network-penetration-test

9
from killvxk/cybersecurity-skills-zh

执行无线网络渗透测试,通过捕获握手包、破解 WPA2/WPA3 密钥、检测流氓接入点以及使用 Aircrack-ng 和相关工具测试无线网络分段,评估 WiFi 安全性。

performing-windows-artifact-analysis-with-eric-zimmerman-tools

9
from killvxk/cybersecurity-skills-zh

使用 Eric Zimmerman 的开源 EZ Tools 套件(包括 KAPE、MFTECmd、PECmd、LECmd、JLECmd 和 Timeline Explorer)执行全面的 Windows 取证制品分析,解析注册表 hive、预取文件、事件日志和文件系统元数据。

performing-wifi-password-cracking-with-aircrack

9
from killvxk/cybersecurity-skills-zh

在授权无线安全评估中捕获 WPA/WPA2 握手包,并使用 aircrack-ng、hashcat 和字典攻击进行离线密码破解, 以评估密码短语强度和无线网络安全状况。

performing-web-cache-poisoning-attack

9
from killvxk/cybersecurity-skills-zh

在授权安全测试期间,通过未纳入缓存键的头部和参数毒化缓存响应,利用 Web 缓存机制向其他用户投递恶意内容。

performing-web-cache-deception-attack

9
from killvxk/cybersecurity-skills-zh

通过利用 CDN 缓存层与源服务器之间的路径规范化差异,执行 Web 缓存欺骗攻击,从而缓存并获取敏感的已认证内容。

performing-web-application-vulnerability-triage

9
from killvxk/cybersecurity-skills-zh

使用 OWASP 风险评级方法论对 DAST/SAST 扫描器的 Web 应用程序漏洞发现进行分类,区分真阳性和假阳性,并确定修复优先级。

performing-web-application-scanning-with-nikto

9
from killvxk/cybersecurity-skills-zh

Nikto 是一款开源 Web 服务器和 Web 应用程序扫描器,可针对超过 7,000 个潜在危险文件/程序进行测试,检查超过 1,250 个服务器的过期版本,并识别超过 270 个服务器的版本特定问题。

performing-web-application-penetration-test

9
from killvxk/cybersecurity-skills-zh

遵循 OWASP Web 安全测试指南(WSTG)方法论,对 Web 应用程序执行系统化安全测试,识别认证、授权、 输入验证、会话管理和业务逻辑中的漏洞。测试人员以 Burp Suite 作为主要拦截代理,结合手动测试技术 发现自动化扫描器遗漏的缺陷。适用于 Web 应用渗透测试、OWASP 测试、应用安全评估或 Web 漏洞测试等请求场景。

performing-web-application-firewall-bypass

9
from killvxk/cybersecurity-skills-zh

使用编码技术、HTTP 方法操控、参数污染和载荷混淆绕过 Web 应用防火墙保护,将 SQL 注入、XSS 及其他攻击载荷穿透 WAF 检测规则。

performing-vulnerability-scanning-with-nessus

9
from killvxk/cybersecurity-skills-zh

使用 Tenable Nessus 执行认证和未认证漏洞扫描,识别网络基础设施、服务器和应用程序中的已知漏洞、 错误配置、默认凭据和缺失补丁。扫描器将发现与 CVE 数据库和 CVSS 评分关联,生成优先级修复指导。 适用于漏洞扫描、Nessus 评估、补丁合规检查或自动化漏洞检测等请求场景。