创建数据丰富化 playbook 块

支持:

本文档介绍了如何创建可在 Google Security Operations playbook 中使用的可重用代码块,以利用各种第三方威胁情报和信息服务中的数据来丰富实体(例如 IP、网域、文件哈希和用户)。使用块有助于提高多个 playbook 的模块化程度和一致性,并简化维护工作。

核心概念

  • 实体:提醒或案例中关注的对象,例如 IP 地址、域名、文件哈希、网址或用户名。
  • 丰富化:从外部数据源向实体添加背景信息或信息的过程。这可能包括声誉得分、地理位置信息、WHOIS 数据、恶意软件分析结果或用户目录详细信息。
  • 块:Google SecOps 中的一组可重复使用的操作和逻辑,类似于函数或子例程。您可以从多个 playbook 中调用块,以减少重复。
  • 第三方情报服务:提供数据以丰富信息的外部服务。例如,VirusTotal、Mandiant、AbuseIPDB、WHOIS 服务和内部自定义威胁 Feed。

设计数据丰富化块

在构建处理各种实体类型并查询多个第三方服务的代码块之前,请查看以下原则和要求。

  • 输入:该块通常对提醒上下文中的实体进行操作。操作会自动定位实体,因此您通常不需要特殊的块输入。
  • 输出:该代码块通过添加包含丰富数据的字段或属性来修改提醒上下文中的实体。通常不需要返回特定的输出值。
  • 抽象原则:
    • 与服务无关:添加或移除情报来源。
    • 实体类型处理:根据实体类型有条件地执行操作。
    • 可配置:可用于切换来源和设置参数。例如,通过集成设置或环境变量设置可疑标志的阈值。

创建丰富化块

本部分介绍如何创建丰富块。

定义块

此示例创建了一个名为 TPI_Enrich_Entities(第三方情报丰富实体)的块。

如需定义块,请按以下步骤操作:

  1. 前往响应 > Playbook。
  2. 点击 Add,然后选择 Block。
  3. 输入块的名称:TPI_Enrich_Entities。
  4. 提供清晰的说明:Enriches entities (IPs, domains, hashes, URLs) using various third-party intelligence services。
  5. 使该代码块适用于所有环境,除非服务密钥是特定于环境的。

添加丰富操作

如需向代码块添加丰富化操作,请根据需要从每个第三方服务的操作集中拖动以下操作(和其他服务):

  • VirusTotal v3:
    • Enrich Hash
    • Enrich IP
    • Enrich Domain
    • Enrich URL
  • Mandiant 威胁情报:
    • Mandiant Enrich Entities 此操作通常在内部处理多种实体类型。
  • AbuseIPDB:
    • Enrich IP

配置操作

如需配置操作,请按以下步骤操作:

  1. 双击每个步骤以配置其参数。
  2. 为需要屏蔽的环境选择相应的集成实例。如果您的集成不在共享环境中,请使用动态。
  3. 阈值:对于 VirusTotal 等服务,请设置适当的检测阈值(例如:engine_threshold)。
  4. 范围:大多数富化操作会自动在提醒中的所有相关实体上运行。

错误处理

如需配置代码块以处理错误,请执行以下操作:

  • 在每个操作的设置中,开启失败时重试滑块。通常,最好允许对丰富化操作至少重试一次,以防网络或第三方负载出现任何自我纠正问题。是否进一步重试取决于您的 API 配额和第三方集成方面的专业知识。
  • 配置如果操作失败选项。通常,最好将其设置为跳过,以防止某项服务失败导致整个丰富化过程停止。您可以手动查看任何失败的步骤。

保存块

完成设置后,保存该代码块,将其添加到 playbook 代码块中。

延长屏蔽时间

如需通过添加新的丰富来源来扩展块,请按以下步骤操作:

  1. 验证是否已在 Content Hub 中安装并配置新服务的集成。
  2. 打开 TPI_Enrich_Entities 模块进行修改。
  3. 通过将相关丰富操作从集成拖动到块中来添加操作。
  4. 定义新操作的参数和具体设置。
  5. 测试包含与新来源相关的实体的代码块。

在 playbook 中使用丰富化区块

如需在 playbook 中使用该块,请按以下步骤操作:

  1. 打开要添加丰富数据的 playbook。这通常适用于大多数 playbook。
  2. 在 Playbook 编辑器中,前往代码块标签页。
  3. 将 TPI_Enrich_Entities 块拖到 playbook 流程中,通常是在触发器和初始分类步骤之后。 由于 block 实例针对的是提醒的实体,因此通常不需要特殊参数。

示例:默认 playbook 流程

  1. 触发器:所有提醒

  2. 操作:将支持请求阶段设置为 Triage

  3. 运行代码块:TPI_Enrich_Entities

  4. 操作:继续进行人工审核或额外分析。

问题排查

问题 建议
丰富化数据未显示
  • 查看案例 playbook 执行日志或案例墙,了解代码块操作中的错误。
  • 确认提醒实体与该屏蔽功能支持的类型相匹配。
  • 验证您是否未超出 API 速率限制。
操作失败
  • 查看执行日志中的出错提示。常见问题可能包括网络问题、API 密钥无效或服务中断。
  • 由于操作设置为在失败时“跳过”,因此其他服务仍应运行。
异常数据
  • 查看来自丰富操作的原始 JSON 输出,以了解其结构。
  • 根据需要调整任何自定义字段映射或显示微件。

最佳做法

以下是有关使用代码块的建议做法。

安全

在设置中安全地管理 API 密钥。请勿在 playbook 或代码块中硬编码任何凭据。

效率

  • 监控每个第三方服务的 API 速率限制。
  • 避免过度调用。
  • 集成通常会在内部处理实体类型过滤。

数据处理

  • 为字段名称添加前缀:将丰富数据添加到实体时,请使用来源名称作为键前缀。这是为了避免冲突并提供清晰的说明。许多集成功能会自动执行此操作。如果您手动解析数据,请添加前缀,例如 VT_DetectionRatio、MDT_Score、AIPDB_Confidence。
  • 归一化:虽然在块内进行完全归一化可能很复杂,但请注意不同的数据格式。尽可能确保数据格式一致。
  • JSON 结果:许多操作都会返回 JSON。使用内置的 JSON 路径表达式从返回 JSON 的操作中提取关键信息。

维护

  • 将集成更新到最新版本。
  • 定期检查每项第三方服务的有效性和可靠性。
  • 在块说明中记录包含的服务。

测试

  • 测试包含不同实体类型的各种提醒场景下的代码块。
  • 验证该代码块是否正确添加了丰富数据,并能妥善处理故障。

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。