sahifasyed/threat-feed-aggregator
GitHub: sahifasyed/threat-feed-aggregator
将多个公开威胁情报源聚合到 SQL 数据库中进行跨源关联分析,并生成 SOC 风格可视化仪表板的工具。
Stars: 0 | Forks: 0
# 威胁情报聚合器
拉取开放的威胁情报,将每个指标标准化为
关系型 schema,跨来源进行关联分析,并渲染一个 SOC 风格的
仪表板(一个无框架依赖的独立 HTML 文件)。


核心理念是相互印证。任何单一的情报都包含噪音;一个
被两个不相关的来源独立报告的指标,是一个实质上更强的
信号。各个情报源报告的格式互不兼容: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, 多模态安全, 威胁情报, 安全数据可视化, 安全规则引擎, 开发者工具, 无后门, 逆向工具