3Basit/threat_intelligence-Asset_Monitor
GitHub: 3Basit/threat_intelligence-Asset_Monitor
一个集成资产发现、多源威胁情报丰富与威胁压力因子计算的风险评估流水线,通过CPE版本感知匹配将CVE精准关联到存活资产,输出结构化数据以支撑网络风险的财务量化预测。
Stars: 0 | Forks: 0
# Cyber Risk Dollarizer — 威胁情报模块
**Cyber Risk Dollarizer** 毕业设计项目的一部分。该模块负责:
1. 发现和监控 Web 资产(HTTP 指纹识别 + Nmap + 技术 + WAF 检测)
2. 从 CISA KEV 获取已被确认利用的漏洞
3. 使用 CVSS 评分 + CPE 版本范围(NVD)以及被利用概率(EPSS)来丰富 CVE 信息
4. 检查公开漏洞利用的可用性(Exploit-DB)
5. 使用 vendor、product 和 CPE 版本范围将 CVE 匹配到存活资产
6. 计算每个 CVE-资产对的威胁压力因子 (TPF)
7. 将 `threat_intelligence_output.json` 发送到预测模型
## 项目结构
```
grad.project.C/
│
├── main.py # Full pipeline runner
├── asset_monitor.py # Phase 1+2+3: HTTP + Nmap + Tech/WAF detection
├── cisa_kev.py # Fetches CISA KEV catalog
├── nvd_fetch.py # Enriches CVEs with NVD + EPSS + CPE ranges
├── exploit_db.py # Checks public exploit availability
├── matching.py # Matches CVEs to assets (CPE version-aware)
├── threat_pressure.py # Computes TPF + generates alerts
├── database.py # SQLite schema + all DB functions
├── check_db.py # DB inspection utility
│
├── targets.json # Scan targets (config — edit this)
├── assets.json # Discovered assets (auto-generated)
├── threat_intelligence_output.json # ← sent to Prediction Model
├── alerts.json # New/escalated alerts (auto-generated)
├── asset_changes.json # Detected infrastructure changes
│
├── threat_intelligence.db # SQLite database (11 tables)
├── requirements.txt
└── README.md
```
## 数据库架构(11 个表)
| 表 | 内容 |
|---|---|
| `assets` | 发现的 Web 资产 |
| `asset_services` | 来自 Nmap 的开放端口和服务 |
| `asset_technologies` | 检测到的技术(CMS、框架、JS 库) |
| `asset_waf_info` | WAF 检测结果 |
| `cisa_kev` | 原始 CISA KEV 目录 |
| `enriched_cves` | 包含 CVSS + EPSS + CPE 范围的丰富化 CVE |
| `exploitdb_cves` | 每个 CVE 的公开漏洞利用可用性 |
| `matched_cves` | CVE-资产匹配(仅高置信度) |
| `threat_intelligence` | 最终 TPF 输出 |
| `alerts` | 告警历史 |
## 配置说明
### 前置条件
- Python 3.13
- Nmap 安装在 `C:\Program Files (x86)\Nmap\nmap.EXE`
- 从 [nvd.nist.gov](https://nvd.nist.gov/developers/request-an-api-key) 获取的免费 NVD API 密钥
### 安装依赖
```
pip install -r requirements.txt
```
### 配置目标
编辑 `targets.json`:
```
[
{
"target_id": "TARGET-001",
"url": "http://your-target.com",
"business_criticality": "high",
"internet_facing": true,
"authorized": true,
"scan_profile": "default"
}
]
```
## 运行流水线
```
$env:NVD_API_KEY="your-key-here"
python main.py
python check_db.py
```
**流水线步骤:**
```
init_db() → creates/migrates SQLite schema (11 tables)
asset_monitor.py → scans targets, discovers assets + technologies + WAF
cisa_kev.py → fetches ~1500+ confirmed-exploited CVEs
nvd_fetch.py → enriches CVEs with CVSS + EPSS + CPE version ranges
exploit_db.py → checks Exploit-DB for public exploits per CVE
matching.py → matches CVEs to assets (CPE version-aware)
threat_pressure.py → computes TPF, generates alerts, writes output
```
## 流水线流程
```
targets.json
│
▼
Asset Monitor
Phase 1: HTTP fingerprinting (vendor, product, server header)
Phase 2: Nmap service + version detection
Phase 3A: Technology detection (HTML, cookies, JS libs, headers)
Phase 3B: WAF detection (Cloudflare, Akamai, AWS, F5, etc.)
│
▼
CISA KEV → NVD (CVSS + CPE ranges) + EPSS → Exploit-DB → Matching → TPF
│
▼
threat_intelligence_output.json ← sent to Prediction Model
alerts.json
```
## 威胁压力因子 (TPF)
TPF 是一个乘数(1.0–2.0):
```
Final Risk = base_probability × threat_pressure_factor
```
**组成部分:**
| 组件 | 条件 | 权重 |
|---|---|---|
| CVSS 评分 | ≥9.0 严重 | +0.20 |
| CVSS 评分 | ≥7.0 高危 | +0.13 |
| CVSS 评分 | ≥4.0 中危 | +0.07 |
| EPSS 评分 | ≥0.7 | +0.20 |
| EPSS 评分 | ≥0.4 | +0.13 |
| EPSS 评分 | ≥0.1 | +0.07 |
| KEV 存在性 | 始终(所有记录) | +0.13 |
| 漏洞类型 | RCE | +0.20 |
| 漏洞类型 | SQLi / 身份验证绕过 | +0.15 |
| 漏洞类型 | 路径遍历 / SSRF | +0.12 |
| 漏洞类型 | XSS | +0.08 |
| 业务重要性 | 关键 | +0.20 |
| 业务重要性 | 高 | +0.13 |
| 业务重要性 | 中 | +0.07 |
| 时效性 | KEV 添加时间 ≤30 天 | +0.10 |
| 时效性 | KEV 添加时间 ≤90 天 | +0.06 |
| 时效性 | KEV 添加时间 ≤365 天 | +0.03 |
| 已知勒索软件 | 如果为真 | +0.07 |
| 版本已确认 | 仅 CPE 范围 | +0.05 |
| 公开漏洞利用 | Exploit-DB 已确认 | +0.10 |
**告警级别:**
| TPF | 告警级别 |
|---|---|
| ≥ 1.7 | 严重 (CRITICAL) |
| ≥ 1.5 | 高危 (HIGH) |
| ≥ 1.3 | 中危 (MEDIUM) |
| < 1.3 | 低危 (LOW) |
## 版本确认
系统采用两次验证的方法来确认检测到的版本是否存在漏洞:
**第一轮 — CPE 范围(高置信度)**
使用结构化的 NVD CPE 数据来检查 Nmap 检测到的版本是否落在易受攻击的范围内。TPF 增加 +0.05。报告为 `confirmation_method: "cpe_range"`。
**第二轮 — 文本搜索(中置信度,后备方案)**
当 NVD 没有结构化的 CPE 数据时,在 CVE 描述文本中搜索版本字符串。不增加 TPF 加成。报告为 `confirmation_method: "text_search"`。
**无匹配**
`version_confirmed: false`,`confirmation_method: "none"`。
## 数据来源
| 来源 | URL | 提供的内容 |
|---|---|---|
| CISA KEV | cisa.gov | 已确认被利用的漏洞 |
| NVD | nvd.nist.gov | CVSS + CPE 版本范围 + 发布日期 |
| EPSS | first.org | 30 天被利用概率 |
| Exploit-DB | exploit-db.com | 公开漏洞利用可用性 |
| Nmap | nmap.org | 存活服务版本检测 |
## 团队集成
```
Pentest Model → Threat Intelligence Module (this)
↓
threat_intelligence_output.json
↓
Prediction Model → LLM Recommendations
```
有关完整的字段文档,请参阅 `THREAT_INTELLIGENCE_OUTPUT_GUIDE.md`。
## 法律声明
仅扫描您经授权测试的系统。演示目标(`testphp.vulnweb.com`、`testasp.vulnweb.com`)是由 Acunetix 提供的合法测试环境。
标签:CISA KEV, CPE版本匹配, CTI, CVE匹配, CVSS, EPSS, Exploit-DB, GPT, Nmap, NVD, Python, SQLite, Web资产, 公开漏洞利用, 威胁压力计算, 威胁情报, 实时处理, 密码管理, 开发者工具, 无后门, 毕业设计, 漏洞管理, 网络安全, 网络指纹识别, 自动化安全扫描, 虚拟驱动器, 资产监控, 逆向工具, 量化风险, 隐私保护