sm4041/Automated-Threat-Intelligence-Monitoring-Reporting-Tool

GitHub: sm4041/Automated-Threat-Intelligence-Monitoring-Reporting-Tool

一个 Python 威胁情报自动化工具,从公开安全公告源收集漏洞信息并按风险评分生成结构化简报。

Stars: 0 | Forks: 0

# 自动化威胁情报监控与报告工具 这是一个 Python 数据流水线,能够从 **CISA KEV** 和 **MSRC RSS** 获取安全公告,对其进行规范化和评分,并自动生成结构化的 1 页简报——全程无需人工干预。 ## 功能 | 功能 | 详情 | |---------|--------| | **多源获取** | CISA Known Exploited Vulnerabilities (KEV) 目录 + Microsoft MSRC RSS 订阅源 | | **字段规范化** | 跨源统一 schema —— `id`、`severity`、`cve_ids`、`tags`、`in_kev` 等 | | **综合评分** | CVSS + 严重性级别 + KEV 状态 + CVE 存在情况 + 高危 tags → 0–10 分 | | **结构化导出** | JSON + CSV,保持一致的列顺序 | | **1 页简报** | 自动生成 Markdown 报告,包含执行摘要、Top 10 威胁表格和详细条目 | | **可重复执行** | 带时间戳的运行记录;原始数据、已处理数据和报告输出分开存储 | ## 项目结构 ``` threat-intel/ ├── main.py # CLI entry point ├── requirements.txt ├── pipeline.log # Runtime log (auto-created) ├── src/ │ ├── pipeline.py # Orchestrator: ingest → normalize → score → export → report │ ├── normalizer.py # Maps raw source fields to unified schema │ ├── scorer.py # Composite priority scoring (0.0–10.0) │ ├── exporter.py # JSON + CSV exports │ ├── reporter.py # 1-page Markdown brief generator │ └── ingestors/ │ ├── base.py # Abstract base ingestor │ ├── cisa_kev.py # CISA KEV JSON catalog │ └── msrc_rss.py # Microsoft MSRC RSS feed ├── data/ │ ├── raw/ # Raw ingested JSON (timestamped) │ └── processed/ # Normalized + scored JSON and CSV ├── reports/ # Generated Markdown briefs └── tests/ └── test_pipeline.py # pytest unit tests ``` ## 快速开始 ``` # 安装依赖(仅 pytest + 可选的 rich) pip install -r requirements.txt # 运行完整 pipeline python main.py # 仅运行 CISA KEV 源 python main.py --sources cisa # 运行但不保存 raw data python main.py --no-raw # 在不获取数据的情况下验证 imports python main.py --dry-run # 运行测试 python -m pytest tests/ -v ``` ## 评分逻辑 每个公告都会获得一个 0–10 的综合评分: | 维度 | 权重 | 说明 | |-----------|--------|-------| | CVSS 基础分数 | 0–4.0 | `cvss / 10 * 4` | | 严重性级别 | 0–3.0 | Critical=3, High=2, Medium=1, Low=0.5 | | 存在于 CISA KEV | +2.0 | 确认存在主动利用 | | 包含 CVE ID | +0.5 | 存在标准化的标识符 | | 高危 tags | +0–1.0 | RCE、zero-day、勒索软件、绕过身份验证、内存破坏 | **优先级标签:** CRITICAL (≥8.0) · HIGH (6–7.9) · MEDIUM (4–5.9) · LOW (2–3.9) · INFO (<2) ## 输出文件 每次运行后,都会创建三个带时间戳的输出: ``` data/raw/raw_YYYYMMDD_HHMMSS.json # Raw API/feed responses data/processed/advisories_YYYYMMDD_HHMMSS.json # Normalized + scored data/processed/advisories_YYYYMMDD_HHMMSS.csv # Same data, flat CSV reports/brief_YYYYMMDD_HHMMSS.md # 1-page Markdown brief ``` ## 添加新数据源 1. 创建 `src/ingestors/your_source.py`,继承 `BaseIngestor` 2. 实现 `fetch() → List[dict]`,并为每条记录标记 `_source = "YOUR_SOURCE"` 3. 在 `src/normalizer.py` 中添加规范化函数,并在 `_NORMALIZERS` 中注册 4. 将该 ingestor 添加到 `src/pipeline.py` 的 `ingestors` 列表中 ## 环境要求 - Python 3.10+ - 无需外部运行时依赖(仅使用标准库:`urllib`、`xml`、`csv`、`json`、`re`) - 使用 `pytest` 进行测试
标签:GPT, Python, 威胁情报, 安全规则引擎, 开发者工具, 数据处理管道, 无后门, 漏洞管理, 自动化报告, 逆向工具