集成您自己的威胁情报 Feed

支持的平台:

本指南适用于希望将自定义入侵指标 (IoC) 和第三方威胁情报 Feed 集成到 Google Security Operations 中的安全工程师和检测工程师。本文介绍了如何注入威胁 Feed、将指示器归一化为统一数据模型 (UDM) 实体上下文图 (ECG),以及将指示器实体与流式事件遥测数据相关联。通过采用此方法,您可以自动检测整个环境中的威胁,并省去手动查找指示器的麻烦。成功集成后,您可以缩短提醒分类时间,并通过实时和回溯性威胁检测来增强组织的安全状况。

通过集成自定义威胁情报 Feed,安全运营团队可以将外部指标流(例如 Malware Information Sharing Platform [MISP]、STIX/TAXII 或商业 Feed)与内部安全遥测数据相结合。在标准化为 ECG 后,威胁实体支持自动指示器匹配和自定义多事件 YARA-L 2.0 相关性规则。

主要术语

  • 实体上下文图 (ECG):Google SecOps 中的上下文存储层,用于维护有状态的实体记录(例如资产、用户和威胁指标),以便与安全事件日志进行关联。
  • 统一数据模型 (UDM):Google SecOps 用于对原始事件日志和上下文实体数据进行规范化的标准化架构。
  • 指示器生命周期区间 (metadata.interval):时间有限的有效性窗口(start_timeend_time),用于定义威胁指示器在 ECG 中的有效时间。
  • 自动 IoC 匹配:当传入的安全事件与 ECG 中的有效指示器实体匹配时,系统会生成发现结果,并在 IoC 匹配页面上显示。
  • YARA-L 回溯搜寻:一种按需执行的历史搜索,可针对过去最多 30 天的安全遥测数据执行 YARA-L 2.0 检测规则。

常见使用场景

以下应用场景展示了自带威胁情报如何实现常见的安全运维目标。

自动实时指标匹配

  • 目标:自动根据提取的第三方指标评估流式安全事件,而无需维护自定义关联规则。
  • 价值:无需手动维护大量威胁 Feed 的规则,并在 IoC 匹配项页面上显示即时匹配项。

自定义 YARA-L 相关性规则和回溯性搜索

  • 目标:将 ECG 中的威胁情报实体与多事件遥测数据联接,并使用回溯式搜索扫描最多 30 天的历史数据。
  • 价值:检测多阶段攻击,并发现在向威胁 Feed 添加指示器之前发生的历史入侵事件。

准备工作

在开始之前,请确认满足以下前提条件:

  • 权限:您必须拥有 Identity and Access Management 权限才能在 Google SecOps 中管理数据 Feed 和创建检测规则(例如,Chronicle API AdminChronicle API Editor)。如需详细了解所需角色,请参阅配置功能访问权限
  • 环境检查:确认您拥有有效的 Google SecOps 实例,以及外部威胁情报提供方(例如 MISP、STIX/TAXII 或 Cloud Storage 存储桶)的有效 API 凭据或端点网址。
  • 搜索与规则功能:借助 UDM 搜索,您可以检查存储在 ECG 中的原始实体记录,无论其有效窗口如何;而 YARA-L 检测规则和自动匹配仅评估 metadata.interval 包含事件时间戳的指标。
  • 信息中心和搜索字段前缀:在 UDM 搜索、信息中心或 YARA-L 规则中查询威胁情报实体时,请为指示器值(例如 graph.entity.ip)使用 graph.entity. 前缀,为威胁归因字段使用 graph.metadata.threat. 前缀。

提取威胁情报指标

选择并配置注入机制,以将外部指示器流引入 Google SecOps。

选择 Feed 注入机制

