Implementar junções sem uma seção de correspondência
Este documento explica o conceito de operações de junção sem uma seção match ou junção de dados na pesquisa do Google Security Operations.
Você pode 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 fornecer 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.hostnamee$host = $e2.principal.hostname).
Nos dois casos, a pesquisa une implicitamente os blocos em que os valores desses campos são idênticos.
Tipos de junção de dados aceitos
Você pode usar os seguintes tipos de junção de dados nas consultas de pesquisa:
Junções de evento para evento:correlacionam dados entre dois tipos diferentes de eventos do Modelo de dados unificado (UDM, na sigla em inglês).
Junções de evento para ECG:enriquecem os dados de eventos do UDM com informações do Gráfico de contexto de entidades (ECG, na sigla em inglês).
Junções de evento para evento
As junções de evento para evento são mais adequadas para correlacionar campos entre dois tipos distintos de eventos do UDM. Isso é útil para encontrar sequências de eventos ou ações que envolvem as mesmas entidades em diferentes origens de registro 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 um login do 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
Limitações
É possível unir no máximo dois eventos.
O período da consulta é limitado a um máximo de 14 dias.
O limite de consultas é de 120 consultas por hora (QPH, na sigla em inglês).
Exemplos
O exemplo de consulta a seguir encontra todas as conexões de rede
(NETWORK_CONNECTION) originadas de um host em que um login do 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
Unir pelo ID do usuário
$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
Unir pelo 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 evento para gráfico de contexto de entidades
As junções de evento para ECG são mais adequadas para enriquecer eventos do UDM com dados contextuais sobre as entidades envolvidas (como recursos, usuários) do ECG. Essa junção oferece uma imagem mais completa combinando dados de eventos em tempo real com informações históricas e relacionais de entidades.
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 do UDM na consulta.
É possível unir no máximo um evento do ECG na consulta.
A exportação para uma tabela de dados não é aceita para consultas de junção de evento para ECG.
As junções de ECG para ECG não são aceitas.
As junções de ECG para tabela de dados não são aceitas.
Exemplos
Essa consulta enriquece eventos de conexão de rede com informações de recursos do ECG unindo o 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
Unir pelo 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"
Unir pelo nome do host com 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 desempenho lento e tempo 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 a seguinte:
$e1.metadata.event_type = "USER_LOGIN"
$e2.metadata.event_type = "NETWORK_CONNECTION"
right join $e1.principal.hostname = $e2.principal.hostname
Pode ser otimizada adicionando critérios específicos da seguinte maneira:
$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 são mostrados em uma tabela Junções, incluindo os campos combinados de ambos os eventos correlacionados. Essa tabela é diferente de uma visualização de estatísticas, em que ela 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:
Fazer o download como CSV:exporte o conjunto de resultados completo para um arquivo CSV para 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.