bariskececi/Strata
GitHub: bariskececi/Strata
Strata 是一款被动的 OT 网络映射工具,通过离线分析 pcap 抓包文件重建工厂架构并生成 Purdue 模型资产图与风险发现,全程不向网络发送任何数据包。
Stars: 4 | Forks: 0
# Strata

**仅通过数据包捕获即可映射您的整个 OT 网络 —— 每一台 PLC、HMI 和协议 —— 而无需发送任何数据包。**
Strata 读取 `.pcap` 文件并重建工厂架构:它能够发现控制器、
SCADA 服务器、工程师工作站和历史记录仪,通过它们使用的协议和运行的硬件来判断每个设备的角色,将每个资产放置在 **Purdue 模型** 中,并将整个网络绘制为实时拓扑图,同时用红色标记出危险流量。
它绝不接触网络。没有扫描,没有探测,没有数据包 —— 因此它不会导致脆弱的 PLC 离线,这正是为什么大多数控制网段禁止使用主动扫描器的原因。只需将其指向 SPAN/镜像捕获的文件,即可读取映射图。
## 为什么
商业 OT 可见性平台(Nozomi、Claroty、Dragos)每年需要花费数万美元才能实现这一点。其核心理念 —— 被动地将捕获的流量转化为资产清单和 Purdue 映射图 —— 并不需要成为一个黑盒。Strata 是一个小巧、易读、“足够好用”的开源版本,您今天就可以在单个捕获文件上运行它。
## 快速开始
```
pip install -r requirements.txt
# 分析 capture(包含一个内置的 demo plant)
python run.py analyze samples/demo_plant.pcap
# 打开 interactive map
python run.py dashboard --results strata_results.json
# -> http://localhost:3001
```
还没有自己的捕获文件?内置的 `samples/demo_plant.pcap` 是一个合成工厂环境 —— 包含工程师工作站、SCADA、历史记录仪、三个 PLC、一个 HMI 以及一台直接向控制器写入数据的互联网主机。
## 它能发现什么
每个资产都会根据其 **角色** 进行分类,并根据其提供与发起的协议以及网络上观察到的操作,将其放置在相应的 **Purdue 层级** 上:
| 层级 | 区域 | Strata 通常放置在此处的典型资产 |
|-------|------|-----------------------------------|
| 5 | 外部 / 互联网 | OT 通信中出现的公网 IP |
| 4 | 企业 | IT 主机、笔记本电脑、服务器 |
| 3.5 | DMZ / 网络 | 跳板机、基础设施 |
| 3 | 站点运营 | 历史记录仪、工程师工作站 |
| 2 | 监督控制 | SCADA 服务器、HMI |
| 1 | 控制 | PLC、RTU、控制器 |
被动解码的协议包括:Modbus/TCP、Siemens S7comm、EtherNet/IP (CIP)、DNP3、
IEC 60870-5-104、BACnet/IP、OPC UA、PROFINET、Omron FINS、Mitsubishi MELSEC,以及常见的 IT 协议,以便它能够区分控制器和文件服务器。硬件供应商信息来源于 MAC OUI(Siemens、Rockwell、Schneider、Phoenix Contact、
Moxa、Beckhoff 等)。
## 它会标记什么
发现结果是核心 —— 即 OT 分析师真正希望呈现出来的模式:
- **OT 暴露在互联网** —— 工业协议在与公网 IP 的通信中出现。每次都属于严重级别。
- **Purdue 边界违规** —— 企业或外部主机直接与 Level 1 控制器通信,跳过了监督控制和 DMZ 层。
- **控制器上的明文管理** —— 指向 PLC 的 Telnet/FTP/HTTP/VNC。
- **来自意外来源的控制写入** —— 来自无权更改进程的主机对控制器进行写入操作。
- **PLC 编程活动** —— 块下载 / 逻辑更改,以便您可以将它们与授权的变更窗口进行匹配。
- **使用中的无认证协议** —— 清单级别的感知,能够发现每个运行无内置身份验证协议的控制器。
每个发现结果都会引用其来源的确切流量。
## 工作原理

```
capture.pcap
│ read-only (dpkt)
▼
ingest ─▶ assets + flows ─▶ passive protocol decode (reads / writes / programming)
│
├─▶ vendor from MAC OUI
├─▶ Purdue level + role from protocols served vs initiated
└─▶ risk findings from cross-layer / external / write / cleartext patterns
│
▼
JSON results ──▶ topology dashboard
```
一切都是离线且自包含的:输入捕获文件,输出 JSON 清单和单页映射图。仪表盘内置了其自身依赖的库和底图,因此它可以在没有互联网的气隔分析师工作站上运行。
## 捕获流量以供分析
Strata 用于分析捕获文件;它不会替您进行嗅探。请通过安全方式获取捕获文件:
- OT 交换机上的 **SPAN/镜像端口**,或被动的 **网络 TAP**。
- 在连接到镜像的主机上运行 `tcpdump -i -w plant.pcap`。
- 来自您的 IDS/Zeek 传感器的现有捕获文件。
然后运行:`python run.py analyze plant.pcap`。
## 负责任地使用
Strata 是被动且只读的 —— 它只打开文件,从不建立网络连接。请仅在你拥有或被授权评估的网络上运行它。来自工业网络的捕获文件可能包含敏感的流程和拓扑数据;请妥善处理和存储它们。
## 路线图
- 更多协议解码器:PROFINET DCP 资产发现、CIP 设备身份、OPC UA endpoint 解析
- 来自被动 banner 的资产详情(S7 SZL、CIP Identity、HTTP server headers)
- 差异模式:比较两次捕获以发现新增或变更的资产
- 导出:CSV 资产清单、STIX 和可打印的评估报告
- 实时捕获模式(可选启用),适用于镜像端口上的传感器
## 许可证
MIT — 查看 [许可证](LICENSE)。
标签:Homebrew安装, OT网络, PKINIT, 占用监测, 工控安全, 拓扑发现, 被动映射, 资产管理, 逆向工具