Lucent-Grid/the-open-osint-board
GitHub: Lucent-Grid/the-open-osint-board
这是一个自托管浏览器仪表板,聚合公开OSINT源的实时威胁情报,用于威胁监控和分析。
Stars: 0 | Forks: 0
# 开放 OSINT 看板
**一个完全可自托管的、基于浏览器的开源情报仪表板。**
开放 OSINT 看板 (TOOB) 将来自 9 个公开 OSINT 源的实时威胁情报聚合到一个统一的界面中——无需云账户,无需订阅,无遥测。您可以在自己的机器上本地运行它,整个过程不到两分钟。
## 目录
- [功能介绍](#what-it-does)
- [快速启动](#quick-start)
- [手动启动](#manual-start)
- [API 密钥 — 设置指南](#api-keys--setup-guide)
- [应用导航](#navigating-the-app)
- [标签页参考](#tab-reference)
- [搜索](#search)
- [API 速率限制](#api-rate-limits)
- [工作原理 — 技术概述](#how-it-works--technical-overview)
- [架构](#architecture)
- [安全注意事项](#security-notes)
- [系统要求](#requirements)
## 功能介绍
TOOB 从公开 OSINT 源获取实时数据,并将其整合在一个地方:
- **IOC 源** — 来自 ThreatFox、Feodo Tracker 和 URLhaus 的恶意 IP、域名、URL 和文件哈希
- **恶意软件样本** — 最近提交到 MalwareBazaar 的样本,包含哈希、家族标签和文件元数据
- **钓鱼 URL** — 来自 PhishTank 的已验证活跃钓鱼 URL
- **漏洞** — 来自 NIST NVD + CISA 已知被利用漏洞目录的关键 CVE
- **MITRE ATT&CK** — 完整的企业技术和战术数据库,可搜索和筛选
- **威胁行为者** — 精选的行为者资料,并通过 ThreatFox 的实时 IOC 计数进行丰富
- **威胁地图** — 活跃 C2 基础设施的实时地理位置,绘制在世界地图上
- **交通摄像头** — 通过 Road511 获取美国 40 多个州的实时 DOT 摄像头画面
- **关系图谱** — 可视化力导向图,连接行为者、活动、IOC 和恶意软件家族
所有数据在本地运行。您的数据保留在您的机器上。
## 界面截图
### 仪表板

*实时组件仪表板 — 事件流、图表、僵尸网络 C2 源和迷你威胁地图*
## 快速启动
重要提示:
- **必须**安装 python3 才能运行后端服务器
- Windows:以管理员身份运行 cmd,然后输入以下命令:winget install python3
- Linux:sudo apt install python3
**Windows 系统:**
```
Double-click start.bat
```
脚本会自动查找 Python、安装依赖项、启动后端,并在您的浏览器中打开仪表板。
**macOS / Linux 系统:**
```
chmod +x start.sh
./start.sh
```
仪表板将在 `frontend/index.html` 处打开。后端运行在 `http://localhost:5000`。
## 手动启动
```
# 一次性安装依赖
pip3 install flask flask-cors requests apscheduler certifi tzdata
# 启动后端
cd backend
python3 server.py
# 在浏览器中打开前端
open frontend/index.html # macOS
xdg-open frontend/index.html # Linux
start frontend/index.html # Windows
```
## API 密钥 — 设置指南
TOOB 的大部分核心源无需任何 API 密钥即可工作。密钥可以解锁更高的速率限制和附加功能。**每位用户应获取自己的密钥** — 在多个部署间共享密钥会快速消耗速率限制,并有账户被暂停的风险。
密钥在应用中的 **设置 → API 密钥** 下输入,并保存到您机器上的 `backend/config.json` 文件中。
### 哪些源需要密钥?
| 源 | 需要密钥? | 无密钥时 | 有密钥时 |
|------|--------------|-------------|----------|
| MalwareBazaar (abuse.ch) | 可选 | 可用,优先级较低 | 完全访问 |
| URLhaus (abuse.ch) | 可选 | 可用 | 完全访问 |
| ThreatFox (abuse.ch) | 可选 | 可用 | 完全访问 |
| AbuseIPDB | **威胁地图必需** | 无 IP 地理位置丰富 | 每日 1,000 次检查(免费) |
| NVD / NIST | 可选 | 每 30 秒 5 个请求 | 每 30 秒 50 个请求 |
| Road511 | **摄像头功能必需** | 无摄像头画面 | 美国 40+ 州的 DOT 摄像头 |
| CISA KEV | 无 — 始终免费 | 完全访问 | — |
| Feodo Tracker | 无 — 始终免费 | 完全访问 | — |
| SSL 黑名单 | 无 — 始终免费 | 完全访问 | — |
| PhishTank | 无 — 始终免费 | 完全访问 | — |
| MITRE ATT&CK | 无 — 始终免费 | 完全访问 | — |
### 获取每个密钥
#### abuse.ch — MalwareBazaar、URLhaus、ThreatFox
这三个 abuse.ch 源使用**相同的 API 密钥**。
1. 前往 [https://abuse.ch/](https://abuse.ch/) 并点击 **登录 / 注册**
2. 创建一个免费账户
3. 进入您的个人资料并复制 API 密钥
4. 在 TOOB → 设置 → API 密钥 中,将密钥粘贴到 abuse.ch 的三个字段中
#### AbuseIPDB
为威胁地图提供 IP 地理位置和 IOC 信誉丰富功能。
1. 在 [https://www.abuseipdb.com/register](https://www.abuseipdb.com/register) 注册
2. 前往 **账户 → API** 并创建一个密钥
3. 复制并粘贴到 设置 → API 密钥 → AbuseIPDB
免费套餐:**每日 1,000 次 IP 检查。** 付费方案可在 abuseipdb.com 直接获取,并显著提高每日限额。所有购买直接支付给 AbuseIPDB — TOOB 和 Lucent Grid 与其无关联。
#### NVD / NIST 国家漏洞数据库
CVE 源无需密钥即可工作,但拥有密钥可将请求速率提高 10 倍。
1. 在 [https://nvd.nist.gov/developers/request-an-api-key](https://nvd.nist.gov/developers/request-an-api-key) 申请免费密钥
2. 批准是自动且几乎即时的
3. 粘贴到 设置 → API 密钥 → NVD
无密钥:每 30 秒 5 个请求。有密钥:每 30 秒 50 个请求。
#### Road511 — 现场摄像头源
一个密钥覆盖所有美国 40+ 个州。
1. 在 [https://road511.com](https://road511.com) 注册
2. 从您的账户仪表板获取 API 密钥
3. 粘贴到 设置 → API 密钥 → Road511
Road511 将每个州的 DOT 摄像头 API 规范化为一个端点。定价和套餐详情可在其网站上找到。所有付款直接支付给 Road511 — TOOB 和 Lucent Grid 与其无关联。
### 保存密钥
在 设置 → API 密钥 中粘贴密钥后,点击 **保存密钥并重新加载源**。密钥将写入 `backend/config.json`,源会立即重启。您可以通过点击 **检查密钥状态** 来验证哪些密钥已激活。
## 应用导航
左侧边栏分为五个部分:
| 部分 | 标签页 |
|---------|------|
| **情报** | 仪表板,威胁行为者,活动 |
| **实时观测物** | IOC 转换,IOC 管理器,监视列表,恶意软件样本,钓鱼 URL |
| **漏洞** | CVE (KEV+NVD), MITRE ATT&CK |
| **运维** | 案例,报告,时间线,源状态 |
| **可视化** | 威胁地图,现场监控,图形探索器 |
顶部的全局搜索栏接受任何 IOC、CVE ID、恶意软件家族名称、域名、IP 或哈希值,并直接将其路由到 **IOC 转换** 标签页进行跨源搜索。
## 标签页参考
### 仪表板
主要枢纽。显示一个可实时更新的可配置组件网格:
- **实时事件流** — 所有传入 OSINT 事件的实时统一源
- **僵尸网络 C2 (Feodo)** — 活跃的僵尸网络命令与控制 IP,包含 ASN 和状态
- **IOC 类型分布** — 按 IOC 类型(域名、URL、IP、哈希)细分的环形图/条形图
- **热门恶意软件家族** — 实时源中出现次数最多的恶意软件家族条形图
- **严重性分布** — 整个源中 IOC 严重性级别的分布
- **IOC 活动时间线** — 显示 IOC 数量随时间变化的折线图
- **CVSS 分数分布** — CVE 严重性分数的直方图
- **近期恶意软件** — 最新的 MalwareBazaar 提交,包含哈希和家族
- **热门活跃 IOC** — 实时源中置信度最高的当前指标
- **迷你威胁地图** — 带有国家轮廓和实时 C2 位置点的紧凑世界地图
**自定义您的仪表板:**
- 点击页面右上角的**铅笔图标**进入编辑模式
- 拖动组件以重新排列
- 点击每个组件标题栏上的列切换器以在窄和宽之间调整大小
- 点击 **+ 添加组件** 以添加任何可用的组件类型
- 在图表组件上点击图表类型按钮(环形图/条形图/折线图)以切换可视化样式
- 点击组件上的 **× 移除** 将其移除
- 您的布局按用户保存到后端,并在刷新、注销和同一服务器上的不同浏览器之间保持
### 威胁行为者
一个精选的已知威胁行为者群体数据库,通过 ThreatFox 的实时 IOC 计数在每次轮询周期中进行丰富。
丰富功能通过将每个行为者的已知恶意软件家族列表与实时 ThreatFox 源进行匹配来实现,并在每 60 秒的 IOC 轮询中自动更新。
### 活动
跟踪威胁活动 — 活跃的、监控中的以及历史的。
- 点击任何活动卡片以打开完整详情模态框:
- 完整描述和开始日期
- 行为者归因 — 行为者名称链接到其在威胁行为者标签页中的资料
- 实时 IOC 计数和来自 ThreatFox 的匹配恶意软件家族(通过归因的行为者)
- 报告的 IOC 计数与实时源匹配计数并排显示
- 来自您运维工作区的链接案例(通过重叠的标签和行为者关键字匹配)
- 编辑所有字段并带确认删除
- 通过 **+ 新建活动** 添加新活动
### IOC 转换
核心的跨源搜索和丰富工具。输入以下任一内容并按回车或点击 **转换 →**:
- **IP 地址** — 与 ThreatFox、Feodo 和 URLhaus 匹配;通过 ip-api.com 进行地理位置定位;通过 AbuseIPDB 进行信誉评分
- **域名** — 与 ThreatFox 和 URLhaus 匹配
- **URL** — 与 URLhaus 和 PhishTank 匹配
- **文件哈希** (MD5 或 SHA256) — 与 MalwareBazaar 和 ThreatFox 匹配
- **CVE ID** (例如 CVE-2024-12345) — 与 NVD 和 CISA KEV 匹配
- **恶意软件家族名称** — 同时跨所有源匹配
结果立即显示所有源的匹配项、搜索耗时以及搜索的源数量。可以直接从结果面板将结果导出为 JSON、CSV 或 STIX 2.1。
每页顶部的全局搜索栏会路由至此。提交后,搜索栏会短暂淡化查询文本以确认搜索已触发,然后清除。
### IOC 转换 — 跨源搜索

*同时跨所有源搜索 — 匹配的 IOC、恶意软件样本、源覆盖范围和外部转换链接*
### IOC 管理器
一个实时的、可筛选的表格,包含来自 ThreatFox、Feodo Tracker 和 URLhaus 的所有当前聚合 IOC — 每次最多 300 条记录。
- 按类型(IP、域名、URL、哈希)、严重性和源源进行筛选
- 在当前结果中按值或行为者标签进行搜索
- 点击任何 IOC 行以展开完整的丰富详情面板:地理位置数据、ASN、AbuseIPDB 置信度分数、恶意软件家族和源元数据
- 从详情面板,将 IOC 链接到现有案例或添加到您的监视列表
- 将完整表格导出为 CSV、JSON 或 STIX 2.1
### IOC 管理器

*来自 ThreatFox、Feodo 和 URLhaus 的 300+ 个 IOC 的实时可筛选表格*
### 监视列表
一个个人监控列表,用于跟踪您想要在实时源中监控的值。
- 手动添加任何 IP、域名、哈希或 CVE ID,或直接从 IOC 管理器详情面板添加
- 每 60 秒当 IOC 源刷新时,TOOB 会扫描所有传入的 IOC 是否匹配监视列表
- 匹配时:在监视列表标签页记录警报,在应用内触发 Toast 通知,并且 — 如果授予了浏览器通知权限 — 即使标签页在后台也会触发操作系统原生通知
- 点击浏览器通知会聚焦窗口并直接导航到监视列表标签页
- 在 **设置 → 浏览器通知** 中授予通知权限,否则首次匹配发生时系统会自动提示您
### 恶意软件样本
来自 MalwareBazaar 的实时源,显示最近的样本提交。
- 列:文件名、文件类型、恶意软件家族签名、SHA256 哈希、首次发现日期、报告者、标签
- 点击任何行以展开完整的样本详情:MD5、文件大小、所有标签、报告者评论
- 按文件类型筛选;按哈希或签名名称搜索
- 导出可见表格
### 钓鱼 URL
来自 PhishTank 的已验证活跃钓鱼 URL,每 60 分钟刷新一次。
- 每个条目显示钓鱼 URL、提交日期和验证状态
- 按状态筛选;按 URL 或目标网站搜索
- 用于交叉引用邮件头或日志中发现的 URL
### CVE (KEV + NVD)
来自两个权威来源的漏洞情报:
- **CISA KEV** — 已知被利用漏洞目录:确认在野外被积极利用的 CVE,由网络安全和基础设施安全局维护。这是进行补丁优先级排序的最具操作相关性的列表。
- **NIST NVD** — 过去 30 天内发布的所有关键严重性 CVE(CVSS 9.0+),来自国家漏洞数据库。
每个条目显示 CVE ID、CVSS 分数和向量、严重性徽章、受影响产品或组件、描述和发布日期。点击任何 CVE 以打开完整详情面板,包含引用和弱点(CWE)分类。按源源、严重性和 CVSS 分数范围筛选。导出为 CSV 或 JSON。
### MITRE ATT&CK
完整的 MITRE ATT&CK 企业技术数据库,从官方 MITRE CTI 存储库获取,每 30 分钟刷新一次。
- 浏览所有技术,包括战术、子技术标志、平台标签(Windows、Linux、macOS、云等)和完整描述
- 按战术(初始访问、执行、持久化、权限提升、防御规避、凭据访问、发现、横向移动、收集、命令与控制、数据渗出、影响)筛选
- 按技术名称、ID(例如 T1059)或关键字搜索
- 点击任何技术以打开详情面板,包含完整描述和指向 attack.mitre.org 的直接链接
### 案例
一个内部事件响应工作区,用于跟踪活跃的调查。
- 创建案例,包括标题、严重性、TLP、状态(活跃 / 监控中 / 已关闭)、指派人、描述和标签
- 为每个案例添加任务清单,并在工作进展时标记完成
- 从 IOC 管理器详情面板将实时 IOC 直接链接到案例 — 值、类型、严重性、源和时间戳都会被记录
- 在案例详情模态框中直接在活跃、监控中和已关闭之间切换案例状态
- 按 TLP 分类筛选案例列表
- 案例保存在浏览器 localStorage 中
### 报告
一个内部威胁情报报告库,用于存储和交叉引用书面评估。
- 存储报告,包括标题、类型(威胁报告、定期报告、执行摘要、漏洞报告)、作者、TLP、严重性、摘要、页数和标签
- 点击任何报告卡片以打开完整详情模态框:
- 完整摘要和作者
- 链接的活动 — 通过标签重叠和标题关键字匹配
- 链接的案例 — 通过相同逻辑匹配
- 点击链接的活动或案例直接导航到该记录
- 编辑所有字段并带确认删除
- 报告保存在浏览器 localStorage 中
### 时间线
一个按时间顺序排列的事件流,涵盖您工作区中的所有数据类型。
- 切换要显示的事件类型:IOC、CVE、案例、活动、报告
- 按时间范围筛选:过去 7 天、30 天、90 天或所有时间
- 升序或降序排序
- 用于构建事件时间线或关联不同数据类型的活动模式
### 源状态
所有后端数据源的实时健康仪表板。
- 显示每个源的当前状态(正常/加载中/错误/受速率限制)、上次成功更新时间和当前记录计数
- 显示来自后端的任何注释(例如“受速率限制 — 使用缓存索引”或“NVD API 无法访问 — 检查您的 NVD API 密钥”)
- 当源显示过时或数据缺失时,这是第一个需要检查的地方
### 威胁地图
一个交互式世界地图,绘制来自实时 IOC 源的活跃恶意基础设施。
- 国家边界根据嵌入的 Natural Earth 多边形数据渲染 — 无需外部获取,完全离线工作
- 点代表来自 ThreatFox 和 Feodo Tracker 的地理位置定位的恶意 IP,按严重性着色
- 点击任何点可查看 IP 地址、恶意软件家族、ASN 和国家/地区
- 仪表板还包含一个紧凑的迷你版本,作为可选组件。
实时威胁地图

*来自 8 个 OSINT 源的数百个 IP 的活跃恶意基础设施实时地理位置定位*
### 现场监控
通过 Road511 API 获取的美国 40 多个州的实时 DOT 交通摄像头画面。
- 需要 Road511 API 密钥(参见上面的 API 密钥部分)
- 按州/司法管辖区浏览摄像头
- 将单个摄像头固定到您的面板,以便持久快速访问
- 摄像头图像自动刷新
- 主要用于基础设施事件、自然灾害或现场操作期间的物理态势感知
### 现场监控 — 摄像头地图

*美国 40 多个州的 DOT 交通摄像头网络 — 点击任何标记以预览和固定*
### 现场监控 — 固定的源

*显示实时道路画面的固定摄像头*
### 图形探索器
一个交互式力导向图,实时可视化威胁实体之间的关系。
- **红色节点** — 来自您数据库的威胁行为者
- **青色节点** — 来自当前 ThreatFox/Feodo 源的实时 IOC
- **紫色节点** — 来自 MalwareBazaar 的恶意软件家族签名
- **琥珀色节点** — 来自您数据库的活动
- 边代表关系:行为者运行活动,行为者通过恶意软件家族匹配链接到 IOC
- 切换 **物理** 以启用/禁用力模拟(节点排斥并自然稳定)
- 切换 **标签** 以显示/隐藏节点名称标签
- 使用下拉菜单按实体类型筛选图形:全部、仅 IOC、行为者 + 活动、仅恶意软件
- 点击任何节点以在侧面板检查其详细信息
- 按 **↻ 重新绘制** 以重新随机化节点位置
### 图形探索器

*连接威胁行为者、活动、实时 IOC 和恶意软件家族的力导向关系图*
### 设置
- **后端连接** — 如果在远程服务器上运行 TOOB,则更改后端 URL(例如 `http://192.168.1.100:5000`)
- **API 密钥** — 输入、保存并检查所有 API 密钥的状态
- **外观** — 在深色模式和浅色模式之间切换
- **浏览器通知** — 查看当前权限状态并启用操作系统级监视列表通知
- **数据覆盖范围** — 一目了然地显示每个源的实时/丰富/静态状态
- **导出** — 将所有当前加载的实时数据全局导出为单个 JSON、CSV 或 STIX 2.1 文件
- **关于** — 版本和构建信息
### 设置 — API 密钥与配置

*API 密钥管理、后端连接和数据覆盖范围状态*
### 设置 — 通知与导出

*浏览器通知控制、外观和全局数据导出*
## 搜索
全局搜索栏(每页顶部)接受任何指标、标识符或名称。按 **回车** 提交。搜索栏会短暂淡化搜索词以确认查询已触发,然后路由到 **IOC 转换** 标签页,在那里同时搜索所有源并显示结果。
要在特定源内进行筛选浏览,每个标签页都有自己的每页搜索字段和筛选控制,独立于全局搜索。
## API 速率限制
TOOB 默认在每个数据源的免费额度内运行。一些源施加每日或每分钟的请求上限。以下是您可能遇到的主要限制的摘要:
| 源 | 免费限额 | 付费选项 |
|--------|-----------|-------------|
| **AbuseIPDB** | 每日 1,000 次 IP 检查 | abuseipdb.com 提供付费方案 — 增加每日配额 |
| **NVD / NIST** | 每 30 秒 5 个请求(无密钥)· 每 30 秒 50 个请求(有免费密钥) | 密钥是免费的 — 在 nvd.nist.gov 请求一个 |
| **abuse.ch** (MalwareBazaar, ThreatFox, URLhaus) | 宽松的免费额度;密钥可提高队列优先级 | 没有正式的付费层级 |
| **PhishTank** | 每分钟 45 个请求 | 无付费层级 |
| **ip-api.com** (地理位置) | 每分钟 45 个请求 | ip-api.com 提供付费方案 |
| **MITRE ATT&CK** | 无速率限制(CDN 托管) | 不适用 |
| **CISA KEV** | 无速率限制 | 不适用 |
| **Feodo Tracker** | 无速率限制 | 不适用 |
| **Road511** | 因套餐而异 | road511.com 提供付费层级 |
当达到速率限制时,TOOB 会优雅降级 — 受影响的源在源状态中显示注释,并在可用时回退到最近缓存的数据。AbuseIPDB 特别会将其上一次成功的 IP 索引缓存到磁盘,并在受速率限制期间提供该数据,以便威胁地图继续工作。
## 工作原理 — 技术概述
### 后端 — `server.py`
后端是一个单一的 Python 文件,在 `localhost:5000` 上运行 **Flask** Web 服务器。它充当浏览器与所有外部 OSINT API 之间的代理 — 这是必要的,因为浏览器会阻止跨域请求(CORS),并且某些 API 需要服务器端身份验证头,这些头不能暴露在客户端 JavaScript 中。
**源获取:** 每个数据源都有一个专用的获取函数。一个 **APScheduler** 后台调度器在交错的间隔运行它们(MalwareBazaar 和 URLhaus 每 10 分钟,PhishTank 每 60 分钟,MITRE ATT&CK 每 30 分钟,等等)。所有源数据都保存在内存中的共享 `cache` 字典中。一个 `threading.Lock` 保护缓存免受并发浏览器请求和后台刷新期间的竞争条件影响。除了用户账户、会话令牌、仪表板布局和两个回退缓存(AbuseIPDB IP 索引和 PhishTank 数据)之外,没有任何内容写入磁盘,这些缓存允许应用在重启后、第一次新鲜获取完成之前提供有用的数据。
**身份验证:** 用户账户作为加盐 SHA-256 哈希存储在 `backend/data/users.json` 中。登录时,服务器发放一个会话令牌,保存到 `backend/data/tokens.json`。每个经过身份验证的请求在 `X-Auth-Token` 头中传递令牌;服务器在提供受保护端点之前会验证该令牌。令牌在可配置的时间后过期。
**每个用户的仪表板布局:** 当用户保存其仪表板时,前端将布局数组 POST 到 `/api/layout`。服务器将其写入 `backend/data/layouts/.json`。在下一次登录时 — 从任何浏览器 — 前端获取该文件并恢复用户的确切组件排列。
**摄像头画面:** Road511 集成获取每个已配置的美国州司法管辖区的摄像头元数据和快照图像 URL,并按司法管辖区进行缓存。前端按州请求摄像头;后端代理图像 URL 以避免与州 DOT 服务器的 CORS 问题。
### 前端 — `index.html`
整个前端是一个**单一的 HTML 文件** — 大约 7,800 行 — 包含所有页面结构、CSS 样式和 JavaScript 应用逻辑。没有构建步骤、没有打包器、没有 npm、没有框架依赖。在浏览器中打开该文件就足够了。
**数据流:** 前端按计划轮询后端:IOC、恶意软件样本和钓鱼数据每 60 秒一次;漏洞每 5 分钟一次;MITRE ATT&CK 每 30 分钟一次。所有实时数据存储在内存中的 `liveData` 对象中。渲染函数从 `liveData` 读取,并通过 `innerHTML` 直接写入 DOM — 没有虚拟 DOM,没有响应式系统。
**仪表板组件系统:** `WIDGET_CATALOG` 对象定义了每个可用的组件类型,包括其标题、默认列宽和可用的图表类型。`dashLayout` 数组描述了当前的排列。`renderDashGrid()` 遍历 `dashLayout`,为每个组件创建一个容器元素,并调用相应的绘制函数。图表使用 Canvas 2D API 绘制在 HTML5 `
标签:DAST, GPT, IOC分析, MITRE ATT&CK集成, 公开情报源, 关系图, 后端开发, 多模态安全, 威胁地图, 威胁情报, 威胁行为者分析, 开发者工具, 恶意软件分析, 数据仪表板, 数据可视化, 无云依赖, 本地部署, 浏览器仪表板, 漏洞管理, 网络安全, 自托管应用, 逆向工具, 钓鱼检测, 隐私保护