Implementar junções sem uma seção de correspondência

Compatível com:

Este documento explica o conceito de operações de junção sem uma seção match ou uma junção de dados na pesquisa do Google Security Operations.

É possível usar operações de junção para correlacionar e combinar dados brutos de várias fontes com base em valores de campo comuns. Ao combinar eventos e entidades de segurança relacionados em uma única visualização abrangente, você pode oferecer uma detecção e investigação de ameaças mais eficazes.

Ao contrário das junções estatísticas, que exigem uma seção match para agregar resultados, uma junção de dados recupera os dados completos de eventos ou entidades e os mostra sem agregação.

Como as junções de dados funcionam

É possível criar uma junção de dados correlacionando campos comuns em diferentes blocos de eventos ou entidades. Você pode fazer isso usando um destes métodos:

  • Equacione diretamente os campos (por exemplo, $e1.principal.hostname = $e2.principal.hostname)

  • Atribua os dois campos à mesma variável de marcador de posição (por exemplo, $host = $e1.principal.hostname e $host = $e2.principal.hostname).

Em ambos os casos, a Pesquisa une implicitamente os blocos em que os valores desses campos são idênticos.

Tipos de junção de dados compatíveis

É possível usar os seguintes tipos de junção de dados nas consultas da Pesquisa:

  • Junções de evento para evento:correlacionam dados entre dois tipos de eventos diferentes do Modelo Unificado de Dados (UDM, na sigla em inglês).

  • Junções de evento para ECG:enriquecem os dados de eventos da UDM com informações do gráfico de contexto de entidade (ECG, na sigla em inglês).

Junções de evento para evento

As junções de evento para evento são ideais para correlacionar campos entre dois tipos de eventos distintos da UDM. Isso é útil para encontrar sequências de eventos ou ações que envolvem as mesmas entidades em diferentes origens de registros ou tipos de eventos.

O exemplo de consulta a seguir encontra todas as conexões de rede (NETWORK_CONNECTION) originadas de um host em que também ocorreu um login de usuário (USER_LOGIN):


  // Find user logins and assign the hostname to the $host placeholder

  $e1.metadata.event_type = "USER_LOGIN"

  $host = $e1.principal.hostname

  // Find network connections and join them where the hostname matches the
  $host placeholder

  $e2.metadata.event_type = "NETWORK_CONNECTION"

  $host = $e2.principal.hostname

Limitações

  • É possível participar de no máximo dois eventos.

  • O período da consulta é limitado a um máximo de 14 dias.

  • O limite é de 120 consultas por hora (QPH).

Exemplos

O exemplo de consulta a seguir encontra todas as conexões de rede (NETWORK_CONNECTION) originadas de um host em que um login de usuário (USER_LOGIN) também ocorreu:


  // Find user logins and assign the hostname to the $host placeholder

  $e1.metadata.event_type = "USER_LOGIN"

  $host = $e1.principal.hostname

  // Find network connections and join them where the hostname matches the $host
  placeholder

  $e2.metadata.event_type = "NETWORK_CONNECTION"

  $host = $e2.principal.hostname

Junção por User ID


  $e1.metadata.event_type = "USER_LOGIN"

  $e1.security_result.action = "ALLOW"

  $e1.principal.user.userid = $user

  $e2.metadata.event_type = "NETWORK_CONNECTION"

  $e2.principal.user.userid = $user

Participar com endereço IP


  $e1.metadata.event_type = "USER_LOGIN"

  $e1.security_result.action = "ALLOW"

  $e1.principal.ip = $ip

  $e2.metadata.event_type = "NETWORK_CONNECTION"

  $e2.principal.ip = $ip

Junções de gráfico de contexto de evento para entidade

As junções de evento para ECG são ideais para enriquecer eventos da UDM com dados contextuais sobre as entidades envolvidas (como recursos e usuários) do ECG. Essa junção oferece uma visão mais completa ao combinar dados de eventos em tempo real com informações históricas e de entidades relacionadas.

Limitações

  • O período da consulta é limitado a um máximo de 14 dias.

  • O limite de consultas é de 120 QPH.

  • É possível unir no máximo dois eventos da UDM na consulta.

  • É possível combinar no máximo um evento de ECG na consulta.

  • A exportação para uma tabela de dados não é compatível com consultas de junção de evento para ECG.

  • As junções de eletrocardiograma para eletrocardiograma não são compatíveis.

  • As junções de eletrocardiograma para tabela de dados não são compatíveis.

Exemplos

Essa consulta enriquece eventos de conexão de rede com informações de recursos do ECG ao fazer junção no nome do host.


  // Find network connections and assign the hostname to the $host placeholder

  $e1.metadata.event_type = "NETWORK_CONNECTION"

  $host = $e1.principal.asset.hostname

  // Find asset entities in the graph and join where the hostname matches the
  $host placeholder

  $g1.graph.metadata.entity_type = "ASSET"

  $host = $g1.graph.entity.asset.hostname

Fazer junção por endereço IP com um tipo de registro específico


  $ip = $e1.principal.ip

  $ip = $g1.graph.entity.ip

  $e1.metadata.log_type = "WINDOWS_DEFENDER_ATP"

  $g1.graph.entity.ip = "10.19.6.24"

Participar com um nome do host e um filtro de IP específico


  $e1.metadata.event_type = "FILE_CREATION"

  $host = $e1.principal.hostname

  $e1.principal.ip = "10.0.0.76"

  $g1.graph.metadata.entity_type = "ASSET"

  $host = $g1.graph.entity.hostname

Práticas recomendadas

Para evitar lentidão e tempos limite de consulta, use filtros específicos e restritos em cada bloco ($e1, $e2, $g1) nas consultas de junção.

Por exemplo, uma consulta ampla como esta:

$e1.metadata.event_type = "USER_LOGIN"
$e2.metadata.event_type = "NETWORK_CONNECTION"
right join $e1.principal.hostname = $e2.principal.hostname

Pode ser otimizado adicionando critérios específicos, como:


$e1.metadata.event_type = "USER_LOGIN"
$e1.principal.ip = "192.168.1.101"
$e1.principal.user.userid = "alex"
$e2.metadata.event_type = "NETWORK_CONNECTION"
$e2.src.hostname = "altostrat.com"
right join $e1.principal.hostname = $e2.principal.hostname

Trabalhar com resultados

Os resultados de uma junção de dados aparecem em uma tabela Junções, incluindo os campos combinados dos dois eventos correlacionados. Essa tabela é diferente de uma visualização de estatísticas, que fornece os dados completos de eventos ou entidades, e não uma contagem agregada.

Depois de executar uma consulta, você pode trabalhar com os resultados das seguintes maneiras:

  • Baixar como CSV:exporte o conjunto de resultados completo para um arquivo CSV e faça uma análise off-line.

  • Exportar para tabelas de dados:salve os resultados em uma tabela de dados na sua instância para referência ou correlação adicional (somente para junções de evento para evento).

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.