您可以使用以下任一受支持的机制来注入威胁情报 Feed:

  • 预构建的默认解析器:Google SecOps 包含许多威胁情报平台的默认解析器。如需查看 IOC 下分类的支持的解析器列表,请参阅支持的日志类型和默认解析器。 支持的供应商包括 MISP、ThreatConnect、Intel471 和 Cyjax。
  • Feed Management API:在 Google SecOps 控制台中或使用 Feed Management API 配置 Feed,以定期从外部 HTTPS、Cloud Storage 或 Amazon S3 端点提取指示器。
  • Ingestion API:使用 Ingestion API 将预先结构化的实体载荷直接发送到 Google SecOps。
  • Bindplane 代理:使用 Bindplane 代理从本地或云环境中收集并转发指示器日志。
  • Cloud Run functions:使用 Cloud Run functions 部署无服务器提取脚本,以从外部 API(例如 STIX/TAXII 或 MISP)提取指标,并将这些指标流式传输到 Google SecOps。如需了解详情,请参阅使用部署为 Cloud Run 函数的提取脚本
  • Google SecOps 响应集成:通过内容中心连接器提取指示器,以同步威胁列表作为自动化 playbook 的一部分。如需了解详情,请参阅使用内容中心

载入威胁情报 Feed

如需将威胁情报提供商的指示器日志注入到 Google SecOps 中,请执行以下操作:

  1. 请按照特定威胁 Feed 格式或提供商的初始配置流程操作:

  2. 为传入的 Feed 数据分配相应的 IoC 日志类型(例如 STIXMISP_IOCCSV_CUSTOM_IOCTHREATCONNECT_IOC),以便默认解析器将指示器属性提取到 UDM 实体字段中。

  3. 打开数据注入信息中心,并验证传入的日志条目是否显示,且没有未解析的日志错误。

填充并验证实体上下文图

当威胁指示器进入 Google SecOps 时,解析流水线会将其标准化为 UDM 实体记录,并填充 ECG。如需详细了解实体丰富功能的工作原理,请参阅 Google SecOps 如何丰富事件和实体数据

结构化数据与非结构化数据映射

根据您向 Google SecOps 发送威胁情报数据的方式,按照相应字段映射工作流程操作:

  • 结构化数据注入:使用 Ingestion API 直接发送预结构化的 UDM 实体记录时,请先根据 UDM Entity 架构设置每个载荷的格式,然后再进行注入。
  • 非结构化和半结构化数据注入:使用 Feed、Bindplane 代理或转发器发送原始日志(例如 CSV、JSON、STIX 或 CEF)时,请分配预构建的默认解析器,或使用解析器扩展程序创建自定义字段映射,以提取指示器值并将其映射到所需的 UDM 实体字段。

什么因素决定了实体是否为 IoC

为了使 ECG 中的实体记录能够通过自动匹配和检测规则被识别为可操作的 IoC,解析器或 API 载荷必须填充以下五个 UDM 字段组:

  • 实体类型 (metadata.entity_type):支持的指标实体类型,例如 DOMAIN_NAMEIP_ADDRESSFILEURL
  • 源类型 (metadata.source_type):数据源分类,对于客户提取的威胁情报 Feed,必须设置为 ENTITY_CONTEXT
  • 制品标识符 (entity.*):指标值本身,例如 graph.entity.ipgraph.entity.hostnamegraph.entity.domain.namegraph.entity.file.sha256(或 md5sha1)或 graph.entity.url
  • 威胁元数据 (metadata.threat):描述威胁的情境属性,包括 threat_feed_namethreat_namecategoryseverityconfidence
  • 生命周期间隔 (metadata.interval)

    • metadata.interval.start_time:指示器变为有效状态时的时间戳。
    • metadata.interval.end_time:指示器过期时的时间戳。

如需查看架构定义,请参阅实体的 UDM 字段列表EntityMetadata

