valinorintelligence/Gridwolf
GitHub: valinorintelligence/Gridwolf
面向 OT/ICS 环境的被动式网络安全评估与威胁情报平台,通过 PCAP 深度解析实现工控设备发现、协议异常检测与漏洞情报聚合。
Stars: 0 | Forks: 0
Gridwolf
被动 ICS/SCADA 网络发现、漏洞情报与安全评估平台
全栈 OT 安全工具,具备实时 PCAP 处理、协议解析、威胁检测与 ICS 咨询公告订阅源
网站 ·
截图 ·
安装 ·
功能
## 什么是 Gridwolf?
Gridwolf 是一个**功能完备**的被动 ICS/SCADA 网络发现与安全评估平台。它通过分析捕获的网络流量(PCAP 文件)来自动识别工业设备、映射通信模式、检测协议异常、执行 C2/信标检测、匹配 CVE 并生成专业的评估报告——**无需向被监控网络发送任何数据包**。
与那些仅仅基于模拟数据构建仪表盘的工具不同,Gridwolf 拥有一个由 Scapy 驱动的**真实处理后端**,支持对 6 种 ICS 协议的深度数据包检测、C2 信标检测引擎、NVD CVE 集成、来自 7 个咨询来源的 ICS 漏洞情报,以及 PDF 报告生成功能。
## 系统架构
```
┌────────────────────────────────────────────────────────────────┐
│ Frontend (React 19 + Vite) │
│ 30+ Pages · Topology Graph · Protocol Analysis · Dark Theme │
├────────────────────────────────────────────────────────────────┤
│ REST API │
├────────────────────────────────────────────────────────────────┤
│ Backend (FastAPI + Python) │
│ ┌──────────┐ ┌──────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ PCAP │ │ Protocol │ │ C2 │ │ CVE │ │
│ │Processor │ │ Parsers │ │ Detector │ │ Lookup │ │
│ │ (Scapy) │ │ (6 parsers) │ │(IAT/DNS/ │ │(NVD API + │ │
│ │ │ │ │ │ Asymmetric)│ │ Offline DB)│ │
│ └──────────┘ └──────────────┘ └────────────┘ └────────────┘ │
│ ┌──────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ Vuln │ │ Device │ │ Risk │ │
│ │ Feed │ │ Classifier │ │Assessment │ │
│ │(7 Source)│ │(Purdue/OUI) │ │ Engine │ │
│ └──────────┘ └──────────────┘ └────────────┘ │
│ ┌──────────┐ │
│ │ Report │ │
│ │Generator │ │
│ │(PDF/HTML)│ │
│ └──────────┘ │
├────────────────────────────────────────────────────────────────┤
│ SQLite Database (aiosqlite) │
│ 17 Tables · Sessions · Devices · Connections · Findings │
└────────────────────────────────────────────────────────────────┘
```
## 截图
### 登录与仪表盘
| 登录 | 指挥中心 |
|---|---|
|  |  |
### 捕获与导入
| PCAP 分析 | 实时捕获 | 外部工具导入 |
|---|---|---|
|  |  |  |
### 网络发现
| 拓扑结构 | 设备清单 | 协议分析器 |
|---|---|---|
|  |  |  |
| Purdue 模型 | 签名编辑器 |
|---|---|
|  |  |
### 漏洞情报(全新)
| ICS/OT 漏洞订阅源 | 我的环境 |
|---|---|
|  |  |
### 安全与检测
| MITRE ATT&CK for ICS | 漏洞 / CVE 匹配 |
|---|---|
|  |  |
| C2 / 信标检测 | Purdue 违规 | 写入/编程路径 |
|---|---|---|
|  |  |  |
| 基线漂移 | 合规性 (IEC/NIST/NERC) |
|---|---|
|  |  |
### 分析与指标
| OT 指标与分析 | 安全计分卡 | 时间线 |
|---|---|---|
|  |  |  |
### 调查
| 关注队列 | 报告差异对比 |
|---|---|
|  |  |
### 报告与管理
| 评估报告 | SBOM | 系统管理 |
|---|---|---|
|  |  |  |
## 核心特性
### 真实的 PCAP 处理引擎(非模拟数据)
Gridwolf 包含一个**功能完备的后端**——而不仅仅是一个 UI 原型。当您上传 PCAP 文件时,系统会:
1. **摄取** — 通过 Scapy 的 `PcapReader` 流式传输数据包(高效处理大文件)
2. **解析** — 对 6 种 ICS 协议进行深度数据包检测及功能码分析
3. **分类** — 分配设备类型、Purdue 级别、供应商(38 个 OUI 前缀)
4. **检测** — 运行 C2 信标检测、Purdue 违规检查、写入路径分析
5. **存储** — 将所有结果持久化到包含 17 个规范化表的 SQLite 数据库中
### ICS/OT 漏洞情报订阅源
聚合来自 **7 个 OT 特定来源** 的实时咨询公告,并进行 CVSS v3.1 + CISA KEV + EPSS 丰富化处理:
| 来源 | 覆盖范围 |
|---|---|
| **CISA ICS-CERT** | 所有 ICS 咨询公告 |
| **Siemens ProductCERT** | SIMATIC, SCALANCE, SINEMA |
| **Schneider Electric** | Modicon, EcoStruxure, Magelis |
| **Rockwell Automation** | ControlLogix, CompactLogix, FactoryTalk |
| **ABB** | Ability, Symphony, ASPECT |
| **Moxa** | EDR, EDS Series, ioLogik |
| **CERT@VDE** | 德国工业自动化 |
**功能:**
- 4 级紧急度分类:**立即行动 (Act Now)** / **计划修补 (Plan Patch)** / **持续监控 (Monitor)** / **低风险 (Low Risk)**
- 环境个性化 — 选择您的供应商和行业以获取匹配的警报
- EPSS 概率评分用于评估漏洞利用可能性
- CISA KEV 标记已知被利用的漏洞
- CSV 导出用于合规性报告
### ICS 协议深度数据包检测
| 协议 | 端口 | Gridwolf 提取的内容 |
|---|---|---|
| **Modbus TCP** | 502 | MBAP 头、功能码 (FC 1-43)、寄存器地址、写入检测、主/从设备识别 |
| **S7comm (Siemens)** | 102 | TPKT/COTP/S7 头解析、作业类型 (0x01-0x07)、程序上传/下载标记 |
| **EtherNet/IP / CIP** | 44818 | 封装头、CIP 服务码、标签读写操作 |
| **DNP3** | 20000 | DLL + 传输层 + 应用层、主站/子站检测、对象组解析 |
| **BACnet** | 47808 | BVLC/NPDU/APDU 解析、服务识别、I-Am/Who-Is 发现 |
| **IEC 60870-5-104** | 2404 | APDU 类型检测(I/S/U 格式)、类型 ID 解析、传输原因 |
### C2 / 信标检测引擎
每次会话都会运行三种独立的检测方法:
- **IAT 直方图分析** — 通过分析到达时间间隔分布来检测周期性信标。使用变异系数阈值(<0.15)并排除 ICS 轮询,以减少误报
- **DNS 数据泄露检测** — 对每个 DNS 子域标签进行香农熵分析。标记熵值 >4.0 的标签(通常代表 base64/hex 编码的数据隧道传输)
- **非对称流量分析** — 识别 TX:RX 比率 >20:1 且总数据量 >100KB 的可疑数据传输
### CVE 漏洞匹配
- **离线 ICS CVE 数据库** — 12 个预加载的真实 OT CVE(涵盖 Siemens, Schneider Electric, Rockwell Automation, ABB, Fortinet, Moxa)
- **NVD API v2.0 集成** — 使用可选 API 密钥对 NIST 国家漏洞数据库进行实时搜索
- **设备匹配** — 将发现的设备供应商/固件与已知 CVE 进行模糊匹配
### 专业报告生成
- **PDF 报告** — 由 WeasyPrint 驱动的专业评估报告,包含封面、执行摘要、设备表格、协议分析、发现的问题和建议
- **HTML 备用方案** — 在未安装 WeasyPrint 时生成完整的 HTML 报告
- **报告板块** — 执行摘要、设备清单、协议分析、安全发现、建议
### 网络拓扑与设备分类
- **Purdue 模型分配** — 基于协议行为的自动 L0-L5 + DMZ 分类
- **设备类型检测** — PLC, HMI, 工程师站, Historian, RTU, IED, 网关
- **供应商识别** — 38 个 OUI MAC 地址前缀,涵盖 Siemens, ABB, Rockwell, Schneider, Moxa, Beckhoff, Phoenix Contact 等
- **置信度评分** — 5 级评分(从仅端口检测到深度解析)
### 安全评估
- **MITRE ATT&CK for ICS** — 映射到攻击技术的 40 多条检测规则
- **Purdue 违规检测** — 自动化的跨区域通信异常检测
- **写入/编程路径检测** — 标记危险的 Modbus 写入、S7 程序上传、CIP 标签写入
- **默认凭据检测** — 检查常见的 ICS 默认密码
- **基线漂移** — 评估会话之间的量化漂移评分
### 50 多个 REST API 端点
| 分类 | 端点数 | 描述 |
|---|---|---|
| **Auth** | 4 | 注册,登录,演示登录,个人资料 |
| **PCAP** | 3 | 上传,状态,列表 |
| **设备** | 4 | 列表,拓扑,统计,详情 |
| **会话** | 6 | CRUD(增删改查) + 项目 |
| **发现** | 4 | 列表,统计,状态更新 |
| **CVE** | 2 | 搜索 NVD,匹配设备 |
| **漏洞订阅源** | 10 | 咨询公告,统计,来源,导出,环境配置 |
| **报告** | 3 | 生成,下载,列表 |
| **本体** | 4 | 类型,图形,CRUD |
| **仪表盘** | 3 | 统计,已保存的仪表盘 |
| **扫描器** | 4 | Semgrep, Trivy, SARIF,通用导入 |
## 安装说明
### 选项 1:Docker(推荐 — Linux 与 macOS)
启动 Gridwolf 的最快方式。无需安装 Python 或 Node.js。
```
# 克隆并启动
git clone https://github.com/valinorintelligence/Gridwolf.git
cd Gridwolf
docker compose up --build
# 完成!打开 http://localhost:3000
```
| 服务 | URL |
|---|---|
| **前端** | http://localhost:3000 |
| **API 文档** | http://localhost:8000/docs |
| **登录** | 点击“Demo Login”——无需凭据 |
```
# 停止
docker compose down
# 生产环境设置 (PostgreSQL + Redis + Celery worker)
docker compose -f docker-compose.prod.yml up --build
```
### 选项 2:一键安装程序(macOS / Linux)
单条命令,自动检测 Docker 或回退到原生安装:
```
# 直接从 GitHub 运行
curl -fsSL https://raw.githubusercontent.com/valinorintelligence/Gridwolf/main/scripts/install.sh | bash
# 或者先克隆,然后运行
git clone https://github.com/valinorintelligence/Gridwolf.git
cd Gridwolf
bash scripts/install.sh
```
安装程序将会:
1. 检测 Docker → 使用容器化设置(首选)
2. 没有 Docker → 原生安装 Python + Node.js 依赖
3. 启动后端和前端
4. 自动打开您的浏览器
### 选项 3:Windows(.bat 启动器)
```
# PowerShell 单行命令
git clone https://github.com/valinorintelligence/Gridwolf.git
cd Gridwolf
# 选项 A:在 File Explorer 中双击 gridwolf.bat
# 选项 B:从 PowerShell 运行
.\scripts\install.ps1
```
**`gridwolf.bat`** — 双击启动。自动检测 Docker Desktop 或回退到原生的 Python + Node.js。准备就绪后自动打开浏览器。按任意键停止。
### 选项 4:手动设置
```
# 1. 克隆 repository
git clone https://github.com/valinorintelligence/Gridwolf.git
cd Gridwolf
# 2. 启动 Backend
cd backend
python3 -m pip install -e ".[dev]"
python3 -m uvicorn app.main:app --host 0.0.0.0 --port 8000
# 3. 在新 terminal 中 — 启动 Frontend
cd frontend
npm install
npm run dev
```
- **后端 API**:http://localhost:8000(Swagger 文档位于 `/docs`)
- **前端 UI**:http://localhost:5174
- **演示登录**:点击登录页面上的“Demo Login”——无需凭据
### 后端可选依赖
```
# 用于 PDF 报告生成
pip install "gridwolf[pdf]"
# 用于 PostgreSQL (生产部署)
pip install "gridwolf[postgres]"
# 安装所有内容
pip install "gridwolf[full]"
```
### 环境变量
创建 `backend/.env` 用于后端配置:
```
GRIDWOLF_DATABASE_URL=sqlite+aiosqlite:///./gridwolf.db
GRIDWOLF_SECRET_KEY=your-secret-key-change-in-production
GRIDWOLF_NVD_API_KEY=your-nvd-api-key # Optional: for faster CVE lookups
GRIDWOLF_DEBUG=true
```
创建 `frontend/.env.local` 用于前端覆盖:
```
VITE_API_URL=http://localhost:8000
VITE_DEMO_MODE=true
```
## 用法
### 1. 上传 PCAP 进行分析
```
# 通过 API
curl -X POST http://localhost:8000/api/v1/ics/pcap/upload \
-F "file=@capture.pcap" \
-F "session_name=Plant Assessment Q1"
# 检查处理状态
curl http://localhost:8000/api/v1/ics/pcap/status/{pcap_id}
```
或者在 UI 中使用 **Capture → PCAP Analysis** 页面拖放 PCAP 文件。
### 2 探索发现的设备
```
# 列出会话中的所有设备
curl http://localhost:8000/api/v1/ics/devices/?session_id={session_id}
# 获取网络拓扑 (nodes + edges)
curl http://localhost:8000/api/v1/ics/devices/topology?session_id={session_id}
# 设备统计
curl http://localhost:8000/api/v1/ics/devices/stats?session_id={session_id}
```
### 3. 检查 ICS 漏洞咨询公告
```
# 列出所有 advisories
curl http://localhost:8000/api/v1/ics/advisories/
# 获取 advisory 统计
curl http://localhost:8000/api/v1/ics/advisories/stats
# 将 advisories 与会话设备进行匹配
curl http://localhost:8000/api/v1/ics/advisories/matched?session_id={session_id}
# 导出为 CSV
curl http://localhost:8000/api/v1/ics/advisories/export/csv
```
### 4. 审查安全发现
```
# 按严重程度列出 findings
curl http://localhost:8000/api/v1/ics/findings/?severity=critical
# 将设备与 CVE 数据库进行匹配
curl http://localhost:8000/api/v1/ics/findings/cve/match-devices?session_id={session_id}
# 搜索 NVD 以查找 CVEs
curl http://localhost:8000/api/v1/ics/findings/cve/search?keyword=siemens+s7
```
### 5. 生成评估报告
```
curl -X POST http://localhost:8000/api/v1/ics/findings/reports/generate \
-H "Content-Type: application/json" \
-d '{
"session_id": "...",
"report_type": "full",
"client_name": "Acme Industrial",
"assessor_name": "OT Security Team"
}'
```
## 技术栈
| 层级 | 技术 | 用途 |
|---|---|---|
| **前端** | React 19 + TypeScript + Vite 8 | 30 多个页面的单页应用(SPA),采用深色主题优先设计 |
| **样式** | Tailwind CSS 4 | 海军蓝/紫色/青色/洋红色的 OT 专属主题 |
| **状态管理** | Zustand | 客户端状态管理 |
| **可视化** | Cytoscape.js + Recharts | 拓扑图 + 分析 |
| **后端** | FastAPI (async) | 50 多个 REST API 端点 |
| **PCAP 引擎** | Scapy | 深度数据包检测 |
| **数据库** | SQLite (aiosqlite) / PostgreSQL | 17 个规范化表 |
| **认证** | JWT (python-jose) + bcrypt | 基于令牌的身份验证与路由守卫 |
| **报告** | WeasyPrint / HTML | 专业 PDF 生成 |
| **CVE 数据** | NVD API v2.0 + 离线数据库 | 漏洞匹配 |
| **漏洞情报** | 7 个 ICS 咨询来源 | CVSS + KEV + EPSS 丰富化 |
## 项目结构
```
Gridwolf/
├── frontend/ # React SPA
│ ├── src/
│ │ ├── pages/ # 30+ page components
│ │ ├── components/ # Reusable UI components
│ │ ├── layouts/ # App and Auth layouts (with route guards)
│ │ ├── routes/ # React Router configuration
│ │ ├── lib/ # Constants, utilities
│ │ └── stores/ # Zustand state management
│ └── vite.config.ts
├── backend/ # FastAPI backend
│ └── app/
│ ├── core/ # Config, database, JWT security
│ ├── models/ # SQLAlchemy models (17 tables)
│ │ ├── user.py # User authentication model
│ │ ├── ontology.py # Object types, links, actions, audit logs
│ │ └── ics.py # Sessions, devices, connections, findings, reports
│ ├── engine/ # Processing engines
│ │ ├── pcap_processor.py # Scapy PCAP ingestion pipeline
│ │ ├── protocol_parsers.py # 6 ICS protocol deep parsers
│ │ ├── c2_detector.py # C2 beacon/exfiltration detection
│ │ ├── cve_lookup.py # NVD API + offline CVE database
│ │ ├── vuln_feed.py # ICS advisory feed engine (7 sources)
│ │ └── report_generator.py # PDF/HTML report generation
│ ├── schemas/ # Pydantic v2 validation
│ ├── services/ # Business logic
│ └── api/v1/ # REST API routers
│ ├── auth.py # Authentication endpoints
│ ├── ics/ # ICS-specific endpoints
│ │ ├── pcap.py # PCAP upload & processing
│ │ ├── devices.py # Device inventory & topology
│ │ ├── sessions.py # Session & project management
│ │ ├── findings.py # Findings, CVE, reports
│ │ └── vuln_feed.py # Vulnerability advisory feed (10 endpoints)
│ ├── ontology.py # Object type management
│ ├── objects.py # Object CRUD
│ ├── dashboard.py # Dashboard stats
│ └── scanners.py # External tool import
├── landing/ # Static landing page (gridwolf.net)
│ └── index.html # Waitlist + feature showcase
├── docs/
│ └── screenshots/ # 29 application screenshots
└── scripts/
└── take-screenshots.mjs # Puppeteer screenshot utility
```
## API 文档
后端运行后,请访问:
- **Swagger UI**:http://localhost:8000/docs
- **ReDoc**:http://localhost:8000/redoc
## 数据库架构(17 张表)
| 表名 | 用途 |
|---|---|
| `users` | 身份验证与用户配置 |
| `object_types` | 本体架构定义 |
| `objects` | 通用实体实例 |
| `links` | 对象之间的类型化关系 |
| `actions` | 对象类型上的可用操作 |
| `audit_logs` | 任意对象的时间线事件 |
| `saved_dashboards` | 用户保存的仪表盘布局 |
| `integrations` | 外部工具配置 |
| `projects` | 多客户端项目组织 |
| `sessions` | 带有统计信息的评估会话 |
| `pcap_files` | 上传的 PCAP 元数据与状态 |
| `devices` | 发现的设备清单 |
| `connections` | 网络连接流 |
| `protocol_analysis` | ICS 协议解析结果 |
| `findings` | 安全发现与警报 |
| `reports` | 生成的评估报告 |
## 贡献
Gridwolf 是开源的,欢迎各种贡献。感兴趣的领域包括:
- 更多 ICS 协议解析器(OPC UA, PROFINET DCP, GOOSE/MMS)
- 更多 MITRE ATT&CK for ICS 检测规则
- 威胁情报订阅源集成(STIX/TAXII)
- 定时评估自动化
- 多用户 RBAC 增强
## 许可证
MIT License - Valinorin Intelligence
由 Valinorin Intelligence 为 OT 安全社区构建
标签:AV绕过, C2通信检测, CISA项目, CVE匹配, FastAPI, ICS/SCADA安全, IP 地址批量处理, masscan, OT安全, PCAP分析, PE 加载器, PKINIT, React, Scapy, Syscalls, TypeScript, XSS, 仪表盘, 信标检测, 反取证, 威胁情报平台, 安全插件, 安全评估, 工控安全, 开源安全工具, 异常检测, 插件系统, 无线安全, 本体驱动, 测试用例, 深度包检测, 漏洞情报, 统一安全运营, 网络安全, 网络安全分析, 自动化攻击, 被动网络发现, 请求拦截, 逆向工具, 逆向工程平台, 隐私保护