DarkDav1/threat-intel-dashboard
GitHub: DarkDav1/threat-intel-dashboard
一个自动化威胁情报仪表板,从多个权威安全数据源采集并标准化每日漏洞与研究情报,为安全运营团队提供聚焦的 Web 可视化视图和可导出的每日简报。
Stars: 0 | Forks: 0
# 威胁情报仪表板
一个适用于小型家庭实验室或安全运营流程的自动化威胁情报仪表板。
该项目从受信任的漏洞和安全研究来源收集每日情报信号,将其标准化为受限的 JSON 格式,并渲染出一个聚焦的 Web 仪表板,包含:
- 资源监控
- 结构化 CVE 雷达
- 检测覆盖率
- 研究动态
- 防御者行动队列
- 可导出的每日简报
- 流水线健康状态
- 流水线运行历史
- 来源覆盖诊断
- 基于关注列表的本地相关性评分
## 数据来源
- CISA 已知被利用漏洞
- NVD CVE API 2.0
- FIRST EPSS
- Microsoft 威胁情报
- Palo Alto Unit 42
- Cisco Talos
- The DFIR Report
- Mandiant
- CrowdStrike
- Elastic Security
- Rapid7
- Huntress
## 项目初衷
该仪表板旨在避免生成松散的“安全新闻”摘要。收集流水线是确定性的、受来源限制的,并且只接受三种允许的内容类型:
- `cve_radar`
- `threat_intel`
- `defender_actions`
这使得 UI 聚焦于运营层面有用的威胁情报,而不是一般的技术新闻。
## 项目结构
```
dashboard/
public/index.html Web dashboard
server.js Small Node.js static/API server with read-only telemetry, briefing, and pipeline health
config/
watchlist.json Local relevance profile for assets, technologies, and security interests
scripts/
generate_threat_intel.py Fetches and formats daily intelligence
export_daily_briefing.py Exports an operator-readable Markdown briefing
discoveries_pipeline.sh Runs generation, append, and merge
append_discoveries_json_to_inbox.py
merge_discoveries_inbox.py
capture_daily_surfing_output.py
```
## 快速开始
生成并合并最新情报:
```
bash scripts/discoveries_pipeline.sh
```
该流水线还支持导出:
```
dashboard/daily-briefing.md
```
启动仪表板:
```
node dashboard/server.js
```
打开:
```
http://localhost:8765
```
落地页是运行该流水线的主机的只读资源监控器。它包括基于阈值的健康状态、最后一次遥测更新时间、遥测源状态,以及 CPU、内存、温度和网络吞吐量的简短浏览器内趋势图。威胁情报视图可在导航中找到。
CVE 雷达视图支持通过搜索文本、优先级、CISA KEV 状态和本地关注列表相关性进行分类过滤。它显示风险评分、相关性评分、影响区域和匹配的关注列表分组。
检测视图将优先的 CVE 映射到确定性的日志源指南、
追踪思路和 MITRE ATT&CK 技术参考。这旨在帮助
分析师从补丁分类过渡到检测覆盖率审查。
## 配置
默认布局在仓库根目录下运行。这些环境变量可以覆盖路径和网络设置:
```
COCKY_DASHBOARD_HOST=0.0.0.0
COCKY_DASHBOARD_PORT=8765
THREAT_INTEL_ROOT=/path/to/repo
THREAT_INTEL_DASHBOARD_DIR=/path/to/repo/dashboard
THREAT_INTEL_OUTPUT=/path/to/discoveries-generated.json
THREAT_INTEL_WATCHLIST=/path/to/watchlist.json
THREAT_INTEL_BRIEFING=/path/to/daily-briefing.md
THREAT_INTEL_DISCOVERIES=/path/to/discoveries.json
THREAT_INTEL_INBOX=/path/to/discoveries-inbox.json
THREAT_INTEL_PIPELINE_HEALTH=/path/to/pipeline-health.json
THREAT_INTEL_PIPELINE_HISTORY=/path/to/pipeline-history.json
THREAT_INTEL_SYSTEM_URL=http://remote-host:8765/api/system
THREAT_INTEL_DISCOVERIES_URL=http://remote-host:8765/api/discoveries
THREAT_INTEL_PIPELINE_URL=http://remote-host:8765/api/pipeline
THREAT_INTEL_PIPELINE_HISTORY_URL=http://remote-host:8765/api/pipeline-history
THREAT_INTEL_BRIEFING_URL=http://remote-host:8765/briefing.md
```
如果在本地运行仪表板但显示远程的家庭实验室节点,请将
`THREAT_INTEL_SYSTEM_URL`、`THREAT_INTEL_DISCOVERIES_URL` 和
`THREAT_INTEL_PIPELINE_URL` 设置为远程仪表板的 API endpoint。当你希望本地仪表板视图
镜像远程运行历史时,也需要设置
`THREAT_INTEL_PIPELINE_HISTORY_URL`。当你希望
本地的“简报”选项卡镜像远程的 Markdown 导出内容时,请设置 `THREAT_INTEL_BRIEFING_URL`。
## 本地相关性关注列表
`config/watchlist.json` 定义了对当前
环境至关重要的技术和安全领域。生成器使用此文件来提高匹配的
CVE 和研究帖子的优先级,而不会改变受信任的来源边界。
每个关注列表分组包含:
- `name`
- `weight`
- `keywords`
生成的 CVE 项目包括:
- `base_risk_score`
- `risk_score`
- `relevance_score`
- `watchlist_matches`
- `impact_area`
- `risk_factors`
- `detection`
仪表板可以将 CVE 过滤为仅显示关注列表匹配项。
## 每日简报
合并完成后,`scripts/export_daily_briefing.py` 会根据经过验证的仪表板数据创建一份 Markdown
简报。它包括:
- 执行摘要
- 重点漏洞
- 本地相关性摘要
- 检测指南
- 防御者行动
- 研究动态
- 来源覆盖情况
仪表板通过 `/api/briefing` 提供预览,并通过 `/briefing.md`
提供直接的 Markdown 访问。
## 自动化
该流水线兼容 cron 或诸如 OpenClaw 之类的 agent 调度器。Agent 应仅运行 shell 流水线,不应直接编辑仪表板数据:
```
bash scripts/discoveries_pipeline.sh
```
## 安全边界
- 仪表板 API 是只读的。
- 合并步骤仅接受三种允许的情报类型。
- 结构化的 CVE 和研究元数据仅允许通过固定的 `items` 和 `sources` 字段传入。
- 防御者行动被生成为一个受限队列,包含优先级、类别、所有者、时间窗口以及相关的 CVE 或来源。
- Markdown 简报仅在经过验证的数据合并后生成。
- 检测指南是基于规则的,根据 CVE 影响区域、漏洞利用信号和本地相关性生成。
- 本地关注列表的相关性是确定性的,从 `config/watchlist.json` 中读取。
- 收集诊断记录源的成功/失败状态以及 KEV、NVD、EPSS 和每个研究订阅源的条目数量。
- RSS 研究条目通过安全关键字进行过滤,以避免包含会议、访谈或一般性技术内容。
- 具有相同日期和标题的现有条目将被更新,而不是重复创建。
标签:Cutter, GNU通用公共许可证, Homebrew安装, MITM代理, Node.js, PB级数据处理, Python, 可视化看板, 后端开发, 威胁情报, 安全运维, 开发者工具, 无后门, 漏洞追踪, 逆向工具