vedantbhamre/SCD-driven-Zeek-Suricata-rule-generation

GitHub: vedantbhamre/SCD-driven-Zeek-Suricata-rule-generation

该项目是一个概念验证原型,通过解析 IEC 61850 SCD 变电站配置文件自动构建资产模型并生成 Suricata 和 Zeek IDS 规则,解决变电站配置变更后手动维护检测规则的痛点。

Stars: 0 | Forks: 0

# SCD 到 IDS 规则生成(原型) 这是一个小型概念验证项目,旨在探索从 IEC 61850 变电站配置描述(SCD)文件自动生成 IDS 规则的想法。 这个原型不再在变电站配置发生更改时手动维护 IDS 规则,而是解析 SCD,构建一个中间资产模型,并使用该模型生成基础的 Suricata 和 Zeek 规则模板。 ## 动机 SCD 文件已经包含了描述网络所需的信息: - 存在哪些设备 (IED) - 它们的网络地址 (IP/MAC) - 它们的通信配置 - GOOSE 发布者及其关联的 APPID 该原型不是直接从 XML 生成 IDS 规则,而是首先将 SCD 转换为中间的 **AssetModel**。 这种分离使得解析器独立于规则生成器,并允许将相同的资产模型重用于不同的输出。 ``` SCD File │ ▼ parser.py │ ▼ AssetModel │ ├──────────────┐ ▼ ▼ Suricata Zeek Rule Gen Rule Gen ``` 这种设计也使得以后可以轻松扩展项目,增加其他输出方式,例如 NetBox 资产导入或网络可视化。 ## 项目结构 ``` IDS/ ├── sample_data/ │ └── example.scd │ ├── src/ │ ├── parser.py │ ├── asset_model.py │ ├── rulegen.py │ └── main.py │ ├── output/ │ ├── asset_model.json │ ├── generated_suricata.rules │ └── generated_zeek.zeek │ └── tests/ └── test_parser.py ``` ## 流程 ### 1. 解析 SCD 解析器提取以下内容: - IED 和访问点 - IP 地址 - MAC 地址 - GOOSE 发布者 - APPID - VLAN 信息 ### 2. 构建资产模型 提取的信息被转换为简单的内部表示。 AssetModel 作为变电站资产及其通信信息的清晰描述,而不与 XML 或特定的 IDS 引擎绑定。 ### 3. 生成 IDS 规则 随后使用 AssetModel 为两个不同的 IDS 引擎生成输出。 ### Suricata Suricata 是基于特征(signature-based)的。 该原型生成: - 已知资产 IP 列表 - 检测未知 IP 地址的规则 - 检测意外 GOOSE APPID 的规则 ### Zeek Zeek 是事件驱动的。 该原型不是生成许多单独的规则,而是生成: - 一个可重用的 Zeek 脚本 - 从 AssetModel 填充的资产表 检测逻辑保持不变,只是不同变电站的资产数据会有所不同。 ## 运行原型 在 `src` 目录下执行: ``` python3 main.py ../sample_data/example.scd --out-dir ../output ``` 生成的文件将写入: ``` output/ ``` ## 运行测试 ``` python3 tests/test_parser.py ``` 这些测试用于验证解析器是否从示例 SCD 文件中提取了预期的资产。 ## 验证 ### Suricata 生成的规则使用以下命令进行了验证: ``` suricata -T ``` 规则成功加载,没有语法错误。 ### Zeek Zeek 脚本是由 AssetModel 生成的,但未在运行中的 Zeek/Malcolm 环境中进行验证。 GOOSE 事件处理程序有意留作占位符,因为在开发期间无法获取 Malcolm/Zeek 设置暴露的确切事件。 ## 当前范围 此原型目前专注于: - 从 SCD 提取资产 - GOOSE 发布者提取 - 资产模型生成 - 基础 Suricata 规则生成 - 基础 Zeek 规则生成 ## 后续工作 可能的扩展包括: - 解析 GOOSE 订阅者信息 (ExtRef) - MMS 和 Report Control Block - 采样值 (SV) - 与 NetBox 集成 - 在完整的 Malcolm 部署中进行验证 - 基于生成的资产模型添加更多 IDS 规则 ## 备注 本仓库旨在作为一个小型概念验证,以探索将 IEC 61850 SCD 文件转换为 IDS 配置的一种可能流程。 重点在于理解整体架构——从 SCD 解析、到资产建模、再到 IDS 规则生成——而不是实现一个完整的生产就绪解决方案。
标签:IDS规则生成, IEC 61850, Metaprompt, PKINIT, Python, Rootkit, Suricata, Zeek, 工控安全, 无后门, 现代安全运营, 逆向工具