bariskececi/Strata

GitHub: bariskececi/Strata

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

Stars: 4 | Forks: 0

# Strata ![Strata 演示](https://static.pigsec.cn/wp-content/uploads/repos/cas/5c/5c0a9623a98da40e1b5681da2370b3634bbb443a2ad3c14fb666b42e863686fe.gif) **仅通过数据包捕获即可映射您的整个 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 编程活动** —— 块下载 / 逻辑更改,以便您可以将它们与授权的变更窗口进行匹配。 - **使用中的无认证协议** —— 清单级别的感知,能够发现每个运行无内置身份验证协议的控制器。 每个发现结果都会引用其来源的确切流量。 ## 工作原理 ![Strata 仪表盘](https://static.pigsec.cn/wp-content/uploads/repos/cas/2a/2ad7d0e355948c4caa0849feed8ec83e49645c600253476f45bbd8bd3a7ffa32.png) ``` 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, 占用监测, 工控安全, 拓扑发现, 被动映射, 资产管理, 逆向工具