implementing-dragos-platform-for-ot-monitoring

为OT网络监控部署和配置Dragos平台,利用其600+工业协议解析器、情报驱动的威胁检测分析和资产可见性能力,保护ICS环境免受VOLTZITE、GRAPHITE和BAUXITE等威胁组织的攻击。

9 stars

Best use case

implementing-dragos-platform-for-ot-monitoring is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

为OT网络监控部署和配置Dragos平台,利用其600+工业协议解析器、情报驱动的威胁检测分析和资产可见性能力,保护ICS环境免受VOLTZITE、GRAPHITE和BAUXITE等威胁组织的攻击。

Teams using implementing-dragos-platform-for-ot-monitoring 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/implementing-dragos-platform-for-ot-monitoring/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/implementing-dragos-platform-for-ot-monitoring/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/implementing-dragos-platform-for-ot-monitoring/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How implementing-dragos-platform-for-ot-monitoring Compares

Feature / Agentimplementing-dragos-platform-for-ot-monitoringStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

为OT网络监控部署和配置Dragos平台,利用其600+工业协议解析器、情报驱动的威胁检测分析和资产可见性能力,保护ICS环境免受VOLTZITE、GRAPHITE和BAUXITE等威胁组织的攻击。

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

# 为OT监控实现Dragos平台

## 适用场景

- 为工业环境部署OT专用网络检测与响应(NDR)解决方案
- 需要基于威胁情报检测已知ICS威胁组织(VOLTZITE、CHERNOVITE、KAMACITE)
- 构建使用专用工业安全工具的OT SOC能力
- 在单一平台上同时需要资产发现、漏洞管理和威胁检测
- 将OT安全监控与企业SIEM(Splunk、Sentinel、QRadar)集成

**不适用于**无ICS组件的纯IT网络监控、OT工作站的端点检测与响应(EDR),或已标准化使用Claroty或Nozomi的环境(参见相应技能)。

## 前置条件

- Dragos平台许可证和部署包
- OT网络边界的网络TAP或SPAN端口(每个监控网段一个传感器)
- Dragos传感器硬件(物理设备)或满足最低规格的虚拟设备
- 允许传感器到Dragos SiteStore通信的防火墙规则(仅从OT出站的加密连接)
- 用于威胁情报更新的Dragos知识包订阅

## 工作流程

### 步骤 1:部署Dragos传感器并配置监控

