eris-ot/glassmarlin
GitHub: eris-ot/glassmarlin
GlassMarlin 是 NSA 已弃用工具 GrassMarlin 的现代化跨平台替代品,专为 OT/ICS 环境设计,提供开箱即用的离线 PCAP 分析、拓扑发现、威胁狩猎与风险评估工作台。
Stars: 0 | Forks: 0
# GlassMarlin
GrassMarlin 是 NSA 发布的 OT 拓扑映射工具,多年来现场防御人员一直悄悄将其安装在任务笔记本电脑上。它曾很好用,直到它不再好用——被弃用、受限于 Java、单平台、不再维护。GlassMarlin 在它停下的地方重新出发:同样的防御实用程序,经过现代化改造、跨平台,并在拓扑映射之上提供完整的风险分析 + MITRE ATT&CK + IOC + 基线 + sub-PCAP-carve 技术栈。

## 它的功能
- **从 PCAP 映射 OT 网络。** 提供带有 Purdue 层级推断、供应商指纹识别、资产角色检测的拓扑图。内置 30 多个 OT 协议解析器:Modbus, S7, DNP3, IEC 60870-5-104, EtherNet/IP, OPC UA, BACnet, PROFINET, OMRON FINS, HART-IP, EtherCAT, Sparkplug B, IEC 61850 (MMS / GOOSE / SV) 等等。
- **揭示风险发现。** 跨 Purdue 层通信、明文工程流量、信标活动、可疑外部通信、端口扫描、缺失身份验证、OPC `SecurityMode=None`、来自意外源的 Modbus 写入——每一项都附带 IEC 62443 SR 映射和修复指南。
- **MITRE ATT&CK 对齐。** 每个发现均映射到(ICS + Enterprise)技术。战术矩阵工作台视图。一键导出为 ATT&CK Navigator 层 JSON。
- **IOC 威胁狩猎。** 粘贴 CISA 公告、导入 STIX 包或手动整理列表。使用 IP / 域名 / SHA-256 / MD5 / MAC / OUI 扫描捕获的节点、DNS 查询、流和 payload。
- **按资产划分的基线。** 遍历您加载的每个捕获,并显示特定主机发生的变化——自上次以来出现的新对等端、新协议、新发现以及供应商/角色/设备类型的漂移。
- **时间窗口提取。** 在捕获时间轴上拖动一个片段,仅将这些数据包提取为供 Wireshark 使用的 sub-PCAP。拖动操作在本地进行——无需上传,无需服务器。
- **适配 SIEM 的导出。** 每次扫描都会在工作台视图旁生成 `report.json` + OCSF NDJSON + STIX 2.1 bundle + Sigma 规则 + ATT&CK Navigator 层。可直接导入 Splunk, Sentinel, AWS Security Lake——或上传到团队的 [MarlinSpike 服务器](https://github.com/eris-ot/marlinspike) 以进行跨任务协作。
## 没有外部依赖。绝不例外。
所有依赖都内置于二进制文件中:
- **Python 运行时 + 每个 Python 依赖** — 通过 `python-build-standalone` 打包。无需 `pip install`,无需 venv,无需系统 Python。
- **PCAP 解析 + 协议剖析** — 纯 Rust 实现([`marlinspike-dpi`](https://github.com/eris-ot/marlinspike-dpi))。无需 libpcap,无需 Npcap,Windows 上也无需安装 Wireshark。不需要调用 `tshark.exe`。
- **时间窗口提取** — 纯 Rust 实现。无 `editcap` 依赖。
- **数据库** — 嵌入式 SQLite。无需安装 Postgres,无需管理数据库服务器。
- **MITRE ATT&CK 运行时** — `marlinspike-mitre` 规则包已内置。
- **插件**(MITRE / APT 横向移动 / ARP 投毒检测) — 已编译内置。
在 Windows 上:只需安装 `GlassMarlin.msi`。在 macOS 上:提供已签名的 `GlassMarlin.dmg`,可顺利通过 Gatekeeper。在 Linux 上:提供 `GlassMarlin.AppImage`,可在任何 glibc 2.28+ 主机上运行。这些都不需要额外的安装。
## 用途
防御人员的本地工具。你可以装在任务笔记本电脑上的工具。你可以在隔离主机上、在飞往站点的航班上、在供应商的 SCIF(敏感信息设施)中、在地下掩体里运行它。不需要基础设施。不需要互联网。
当你重新连接网络时,它生成的报告可以顺畅地上传到[团队 MarlinSpike 服务器](https://github.com/eris-ot/marlinspike),以进行协作、项目历史记录、审计追踪和跨任务情报共享。
## 何时使用 GlassMarlin 与团队服务器
| 使用 **GlassMarlin** 的场景 | 使用[团队服务器](https://github.com/eris-ot/marlinspike)的场景 |
|---|---|
| 你有一个 PCAP 和一台笔记本电脑 | 你的团队有一个持续数周的任务 |
| 你在现场并且主机没有基础设施 | 你想要共享项目、共享 IOC 列表、审计日志 |
| 你在飞机上、在 SCIF 中、在掩体里 | 你想要跨捕获基线和纵向资产画像 |
| 你想要零配置的快速分类 | 你想要多用户协作 |
| 你生成临时报告 | 你生成带有审计追踪的任务级工件 |
| 你在同类主机上替换 GrassMarlin | 你正在整合团队的分类工作流 |
两者拥有相同的工作台用户体验。相同的报告契约。当你重新连接时,报告可以从 GlassMarlin 流向团队服务器。
## 这能替代什么
| 工具 | GlassMarlin 做得更好的地方 |
|---|---|
| **GrassMarlin** (NSA, 2015, 已弃用) | 现代化 UI。跨平台(GrassMarlin 是 Java 且仅对 Windows 友好)。积极的 OT 协议解析器支持。拓扑图之外还提供风险发现 + ATT&CK + IOC。适配 SIEM 的导出。持续维护中。 |
| **NetworkMiner** (免费版) | 专注于 OT。Purdue 分层。IEC 62443 对齐。ATT&CK 映射。AGPL 而非专有许可。 |
| **Wireshark + 手动分析** | 相同的数据包级保真度(它使用了我们的 Rust DPI 引擎,可解析 30 多种 OT 协议),并在其上增加了分析师级别的层:预构建的发现规则、资产盘点、基线差异、IOC 匹配。 |
| **Dragos / Claroty / Nozomi 设备** | 不同的部署形态。那些是持续监控传感器;而这是防御人员的分类笔记本电脑工具。可以与它们配合使用,但不能替代。 |
## 状态
**v0.1.2 — 已发布。** 五个二进制文件:macOS (Apple Silicon + Intel)、Linux (x86_64 + ARM64, AppImage + .deb)、Windows x86_64 (.msi + .exe)。捆绑的 Rust DPI 引擎随每个二进制文件一起发布——无需 libpcap,无需 Npcap,无需安装 Wireshark。自动更新器将在 v0.3.0 版本中推出。请参阅下面的 [CHANGELOG](CHANGELOG.md) 和 [Roadmap](#roadmap)。
## 安装
请参阅 [docs/install.md](docs/install.md) 获取完整的各平台安装指南(包括首次启动时绕过 Gatekeeper/SmartScreen 的方法)。
```
# macOS — Apple Silicon. 拖拽至应用程序,首次启动时执行:
# xattr -d com.apple.quarantine /Applications/GlassMarlin.app
curl -L https://github.com/eris-ot/glassmarlin/releases/latest/download/GlassMarlin_0.1.2_aarch64.dmg -o GlassMarlin.dmg
open GlassMarlin.dmg
# Linux AppImage — chmod 后运行。
curl -L https://github.com/eris-ot/glassmarlin/releases/latest/download/GlassMarlin_0.1.2_amd64.AppImage -o GlassMarlin.AppImage
chmod +x GlassMarlin.AppImage && ./GlassMarlin.AppImage
# Linux .deb — apt install 本地文件。
curl -L https://github.com/eris-ot/glassmarlin/releases/latest/download/GlassMarlin_0.1.2_amd64.deb -o glassmarlin.deb
sudo apt install ./glassmarlin.deb
# Windows — .msi 安装程序。首次启动时 SmartScreen → 更多信息 → 仍要运行。
# https://github.com/eris-ot/glassmarlin/releases/latest/download/GlassMarlin_0.1.2_x64_en-US.msi
```
所有版本均由 ERISFORGE Ltd. (`8C4879D492DE808D52D2C3F02CBC9B8E1FBAF06C`) 进行 GPG 签名,并经过 OpenTimestamp (比特币锚定) 时间戳认证。完整的验证方法请参见 [docs/verifying-releases.md](docs/verifying-releases.md):
```
gpg --recv-keys 2CBC9B8E1FBAF06C
gh release download v0.1.2 --repo eris-ot/glassmarlin
gpg --verify SHA256SUMS.asc SHA256SUMS
sha256sum -c SHA256SUMS
ots verify SHA256SUMS.ots
git tag -v v0.1.2 # also verifies the source release commit
```
## 首次运行
1. 打开 GlassMarlin。将显示一个包含启动画面的窗口。
2. 首次启动会解压捆绑的运行时(约 3 秒)。后续启动:约 1 秒。
3. 工作台加载完成。您将以 `admin` 身份登录,系统会将随机生成的密码写入本地凭证文件(权限模式 0600)——请从个人资料页面更改此密码。
4. 将 PCAP 拖放到上传页面(或使用文件选择器)。
5. 进行分类鉴定。请参阅[工作台指南](https://github.com/eris-ot/marlinspike/blob/main/docs/workbench-guide.md)和[分类方法论](https://github.com/eris-ot/marlinspike/blob/main/docs/triage-methodology.md)。
## 数据存储位置
在 macOS 上:`~/Library/Application Support/GlassMarlin/`
```
runtime/ extracted bundled Python + marlinspike (managed; safe to delete to force re-extraction)
marlinspike.db local SQLite — projects, scans, IOC lists, tags
marlinspike-data/ uploaded PCAPs, generated reports, OCSF / STIX / Sigma / Navigator exports
secret_key per-installation session-signing secret (mode 0600)
```
在 Linux 上:`~/.local/share/GlassMarlin/`。在 Windows 上:`%LOCALAPPDATA%\GlassMarlin\`。
## 实时捕获
GlassMarlin 是只读的——它分析您已经收集的捕获内容(通过 Wireshark, tcpdump, span 端口, 分路器)。它不会打开原始套接字,也不需要提升的权限。这是有意为之的:一个以 `CAP_NET_RAW` 权限运行的桌面应用程序将是一种安全倒退。
要实现持续的主机实时捕获,请运行带有 `marlinspike-capd` sidecar 的[团队服务器](https://github.com/eris-ot/marlinspike)。这是一种具有独立安全模型的独立部署形态。
## 许可证
AGPL-3.0-or-later(与 MarlinSpike 匹配)。源代码位于 https://github.com/eris-ot/glassmarlin。
AGPL 的网络分发条款意味着,如果您将 GlassMarlin 的 Web UI 提供给远程用户使用(您不应该这样做——它默认绑定到 localhost),您就有义务提供源代码。对于桌面使用场景,该条款不会被触发。
## 文档
| 如果你想… | 请阅读 |
|---|---|
| 在 macOS / Linux / Windows 上安装 + 绕过 Gatekeeper / SmartScreen | [docs/install.md](docs/install.md) |
| 验证版本签名 (GPG, OpenTimestamps, 未来的 Sigstore) | [docs/verifying-releases.md](docs/verifying-releases.md) |
| 调试崩溃、端口冲突、管理员密码丢失等问题 | [docs/troubleshooting.md](docs/troubleshooting.md) |
| 了解 Tauri + 捆绑 Python 的架构(面向贡献者) | [docs/architecture.md](docs/architecture.md) |
| 使用工作台本身——拓扑、发现、IOC 狩猎、基线 | [工作台指南](https://github.com/eris-ot/marlinspike/blob/main/docs/workbench-guide.md) |
| 从零开始对捕获进行分类直到生成报告 | [分类方法论](https://github.com/eris-ot/marlinspike/blob/main/docs/triage-methodology.md) |
| 贡献代码 | [CONTRIBUTING.md](CONTRIBUTING.md) |
| 报告安全问题 | [SECURITY.md](SECURITY.md) |
| 查看各版本之间的变更 | [CHANGELOG.md](CHANGELOG.md) |
## 路线图
- **v0.1.0** — macOS Apple Silicon `.dmg`、Linux `.AppImage` + `.deb`、Windows `.msi` + `.exe`。捆绑了 CPython + marlinspike 代码库 + 所有依赖。
- **v0.1.1** — 在所有三个平台的二进制文件中内置 Rust DPI 引擎([`marlinspike-dpi`](https://github.com/eris-ot/marlinspike-dpi))——Windows 二进制文件现在真正干净了(无需 libpcap,无需 Npcap,无需安装 Wireshark)。纯 Python PCAP / PCAPNG 验证器在阶段 1 验证中移除了残余的 `capinfos` / `tshark` 依赖。
- **v0.1.2** — *当前版本。* 增加了 macOS Intel + Linux ARM64 构建——每次发布包含五个二进制文件。
- **v0.2.0** — 通过 CI 发布工作流支持 Sigstore + GitHub artifact attestations。用纯 Python 替换时间窗口提取路径中残余的 `tshark` + `editcap` 调用。
- **v0.3.0** — Tauri 自动更新器(已签名的增量更新)。
- **v0.5.0** — 原生文件关联:双击 `.pcap` 文件即可打开分析器。
- **v1.0.0** — 原生 Rust 内部组件取代捆绑的 Python。二进制文件缩小约 6 倍,冷启动从约 3 秒降至约 300 毫秒。用户体验保持不变。
## 另请参阅
- [`eris-ot/marlinspike`](https://github.com/eris-ot/marlinspike) — 团队服务器 (Python Web 应用,多用户,项目工作台)
- [`eris-ot/marlinspike-dpi`](https://github.com/eris-ot/marlinspike-dpi) — Rust DPI 引擎
标签:AMSI绕过, BACnet, CCTV/网络接口发现, CISA, Cloudflare, DNP3, GrassMarlin替代, ICS安全, ICS漏洞, IEC 62443, IOC狩猎, IP 地址批量处理, MITRE ATT&CK, OPC UA, OT安全, PCAP分析, PKINIT, S7comm, SIEM集成, Sigma规则, STIX 2.1, 便携式安全工具, 协议深度剖析, 可视化界面, 基线分析, 威胁检测, 工控协议解析, 工控安全, 库, 应急响应, 异常行为检测, 插件系统, 普渡模型, 检测规则, 目标导入, 离线分析, 端点安全, 网络拓扑映射, 网络资产发现, 补丁管理, 资产指纹识别, 逆向工具, 通知系统, 防御绕过, 零配置安全工具