apexajay-rc/Blackbird

GitHub: apexajay-rc/Blackbird

Blackbird 是一个开源威胁情报富化平台,通过并发聚合多个外部情报源的数据为 IOC 提供统一的风险评分和调查上下文。

Stars: 1 | Forks: 0

![Python](https://img.shields.io/badge/Python-3.10+-blue.svg) ![FastAPI](https://img.shields.io/badge/FastAPI-0.100+-00a393.svg) ![SQLite](https://img.shields.io/badge/SQLite-Database-003B57.svg) ![VirusTotal](https://img.shields.io/badge/Integration-VirusTotal-blue.svg) ![AbuseIPDB](https://img.shields.io/badge/Integration-AbuseIPDB-red.svg) ![Linux](https://img.shields.io/badge/OS-Linux-FCC624.svg) ![License](https://img.shields.io/badge/License-MIT-green.svg) ![Status](https://img.shields.io/badge/Status-Active_Development-orange.svg) # Blackbird Blackbird 是一个开源威胁情报平台,旨在聚合、规范化、关联并丰富来自多个外部情报提供商的失陷标示 (IOC)。 虽然安全信息与事件管理 (SIEM) 系统或内部监控工具栈等工具主要用于追踪内部基础设施状态,但 Blackbird 作为外部上下文引擎运行。它为 IP 地址、哈希和域名提供确定性的、可编程的丰富信息,以加速事件响应和威胁狩猎工作流。 ## 项目存在的原因 ### 问题所在 在发生活跃的安全事件期间,SOC 分析师和检测工程师需要花费关键的时间在不同的开源情报 (OSINT) 和商业情报门户(例如 VirusTotal、AbuseIPDB、AlienVault)之间进行切换。威胁情报在根本上是碎片化的。每个提供商使用不同的数据模型、评分规则和 API 结构。这种手动丰富信息的过程在事件调查生命周期中引入了严重的延迟。 ### 解决方案 Blackbird 通过实现并发聚合 pipeline 消除了手动切换。通过利用可插拔的架构,Blackbird 同时查询多个情报源,将它们迥异的 JSON schema 规范化为严格类型的内部模型,并计算统一的威胁评分。这使得安全自动化 pipeline 和分析师能够通过单次 API 调用获取全面的上下文。 ## 架构 Blackbird 构建于现代异步 Python 技术栈之上,利用 FastAPI 提供高性能 API,并使用 SQLAlchemy 进行结构化数据持久化。 ### 组件流程 ``` graph TD Client[Client / Automation Pipeline] -->|REST API| API[FastAPI Gateway] API --> Aggregator[Threat Aggregator Service] subgraph Enrichment Pipeline Aggregator -->|Load Pluggable Modules| Registry[Provider Registry] Registry --> VT[VirusTotal Provider] Registry --> Abuse[AbuseIPDB Provider] Registry --> Future[... Future Providers] end VT -->|async HTTP| VT_API((VirusTotal API)) Abuse -->|async HTTP| Abuse_API((AbuseIPDB API)) Aggregator -->|Read/Write Model| ORM[SQLAlchemy ORM] ORM --> DB[(SQLite Database)] Aggregator -->|Normalize & Score| Output[ThreatReport] Output --> API ``` ### 执行序列 ``` sequenceDiagram participant Analyst as Analyst/SIEM participant API as FastAPI participant Core as Aggregator Pipeline participant Prov as External Providers participant DB as SQLite/PostgreSQL Analyst->>API: POST /api/v1/enrich {ioc: "1.1.1.1"} API->>Core: invoke_enrichment_task(ioc) Core->>DB: Check Cache / History alt Cache Miss Core->>Core: Initialize Registered Providers Core->>Prov: asyncio.gather(requests) Note right of Core: Concurrent execution minimizes I/O latency Prov-->>Core: Raw JSON Responses Core->>Core: Normalize to ThreatIndicator Model Core->>Core: Calculate Unified Threat Score Core->>DB: Store complete ThreatReport end Core-->>API: Serialized Report API-->>Analyst: 200 OK (JSON) ``` ## 功能 ### 当前功能 * **FastAPI 后端:** 高性能、异步的 REST API 架构。 * **SQLite 数据库与 SQLAlchemy ORM:** 用于长期情报保留和查询的严格 schema 定义。 * **并发收集:** 利用 `asyncio` 消除查询多个上游 API 时的 I/O 阻塞。 * **提供商注册表模式:** 动态加载情报插件,将核心逻辑与特定于供应商的实现解耦。 * **威胁聚合服务:** 管理任务分发和超时处理的核心路由引擎。 * **数据模型:** 结构化的 `ThreatIndicator` 和 `ThreatReport` 模型,用于确定性的下游消费。 * **活跃集成:** 原生支持 VirusTotal 和 AbuseIPDB。 ### 计划功能 * **扩展集成:** AlienVault OTX、GreyNoise 和 Shodan。 * **漏洞情报:** 与国家漏洞数据库 (NVD) 集成以进行 CVE 丰富。 * **存储可扩展性:** 用于高吞吐量、企业规模部署的原生 PostgreSQL 支持。 * **数据可视化:** 为 SOC 分析师提供的基于 React 的操作仪表板。 * **自定义评分引擎:** 允许组织根据内部信任指标为不同的威胁源定义自定义权重。 * **调查历史:** 随时间推移 IOC 演变的完整审计日志。 ## 威胁情报工作流 Blackbird 对每个摄取的指标强制执行严格且可重现的工作流: `IOC` → `信息丰富` → `关联` → `评分` → `调查报告` 1. **IOC:** 将原始制品(IP、域名、哈希)提交至摄取 endpoint。 2. **信息丰富:** 聚合器向所有已注册且适用的提供商分发异步查询。 3. **关联:** 提取元数据(ASN、关联的恶意软件家族、时间数据)并将其映射到统一的 schema。 4. **评分:** 将不同的置信度分数(例如,VT 的 `malicious/total` 与 AbuseIPDB 的 `confidenceScore`)映射到标准的 0-100 严重性指数。 5. **调查报告:** 返回严格类型的 JSON 对象,可用于 SIEM 摄取或分析师审查。 ## 技术深入解析 ### 提供商抽象与注册表模式 为确保平台保持与供应商无关且高度可扩展,Blackbird 使用了提供商注册表模式。所有情报源都继承自抽象基类(`BaseProvider`),该类强制执行标准接口(`enrich_ioc()`、`normalize_response()`)。注册表会在 runtime 自动发现并实例化这些提供商。添加新源只需编写单个类文件,无需修改核心聚合引擎。 ### 聚合 Pipeline 由于 API 查询具有 I/O 密集型的特性,Blackbird 利用了 Python 的 `asyncio.gather()`。如果分析师请求某个 IP 地址的上下文,Blackbird 会同时向 VirusTotal 和 AbuseIPDB 发送请求。总响应时间受限于最慢的提供商,而不是所有提供商延迟的总和。 ### 威胁评分 威胁评分具有主观性。Blackbird 对分数进行规范化以提供单一的基准指标。该引擎采用加权平均方法,在配置中可以为提供商分配不同的信任权重。生成的指标提供标准化的严重性级别(Clean、Suspicious、Malicious、Critical),下游的 SOAR (Security Orchestration, Automation, and Response) 平台可以使用它进行自动化分类。 ## 仓库结构 ``` blackbird/ ├── api/ │ ├── routes/ # API endpoint definitions │ └── dependencies.py # FastAPI dependency injection ├── core/ │ ├── config.py # Environment & config management │ ├── aggregator.py # Concurrent execution pipeline │ └── scoring.py # Normalization and scoring logic ├── models/ │ ├── database.py # SQLAlchemy base and engine │ ├── orm_models.py # Table schemas (ThreatReport, etc.) │ └── pydantic_models.py # API validation schemas ├── providers/ │ ├── base.py # BaseProvider abstract class │ ├── registry.py # Dynamic provider loader │ ├── virustotal.py # VT implementation │ └── abuseipdb.py # AbuseIPDB implementation ├── tests/ # Pytest suite ├── main.py # Application entry point ├── requirements.txt └── README.md ``` ## 路线图 **阶段 1:核心情报平台(当前)** * [x] 建立异步 API 架构。 * [x] 实现提供商注册表和基础抽象。 * [x] 集成初始 OSINT 源(VT、AbuseIPDB)。 * [x] 设计核心 ORM 模型和 SQLite 持久化。 **阶段 2:情报扩展** * [ ] 集成 AlienVault OTX 和 GreyNoise。 * [ ] 实现用于 SOAR 集成的通用 Webhook 输出。 * [ ] 引入用于生产部署的 PostgreSQL 支持。 **阶段 3:漏洞情报** * [ ] 开发 CVE 摄取引擎。 * [ ] 集成 NVD 源。 * [ ] 将 IOC 映射到已知的被利用漏洞(KEV 目录)。 **阶段 4:分析师体验** * [ ] 构建轻量级的 React 前端仪表板。 * [ ] 实现 IOC 调查历史和增量追踪。 * [ ] 添加 CSV/STIX 导出功能。 **阶段 5:开源生态系统** * [ ] 完成插件架构 SDK。 * [ ] 为社区贡献的源创建公开的提供商存储库。 * [ ] 打包为独立的 Docker/Helm chart,以便进行 Kubernetes 部署。 ## 许可证 本项目基于 MIT 许可证授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
标签:AV绕过, FastAPI, Python, SQLite, 威胁情报, 安全运营, 开发者工具, 情报富化, 扫描框架, 无后门, 网络测绘, 计算机取证, 逆向工具