指标通常会在提取和解析后的 2 到 5 分钟内可在 UDM 搜索中搜索到。运行 UDM 搜索,验证您的指标是否填充了 ECG:

  1. 在 Google SecOps 导航菜单中,依次选择调查 > 搜索
  2. 在搜索字段中,输入以实体图为目标的查询,以查找已提取的指标值:

    • IP 地址

      graph.entity.ip = "<var>IP_ADDRESS</var>"
      
    • 网域

      graph.entity.hostname = "<var>DOMAIN_NAME</var>"
      
    • 文件哈希 (SHA-256)

      graph.entity.file.sha256 = "<var>SHA256_HASH</var>"
      
    • 来源商品

      graph.metadata.source_product = "<var>SOURCE_PRODUCT_NAME</var>"
      
  3. 点击搜索或按 Enter 键。

  4. 点击返回的实体卡片,确认 threatinterval 字段包含您预期的元数据和有效时间戳。

关联遥测数据并检测威胁

在威胁指标填充 ECG 后,将其与传入和历史安全性事件相关联。

启用自动 IoC 匹配

Google SecOps 包含一个独立于自定义检测规则运行的自动化匹配引擎。当事件遥测数据与心电图中的活动指示器相匹配时:

  • 系统生成的匹配项:平台会自动创建 IoC 匹配项记录,无需维护自定义规则。
  • 数据提取后的预计时间(粗略估计):
    • 流式传输事件:当指标填充 ECG 后(通常在提取后 5 到 15 分钟),Google SecOps 会评估传入的流式传输事件,并在 5 到 15 分钟内于 IoC 匹配项页面上显示匹配项。
    • 历史事件:自动化匹配引擎还会根据批量周期中的历史遥测数据,对新提取的指标进行回溯评估,初始匹配结果通常会在 1 到 4 小时内显示(完整的历史相关性分析会在 24 小时内完成)。
  • 区间强制执行:匹配引擎会根据有效指标严格评估事件,其中事件时间戳必须位于 metadata.interval 内。

编写 YARA-L 2.0 相关性规则

编写 YARA-L 2.0 检测规则,将事件遥测数据(例如网络连接、DNS 查询或进程启动)与 ECG 中的指示器实体联接起来。借助自定义规则,您可以将指标匹配与行为阈值、素材资源背景信息和排除列表相结合:

  1. 在 Google SecOps 导航菜单中,依次选择检测 > 规则和检测,然后点击新建
  2. 在规则的 events: 部分中,定义一个占位变量,用于将 UDM 事件字段(例如 $net.target.ip = $ip)与相应的 ECG 实体字段(例如 $ioc.graph.entity.ip = $ip)联接起来。
  3. 按威胁属性(例如 $ioc.graph.metadata.threat.category)过滤实体变量,并在 match: 部分中指定相关时间窗口(例如 $ip over 5m)。

  4. 点击保存新规则

运行回溯搜索以检测历史入侵

威胁情报 Feed 通常包含攻击者在您的组织接收该 Feed 之前几天或几周内使用的指示器。实时规则会评估新的传入遥测数据,而 YARA-L 回溯搜索会根据最多 30 天的历史安全事件追溯应用您的规则逻辑:

  1. 在 Google SecOps 导航菜单中,依次选择检测 > 规则和检测
  2. 在规则列表中找到您的自定义威胁情报规则。
  3. 点击 可查看更多规则选项,然后选择 YARA-L Retrohunt
  4. YARA-L Retrohunt 对话框中,选择历史搜索的开始时间和结束时间。请确保所选日期范围大于或等于规则中指定的匹配时段。
  5. 点击运行
  6. 打开相应规则的检测标签页,以监控进度并检查历史匹配项。

如需了解详情,请参阅针对历史数据运行规则

调查匹配项和提醒

在 Google SecOps 的专用视图中查看由自动匹配规则和自定义关联规则生成的发现结果。

在“IoC 匹配”页面上查看自动命中

