An open API service indexing awesome lists of open source software.

https://github.com/adminlove520/threatvision

rss:https://adminlove520.github.io/ThreatVision/rss/security_news.xml
https://github.com/adminlove520/threatvision

Last synced: about 1 month ago
JSON representation

rss:https://adminlove520.github.io/ThreatVision/rss/security_news.xml

Awesome Lists containing this project

README

          

# ThreatVision 🔥 自动化安全监控与AI分析系统

[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)

本项目是一个**自动化安全监控与AI分析系统**,旨在**实时追踪最新的安全漏洞(CVE)**和 **GitHub 上的安全相关仓库**,并利用 **人工智能技术**进行深度分析,最终将有价值的安全情报 **自动发布到博客平台**。

## 🚀 功能亮点

* **多源数据监控**:
* **CVE 监控**: 实时抓取 GitHub 上最新的 CVE 相关信息,快速发现和跟踪最新的漏洞动态。
* **GitHub 仓库监控**: 通过关键词搜索和预定义的监控列表,全面监控 GitHub 上与网络安全相关的开源项目。
* **智能AI分析**:
* **OpenAI & Gemini 双引擎**: 集成 OpenAI 和 Gemini AI 模型,提供强大的自然语言处理能力,用于深入分析安全数据。
* **多维度安全评估**: 从**漏洞原理**、**利用方式**、**风险等级**、**影响范围**等多个维度对 CVE 和仓库进行评估,确保分析结果的深度和广度。
* **价值判断与筛选**: 通过 AI 智能判断安全信息的价值,**自动过滤**低价值信息,**聚焦**真正值得关注的安全威胁和技术。
* **自动化工作流**:
* **全自动化监控**: 系统 **7x24 小时**不间断运行,无需人工值守,自动化完成安全信息收集、分析和报告生成。
* **每日安全简报**: **每日定时**生成安全资讯报告,汇总最新的 CVE 漏洞和 GitHub 安全仓库动态,并推送到博客平台。
* **动态黑名单**: 根据 AI 分析结果,**自动更新**黑名单,**降低**无效信息干扰,提升监控效率。
* **灵活的配置与管理**:
* **多 GitHub Token 支持**: 支持配置 **多个 GitHub Token**,**智能轮换**使用,有效**避免 API 调用频率限制**。
* **可配置监控参数**: 关键词、监控仓库列表、黑名单等均可通过配置文件灵活调整,满足不同的监控需求。
* **详细日志记录**: 系统运行的**所有关键步骤**均有详细日志记录,方便问题排查和系统监控。
* **博客自动发布**:
* **集成博客平台**: 集成博客平台 API,**自动发布**每日安全资讯报告,快速分享安全情报。
* **Markdown 报告**: 分析结果和安全简报均以 **Markdown 格式**生成,方便阅读和编辑。
* **Redis 消息队列**:
* **API 速率限制优化**: 实现基于 Redis 的消息队列,**智能管理 API 调用**,有效避免 API 速率限制问题。
* **分布式任务处理**: 支持分布式任务处理,提高系统的 **并发能力** 和 **可靠性**。
* **任务优先级管理**: 支持任务优先级设置,确保重要任务优先执行。
* **任务重试机制**: 实现任务自动重试机制,提高任务执行成功率。
* **Preview-UI 可视化界面**:
* **实时数据展示**: 提供直观的 **Web 界面**,实时展示安全日报、CVE 漏洞和仓库监控数据。
* **数据可视化**: 集成 Chart.js 实现数据可视化,展示漏洞趋势和风险分布。
* **响应式设计**: 支持不同设备访问,提供良好的移动端体验。
* **GitHub Pages 部署**: 支持通过 GitHub Pages 自动部署,方便快捷。
* **RSS 自动生成**:
* **RSS 2.0 标准**: 生成符合 RSS 2.0 标准的订阅源,支持 WordPress 等博客平台自动订阅。
* **自动更新机制**: 安全日报生成后 **自动更新** RSS 源,确保内容实时性。
* **替代直接 API 发布**: 支持通过 RSS 订阅方式实现 WordPress 自动发布,简化部署流程。

## 🛠️ 技术实现

