Realizar pesquisas de contexto de entidade
O recurso "Contexto da entidade na pesquisa" melhora as investigações de segurança e a resposta a incidentes, permitindo que os usuários pesquisem e visualizem eventos de contexto relacionados a entidades na conta do Google Security Operations. Ao contrário das pesquisas limitadas ao esquema de eventos do Modelo de dados unificado (UDM, na sigla em inglês) padrão, esse recurso atende à necessidade de pesquisar além dos dados de eventos do UDM, incluindo o contexto da entidade do UDM, e oferece insights mais detalhados sobre incidentes de segurança.
Principais vantagens
- Os analistas de segurança e os caçadores de ameaças podem consultar informações contextuais sobre entidades.
- Ajuda na análise da causa raiz, na caça a ameaças e na perícia.
- Os usuários podem realizar pesquisas estatísticas no contexto da entidade para entender os padrões de telemetria e as entidades afetadas por meio da análise de telemetria.
Usar o contexto da entidade na pesquisa
Você pode usar o contexto da entidade para gerar insights nos seus resultados da pesquisa das seguintes maneiras:
- Pesquisar usando entidade UDM nomes de campos: crie suas consultas de pesquisa usando nomes de campos de entidade do UDM. Por exemplo, para encontrar todos os eventos de contexto associados a um nome de host específico, crie uma pesquisa usando
graph.entity.hostname. - Acessar a guia "Visão geral": a guia Visão geral oferece um resumo de alto nível das entidades
encontradas na pesquisa, aproveitando as informações da consulta inserida por um usuário para mostrar
informações. A página Visão geral mostra informações para tipos de entidades, como
DOMAIN_NAME,IP_ADDRESS,ASSET,USER,FILE,GROUPeRESOURCE. - Usar a guia "Entidade": a guia Entidade lista todos os eventos de contexto de entidade recebidos, incluindo subcomponentes como "Tendência ao longo do tempo", "Filtro de snapshot", "Agregações" e "Eventos". As entidades são categorizadas em temporizadas e atemporais entidades, mostradas em guias separadas.
- Visualizar agregações: as agregações são mostradas para campos, de maneira semelhante à pesquisa de eventos do UDM. As agregações são ainda mais categorizadas em tipos de contexto: contexto da entidade, contexto derivado e contexto global.
Interface de resultados da pesquisa do gráfico de contexto da entidade
A interface de resultados da pesquisa do gráfico de contexto da entidade (ECG, na sigla em inglês) oferece várias guias para ajudar você a analisar dados de contexto da entidade:
Guia "Resultados": mostra
Timed DataeTimeless Data.- Dados temporizados: mostra entidades que tinham um valor para
metadata.interval.end_timedurante a ingestão. - Dados atemporais: mostra entidades que não tinham valor para
metadata.interval.end_time.
A interface mostra entidades temporizadas ou atemporais, até o número máximo de resultados configurado.
- Dados temporizados: mostra entidades que tinham um valor para
Guia "Alertas": mostra todos os alertas associados às entidades encontradas na pesquisa.
Guia "Visão geral": apresenta informações sobre a entidade na consulta de pesquisa.
Gráfico de atividade ao longo do tempo:
Mostra o número de entidades e o contexto da entidade que são válidos em cada período. Você pode usar o controle deslizante para aumentar ou diminuir o zoom do período.
Total de entidades alteradas: o gráfico de contexto da entidade (ECG) armazena dados em períodos dentro do período de validade. Ele também copia esses dados para o próximo período, desde que a entidade permaneça válida (com base em
end_time). Esse gráfico é atualizado sempre que uma propriedade da entidade muda entre dois períodos.
Caso de uso: investigar uma conta de usuário comprometida
Considere o seguinte cenário: um analista de segurança precisa investigar uma conta de usuário potencialmente comprometida (email@empresa.com). Siga estas etapas para investigar:
Identificar o usuário comprometido: um alerta sinaliza que o e-mail do usuário email@company.com foi identificado como uma conta suspeita.
Coletar informações de contexto da entidade: receba dados de contexto sobre o usuário para entender o escopo e o impacto.
Executar consultas: use o Contexto da entidade na pesquisa para executar as seguintes consultas:
graph.entity.user.email_addresses = "email@company.com"para recuperar informações sobre o usuário.graph.entity.user.email_addresses = "email@company.com" AND graph.metadata.product_name = "Google Cloud Compute Context"para verificar o nome do produto e outros metadados.
Analisar a guia "Visão geral": a guia Visão geral mostra o resumo da entidade para o usuário, incluindo:
- Verifique os carimbos de data/hora
First Seen HoureLast Seen Hour.
- Verifique os carimbos de data/hora
- Analise nomes de host, endereços IP e endereços MAC (se disponíveis).
- Inspecione o modelo de hardware, a plataforma do SO e a versão da plataforma.
Examinar a guia "Eventos": visualize eventos associados a esse usuário, incluindo tentativas de login e anomalias.
Agregadores de avaliações: identifique padrões e anomalias nos dados de contexto da entidade, distribuídos em contexto da entidade, contexto derivado e contexto global.
Exemplos de pesquisa
Para pesquisar dados de contexto da entidade, use nomes de campos de entidade do UDM nas consultas de pesquisa:
graph.entity.hostnamegraph.entity.ip = "8.8.8.8" and graph.metadata.entity_type = "ASSET"
Os resultados da pesquisa mostram informações importantes sobre as entidades, incluindo:
- Metadados da entidade
- Métricas (
First Seen Hour,Last Seen Hour) - Relações (
Entity,Direction,Entity_label,Entity_type,Relationship) - Dependendo do tipo de entidade, campos específicos, como
Principal_ippara recursos,Mail_idpara usuários,File_namepara hashes/arquivos eDomain_nameeIP_addresspara domínios.
Exemplos de contexto da entidade na pesquisa
Esta seção oferece exemplos práticos para criar o recurso de contexto da entidade do UDM para analisar estatísticas de entidades.
Pesquisa de estatísticas de entidades do UDM
Para visualizar as fontes e os tipos de contexto disponíveis, execute a seguinte pesquisa de estatísticas de entidades do UDM na pesquisa do 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
O seletor de tempo mostra dados ativos no gráfico de entidades, não quando os dados de contexto foram ingeridos.
Como a pesquisa de entidades do UDM usa a interface de pesquisa do UDM padrão, você pode usar recursos como o painel Agregações (para visualizar os valores mais altos ou mais baixos), a tabela de resultados e os resultados expandidos das estatísticas do UDM.
Exemplo: visualizar ENTITY_TYPE distinta
Para expandir a pesquisa de entidades do UDM, você pode incluir a origem do registro, o namespace e uma matriz de resultados para mostrar ENTITY_TYPEs distintas observadas, da seguinte maneira:
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
Exemplo: refinar o conjunto de entidades
É possível refinar um conjunto específico de entidades usando o recurso de pivô da pesquisa do UDM. Esse refinamento gera uma consulta YARA-L como a seguinte:
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"
Contexto derivado
O Google SecOps oferece os seguintes tipos de contexto derivado:
- Carimbos de data/hora
first_seenelast_seenpara cadaENTITY_TYPE Prevalence: o número de recursos que acessaram um determinadoENTITY_TYPE
Carimbos de data/hora First Seen Hour e Last Seen Hour
O Google SecOps realiza análises estatísticas dos dados recebidos e enriquece os registros de contexto da entidade com carimbos de data/hora first_seen e last_seen:
- O campo
first_seen_timecaptura a hora em que uma entidade foi vista pela primeira vez no ambiente do cliente. - O campo
last_seen_timeregistra a hora da observação mais recente dessa entidade.
Usuários com uma primeira hora vista nos últimos sete dias:
graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "USER"
graph.entity.user.userid != ""
graph.entity.user.first_seen_time.hours >= timestamp.current_hours()-(86400 * 7)
Domínios vistos pela primeira vez nos últimos sete dias:
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)
Arquivo (hashes) observado nos últimos sete dias:
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)
O ENTITY_TYPE representa um hash FILE, por exemplo, entity.file.hash.
No objeto hash, o tipo pode ser um dos seguintes:
md5sha1sha256
Para pesquisar um hash específico, execute uma pesquisa de entidades do UDM para o tipo de hash especificado:
// This will search ENTITY, DERIVED, and GLOBAL Source Types
graph.metadata.entity_type = "FILE"
graph.entity.file.sha256 = "eb5db1feadda5351c3b8fc0770e9f4c173484df5dc4a785bd1bdce7806a9e498"
Endereços IP
ENTITY_TYPES derivados de IP_ADDRESS podem representar entidades internas ou externas.
A seguinte pesquisa de estatísticas de entidades do UDM identifica IP_ADDRESSES observados recentemente e usa funções agregadas (na seção de resultados) para contá-los por bloco 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))
Para investigar ainda mais um intervalo incomum ou inesperado, execute uma pesquisa de entidades do 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")
Prevalência
A prevalência é sempre do tipo DERIVED_CONTEXT.
A seguinte pesquisa de entidades do UDM identifica nomes de domínio que raramente são observados. Esses domínios são associados especificamente a no máximo um recurso distinto por dia, durante o período da consulta (day_max = 1) e no máximo um recurso distinto nos últimos 10 dias (rolling_max = 1).
Esse padrão é útil para detectar domínios com interação limitada no seu ambiente:
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
Como alternativa, você pode transformar isso em uma pesquisa agregada de estatísticas de entidades do UDM e agregar os resultados:
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
Pesquisas básicas de campos de entidades do UDM
Confira outros exemplos de uso do recurso "Contexto da entidade na pesquisa" no Google SecOps, com base nas fontes disponíveis:
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"
Pivô de campos de entidade
Use campos de entidade para fazer um pivô e explorar dados relacionados. Exemplos de campos de pivô incluem:
network.email.tonetwork.email.ccprincipal.process.file.fileMetadata.pe.importHashprincipal.process.file.sha256network.dns.questions.name
Entender campos dinâmicos
As fontes referenciam campos estruturados dinâmicos com prefixos, como additional. É possível pesquisar esses campos em eventos do UDM.
Considerações sobre o controle de acesso
O sistema impõe um limite de 50 eventos em dados de contexto global. Os usuários globais e com escopo podem visualizar os dados.
As seguintes fontes fornecem dados de contexto global:
| Dados de contexto global | Onde um usuário pode visualizar ou interagir com esses dados | Quem pode visualizar |
|---|---|---|
| Navegação segura | - Pesquisa - Regras |
Todos os usuários |
| Relações do VirusTotal | - Pesquisa - Regras |
Todos os usuários |
| WHOIS | - Pesquisa - Regras |
Todos os usuários |
| Uppercase | - Pesquisa - Regras |
Todos os usuários |
IOC de inteligência de código aberto (OPEN_SOURCE_INTEL_IOC) |
- Pesquisa - Regras |
Todos os usuários |
IOC de fusão do Mandiant (MANDIANT_FUSION_IOC) |
- Pesquisa - Regras - Novas ameaças |
Todos os usuários |
Limitações
- Limites de volume: limite de 1 milhão de resultados cumulativos para dados temporizados e atemporais.
- Dados de contexto global: há um limite de 50 linhas para dados de contexto global sensíveis, como
UPPERCASE_VT_PROTECTED,MANDIANT_FUSION_IOC, eVIRUS_TOTAL_CONNECTIONS. - Consistência de dados: os dados vistos pela última vez podem ter um atraso de até 2 horas. As entidades relacionadas podem mostrar apenas um subconjunto das entidades listadas em um evento.
Recursos incompatíveis:
- Pesquisas inversas em campos de entidade, pesquisas de campos agrupados, baixa prevalência e mapa de calor.
- Não é possível fazer uma junção entre o contexto da entidade e as consultas de eventos.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.