sureshkumark03/Threat-Intelligence-Correlation-Engine

GitHub: sureshkumark03/Threat-Intelligence-Correlation-Engine

一个轻量级威胁情报自动化平台,通过抓取安全 RSS 资讯、提取 CVE 并与本地资产清单关联匹配,实现个性化的漏洞实时告警。

Stars: 0 | Forks: 0

# 威胁情报自动化 自动化流水线,用于收集安全 RSS 文章,提取 CVE 标识符,将内容与本地资产清单进行比对,并在匹配到相关内容时发送 Slack 告警。 ## 功能 - 使用 `feedparser` 进行多源 RSS 抓取 - 通过正则表达式提取 CVE(`CVE-YYYY-NNNN+`) - JSON 威胁情报存储(`threat_intel_news.json`) - 针对 `local.csv`(厂商/产品)的资产清单匹配 - 带有防重复机制的 Slack 通知 - 计划执行的 GitHub Actions(每 6 小时) - 结构化日志输出至控制台和 `logs/application.log` ## 项目结构 ``` project/ ├── main.py ├── rss_fetcher.py ├── cve_extractor.py ├── inventory_matcher.py ├── slack_notifier.py ├── utils.py ├── data/ │ ├── local.csv │ ├── threat_intel_news.json │ ├── notification.json │ └── processed_notifications.json ├── logs/ │ └── application.log ├── requirements.txt ├── .env.example └── .github/workflows/threat_intel.yml ``` ## 前置条件 - Python 3.10+ - Slack Incoming Webhook URL **或** Slack Bot Token + 频道 - (可选)用于计划自动化的 GitHub 仓库 ## 设置 ### 1. 克隆并进入项目 ``` cd project ``` ### 2. 创建虚拟环境 ``` python -m venv venv # Windows venv\Scripts\activate # Linux/macOS source venv/bin/activate ``` ### 3. 安装依赖 ``` pip install -r requirements.txt ``` ### 4. 配置环境变量 ``` copy .env.example .env # Windows # cp .env.example .env # Linux/macOS ``` 编辑 `.env` 并至少设置以下内容: | 变量 | 描述 | |----------|-------------| | `SLACK_WEBHOOK_URL` | Slack Incoming Webhook(推荐) | | `RSS_FEED_URLS` | 逗号分隔的 RSS URL(可选) | ### 5. 自定义资产清单 编辑 `data/local.csv`: ``` vendor,product Microsoft,Windows Apache,Log4j ``` 标题或摘要中提及任何厂商或产品(不区分大小写)的文章将被标记为待通知。 ## 用法 ### 运行完整流水线 ``` python main.py ``` ### 演练模式(不发送真实的 Slack HTTP 请求) ``` python main.py --dry-run ``` ### 跳过 Slack(仅生成 JSON) ``` python main.py --skip-slack ``` ## 输出文件 | 文件 | 描述 | |------|-------------| | `data/threat_intel_news.json` | 包含 CVE ID 的所有收集到的文章 | | `data/notification.json` | 与资产清单匹配的文章 | | `data/processed_notifications.json` | 已发送至 Slack 的链接(用于去重) | | `logs/application.log` | 应用程序日志文件 | ### 威胁情报 JSON 格式 ``` [ { "title": "Article Title", "summary": "Article Summary", "published_date": "2026-06-02", "link": "https://example.com/article", "cve_ids": ["CVE-2026-12345"] } ] ``` ### 通知 JSON 格式 ``` [ { "title": "Article Title", "cve_ids": ["CVE-2026-12345"], "summary": "Article Summary", "published_date": "2026-06-02", "link": "https://example.com/article" } ] ``` ## Slack 配置 ### 选项 A:Incoming Webhook(推荐) 1. 在 [api.slack.com](https://api.slack.com/apps) 创建一个 Slack 应用 2. 启用 **Incoming Webhooks** 并将 Webhook 添加到您的频道 3. 在 `.env` 中设置 `SLACK_WEBHOOK_URL` ### 选项 B:Bot token 1. 创建一个具有 `chat:write` 权限的 Slack 应用 2. 安装至工作区并复制 Bot User OAuth Token 3. 在 `.env` 中设置 `SLACK_BOT_TOKEN` 和 `SLACK_CHANNEL` 通过在 `data/processed_notifications.json` 中跟踪文章链接,来防止发送重复通知。 ## GitHub Actions 工作流 `.github/workflows/threat_intel.yml`: - 每 **6 小时**(cron)或手动触发运行一次 - 安装依赖并运行 `python main.py` - 当数据发生变化时,提交更新后的 JSON 文件 - 在流水线运行期间发送 Slack 告警 ### 必需的 GitHub Secrets | Secret | 是否必需 | 描述 | |--------|----------|-------------| | `SLACK_WEBHOOK_URL` | 是* | Slack webhook URL | | `SLACK_BOT_TOKEN` | 是* | Webhook 的替代方案 | | `SLACK_CHANNEL` | 否 | Bot token 模式下的频道 | | `RSS_FEED_URLS` | 否 | 覆盖默认的 RSS 源 | \* 请至少配置一种 Slack 认证方式。 ### Actions 的仓库布局 将此 `project/` 文件夹放置在仓库根目录(如工作流 `working-directory: project` 所示)。如果您的仓库根目录**就是**项目文件夹,请相应地更新 `threat_intel.yml` 中的 `working-directory` 路径。 ## 错误处理 该流水线可处理: - RSS 连接和解析错误(针对每个源,失败后继续执行) - 缺失或无效的资产清单 CSV - JSON 读写失败 - Slack API 和网络超时 - 无效或缺失的环境配置(记录警告并跳过 Slack) ## 日志记录 日志使用带有时间戳和级别的 Python `logging`。输出目标为: - **控制台**(stdout) - **文件**:`logs/application.log` 在 `.env` 中设置 `LOG_LEVEL=DEBUG` 可调整日志详细程度。 ## 许可证 MIT。
标签:DevSecOps, ETW劫持, feedparser, GitHub Actions, Homebrew安装, PB级数据处理, Python, RSS订阅, Slack通知, XSS, 上游代理, 企业安全, 占用监测, 威胁情报, 安全告警, 安全运维, 定时任务, 实时处理, 实时安全告警, 密码管理, 开发者工具, 数据提取, 无后门, 日志记录, 漏洞匹配, 漏洞情报, 瑞士军刀, 网络威胁情报, 网络资产管理, 自动化安全平台, 自动笔记, 资产管理, 逆向工具