### 1. 监控模块 (Monitors)

* **`cve_monitor.py`**: **CVE 监控器**
* **GitHub API 交互**: 使用 GitHub API 搜索 CVE 相关的仓库,关键词 `CVE-202+`,并按 `updated` 时间排序。
* **CVE 信息提取**: 通过正则表达式从仓库名称和描述中提取 CVE 编号。
* **仓库信息抓取**: 获取仓库的描述、星数、更新时间、最近提交等信息。
* **黑名单过滤**: 支持**用户黑名单**和**仓库黑名单**,过滤无效信息源。
* **文件内容分析**: 克隆仓库到本地,**智能分析**仓库中的 **README.md** 和其他**高优先级文件**,计算文件**相关性得分**,初步筛选高价值仓库。
* **Token 智能管理**: 实现 GitHub Token 的**自动轮换**和**状态检查**,**动态切换**可用 Token,确保监控任务的连续性。
* **数据库存储**: 使用 **SQLite** 数据库 **`database/cve_record.db`** 存储 CVE 记录,包括 CVE 编号、描述、发布时间、最后修改时间、仓库 URL 等信息。

* **`github_monitor.py`**: **GitHub 仓库监控器**
* **关键词搜索**: 根据配置文件 **`config.py`** 中定义的 `GITHUB_KEYWORDS` 列表,定期搜索 GitHub 仓库。
* **监控列表**: 支持配置文件 **`config.py`** 中 `WATCHED_REPOSITORIES` 列表,**重点监控**预定义的安全仓库。
* **仓库信息抓取**: 获取仓库的详细信息,包括描述、星数、最后更新时间、最近提交记录等。
* **提交记录分析**: 抓取仓库的**最近提交记录**,**智能分析**提交信息和文件变更,初步判断仓库的**安全相关性**。
* **黑名单过滤**: 支持**用户黑名单**和**仓库黑名单**,过滤无效信息源。
* **Token 智能管理**: 与 CVE 监控器共享 Token 管理机制。
* **数据库存储**: 使用 **SQLite** 数据库 **`database/github_repo.db`** 存储 GitHub 仓库记录,包括仓库名称、URL、描述、最后更新时间、星数、是否为高价值仓库等信息。

### 2. AI 分析模块 (AI)

* **`analyzer.py`**: **AI 分析器**
* **OpenAI & Gemini API**: 集成 **OpenAI API** (主要) 和 **Gemini API** (备用),支持 **多模型** 切换,例如 `gpt-4o-mini-2024-07-18` (保底模型)。
* **Prompt 工程**: 针对 **不同分析场景** (CVE 分析、新仓库分析、仓库更新分析、特定监控仓库分析),设计了**不同的 Prompt 模板**,优化 AI 分析效果。
* **JSON 格式输出**: 要求 AI **严格按照 JSON 格式** 输出分析结果,方便程序解析和数据处理。
* **多维度安全分析**: AI 分析结果包含 **漏洞/仓库的简要描述**、**详细总结**、**风险等级**、**关键要点**、**技术细节**、**影响组件**、**价值评估**、**安全类型**、**更新类型**、**漏洞利用状态**等丰富信息。
* **结果验证与规范化**: 对 AI 返回的 JSON 结果进行**严格的格式校验**和**内容规范化**,确保数据的准确性和可用性。
* **动态黑名单更新**: 根据 AI 分析结果,**自动判断**仓库或用户是否应该加入黑名单,并**动态更新黑名单文件**。
* **分析结果持久化**: 将 AI 分析结果 **保存为 JSON 文件**,并 **更新数据库** 中的相应记录。
* **文章标题分类**: 支持对安全文章标题进行 **AI 分类**,用于生成安全资讯报告。
* **API 故障切换**: 当 OpenAI API 调用失败时,**自动切换**到 **备用 OpenAI API** 或 **Gemini API**,提高系统的**稳定性和可用性**。

### 3. 数据处理与管理 (Utils)

* **`logger.py`**: **日志记录器**
* 使用 `logging` 模块,提供**完善的日志记录**功能,覆盖**DEBUG**、**INFO**、**WARNING**、**ERROR** 等多个级别。
* 日志信息**详细**且**结构化**,方便问题排查和系统监控。
* 日志输出到文件 **`logs/security_monitor.log`**,并按日期滚动。