```python
#!/usr/bin/env python3
"""Dragos平台部署验证和集成工具。

验证Dragos传感器部署、检查连通性,并
配置与企业SIEM的集成以进行OT告警转发。
"""

import json
import sys
import csv
from datetime import datetime
from typing import Optional, List, Dict

try:
    import requests
except ImportError:
    print("安装requests: pip install requests")
    sys.exit(1)


class DragosPlatformManager:
    """与Dragos平台API交互进行OT监控管理。"""

    def __init__(self, base_url: str, api_key: str, api_secret: str, verify_ssl: bool = True):
        self.base_url = base_url.rstrip("/")
        self.session = requests.Session()
        self.session.headers.update({
            "API-Key": api_key,
            "API-Secret": api_secret,
            "Content-Type": "application/json",
        })
        self.session.verify = verify_ssl

    def get_sensors(self) -> List[Dict]:
        """获取所有已部署的Dragos传感器及其状态。"""
        resp = self.session.get(f"{self.base_url}/api/v1/sensors")
        resp.raise_for_status()
        return resp.json().get("sensors", [])

    def get_assets(self, asset_type: Optional[str] = None) -> List[Dict]:
        """获取Dragos发现的OT资产。"""
        params = {}
        if asset_type:
            params["type"] = asset_type
        resp = self.session.get(f"{self.base_url}/api/v1/assets", params=params)
        resp.raise_for_status()
        return resp.json().get("assets", [])

    def get_notifications(self, severity: str = "high", limit: int = 50) -> List[Dict]:
        """获取威胁检测通知。"""
        params = {"min_severity": severity, "limit": limit}
        resp = self.session.get(f"{self.base_url}/api/v1/notifications", params=params)
        resp.raise_for_status()
        return resp.json().get("notifications", [])

    def get_vulnerabilities(self, severity: str = "critical") -> List[Dict]:
        """获取带有Dragos特定上下文的OT漏洞。"""
        params = {"min_severity": severity}
        resp = self.session.get(f"{self.base_url}/api/v1/vulnerabilities", params=params)
        resp.raise_for_status()
        return resp.json().get("vulnerabilities", [])

    def get_threat_groups(self) -> List[Dict]:
        """获取与当前环境相关的已追踪ICS威胁组织活动。"""
        resp = self.session.get(f"{self.base_url}/api/v1/threat-groups")
        resp.raise_for_status()
        return resp.json().get("threat_groups", [])

    def validate_deployment(self):
        """验证传感器部署健康状态和覆盖范围。"""
        sensors = self.get_sensors()
        assets = self.get_assets()

        print(f"\n{'='*65}")
        print("DRAGOS平台部署验证")
        print(f"{'='*65}")
        print(f"验证时间: {datetime.now().isoformat()}")

        print(f"\n--- 传感器状态 ---")
        healthy_sensors = 0
        for sensor in sensors:
            status = sensor.get("status", "unknown")
            icon = "[OK]" if status == "connected" else "[!!]"
            print(f"  {icon} {sensor.get('name', 'Unknown')} | 状态: {status}")
            print(f"      IP: {sensor.get('ip_address')} | 网段: {sensor.get('monitored_segment')}")
            print(f"      最后在线: {sensor.get('last_seen')} | 数据包/秒: {sensor.get('pps', 0)}")
            print(f"      知识包: {sensor.get('knowledge_pack_version', 'N/A')}")
            if status == "connected":
                healthy_sensors += 1

        print(f"\n  传感器健康: {healthy_sensors}/{len(sensors)} 正常运行")

        print(f"\n--- 资产可见性 ---")
        print(f"  发现的资产总数: {len(assets)}")
        asset_types = {}
        for asset in assets:
            atype = asset.get("type", "Unknown")
            asset_types[atype] = asset_types.get(atype, 0) + 1
        for atype, count in sorted(asset_types.items(), key=lambda x: -x[1]):
            print(f"    {atype}: {count}")

        protocols = set()
        for asset in assets:
            protocols.update(asset.get("protocols", []))
        print(f"  已观察到的协议: {', '.join(sorted(protocols))}")

        print(f"\n--- 威胁情报 ---")
        groups = self.get_threat_groups()
        print(f"  相关威胁组织: {len(groups)}")
        for group in groups:
            print(f"    - {group.get('name')}: {group.get('description', '')[:80]}")
            print(f"      目标行业: {', '.join(group.get('target_sectors', []))}")
            print(f"      活跃程度: {group.get('activity_level', 'Unknown')}")

    def generate_siem_integration_config(self, siem_type: str = "splunk"):
        """生成Dragos告警的SIEM集成配置。"""
        configs = {
            "splunk": {
                "syslog_format": "CEF",
                "syslog_port": 514,
                "severity_mapping": {
                    "critical": 10,
                    "high": 7,
                    "medium": 5,
                    "low": 3,
                    "info": 1,
                },
                "index": "ot_security",
                "sourcetype": "dragos:notification",
                "fields": [
                    "notification_id", "severity", "category", "source_ip",
                    "destination_ip", "asset_name", "protocol", "description",
                    "mitre_ics_technique", "threat_group",
                ],
            },
            "sentinel": {
                "connector_type": "Syslog-CEF",
                "workspace_id": "<workspace-id>",
                "log_analytics_table": "DragosOTAlerts_CL",
                "severity_mapping": {
                    "critical": "High",
                    "high": "High",
                    "medium": "Medium",
                    "low": "Low",
                    "info": "Informational",
                },
            },
        }

        config = configs.get(siem_type, configs["splunk"])
        print(f"\n--- {siem_type.upper()} 集成配置 ---")
        print(json.dumps(config, indent=2))
        return config


if __name__ == "__main__":
    manager = DragosPlatformManager(
        base_url="https://dragos-sitestore.plant.local",
        api_key="your-api-key",
        api_secret="your-api-secret",
        verify_ssl=True,
    )

    manager.validate_deployment()
    manager.generate_siem_integration_config("splunk")

    print(f"\n--- 近期高严重性通知 ---")
    notifications = manager.get_notifications(severity="high", limit=10)
    for n in notifications:
        print(f"  [{n.get('severity', '').upper()}] {n.get('title', '无标题')}")
        print(f"    类别: {n.get('category')} | 时间: {n.get('timestamp')}")
        print(f"    资产: {', '.join(n.get('affected_assets', []))}")
        print(f"    MITRE ICS: {n.get('mitre_technique', 'N/A')}")
```

