DINA-community/icsnpp-iec61850-goose
GitHub: DINA-community/icsnpp-iec61850-goose
基于 Spicy 开发的 Zeek 插件,用于解析和记录 IEC 61850 GOOSE 工业控制协议流量,生成详细的协议字段日志。
Stars: 1 | Forks: 1
# IEC 61850-8-1 GOOSE Parser
IEC 61850 GOOSE (Generic Object Oriented System Event) 是一种用于工业控制系统的通信协议。
它基于 IEEE 802.1Q VLAN 或以太网帧。
## 概述
此 IEC 61850 goose 解析器是一个 Zeek 插件(使用 spicy 编写),用于解析和记录 Goose 协议使用的字段。
此解析器生成日志文件 `goose.log`,定义见 [scripts/main.zeek](scripts/main.zeek)。
## 安装
此脚本作为 [Zeek Package Manager](https://docs.zeek.org/projects/package-manager/en/stable/index.html) 的包提供。它需要 [Spicy](https://docs.zeek.org/projects/spicy/en/latest/) 和 [Zeek Spicy plugin](https://docs.zeek.org/projects/spicy/en/latest/zeek.html)。
```
cmake . && make install
zeek -NN | grep ANALYZER_SPICY_GOOSE
```
如果此包是从 `zkg` 安装的,它将被添加到可用的插件中。可以通过运行 `zeek -NN` 进行测试。如果安装正确,您将在 `Zeek::Spicy` 分析器列表下看到 `ANALYZER_SPICY_GOOSE`。
如果您已配置 `zkg` 加载包(参见 [`zkg` Quickstart Guide](https://docs.zeek.org/projects/package-manager/en/stable/quickstart.html) 中的 `@load packages`),此插件和脚本将被自动加载并准备就绪。
## 日志功能
### Goose 日志 (goose.log)
此解析器分析以太网类型为 `0x88b8` 的以太网或 VLAN 帧。
#### 捕获字段
以下数据字段(在 IEC 61850-8-1 附录 A.3 中指定)被写入 `goose.log`。
| 字段 | 类型 | 描述 | 参考 |
|-----------------|--------|-----------------------------------------|-----------|
| ts | time | 时间戳(网络时间) | - |
| appid | int | 应用 ID | IEC 61850-8-1 附录 C.2 PDU 字段 |
| length | int | 数据包长度 | IEC 61850-8-1 附录 C.2 PDU 字段 |
| gocbRef | string | GOOSE 控制块引用 | IEC 61850-7-2 第 18.2.1.2 章 |
| timeAllowedtoLive | int | 此字段表示允许 GOOSE 数据包在网络中存活的时间。它指定了数据包在过期或被丢弃之前到达目的地所需的最大持续时间。 | IEC 61850-8-1 第 18.1.2.5.1 章 |
| dataSet | string | 此数据包内传输的数据集 | IEC 61850-8-1 第 18.1.2.1 章 |
| t | time | 数据集的时间戳 | IEC 61850-7-2 第 18.2.3.1 章 |
| stNum | int | stNum 字段代表“状态编号”,表示 GOOSE 消息的序列号。它用于确保消息的正确顺序,并检测任何丢失或乱序的数据包。 | IEC 61850-7-2 第 18.2.3.1 章 |
| sqNum | int | sqNum 字段代表“序列号”,表示 GOOSE 消息中样本的序列号。它用于识别和跟踪消息序列中的单个样本。 | IEC 61850-7-2 第 18.2.3.1 章 |
| simulation | bool | 指示数据包中的数据是否来自仿真 | IEC 61850-7-2 第 18.2.3.1 章 |
| confRev | int | confRev 字段代表“配置修订版”,表示与 GOOSE 数据包关联的配置的修订号。它用于确保接收方拥有正确的配置版本以正确解释数据。 | IEC 61850-7-2 第 18.2.3.1 章 |
| ndsCom | bool | ndsCom 字段代表“非破坏性样本比较”,是一个布尔值,指示 GOOSE 数据包是否包含非破坏性样本。非破坏性样本允许接收设备将接收到的值与先前的值进行比较,而不会在系统中引起任何更改或中断。 | IEC 61850-7-2 第 18.2.3.1 章 |
| numDatSetEntries | int | 数据集中的条目数 | IEC 61850-8-1 第 18.1.2.5.2 章 |
## 其他
该软件由 Fraunhofer [Institute Advanced Systems Technology (AST)](https://www.iosb-ast.fraunhofer.de/en.html)(Fraunhofer [ISOB](https://www.iosb.fraunhofer.de/en.html) 的一个分支)的电力能源系统研究小组代表 [BSI](https://www.bsi.bund.de)(联邦信息安全办公室)开发。
## 许可证
版权所有 (c) 2023-2025 DINA-Community。[查看许可证](/LICENSE)
### 第三方许可证
本项目使用了 [spicy-ldap](https://github.com/zeek/spicy-ldap/blob/main/analyzer/asn1.spicy) 的代码,根据 [asn1.spicy](analyzer/asn1.spicy) 中提供的许可证用于所有提供的解析器。
标签:Bash脚本, ETW劫持, GOOSE协议, ICS, IEC 61850, NTLM Relay, Rootkit, SCADA, Spicy, VLAN, Zeek, 以太网帧, 协议解析器, 哈希传递, 工业控制系统, 开源安全工具, 日志记录, 电力通信, 网络安全监控, 网络流量分析, 逆向工程平台, 防御绕过, 驱动开发