AuvaLabs/threatwatch

GitHub: AuvaLabs/threatwatch

一款零成本、自托管的网络威胁情报仪表板,聚合 142 个 RSS 和暗网源,提供十分钟级刷新的威胁态势视图。

Stars: 0 | Forks: 0

# ThreatWatch **零成本、自托管的网络威胁情报平台** [![Python 3.11+](https://img.shields.io/badge/python-3.11+-3776AB?logo=python&logoColor=white)](https://www.python.org/) [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) [![Docker](https://img.shields.io/badge/docker-ready-2496ED?logo=docker&logoColor=white)](docker-compose.yml) [![Zero Cost](https://img.shields.io/badge/cost-%240%2Fmonth-brightgreen)]() [![Feeds](https://img.shields.io/badge/feeds-142-blue)]() [![GitHub Stars](https://img.shields.io/github/stars/AuvaLabs/threatwatch?style=social)](https://github.com/AuvaLabs/threatwatch) **[在线演示](https://threatwatch.auvalabs.com)** · **[GitHub Pages](https://auvalabs.github.io/threatwatch/)** 聚合来自 142 个 RSS 源和暗网源的威胁情报,按类别对文章进行分类,并提供实时仪表板。在你自己的基础设施上运行。无需 API 密钥。 [功能特性](#features) · [快速开始](#quick-start) · [仪表板](#dashboard) · [架构](#architecture) · [API](#api-endpoints) · [贡献](#contributing)
## 仪表板预览 ![ThreatWatch Dashboard](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/b578bfb698022739.gif) ## 功能特性 ### 采集 - 142 个 RSS 源(安全博客、Google News、Bing News、全球 CERT) - 暗网监控(ThreatFox IOC、勒索软件受害者追踪、C2 服务器 IP) - 10 分钟刷新周期,自动部署到 GitHub Pages - 8 线程并行获取,数秒内处理完所有源 - 滚动 7 天时间窗口,支持跨管道运行合并 ### 分类 - 22 个威胁类别:勒索软件、零日漏洞、APT、DDoS、供应链等 - 75+ 个威胁行为者和恶意软件家族(APT28、LockBit、Lazarus Group 等) - 80+ 个国家/地区,支持地理归因 - 15 个行业部门 - 噪声过滤:自动排除产品公告、职位列表、融资轮次 - 基于正则表达式的关键词分类器,无需调用 API ### 去重 - 使用词元倒排索引进行模糊匹配 - 比原生成对比较快 24 倍 - 跨区域合并,采用内容优先的区域归因 ### 仪表板 - 服务端渲染,加载时间不到一秒 - 单个 HTML 文件,无构建步骤,无框架 - 自动生成的威胁情报简报(普通模式) - 可选 AI 驱动的简报(支持任何 LLM 提供商 —— 在 UI 中切换) - 关键事件面板,包含直接文章链接 - 威胁行为者聚焦和行业影响面板,支持下钻 - 区域过滤器(Global、NA、EMEA、MENA、APAC、LATAM)—— 感知内容 - 类别过滤器(勒索软件、违规、DDoS、APT 等) - 文章详情视图,包含 IOC 提取(CVE、IP、哈希、域) - 亮色和暗色主题 ### 集成 - RSS 源输出,适用于阅读器和 SIEM - JSON API,用于程序化访问 - 启用 CORS,支持嵌入其他仪表板 ## 快速开始 ### Docker Compose(推荐) ``` git clone https://github.com/AuvaLabs/threatwatch.git cd threatwatch # 创建 .env file (可选,无文件也可运行) cp .env.example .env # 启动所有服务 docker compose up -d ``` 管道在启动时立即运行,随后每 10 分钟运行一次。仪表板地址为 **http://localhost:8098**。 ### 手动设置 ``` # 克隆 git clone https://github.com/AuvaLabs/threatwatch.git cd threatwatch # 安装 dependencies python3 -m venv venv source venv/bin/activate pip install -r requirements.txt # 创建 data directories mkdir -p data/output/hourly data/output/daily \ data/state/ai_cache \ data/logs/run_logs data/logs/summaries # 运行 pipeline python threatdigest_main.py # 启动 dashboard server python serve_threatwatch.py ``` 如需自动刷新,请添加 cron 作业: ``` */10 * * * * cd /path/to/threatwatch && /path/to/venv/bin/python threatdigest_main.py >> data/logs/cron.log 2>&1 ``` ## 配置 ### 环境变量 | 变量 | 默认值 | 描述 | |---|---|---| | `PORT` | `8098` | 仪表板服务器端口 | | `SITE_DOMAIN` | `localhost:8098` | RSS 源链接的域名 | | `FEED_CUTOFF_DAYS` | `7` | 文章滚动窗口 | ### 可选:AI 驱动简报 ThreatWatch 无需任何 API 密钥即可工作。要启用 AI 驱动的简报,请配置任何兼容 OpenAI 的 LLM 提供商: | 变量 | 默认值 | 描述 | |---|---|---| | `LLM_API_KEY` | _(空)_ | 你的 LLM 提供商的 API 密钥 | | `LLM_BASE_URL` | `https://api.openai.com/v1` | API 基础 URL | | `LLM_MODEL` | `gpt-4o-mini` | 模型名称 | | `LLM_PROVIDER` | `auto` | `auto`、`openai`、`anthropic`、`ollama` | 支持 OpenAI、Groq、Together、Ollama(免费/本地)、Mistral、DeepSeek 以及任何兼容 OpenAI 的 API。 ### 源配置 源在 `config/` 目录下的 YAML 文件中定义: | 文件 | 描述 | |---|---| | `feeds_native.yaml` | 安全博客、供应商公告、CERT | | `feeds_google.yaml` | Google News 搜索查询 | | `feeds_bing.yaml` | Bing News 搜索查询 | 编辑这些文件以添加或删除源。无需重启。更改将在下一次管道运行时应用。 ## 架构 **管道** (`threatdigest_main.py`):源 > 获取 > 去重 > 抓取 > 分类 > AI 简报(可选) > 输出 **服务器** (`serve_threatwatch.py`):Python HTTP 服务器,支持 SSR、ETag 缓存、gzip、CORS **前端** (`threatwatch.html`):单个 HTML 文件。无构建步骤,无框架。 **存储**:平面 JSON 文件。无数据库,无 Redis,无消息队列。 ### 项目结构 ``` threatdigest_main.py # Pipeline orchestrator serve_threatwatch.py # HTTP server with SSR threatwatch.html # Dashboard UI (single file) modules/ ├── feed_loader.py # YAML feed config parser ├── feed_fetcher.py # Parallel RSS fetcher ├── deduplicator.py # Fuzzy dedup (word-shingle index) ├── article_scraper.py # Full-text extraction ├── keyword_classifier.py # Zero-cost regex classifier ├── briefing_generator.py # AI briefing (any LLM provider) ├── darkweb_monitor.py # Dark web intel aggregation ├── output_writer.py # JSON/RSS output ├── config.py # Global configuration └── ... config/ ├── feeds_native.yaml # Security blogs & CERTs ├── feeds_google.yaml # Google News feeds └── feeds_bing.yaml # Bing News feeds scripts/ ├── deploy_gh_pages.py # GitHub Pages static deploy ├── validate_feeds.py # Feed health checker ├── cleanup.py # Data cleanup utility └── weekly_digest.py # Weekly summary generator data/ ├── output/ # JSON + RSS output files ├── state/ # Pipeline state & cache └── logs/ # Run logs & summaries tests/ # Test suite docker-compose.yml # Two-service deployment Dockerfile # Python 3.11-slim based ``` ## API 端点 服务器默认在端口 **8098** 上运行: | 方法 | 路径 | 描述 | |---|---|---| | `GET` | `/` | 仪表板(服务端渲染 HTML) | | `GET` | `/api/articles` | 所有文章(JSON) | | `GET` | `/api/articles?offset=0&limit=20` | 分页文章 | | `GET` | `/api/briefing` | 威胁情报简报 | | `GET` | `/api/stats` | 管道运行统计 | | `GET` | `/api/rss` | RSS 源(XML) | 所有 JSON 端点均支持 CORS、ETag 条件请求和 gzip 压缩。 ## 运行测试 ``` # 安装 dev dependencies pip install -r requirements.txt # 运行 tests pytest tests/ -v # 运行 with coverage pytest tests/ --cov=modules --cov-report=term-missing ``` ## 安全 有关我们的安全策略以及如何报告漏洞,请参阅 [SECURITY.md](SECURITY.md)。 ## 行为准则 本项目遵循 [Contributor Covenant](CODE_OF_CONDUCT.md)。参与本项目即表示你同意遵守此准则。 ## 许可证 [MIT](LICENSE) — 可免费用于个人和商业用途。
作者:[Nicholai Imbong](https://github.com/nicholaiimbong) · [AuvaLabs](https://github.com/AuvaLabs) [![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-FFDD00?logo=buy-me-a-coffee&logoColor=black)](https://buymeacoffee.com/nicholaiimbong)
标签:APT, Docker, ESC4, HTTP/HTTPS抓包, IOC, nuclei, OSINT, Petitpotam, Python, RSS聚合, Self-hosted, TIP, 仪表盘, 勒索软件, 多模态安全, 威胁情报, 威胁源, 安全运营, 安全防御评估, 开发者工具, 态势感知, 恶意软件, 情报收集, 扫描框架, 无后门, 暗网监控, 构建工具, 漏洞研究, 网络安全, 网络调试, 自动化, 请求拦截, 隐私保护, 零成本, 零日漏洞