如需调查自动指示器匹配项,请执行以下操作:

  1. 在 Google SecOps 导航菜单中,依次选择检测 > IoC 匹配项
  2. 使用过滤控件按指示器类型(网域、IP 地址、文件哈希或网址)限定调查结果的范围。
  3. 点击任意指标行即可打开赛事详情面板,其中会显示:
    • 关联的内部资产和用户名。
    • 首次出现和上次出现事件的时间戳。
    • 威胁情报 Feed 来源和置信度归因。
  4. 点击 View in UDM Search(在 UDM 搜索中查看),以检查与该指示器关联的所有原始遥测事件。

如需了解详情,请参阅使用 Applied Threat Intelligence 查看 IoC

在“提醒”和“检测”页面上对规则命中情况进行分类

自定义 YARA-L 规则生成的检测结果会显示在提醒检测页面上:

  1. 在 Google SecOps 导航菜单中,依次选择检测 > 提醒和 IoC,以查看按优先级排序的规则提醒。
  2. 点击提醒名称以打开提醒详情页面,然后检查检测结果表格,其中列出了相关联的事件行和 ECG 实体属性。
  3. 对于静默规则(已停用提醒)或已完成的回溯性搜索,请依次打开检测 > 规则和检测,点击规则名称,然后检查检测标签页。

将自定义指标与新兴威胁中心相关联

您还可以使用新兴威胁中心来调查自定义 IoC 匹配与更广泛的攻击者活动和恶意软件家族之间的关系:

  1. 在 Google SecOps 导航菜单中,依次选择检测 > 新兴威胁
  2. 查看活跃的威胁活动和公告,然后转到 UDM 搜索,检查自定义威胁 Feed 中的指示器是否与观察到的活动重叠。

如需了解详情,请参阅新兴威胁中心概览

访问高级素材资源和参考文件

在构建自定义威胁情报规则时,请使用以下 YARA-L 2.0 代码段和参考资源。

与恶意 IP 地址匹配的出站网络连接

此规则将出站 NETWORK_CONNECTION 事件与 ECG 中的有效 IP 指标相关联:

rule custom_ioc_network_connection {
  meta:
    author = "Security Operations"
    description = "Detects connections to IPs matching custom threat intel"
    severity = "HIGH"
    priority = "HIGH"

  events:
    $net.metadata.event_type = "NETWORK_CONNECTION"
    $net.target.ip = $ip

    $ioc.graph.entity.ip = $ip
    $ioc.graph.metadata.threat.category = "SUSPICIOUS_NETWORK"

  match:
    $ip over 5m

  outcome:
    $risk_score = max(85)
    $threat_name = array_distinct($ioc.graph.metadata.threat.threat_name)
    $source_feed = array_distinct($ioc.graph.metadata.source_product)
    $principal_hostname = array_distinct($net.principal.asset.hostname)

  condition:
    $net and $ioc
}

与恶意网域匹配的 DNS 查询

此规则可识别在您提取的威胁 Feed 中被标记为恶意的网域的 NETWORK_DNS 查找:

rule custom_ioc_malicious_domain_query {
  meta:
    author = "Security Operations"
    description = "Detects DNS queries for domains matching threat intel"
    severity = "MEDIUM"
    priority = "MEDIUM"

  events:
    $dns.metadata.event_type = "NETWORK_DNS"
    $dns.network.dns.questions.name = $domain

    $ioc.graph.entity.hostname = $domain

  match:
    $domain over 10m

  outcome:
    $threat_name = array_distinct($ioc.graph.metadata.threat.threat_name)
    $source_feed = array_distinct($ioc.graph.metadata.source_product)
    $client_ip = array_distinct($dns.principal.ip)

  condition:
    $dns and $ioc
}

与恶意 SHA-256 文件哈希匹配的进程执行

PROCESS_LAUNCH 事件与存储在 ECG 中的已知恶意 SHA-256 文件哈希匹配时,此规则会触发:

