C-F4/CobaltGraph
GitHub: C-F4/CobaltGraph
一款面向蓝队的终端原生被动网络监控平台,通过多智能体共识评分和地理空间可视化实现实时威胁检测与情报分析。
Stars: 0 | Forks: 0
# CobaltGraph
**蓝队网络情报平台**
一款原生终端的被动网络监控系统,具备多智能体共识威胁评分、实时地理空间可视化以及结构化威胁情报导出功能。
## 运行模式
| 模式 | 重点 | 要求 |
|------|-------|--------------|
| **设备模式** | 监控本机的出站连接 —— 显示外部目标、组织和威胁级别 | 无需 root 权限 |
| **网络模式** | 通过被动 ARP/广播发现局域网上的所有设备 —— 显示 MAC、供应商、主机名以及每个设备的流量 | 需要 root 权限 + 混杂模式抓包 |
```
# Device mode (无需 root)
./cobaltgraph --mode device
# Network-wide capture (需要 root)
sudo ./cobaltgraph --mode network
# Interactive mode 选择器
./cobaltgraph
```
## 快速入门
```
git clone https://github.com/C-F4/CobaltGraph.git
cd CobaltGraph
# 安装 dependencies (pure Python,无需 compiler)
pip3 install -r requirements.txt
# 运行
./cobaltgraph
```
**要求:** Python 3.10+, Linux / macOS / WSL
SQLite 已包含在 Python 中 —— 无需外部数据库。
## 威胁评分 —— 5 智能体 BFT 共识
每个连接由五个引擎独立评分。结果通过拜占庭容错 (BFT) 中值投票进行合并,具备异常值检测和置信度测量功能。
| 评分器 | 方法 |
|--------|--------|
| **统计评分** | 置信区间分析与基线偏差 (z-score) |
| **规则评分** | 专家启发式 —— 高危端口、已知恶意模式和协议异常 |
| **启发式评分 (ML)** | 基于特征加权的确定性评分,使用训练过的系数集 |
| **组织评分** | ASN/组织信任评分,结合跳数分析和 ISP 信誉评估 |
| **神经评分 (GRU)** | 轻量级循环神经网络,通过反向传播进行在线学习 |
**共识逻辑:**
- 异常值剔除:与中值偏差超过 30% 的评分器将被标记
- 不确定性标记:当评分器间方差超过 25% 时触发
- 最终得分:`0.0` (良性) → `1.0` (严重威胁)
- 告警阈值:可配置,默认为 `0.7`
## 威胁情报集成
| 服务 | 类型 | 备注 |
|---------|------|-------|
| ip-api.com | 地理定位 | 免费层,45 请求/分钟 |
| Team Cymru | ASN 查询 | 基于 DNS,无需密钥 |
| VirusTotal | IP 信誉 | 需要 API 密钥 |
| AbuseIPDB | IP 信誉 | 需要 API 密钥 |
| AlienVault OTX | 威胁信息源 | 需要 API 密钥 |
| GreyNoise | 噪声过滤 | 社区 API (无需密钥) 或付费版 |
| 本地 IOC | 自定义指标 | 基于文件,无外部依赖 |
API 密钥是可选的。系统在没有它们的情况下也能运行 —— 外部查询是富化层,而非依赖项。
在 `config/threat_intel.conf` 中配置密钥 (已被 gitignore,不会被提交):
```
[virustotal]
api_key = YOUR_KEY
[abuseipdb]
api_key = YOUR_KEY
[alienvault_otx]
api_key = YOUR_KEY
[greynoise]
api_key = YOUR_KEY
```
## 仪表板
基于 [Textual](https://textual.textualize.io/) 构建的终端 UI —— 无需 Web 服务器,不开放任何端口。
**面板:**
- **威胁态势** —— 当前威胁级别仪表盘及最高威胁雷达
- **情报地图** —— 可切换的平面地图 / 旋转地球,带有连接叠加层 (地理圆点,威胁着色)
- **连接表** —— 实时信息流,包含 IP、端口、协议、组织、ASN、威胁评分、置信度、跳数
- **局域网发现** *(网络模式)* —— 设备树:MAC → 供应商 → 主机名 → 主要目标 → 聚合威胁
- **目标** *(设备模式)* —— 外部连接目标,包含组织、威胁级别、连接数
- **分析图表** —— 连接量时间线、地理威胁图表、端口分布、威胁分布
**可视化模式** (通过快捷键循环切换):
- 带有地理绘制圆点的平面 ASCII 世界地图
- 简单地球仪
- 旋转动画地球仪
## 分析与检测
- **信标检测** —— 通过定时规律性和抖动分析识别 C2 风格的周期性连接
- **JA3 TLS 指纹识别** —— 根据 ClientHello 参数进行被动的 SSL/TLS 客户端指纹识别
- **连接状态跟踪** —— 双向流分析,通过被动 TTL 估算跳数
- **协议富化** —— 根据端口/行为识别服务
- **被动子网情报** —— 用于设备发现的 ARP、DHCP 和 IPv6 RA 分析
- **OUI MAC 供应商查询** —— 根据 MAC OUI 前缀识别供应商
## 导出
| 格式 | 内容 |
|--------|---------|
| **JSON Lines** | 每个连接的完整富化记录 —— IP、地理、ASN、所有评分器输出、共识结果 |
| **CSV** | 适用于电子表格工具的分析就绪摘要 |
| **STIX 2.1** | 结构化威胁情报包 —— 指标、观测数据、关联关系 |
## 配置
`config/cobaltgraph.conf` 控制所有运行时行为。关键部分:
```
[General]
log_level = INFO
retention_days = 30
[Network]
monitor_mode = auto # auto, device, network
capture_interface = # leave blank for auto-detect
[ThreatScoring]
alert_threshold = 0.7
enable_ip_reputation = true
enable_ml_detection = true
[TerminalDashboard]
dashboard_mode = auto
globe_fps = 10
```
敏感文件 (`config/auth.conf`, `config/threat_intel.conf`) 已被 gitignore 且不会被提交。
## 项目结构
```
cobaltgraph ← Single-file executable (self-bootstrapping venv)
src/
├── core/ ← DataPipeline orchestrator, config loader, system check
├── capture/ ← Device monitor (ss/netstat), network monitor (promiscuous), passive discovery
├── consensus/ ← BFT engine, 5 scorer implementations, metrics
├── services/ ← Geo, ASN, IP reputation, OTX, GreyNoise, OUI, IOC
├── pipeline/ ← Staged async processing (validation → enrichment → scoring → storage)
├── analytics/ ← Beaconing detector, JA3 fingerprinting, threat analytics, aggregator
├── storage/ ← SQLite (WAL mode), batch inserts, connection/device models
├── export/ ← JSON Lines, CSV, STIX 2.1
├── ui/ ← Textual dashboard, maps, graphs, panels
└── utils/ ← Logging, error types, heartbeat, platform utilities
config/
├── cobaltgraph.conf ← Main settings (committed — no secrets)
├── threat_intel.conf ← API keys (gitignored)
└── auth.conf ← HMAC secrets (gitignored)
```
## 安全设计
- **仅限被动** —— 从不注入数据包;读取内核状态 (`ss`, `ip neigh`, ARP 缓存) 或以混杂模式抓包
- **无 Web 服务器** —— 纯终端操作,零 HTTP 攻击面
- **本地处理** —— 所有评分和富化均在设备本地运行
- **最小权限** —— 设备模式无需 root 权限;仅全网捕获需要混杂访问权限
- **BFT 共识** —— 经过 HMAC 签名的评分器评估可防止伪造分数
- **纯 Python** —— 无需编译扩展;可安装在任何运行 Python 3.10+ 的环境中
## 使用场景
- **个人安全** —— 了解您的机器正在连接到何处以及原因
- **家庭网络监控** —— 发现所有局域网设备及其出站流量
- **SOC 分诊** —— 共识置信度评分有助于确定告警的优先级
- **事件调查** —— 具有完整富化信息的历史连接数据库
- **威胁狩猎** —— 信标检测、JA3 指纹、IOC 关联
- **CTF / 实验室环境** —— 具备离线能力,无需云依赖
## 许可证
MIT
**蓝队网络情报平台**
一款原生终端的被动网络监控系统,具备多智能体共识威胁评分、实时地理空间可视化以及结构化威胁情报导出功能。
## 运行模式
| 模式 | 重点 | 要求 |
|------|-------|--------------|
| **设备模式** | 监控本机的出站连接 —— 显示外部目标、组织和威胁级别 | 无需 root 权限 |
| **网络模式** | 通过被动 ARP/广播发现局域网上的所有设备 —— 显示 MAC、供应商、主机名以及每个设备的流量 | 需要 root 权限 + 混杂模式抓包 |
```
# Device mode (无需 root)
./cobaltgraph --mode device
# Network-wide capture (需要 root)
sudo ./cobaltgraph --mode network
# Interactive mode 选择器
./cobaltgraph
```
## 快速入门
```
git clone https://github.com/C-F4/CobaltGraph.git
cd CobaltGraph
# 安装 dependencies (pure Python,无需 compiler)
pip3 install -r requirements.txt
# 运行
./cobaltgraph
```
**要求:** Python 3.10+, Linux / macOS / WSL
SQLite 已包含在 Python 中 —— 无需外部数据库。
## 威胁评分 —— 5 智能体 BFT 共识
每个连接由五个引擎独立评分。结果通过拜占庭容错 (BFT) 中值投票进行合并,具备异常值检测和置信度测量功能。
| 评分器 | 方法 |
|--------|--------|
| **统计评分** | 置信区间分析与基线偏差 (z-score) |
| **规则评分** | 专家启发式 —— 高危端口、已知恶意模式和协议异常 |
| **启发式评分 (ML)** | 基于特征加权的确定性评分,使用训练过的系数集 |
| **组织评分** | ASN/组织信任评分,结合跳数分析和 ISP 信誉评估 |
| **神经评分 (GRU)** | 轻量级循环神经网络,通过反向传播进行在线学习 |
**共识逻辑:**
- 异常值剔除:与中值偏差超过 30% 的评分器将被标记
- 不确定性标记:当评分器间方差超过 25% 时触发
- 最终得分:`0.0` (良性) → `1.0` (严重威胁)
- 告警阈值:可配置,默认为 `0.7`
## 威胁情报集成
| 服务 | 类型 | 备注 |
|---------|------|-------|
| ip-api.com | 地理定位 | 免费层,45 请求/分钟 |
| Team Cymru | ASN 查询 | 基于 DNS,无需密钥 |
| VirusTotal | IP 信誉 | 需要 API 密钥 |
| AbuseIPDB | IP 信誉 | 需要 API 密钥 |
| AlienVault OTX | 威胁信息源 | 需要 API 密钥 |
| GreyNoise | 噪声过滤 | 社区 API (无需密钥) 或付费版 |
| 本地 IOC | 自定义指标 | 基于文件,无外部依赖 |
API 密钥是可选的。系统在没有它们的情况下也能运行 —— 外部查询是富化层,而非依赖项。
在 `config/threat_intel.conf` 中配置密钥 (已被 gitignore,不会被提交):
```
[virustotal]
api_key = YOUR_KEY
[abuseipdb]
api_key = YOUR_KEY
[alienvault_otx]
api_key = YOUR_KEY
[greynoise]
api_key = YOUR_KEY
```
## 仪表板
基于 [Textual](https://textual.textualize.io/) 构建的终端 UI —— 无需 Web 服务器,不开放任何端口。
**面板:**
- **威胁态势** —— 当前威胁级别仪表盘及最高威胁雷达
- **情报地图** —— 可切换的平面地图 / 旋转地球,带有连接叠加层 (地理圆点,威胁着色)
- **连接表** —— 实时信息流,包含 IP、端口、协议、组织、ASN、威胁评分、置信度、跳数
- **局域网发现** *(网络模式)* —— 设备树:MAC → 供应商 → 主机名 → 主要目标 → 聚合威胁
- **目标** *(设备模式)* —— 外部连接目标,包含组织、威胁级别、连接数
- **分析图表** —— 连接量时间线、地理威胁图表、端口分布、威胁分布
**可视化模式** (通过快捷键循环切换):
- 带有地理绘制圆点的平面 ASCII 世界地图
- 简单地球仪
- 旋转动画地球仪
## 分析与检测
- **信标检测** —— 通过定时规律性和抖动分析识别 C2 风格的周期性连接
- **JA3 TLS 指纹识别** —— 根据 ClientHello 参数进行被动的 SSL/TLS 客户端指纹识别
- **连接状态跟踪** —— 双向流分析,通过被动 TTL 估算跳数
- **协议富化** —— 根据端口/行为识别服务
- **被动子网情报** —— 用于设备发现的 ARP、DHCP 和 IPv6 RA 分析
- **OUI MAC 供应商查询** —— 根据 MAC OUI 前缀识别供应商
## 导出
| 格式 | 内容 |
|--------|---------|
| **JSON Lines** | 每个连接的完整富化记录 —— IP、地理、ASN、所有评分器输出、共识结果 |
| **CSV** | 适用于电子表格工具的分析就绪摘要 |
| **STIX 2.1** | 结构化威胁情报包 —— 指标、观测数据、关联关系 |
## 配置
`config/cobaltgraph.conf` 控制所有运行时行为。关键部分:
```
[General]
log_level = INFO
retention_days = 30
[Network]
monitor_mode = auto # auto, device, network
capture_interface = # leave blank for auto-detect
[ThreatScoring]
alert_threshold = 0.7
enable_ip_reputation = true
enable_ml_detection = true
[TerminalDashboard]
dashboard_mode = auto
globe_fps = 10
```
敏感文件 (`config/auth.conf`, `config/threat_intel.conf`) 已被 gitignore 且不会被提交。
## 项目结构
```
cobaltgraph ← Single-file executable (self-bootstrapping venv)
src/
├── core/ ← DataPipeline orchestrator, config loader, system check
├── capture/ ← Device monitor (ss/netstat), network monitor (promiscuous), passive discovery
├── consensus/ ← BFT engine, 5 scorer implementations, metrics
├── services/ ← Geo, ASN, IP reputation, OTX, GreyNoise, OUI, IOC
├── pipeline/ ← Staged async processing (validation → enrichment → scoring → storage)
├── analytics/ ← Beaconing detector, JA3 fingerprinting, threat analytics, aggregator
├── storage/ ← SQLite (WAL mode), batch inserts, connection/device models
├── export/ ← JSON Lines, CSV, STIX 2.1
├── ui/ ← Textual dashboard, maps, graphs, panels
└── utils/ ← Logging, error types, heartbeat, platform utilities
config/
├── cobaltgraph.conf ← Main settings (committed — no secrets)
├── threat_intel.conf ← API keys (gitignored)
└── auth.conf ← HMAC secrets (gitignored)
```
## 安全设计
- **仅限被动** —— 从不注入数据包;读取内核状态 (`ss`, `ip neigh`, ARP 缓存) 或以混杂模式抓包
- **无 Web 服务器** —— 纯终端操作,零 HTTP 攻击面
- **本地处理** —— 所有评分和富化均在设备本地运行
- **最小权限** —— 设备模式无需 root 权限;仅全网捕获需要混杂访问权限
- **BFT 共识** —— 经过 HMAC 签名的评分器评估可防止伪造分数
- **纯 Python** —— 无需编译扩展;可安装在任何运行 Python 3.10+ 的环境中
## 使用场景
- **个人安全** —— 了解您的机器正在连接到何处以及原因
- **家庭网络监控** —— 发现所有局域网设备及其出站流量
- **SOC 分诊** —— 共识置信度评分有助于确定告警的优先级
- **事件调查** —— 具有完整富化信息的历史连接数据库
- **威胁狩猎** —— 信标检测、JA3 指纹、IOC 关联
- **CTF / 实验室环境** —— 具备离线能力,无需云依赖
## 许可证
MIT标签:AI驱动, Apex, BFT共识, CobaltGraph, DNS枚举, GRU神经网络, PyRIT, Python, 地理空间可视化, 多智能体系统, 威胁情报, 威胁评分, 局域网扫描, 开发者工具, 异常检测, 无后门, 机器学习, 终端工具, 网络安全, 网络安全工具, 网络流量分析, 被动监控, 设备发现, 防御绕过, 隐私保护