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, 威胁情报, 安全规则引擎, 开发者工具, 数据处理管道, 无后门, 漏洞管理, 自动化报告, 逆向工具