### 步骤 2:配置检测分析和知识包

```yaml
# Dragos平台检测配置
# 针对制造/能源环境调优

detection_configuration:
  knowledge_pack:
    auto_update: true
    update_schedule: "weekly"
    include_threat_groups:
      - "VOLTZITE"    # 针对能源行业,窃取OT图表
      - "GRAPHITE"    # 2025年新威胁组织,针对ICS
      - "BAUXITE"     # 2025年新威胁组织,针对ICS
      - "CHERNOVITE"  # 开发了PIPEDREAM/INCONTROLLER框架
      - "ELECTRUM"    # 与Industroyer/CrashOverride相关
      - "KAMACITE"    # 针对能源行业初始访问

  detection_categories:
    network_baseline:
      enabled: true
      learning_period_days: 30
      alert_on:
        - "new_communication_pair"
        - "new_protocol_detected"
        - "new_device_on_network"
        - "protocol_anomaly"

    threat_detection:
      enabled: true
      alert_on:
        - "known_malware_ioc"
        - "threat_group_ttp"
        - "lateral_movement"
        - "command_and_control"
        - "data_exfiltration"

    vulnerability_correlation:
      enabled: true
      alert_on:
        - "active_exploitation_attempt"
        - "vulnerability_with_public_exploit"

  protocol_monitoring:
    modbus:
      monitor_writes: true
      baseline_function_codes: true
      baseline_register_ranges: true
    dnp3:
      monitor_control_commands: true
      detect_firmware_updates: true
    s7comm:
      detect_cpu_stop: true
      detect_program_download: true
    opc_ua:
      monitor_method_calls: true
      detect_browsing: true
    ethernet_ip:
      monitor_cip_services: true
      detect_firmware_flash: true

  alert_routing:
    critical:
      notify: ["ot_soc_team", "plant_manager"]
      siem_forward: true
      auto_ticket: true
    high:
      notify: ["ot_soc_team"]
      siem_forward: true
      auto_ticket: true
    medium:
      siem_forward: true
    low:
      siem_forward: true
```

## 核心概念

| 术语 | 定义 |
|------|------|
| Dragos平台 | 专为OT网络安全打造的平台,具备ICS环境的资产可见性、威胁检测和漏洞管理能力 |
| 知识包(Knowledge Pack) | Dragos威胁情报更新包,包含针对ICS特有新威胁、恶意软件和漏洞利用的检测分析 |
| SiteStore | Dragos中央管理服务器,汇聚站点内所有已部署传感器的数据 |
| VOLTZITE | Dragos追踪的威胁组织,针对能源行业OT环境,窃取GIS数据和ICS网络图 |
| PIPEDREAM/INCONTROLLER | 由CHERNOVITE开发的模块化ICS攻击框架,针对Schneider/OMRON PLC和OPC UA服务器 |
| 邻域守护者(Neighborhood Keeper) | Dragos社区防御计划,在参与的OT环境之间共享匿名化威胁数据 |

## 常见场景

### 场景:检测能源公用事业中的VOLTZITE侦察活动

**背景**:部署在电力公司的Dragos传感器检测到异常的OPC UA浏览活动以及从工程师工作站窃取设备配置数据。

**处理方法**:
1. 查看Dragos通知中的MITRE ATT&CK ICS技术映射
2. 识别执行OPC UA浏览的源主机(检查是否为授权的工程师工作站)
3. 检查Dragos威胁情报中与VOLTZITE TTPs的关联
4. 检查被访问数据的范围(GIS数据、网络图、ICS配置文件)
5. 将被攻陷的工作站从OT网络隔离
6. 检查其他OT系统的横向移动指标
7. 如确认威胁组织归因,联系Dragos专业服务
8. 作为关键基础设施网络事件向CISA报告

**注意事项**:不要将OPC UA浏览告警视为误报——VOLTZITE专门使用这一技术进行预置。确保Dragos知识包是最新的以检测最新的VOLTZITE指标。在收集取证证据之前不要重新镜像被攻陷的工作站。

## 输出格式

