用途
本技能用于在 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 等参数对数据共享范围的限制。