执行实体情境搜索
借助“在搜索中使用实体情境”功能,用户可以搜索和查看与其 Google Security Operations 账号中的实体相关的情境事件,从而增强安全调查和突发事件响应能力。与仅限于标准统一数据模型 (UDM) 事件架构的搜索不同,此功能可满足搜索 UDM 事件数据以外的数据(包括 UDM 实体情境)的需求,并提供对安全突发事件的更深入洞察。
主要优势
- 安全分析师和威胁搜寻者可以查询有关实体的情境信息。
- 有助于进行根本原因分析、威胁搜寻和取证。
- 用户可以对实体情境执行统计搜索,通过遥测分析了解遥测模式和受影响的实体。
在搜索中使用实体情境
您可以通过以下方式使用实体情境从您的 搜索结果中获取洞察:
- 使用 UDM 实体 字段名称进行搜索:使用 UDM 实体字段名称构建搜索查询。例如,如需查找与特定主机名关联的所有情境事件,请使用
graph.entity.hostname创建搜索。 - 访问“概览”标签页:概览标签页会根据用户输入的查询中的信息,提供搜索中找到的实体的简要摘要。概览 页面会显示实体类型(例如
DOMAIN_NAME、IP_ADDRESS、ASSET、USER、FILE、GROUP和RESOURCE)的信息。 - 使用“实体”标签页:实体 标签页会列出收到的所有实体情境事件, 包括“随时间变化的趋势”“快照过滤条件”“聚合”和“事件”等子组件。实体分为有时效性 实体和无时效性 实体,并显示在单独的标签页中。
- 查看聚合:系统会针对字段显示聚合,类似于 UDM 事件搜索。聚合进一步分为以下情境类型:实体情境、派生情境和全局情境。
实体情境图表 Search Console
实体情境图 (ECG) Search Console 提供了多个标签页,可帮助您分析实体情境数据:
结果标签页:显示
Timed Data和Timeless Data。- Timed Data:显示在提取期间具有
metadata.interval.end_time值的实体。 - Timeless Data:显示没有
metadata.interval.end_time值的实体。
Search Console 最多显示 1 万个有时效性或无时效性数据条目。
- Timed Data:显示在提取期间具有
提醒标签页:显示与搜索中找到的实体关联的所有提醒。
概览标签页:显示有关搜索查询中实体的信息。
一段时间内的活动图表:
显示每个时间段内有效的实体 数量和实体情境 数量。您可以使用滑块放大或缩小时间范围。
更改的实体总数:实体情境图表 (ECG) 会在其有效期内将数据存储在时间段内。如果实体保持有效(基于
end_time),它还会将此数据复制到下一个时间段。每当实体属性在两个时间段之间发生变化时,此图表都会更新。
使用场景:调查遭入侵的用户账号
假设有以下场景:安全分析师需要调查可能遭入侵的用户账号 (email@company.com)。请按照以下步骤进行调查:
识别遭入侵的用户:提醒会标记用户 email@company.com 已 被识别为可疑账号。
收集实体情境信息:获取有关用户的情境数据,以了解范围和影响。
运行查询:使用在搜索中使用实体情境 运行以下查询:
graph.entity.user.email_addresses = "email@company.com",用于检索有关用户的信息。graph.entity.user.email_addresses = "email@company.com" AND graph.metadata.product_name = "Google Cloud Compute Context",用于检查产品名称和其他元数据。
分析“概览”标签页:概览 标签页会显示用户的实体摘要,包括:
- 检查
First Seen Hour和Last Seen Hour时间戳。
- 检查
- 查看主机名、IP 地址和 MAC 地址(如果有)。
- 检查硬件型号、操作系统平台和平台版本。
检查“事件”标签页:查看与此用户关联的事件,包括登录尝试和异常。
查看聚合:识别实体情境数据中的模式和异常, 这些数据分为实体情境、派生情境和全局情境。
搜索示例
如需搜索实体情境数据,请在搜索查询中使用 UDM 实体字段名称:
graph.entity.hostnamegraph.entity.ip = "8.8.8.8" and graph.metadata.entity_type = "ASSET"
搜索结果会显示有关实体的关键信息,包括:
- 实体元数据
- 指标(
First Seen Hour、Last Seen Hour) - 关系(
Entity、Direction、Entity_label、Entity_type、Relationship) - 根据实体类型,显示特定字段,例如资产的
Principal_ip、用户的Mail_id、哈希/文件的File_name,以及网域的Domain_name和IP_address。
在搜索中使用实体情境的示例
本部分提供了有关如何利用 UDM 实体情境功能分析实体统计信息的实用示例。
UDM 实体统计信息搜索
如需查看可用的情境来源和类型,请在 UDM 搜索中运行以下 UDM 实体统计信息搜索:
graph.metadata.source_type = $sourceType
graph.metadata.entity_type = $entityType
match:
$sourceType, $entityType
outcome:
$total = count(graph.metadata.product_entity_id)
order:
$sourceType, $total desc
limit:
100
时间选择器 会显示实体图表中的有效数据,而不是情境数据的提取时间。
由于 UDM 实体搜索使用标准 UDM 搜索界面,因此您可以使用各种功能,例如聚合 面板(用于查看最大值或最小值)、结果表和 UDM 统计信息展开结果。
示例:查看不同的 ENTITY_TYPE
如需展开 UDM 实体搜索,您可以添加日志源、命名空间和结果数组,以显示观察到的不同 ENTITY_TYPE,如下所示:
graph.metadata.source_type = "ENTITY_CONTEXT"
$logType = strings.to_upper(graph.metadata.event_metadata.base_labels.log_types)
$namespace = strings.to_upper(graph.metadata.event_metadata.base_labels.namespaces)
match:
$logType, $namespace
outcome:
$total = count(graph.metadata.product_entity_id)
$entityTypes = array_distinct(graph.metadata.entity_type)
order:
$logType, $total desc
limit:
100
示例:优化实体集
您可以使用 UDM 搜索数据透视功能优化特定实体集。 然后,此优化会生成如下所示的 YARA-L 查询:
graph.metadata.source_type = "ENTITY_CONTEXT"
$logType = strings.to_upper( graph.metadata.event_metadata.base_labels.log_types )
$namespace = strings.to_upper( graph.metadata.event_metadata.base_labels.namespaces )
AND strings.to_upper( graph.metadata.event_metadata.base_labels.log_types ) = "WINDOWS_AD"
AND strings.to_upper( graph.metadata.event_metadata.base_labels.namespaces ) = "ACME"
派生情境
Google SecOps 提供以下类型的派生情境:
- 每个
ENTITY_TYPE的first_seen和last_seen时间戳 Prevalence:访问给定ENTITY_TYPE的资产数量
First Seen Hour 和 Last Seen Hour 时间戳
Google SecOps 会对传入数据执行统计分析,并使用 first_seen 和 last_seen 时间戳丰富实体情境记录:
first_seen_time字段会捕获实体在客户环境中首次出现的小时。last_seen_time字段会记录最近一次观察到该实体的小时。
在过去 7 天内首次出现的小时的用户:
graph.metadata.entity_type = "USER"
graph.entity.user.userid != ""
graph.entity.user.first_seen_time.hours >= timestamp.current_hours()-(86400 * 7)
在过去 7 天内首次出现的网域:
graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "DOMAIN_NAME"
//optional, filter to only return FQDN
graph.entity.domain.name = /^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/
graph.entity.domain.first_seen_time.hours >= timestamp.current_hours()-(86400 * 7)
在过去 7 天内观察到的文件(哈希):
graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "FILE"
//graph.entity.file.md5 != ""
//graph.entity.file.sha1 != ""
graph.entity.file.sha256 != ""
graph.entity.file.first_seen_time.hours >= timestamp.current_hours() - (86400 * 7)
ENTITY_TYPE 表示 FILE 哈希,例如 entity.file.hash。在 hash 对象中,类型可以是以下任一类型:
md5sha1sha256
如需搜索特定哈希,您可以针对给定的哈希类型运行 UDM 实体搜索:
// This will search ENTITY, DERIVED, and GLOBAL Source Types
graph.metadata.entity_type = "FILE"
graph.entity.file.sha256 = "eb5db1feadda5351c3b8fc0770e9f4c173484df5dc4a785bd1bdce7806a9e498"
IP 地址
IP_ADDRESS 的派生 ENTITY_TYPES 可以表示内部或外部实体。
以下 UDM 实体统计信息搜索会识别最近观察到的 IP_ADDRESSES,并使用聚合函数(在结果部分)按 CIDR 块对其进行计数:
graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "IP_ADDRESS"
//note, for IP addresses the first seen is under artifact, not ip
graph.entity.artifact.first_seen_time.hours >= timestamp.current_hours()-(86400 * 7)
outcome:
$total = count(graph.metadata.product_entity_id)
$classA = sum(if(net.ip_in_range_cidr(graph.entity.ip, "10.0.0.0/8"),1,0))
$classB = sum(if(net.ip_in_range_cidr(graph.entity.ip, "172.16.0.0/12"),1,0))
$classC = sum(if(net.ip_in_range_cidr(graph.entity.ip, "192.168.0.0/16"),1,0))
$classD = sum(if(net.ip_in_range_cidr(graph.entity.ip, "224.0.0.0/4"),1,0))
// we shouldn't see results here…
$classE = sum(if(net.ip_in_range_cidr(graph.entity.ip, "240.0.0.0/4"),1,0))
$thisNetwork = sum(if(net.ip_in_range_cidr(graph.entity.ip, "0.0.0.0/8"),1,0))
$loopback = sum(if(net.ip_in_range_cidr(graph.entity.ip, "127.0.0.0/8"),1,0))
$linklocal = sum(if(net.ip_in_range_cidr(graph.entity.ip, "169.254.0.0/16"),1,0))
$benchmark = sum(if(net.ip_in_range_cidr(graph.entity.ip, "198.18.0.0/15"),1,0))
$cgnat = sum(if(net.ip_in_range_cidr(graph.entity.ip, "10.64.0.0/10"),1,0))
如需进一步调查异常或意外范围,您可以运行 UDM 实体搜索:
graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "IP_ADDRESS"
net.ip_in_range_cidr(graph.entity.ip, "198.18.0.0/15")
普及率
普及率始终为 DERIVED_CONTEXT 类型。
以下 UDM 实体搜索会识别很少观察到的网域名称。在查询的时间窗口内 (day_max = 1),这些网域每天最多与一个不同的资产相关联 (at most);在过去 10 天内 (rolling_max = 1),这些网域最多与一个不同的资产相关联 (at most)。
此模式有助于检测环境中互动有限的网域:
graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "DOMAIN_NAME"
//optional, filter to only return specific TLDs where the FQDN is more than X characters
//graph.entity.domain.name = /^.{40,}\.(?:sx|cc|st|ac|lc|wd|vg|tv|cm|gd)$/
graph.entity.domain.prevalence.rolling_max = 1
graph.entity.domain.prevalence.day_max = 1
或者,您可以将其转换为聚合 UDM 实体统计信息搜索并聚合结果:
graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "DOMAIN_NAME"
//optional, filter to only return FQDN
graph.entity.domain.name = /^.{40,}\.(?:sx|cc|st|ac|lc|wd|vg|tv|cm|gd)$/
$domain = graph.entity.domain.name
$length = strings.length(graph.entity.domain.name)
$tld = strings.extract_domain(graph.entity.domain.name)
graph.entity.domain.prevalence.day_max = 1
graph.entity.domain.prevalence.rolling_max = 1
match:
$domain, $tld, $length
limit:
10
基本 UDM 实体字段搜索
以下是根据可用来源在 Google SecOps 中使用“在搜索中使用实体情境”功能的其他示例:
graph.entity.hostnamegraph.entity.ip = "8.8.8.8" and graph.metadata.entity_type = "ASSET"principal.ipprincipal.hostname="baz"principal.ip="1.2.3.4"network.dns.questions.name="youtube.com"
从实体字段透视
使用实体字段进行透视并探索相关数据。透视字段的示例包括:
network.email.tonetwork.email.ccprincipal.process.file.fileMetadata.pe.importHashprincipal.process.file.sha256network.dns.questions.name
了解动态字段
来源引用带有前缀(例如 additional)的动态结构化字段。您可以在 UDM 事件中搜索这些字段。
访问权限控制注意事项
系统对全局情境数据施加了 50 个事件的限制。全局用户和范围用户都可以查看数据。
以下来源提供全局情境数据:
| 全局情境数据 | 用户可以在何处查看或与此数据互动 | 哪些人可以查看 |
|---|---|---|
| 安全浏览 | - 搜索 - 规则 |
所有用户 |
| VirusTotal 关系 | - 搜索 - 规则 |
所有用户 |
| WHOIS | - 搜索 - 规则 |
所有用户 |
| Uppercase | - 搜索 - 规则 |
所有用户 |
开源情报 IOC (OPEN_SOURCE_INTEL_IOC) |
- 搜索 - 规则 |
所有用户 |
Mandiant Fusion IoC (MANDIANT_FUSION_IOC) |
- 搜索 - 规则 - 新出现的威胁 |
所有用户 |
限制
- 数量限制:有时效性和无时效性 数据的累计结果限制为 100 万。
- 全局情境数据:敏感全局情境
数据(例如
UPPERCASE_VT_PROTECTED、MANDIANT_FUSION_IOC和VIRUS_TOTAL_CONNECTIONS)的行数限制为 50 行。 - 数据一致性:上次出现时间数据最多可能会延迟 2 小时。相关实体只能显示事件中列出的实体的一部分。
不支持的功能:
- 对实体字段进行反向查找、分组字段搜索、低普及率和热图。
- 您无法在实体情境查询和事件查询之间进行联接。