sahifasyed/threat-feed-aggregator

GitHub: sahifasyed/threat-feed-aggregator

将多个公开威胁情报源聚合到 SQL 数据库中进行跨源关联分析,并生成 SOC 风格可视化仪表板的工具。

Stars: 0 | Forks: 0

# 威胁情报聚合器 拉取开放的威胁情报,将每个指标标准化为 关系型 schema,跨来源进行关联分析,并渲染一个 SOC 风格的 仪表板(一个无框架依赖的独立 HTML 文件)。 ![仪表板](https://raw.githubusercontent.com/sahifasyed/threat-feed-aggregator/main/output/dashboard-1.png) ![仪表板](https://static.pigsec.cn/wp-content/uploads/repos/cas/d1/d1d174e32b2756a0649d0891a5f211d36df89b3d75dcd38aed3f14aa0e75c80e.png) 核心理念是相互印证。任何单一的情报都包含噪音;一个 被两个不相关的来源独立报告的指标,是一个实质上更强的 信号。各个情报源报告的格式互不兼容:URLhaus 发布完整的 恶意软件分发 URL,而 Feodo 发布纯粹的 C2 IP 地址,因此 简单的匹配无法找到任何重叠之处。该聚合器从每个 URL 中提取主机级别的 指标,这正是使跨情报关联能够实际运作的关键。 ## 情报源 | 情报源 | 类型 | 认证 | |---|---|---| | Abuse.ch URLhaus | 恶意软件分发 URL(+ 衍生主机) | 无 | | Abuse.ch Feodo Tracker | 僵尸网络 C2 IP | 无 | | CISA KEV | 已知被利用漏洞 | 无 | 解析器与抓取器是分离的,因此每个解析器都可以离线进行单元测试, 并且一个出错的情报永远不会导致整个运行流程崩溃。 ## 运行说明 ``` python run.py --demo # bundled sample data, fully offline python run.py --live # fetch the real feeds ``` 两种模式都会将数据摄取到 SQLite (`threats.db`) 中,打印摘要和 相互印证的指标集合,并生成 `output/dashboard.html`。 样本数据使用了 RFC 5737 文档地址范围 (203.0.113.0/24, 198.51.100.0/24)以及 `example` 域名,因此 离线数据集中的任何内容都不会指向真实的基础设施。CVE 标识符是 来自 KEV 目录的真实、公开的条目。 ## Schema 包含三个表:`feeds`、`indicators`(根据值 + 类型去重)和 `sightings`(每次情报源观测到指标时生成一行)。相互印证 查询是一个包含针对不同情报源计数设置 HAVING 子句的双连接 GROUP BY,请参阅 `tfa/analyse.py`,该文件将所有的 分析型 SQL 集中在一个可读性高的地方。 使用 SQLite 是为了使该演示无需任何设置;除了 AUTOINCREMENT 语法外,该 schema 可以原封不动地移植到 PostgreSQL。 ## 测试 `tests/test_tfa.py` 涵盖了解析器输出、主机提取、跨情报源 关联、重复观测抑制以及仪表板渲染。 使用 `python -m pytest tests/` 运行。 ## 路线图 计划内的摄取(cron)、情报源可靠性权重、STIX 2.1 导出, 以及 ASN/地理位置的丰富化处理。 *由 Sahifa Syed 构建 - UWE Bristol 网络安全与数字取证理学学士(一等学位)。相关项目:我的 [OSINT 验证工具包](https://github.com/sahifasyed/OSINT-Investigation-Toolkit)。*
标签:Python, SOC仪表盘, SQLite, 多模态安全, 威胁情报, 安全数据可视化, 安全规则引擎, 开发者工具, 无后门, 逆向工具