kbugra/ThreatLens

GitHub: kbugra/ThreatLens

ThreatLens 是一个基于 Python 的网络威胁情报融合与优先级排序平台,将公开漏洞情报和恶意 URL 指标转化为可评分、可映射、可导出的结构化蓝队输出。

Stars: 1 | Forks: 0

# ThreatLens ThreatLens 是一个基于 Python 的网络威胁情报 (CTI) 优先级排序平台。它将公开的漏洞情报和 URLhaus IOC 数据转化为可供分析师直接使用的输出内容:评分后的指标、优先级排序的漏洞、MITRE ATT&CK 映射、STIX 风格的捆绑包、Sigma 搜索模板、IOC 监控列表、截图以及每日威胁简报。 ![ThreatLens 演示快照](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0ff1051d14205048.png) ## 项目意义 公开的 CTI 源非常有用,但如果没有组织上下文,它们通常充满噪音、重复、过时且难以划分优先级。ThreatLens 展示了一个真实的蓝队工作流程: ``` Collect -> Normalize -> Deduplicate -> Score -> Map to ATT&CK -> Export STIX/Sigma -> Report ``` 我们的目标不是构建另一个 IP 信誉检查器,而是展示如何将原始的 CTI 数据转化为可划分优先级、可解释、可报告且随时可用于检测的情报。 ## ThreatLens 是什么 ThreatLens 是: - 一个公开 CTI 收集器 - 一个 IOC 和 CVE 规范化工具 - 一个去重流水线 - 一个可解释的评分引擎 - 一个漏洞优先级引擎 - 一个 MITRE ATT&CK 映射层 - 一个 STIX 风格的导出生成器 - 一个 Sigma 搜索模板和 IOC 监控列表生成器 - 一个 Markdown 分析师报告生成器 ThreatLens 不是: - 一个 SIEM - 一个 EDR - 一个恶意软件沙箱 - 一个归因平台 - 一个生产环境检测规则验证器 ## 功能 - 从 CISA KEV 和 EPSS 收集公开的漏洞情报 - 从 URLhaus 收集恶意 URL 指标 - 将原始的 IOC 和 CVE 记录规范化为通用 schema - 对重复的指标进行去重 - 结合来源、时效性、状态和恶意软件标签信号对指标进行评分 - 结合 KEV、批量 EPSS、暴露程度和严重性上下文对漏洞进行优先级排序 - 将观察到的主题映射到 MITRE ATT&CK 技术 - 将高优先级指标导出为 STIX 2.1 风格的捆绑包 - 生成实验性的 Sigma 搜索模板和 IOC 监控列表,用于 SIEM/代理验证 - 生成供分析师直接使用的每日威胁简报 - 包含截图、自检和针对性单元测试 ## 架构 ``` collectors/ CISA KEV, EPSS, URLhaus | normalizer/ Indicator and Vulnerability schemas | scoring/ IOC severity and CVE priority | enrichment/ MITRE ATT&CK mapping | export/ + detection/ Markdown report, STIX bundle, Sigma rules, IOC watchlists ``` ## 数据来源 | 来源 | 用途 | API 密钥 | |---|---|---| | CISA KEV | 已知被利用的漏洞 | 否 | | FIRST EPSS | 批量 CVE 利用概率上下文 | 否 | | URLhaus | 恶意软件分发 URL | 是,abuse.ch Auth-Key | 将密钥保存在本地 `.env` 文件中。请使用 `.env.example` 作为模板。 ## 快速开始 安装依赖: ``` python -m pip install -r requirements.txt ``` 创建本地密钥: ``` copy .env.example .env ``` 然后在 `.env` 中设置您的 abuse.ch URLhaus 密钥: ``` URLHAUS_AUTH_KEY=replace_with_your_urlhaus_auth_key ``` 运行完整流水线: ``` python threatlens.py collect --sources kev epss urlhaus python threatlens.py normalize python threatlens.py score python threatlens.py map-attack python threatlens.py export-stix python threatlens.py generate-sigma python threatlens.py report python threatlens.py self-test python -m pytest ``` ## 命令 | 命令 | 功能说明 | |---|---| | `python threatlens.py collect --sources kev epss urlhaus` | 下载原始公开 CTI 数据 | | `python threatlens.py normalize` | 将原始数据转换为通用 IOC/CVE schema | | `python threatlens.py score` | 对指标进行评分并对漏洞进行优先级排序 | | `python threatlens.py map-attack` | 将证据主题映射到 MITRE ATT&CK 技术 | | `python threatlens.py export-stix` | 将高优先级指标导出为 STIX | | `python threatlens.py generate-sigma` | 生成实验性的 Sigma 模板和 IOC 监控列表 | | `python threatlens.py report` | 构建每日分析师威胁简报 | | `python threatlens.py self-test` | 验证预期的输出产物 | | `python -m pytest` | 运行针对匹配、评分、规范化和 STIX 导出的针对性单元测试 | ## 演示结果 最近一次本地演示运行生成: - 28,627 个规范化指标 - 1,587 条漏洞记录 - 2,547 个高优先级指标 - 72 个 P1 优先级漏洞 - 5 个已映射的 MITRE ATT&CK 主题 - 100 个已导出的 STIX 指标 - 5 个已生成的 Sigma 规则模板 - 2 份针对高优先级 URL 和域名的 IOC 监控列表 由于 URLhaus 是一个实时源,每次运行的计数可能会有所变化。 ## 输出示例 | 输出 | 路径 | |---|---| | 分析师报告 | `reports/daily_threat_brief.md` | | STIX 捆绑包 | `exports/threatlens_indicators_stix.json` | | Sigma 规则 | `detection/rules/*.yml` | | IOC 监控列表 | `detection/watchlists/*.txt` | | ATT&CK 映射 | `data/enriched/attack_mapping.json` | | 演示 HTML 快照 | `docs/demo_snapshot.html` | | 演练指南 | `docs/walkthrough.md` | ## 截图 ### 流水线状态 ![流水线状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/b0ed4e6799205055.png) ### 评分分布 ![评分分布](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/ef98ea8aef205101.png) ### STIX 导出和 Sigma 规则 ![STIX 和 Sigma 输出](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/dbc6366f72205107.png) ### 最高优先级漏洞 ![最高优先级漏洞](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0c41ab14dc205112.png) ## MITRE ATT&CK 映射 ThreatLens 使用保守的、基于规则的 ATT&CK 映射。它不执行攻击者归因。 | 主题 | 技术 | |---|---| | 恶意软件 URL 传递 | T1105 - Ingress Tool Transfer | | 脚本 payload 传递 | T1059 - Command and Scripting Interpreter | | 面向公众的应用程序利用 | T1190 - Exploit Public-Facing Application | | 远程服务利用 | T1210 - Exploitation of Remote Services | | RDP 远程服务 | T1021.001 - Remote Services: Remote Desktop Protocol | 正确的 CTI 表述: ``` Observed evidence is consistent with ATT&CK technique X. ``` 而不是: ``` This activity belongs to actor Y. ``` ## 局限性 - 公开的 CTI 源可能包含过时、嘈杂、不完整或相互冲突的数据。 - 评分是启发式的,旨在用于分诊。 - 不执行攻击者归因。 - 生成的 Sigma 规则和 IOC 监控列表是实验性的,需要进行 SIEM/代理验证。 - STIX 导出是 STIX 2.1 风格的指标捆绑包;经过验证的关系建模是未来的工作。 - 当前的组织配置文件是一个演示配置文件,而不是真实的资产清单。 ## 未来工作 - 添加 AbuseIPDB IP 信誉丰富功能 - 添加 AlienVault OTX 丰富功能和来源重叠比对 - 添加 MalwareBazaar 哈希丰富功能 - 添加 Streamlit 仪表盘 - 添加 FastAPI 端点 - 添加 OpenCTI 或 MISP 导入/导出工作流 - 针对边缘情况下的规范化和评分增加更多单元测试 ## 作品集总结 ThreatLens 展示了如何将公开的漏洞情报和恶意软件 URL 指标转化为经过优先级排序的蓝队输出内容:可解释的 IOC 严重性、P1 漏洞优先级排序、ATT&CK 上下文、STIX 风格的共享产物、Sigma 搜索模板、IOC 监控列表以及可供分析师直接使用的报告。
标签:CISA KEV, CISA项目, Cloudflare, CVE, EPSS, Go语言工具, GPT, IOC, IP 地址批量处理, MITRE ATT&CK, Python, Sigma 规则, STIX 2.1, URLhaus, 去重, 域名分析, 威胁情报, 威胁评分, 安全规则引擎, 安全运营, 开发者工具, 情报归一化, 情报融合, 扫描框架, 数字签名, 无后门, 每日威胁简报, 漏洞优先级评估, 漏洞管理, 网络安全, 网络安全开源项目, 逆向工具, 隐私保护