```
DRAGOS OT监控部署报告
==========================================
站点: [站点名称]
日期: YYYY-MM-DD

传感器部署:
  传感器总数: [数量]
  正常运行: [数量]
  覆盖率: [已监控OT网段的百分比]

资产可见性:
  OT资产总数: [数量]
  PLC: [数量] | HMI: [数量] | 网络设备: [数量]
  协议: [列表]

威胁检测:
  相关活跃威胁组织: [数量]
  已加载检测分析: [数量]
  告警(过去30天): [按严重程度分类的数量]

SIEM集成:
  状态: [已连接/未连接]
  已转发事件(过去24小时): [数量]
```

Related Skills

performing-paste-site-monitoring-for-credentials

9
from killvxk/cybersecurity-skills-zh

使用自动化抓取和关键词匹配技术,监控 Pastebin 和 GitHub Gists 等粘贴站点上的泄露凭证、API 密钥和敏感数据转储,实现早期泄露检测

performing-dark-web-monitoring-for-threats

9
from killvxk/cybersecurity-skills-zh

暗网威胁监控涉及系统性扫描 Tor 隐藏服务、地下论坛、粘贴站点和暗网市场,以识别针对组织的威胁,包括泄露凭据、数据泄露、威胁行为者讨论、漏洞利用工具和预谋攻击。

performing-brand-monitoring-for-impersonation

9
from killvxk/cybersecurity-skills-zh

监控域名、社交媒体、移动应用和暗网渠道中的品牌仿冒攻击,检测针对组织的网络钓鱼活动、虚假站点和未授权品牌使用行为。

monitoring-darkweb-sources

9
from killvxk/cybersecurity-skills-zh

监控暗网论坛、市场、粘贴站点和勒索软件泄露站点,寻找组织资产提及、泄露凭据、威胁攻击和威胁行为者通信,提供早期预警情报。当建立暗网监控覆盖、调查特定数据泄露声明,或用暗网背景丰富事件调查时使用。适用于涉及暗网 OSINT、泄露站点监控、凭据暴露、Recorded Future 暗网或 Tor 隐藏服务情报的请求。

implementing-zero-trust-with-hashicorp-boundary

9
from killvxk/cybersecurity-skills-zh

使用 HashiCorp Boundary 实现具备动态凭据代理、会话录制和 Vault 集成的身份感知零信任基础设施访问管理。

implementing-zero-trust-with-beyondcorp

9
from killvxk/cybersecurity-skills-zh

使用身份感知代理(IAP,Identity-Aware Proxy)、上下文感知访问策略、设备信任验证和 Access Context Manager,部署 Google BeyondCorp Enterprise 零信任访问控制,对 GCP 资源和内部应用强制执行基于身份和安全态势的访问。

implementing-zero-trust-network-access

9
from killvxk/cybersecurity-skills-zh

通过配置身份感知代理、微分段、基于条件访问策略的持续验证,以及在 AWS、Azure 和 GCP 环境中以 BeyondCorp 风格的架构替代传统 VPN 访问,在云环境中实施零信任网络访问(ZTNA)。

implementing-zero-trust-network-access-with-zscaler

9
from killvxk/cybersecurity-skills-zh

使用 Zscaler 实施零信任网络访问(Zero Trust Network Access,ZTNA),通过 Zscaler Private Access(ZPA)配置应用分段、访问策略和连接器,替代传统 VPN 架构

implementing-zero-trust-in-cloud

9
from killvxk/cybersecurity-skills-zh

本技能指导组织按照 NIST SP 800-207 和 Google BeyondCorp 原则在云环境中实施零信任(Zero Trust)架构,涵盖以身份为中心的访问控制、微分段(Micro-Segmentation)、持续验证、设备信任评估,以及部署身份感知代理(Identity-Aware Proxy)以消除 AWS、Azure 和 GCP 环境中的隐式网络信任。

implementing-zero-trust-for-saas-applications

9
from killvxk/cybersecurity-skills-zh

使用 CASB、SSPM、条件访问策略、OAuth 应用治理和会话控制,为 SaaS 应用实施零信任访问控制, 对云托管服务强制执行身份验证、设备合规性检查和数据保护。

implementing-zero-trust-dns-with-nextdns

9
from killvxk/cybersecurity-skills-zh

将 NextDNS 实施为零信任 DNS 过滤层,提供加密解析、威胁情报阻断、隐私保护,以及跨所有端点的组织策略执行。

implementing-zero-standing-privilege-with-cyberark

9
from killvxk/cybersecurity-skills-zh

部署 CyberArk Secure Cloud Access,通过基于时间、权限和审批控制的即时访问,在混合云和多云环境中消除常设权限。