* **`queue_manager.py`**: **Redis 队列管理器**
* **任务队列管理**: 实现基于 Redis 的任务队列,用于管理 API 调用和异步任务。
* **分布式处理**: 支持分布式任务处理,提高系统的并发能力和可靠性。
* **速率限制优化**: 智能管理 API 调用,有效避免 API 速率限制问题。
* **优雅降级**: 当 Redis 不可用时,自动降级为本地线程池执行任务。

* **`rss_generator.py`**: **RSS 生成器**
* **RSS 2.0 标准**: 生成符合 RSS 2.0 标准的订阅源。
* **自动更新**: 当安全日报生成后自动更新 RSS 源。
* **WordPress 集成**: 支持 WordPress 自动订阅,实现自动化发布。
* **可配置**: 支持自定义 RSS 标题、描述和链接。

* **`article_fetcher.py`**: **文章抓取器**
* **多来源抓取**: 目前支持抓取 **BruceFeIix** 和 **洞见 (doonsec)** 微信公众号的安全文章。
* **RSS 订阅**: 支持通过 OPML 文件导入 RSS 订阅源,抓取安全相关博客的最新文章。
* **文章标题和 URL 提取**: 使用正则表达式从网页内容中提取文章标题和 URL。
* **重试机制**: 使用 **退避策略** 的重试机制,提高文章抓取的**稳定性和成功率**。
* **文章标题清理**: **标准化**和**清理**文章标题,移除多余的标记和格式。

* **`article_manager.py`**: **文章管理器**
* **文章去重**: **自动过滤**已处理过的文章 URL,避免重复分析和推送。
* **AI 分类结果处理**: 处理 AI 文章标题分类结果,**按类别整理**文章列表。
* **每日安全资讯报告生成**: **定时**生成 **Markdown 格式** 的每日安全资讯报告,汇总最新的安全文章和 AI 分析结果。
* **博客自动发布**: 调用 `blog_manager.py` 模块,将每日安全资讯报告 **自动发布到博客平台**。
* **文章数据持久化**: 将已处理的 URL 和分类文章 **保存为 JSON 文件**,方便后续使用和管理。

* **`blog_manager.py`**: **博客管理器**
* **博客平台 API 交互**: 封装了与博客平台 API 交互的 **常用功能**,例如 **创建文章**、**更新文章**。
* **文章 ID 映射管理**: **记录**每日安全资讯报告在博客平台上的 **文章 ID**,方便后续更新和管理。
* **博客自动发布**: 实现将每日安全资讯报告 **自动发布到博客平台** 的功能。

* **`opml_manager.py`**: **OPML 管理器**
* **OPML 文件解析**: 解析 OPML 文件,提取 RSS 订阅源列表。
* **本地 OPML 文件支持**: 支持使用本地 OPML 文件,通过 GitHub Actions 工作流定期更新。
* **Feed 合并**: 合并多个 OPML 文件中的订阅源,生成统一的 RSS 订阅列表。

* **`dingtalk.py`**: **钉钉通知**
* **钉钉群机器人通知**: 支持将重要的安全信息和告警通过钉钉群机器人发送。
* **消息格式处理**: 支持 Markdown 格式的消息发送,提升消息的可读性。

### 4. 数据库 (Database)

* **`database/models.py`**: **数据库模型定义**
* 使用 **SQLAlchemy** 定义了 **`CVERecord`** (CVE 记录) 和 **`Repository`** (GitHub 仓库记录) 两个数据模型,方便数据存储和查询。
* 数据库使用 **SQLite**,文件路径为 **`data/cve_record.db`** 和 **`data/github_repo.db`**。

### 5. 配置文件 (Config)

* **`config.py`**: **系统配置文件**
* 集中管理系统的**各项配置参数**,例如数据库路径、API 密钥、监控间隔、关键词列表、黑名单等。
* 支持通过环境变量和 YAML 配置文件进行灵活配置。
* **环境变量加载**: 使用 `python-dotenv` 从 `.env` 文件加载环境变量,保护敏感信息。
* **YAML 配置支持**: 支持从 `config.yaml` 文件加载部分配置,如监控关键词、关注仓库列表等。