rule custom_ioc_malicious_file_execution {
  meta:
    author = "Security Operations"
    description = "Detects process launches matching malicious file hashes"
    severity = "CRITICAL"
    priority = "HIGH"

  events:
    $process.metadata.event_type = "PROCESS_LAUNCH"
    $process.target.process.file.sha256 = $sha256

    $ioc.graph.entity.file.sha256 = $sha256

  match:
    $sha256 over 5m

  outcome:
    $threat_name = array_distinct($ioc.graph.metadata.threat.threat_name)
    $file_path = array_distinct($process.target.process.file.full_path)
    $hostname = array_distinct($process.principal.asset.hostname)
    $user = array_distinct($process.principal.user.userid)

  condition:
    $process and $ioc
}

社区博客和其他资源

如需查看有关编写 YARA-L 规则和关联自定义威胁情报 Feed 的更多示例,请参阅以下 Google Cloud 社区资源:

问题排查

您可以使用本部分来管理性能预期,并解决在载入威胁情报 Feed 和构建关联规则时遇到的常见问题。

延迟时间、服务配额和限制

  • 数据提取和 UDM 搜索索引编制:新提取的指标通常会在 2 到 5 分钟内显示在 UDM 搜索中。在 Feed 提取后,至少等待 5 分钟,然后再排查实体记录缺失问题。
  • 自动 IoC 匹配延迟时间:一旦指标填充到 ECG 中,与传入的流式事件的匹配结果就会在 5 到 15 分钟内显示在 IoC 匹配页面上。针对历史事件的追溯性批量匹配通常需要 1 到 4 小时(对于完整的历史相关性分析,最长需要 24 小时)。
  • 实体上下文图相关性窗口:自动 IoC 匹配和 YARA-L 相关性规则会在其有效 metadata.interval 窗口内严格评估指标。具有过期 end_time 值的指标不会生成匹配项。
  • Retrohunt 搜索窗口:YARA-L Retrohunt 每次执行最多可扫描 30 天的历史遥测数据。完成时间取决于规则复杂程度和系统资源可用性。

错误修复

您可以使用此表来诊断和解决威胁情报初始配置和检测规则撰写期间出现的问题。

问题 问题描述 修复
未解析的 IoC 日志 Feed 状态显示有传入数据,但日志无法解析为 UDM 实体。 确认 Feed 日志类型与您的解析器(例如 STIXMISP_IOCCSV_CUSTOM_IOC)相符。检查数据注入信息中心是否存在原始架构错误。
缺少 UDM 搜索结果 指示器日志解析时未出错,但 UDM 搜索未返回任何实体记录。 验证您的查询是否以 graph.entity.* 字段(例如 graph.entity.ip)为目标,而不是以 udm.principal.* 事件字段为目标。
规则无法根据已知指示器触发 事件和指示器都存在于 UDM 搜索中,但 YARA-L 规则未生成任何检测结果。 确认指示器上的 metadata.interval.start_timemetadata.interval.end_time 包含事件时间戳。
在回溯搜索期间发出洪灾警报 运行回溯搜索会创建数百个重复的 SOAR 案例和提醒。 在开始 Retrohunt 之前,请先关闭规则的提醒切换开关。在重新启用实时提醒之前,请先查看检测结果页面上的检测结果。
误报数量多 嘈杂的指示器会触发对良性内部扫描程序或管理主机的检测。 向规则添加参考列表排除项(例如 not $net.principal.ip in %benign_scanner_ips),并要求提供行为事件上下文。

验证和测试

在实时提醒模式下启用自定义威胁情报规则之前,请使用内置的测试规则功能验证其逻辑:

  1. 依次打开检测 > 规则和检测,然后点击相应规则以打开“规则编辑器”。
  2. 点击下方面板中的测试规则,即可根据最近的历史事件数据和活跃的 ECG 实体评估规则,而不会生成提醒或 SOAR 案例。
  3. 检查返回的测试检测结果,确认 outcome 变量(例如 $threat_name$source_feed)是否按预期填充。

后续步骤

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