SuperAPI AI 工具集

building-ioc-enrichment-pipeline-with-opencti

安全与审计

查看项目

更新于 10-15 13:53

技能介绍

用途

本技能用于在 OpenCTI 上构建自动化的 IOC(失陷指标)富化流水线。OpenCTI 是一个开源网络威胁情报知识管理平台,以 STIX 2.1 作为原生数据模型。该技能利用 OpenCTI 的连接器生态,为指标补充来自 VirusTotal、Shodan、AbuseIPDB、GreyNoise 等来源的上下文,自动富化新摄入的指标,将其与已知威胁行为者和攻击活动关联,并给出评分以帮助分析师确定优先级。

主要能力

  • 通过内部富化连接器自动为新建的可观测对象补充上下文。
  • 从 VirusTotal、Shodan、AbuseIPDB、GreyNoise 等外部服务拉取情报。
  • 将富化结果以 STIX 2.1 bundle 形式回写,附加注释、标签和关系。
  • 基于外部验证结果更新指标置信度评分(0-100 分制),依据包括 VirusTotal 检出率、Shodan 暴露数据、AbuseIPDB 报告数量和 GreyNoise 分类结果。
  • 支持自定义富化连接器,可扩展至 SecurityTrails 等更多数据源。

使用方式

前置条件

  • Docker 与 Docker Compose,用于部署 OpenCTI。
  • Python 3.9+ 及 pycti 库。
  • 富化服务的 API 密钥:VirusTotal、Shodan、AbuseIPDB、GreyNoise。
  • 理解 STIX 2.1 数据模型与关系。
  • ElasticSearch 或 OpenSearch 作为 OpenCTI 后端。
  • RabbitMQ 或 Redis 用于连接器消息传递。

关键概念

OpenCTI 架构:OpenCTI 使用 GraphQL API 前端,ElasticSearch 负责存储,Redis/RabbitMQ 负责连接器通信。数据以 STIX 2.1 对象及关系原生存储。连接器分为四类:外部导入(feed 摄入)、内部导入(文件解析)、内部富化(添加上下文)和流(实时导出)。

富化连接器模型:内部富化连接器在新可观测对象创建时自动触发,或由分析师手动触发。每个连接器接收 STIX 对象,查询外部服务,返回 STIX 2.1 bundle,为原始可观测对象附加额外上下文、标签和关系。

置信度评分:OpenCTI 对指标使用 0-100 的置信度刻度。富化连接器可根据外部验证更新置信度评分。

工作流

步骤 1:使用 Docker Compose 部署 OpenCTI

提供 docker-compose.yml 关键服务配置,包括 opencti 平台服务(镜像 opencti/platform:6.4.4)以及 connector-virustotal、connector-shodan、connector-abuseipdb 等连接器服务,各连接器通过环境变量配置 OPENCTI_URL、OPENCTI_TOKEN、CONNECTOR_ID、CONNECTOR_NAME、CONNECTOR_SCOPE、CONNECTOR_AUTO 以及对应服务的 API 密钥和 MAX_TLP。

步骤 2:构建自定义富化连接器

提供 Python 代码示例,使用 pycti 的 OpenCTIConnectorHelper 和 stix2 库。连接器监听消息,读取可观测对象,根据类型(IPv4-Addr、Domain-Name)调用相应富化方法。示例中 _enrich_ip 方法调用 GreyNoise Community API,根据分类结果添加标签(greynoise:malicious 或 greynoise:benign-service)并生成 Note 对象;_enrich_domain 方法调用 SecurityTrails API 获取 DNS 记录等信息并生成 Note。富化结果封装为 STIX 2.1 Bundle 后发送。

适用场景

  • 在环境中部署或配置 OpenCTI IOC 富化流水线能力。
  • 建立符合合规要求的安全控制。
  • 构建或改进该领域的安全架构。
  • 开展需要此实现的安全评估。

限制

资料未提供关于性能上限、并发处理能力、具体服务的免费额度或收费价格、以及各连接器的完整配置参数说明。实际部署时需自行准备各外部服务的 API 密钥,并注意 MAX_TLP 等参数对数据共享范围的限制。