### 6. 命令行界面 (CLI)

* **`main.py`**: **系统入口文件**
* **命令行参数**: 支持 `--once` 参数,用于单次运行模式(适用于 Cron 任务或 CI/CD)。
* **信号处理**: 支持优雅地处理 SIGINT 和 SIGTERM 信号,确保系统正常退出。
* **定时任务**: 使用 `schedule` 库实现每日定时任务,生成并发布安全资讯报告。
* **异步执行**: 使用线程池执行耗时的 AI 分析任务,避免阻塞主监控循环。
* **系统状态管理**: 提供 `start()`, `stop()`, `run_once()` 等方法,方便系统的启动、停止和状态管理。

### 7. API 服务

* **`api/main.py`**: **FastAPI 后端 API**
* **RESTful API**: 提供 RESTful API 端点,用于访问系统数据。
* **数据访问**: 支持获取安全日报、CVE 漏洞和 GitHub 仓库数据。
* **CORS 支持**: 配置了 CORS 中间件,允许跨域请求。
* **静态文件服务**: 支持提供静态文件服务,用于部署 Preview-UI。
* **健康检查**: 提供健康检查端点,用于监控 API 服务状态。

### 8. 预览 UI

* **`ui/`**: **Preview-UI 可视化界面**
* **现代化设计**: 采用现代化的设计语言,提供直观的用户界面。
* **响应式布局**: 支持不同屏幕尺寸,提供良好的移动端体验。
* **数据可视化**: 集成 Chart.js,实现漏洞趋势和风险分布的可视化。
* **实时数据**: 支持从 API 获取实时数据,展示最新的安全资讯。
* **GitHub Pages 部署**: 支持通过 GitHub Actions 自动部署到 GitHub Pages。

## 📋 快速开始

### 环境要求

* Python 3.8+
* 依赖库: 见 `requirements.txt`

### 安装步骤

1. **克隆仓库**
```bash
git clone https://github.com/yourusername/ThreatVision.git
cd ThreatVision/code
```

2. **安装依赖**
```bash
pip install -r requirements.txt
```

3. **配置环境变量**
创建 `.env` 文件,填入必要的 API 密钥:
```
# GitHub Tokens (多个用逗号分隔)
GITHUB_TOKENS=token1,token2

# OpenAI API
OPENAI_API_KEY=your_openai_api_key
OPENAI_MODEL=gpt-4o-mini

# Gemini API (可选,用于故障转移)
GEMINI_API_KEY=your_gemini_api_key

# 博客平台配置 (可选)
ENABLE_BLOG_PUBLISH=true
BLOG_API_URL=https://yourblog.example.com/api
BLOG_TOKEN=your_blog_token

# 钉钉配置 (可选)
DINGTALK_TOKEN=your_dingtalk_token
DINGTALK_SECRET=your_dingtalk_secret

# 监控间隔(秒)
MONITOR_INTERVAL=300
```

4. **配置监控参数**
编辑 `config.yaml` 文件,配置监控关键词和关注的仓库:
```yaml
github_keywords:
- "vulnerability"
- "security"
- "exploit"

watched_repositories:
- "OWASP/CheatSheetSeries"
- "projectdiscovery/nuclei-templates"

article_sources:
- name: "BruceFeIix"
url: "https://example.com/brucefeix"
```

### 运行系统

* **连续运行模式** (默认)
```bash
python main.py
```

* **单次运行模式** (适合 Cron 任务)
```bash
python main.py --once
```

## 📊 系统运行机制

### 监控流程

1. **初始化**: 系统启动时,初始化数据库和各模块。
2. **监控循环**: 定时执行 CVE 和 GitHub 仓库监控任务。
3. **数据存储**: 将监控到的原始数据存入 SQLite 数据库。
4. **异步分析**: 发现新的未分析数据时,提交到线程池进行 AI 分析。
5. **报告生成**: 每日定时生成安全资讯报告,汇总高价值信息。
6. **自动发布**: 根据配置,将报告发布到博客平台或通过钉钉推送。

### 数据流向