Implementare le unioni senza una sezione di corrispondenza

Supportato in:

Questo documento spiega il concetto di operazioni di unione senza una sezione match o un'unione di dati all'interno della ricerca di Google Security Operations.

Puoi utilizzare le operazioni di join per correlare e combinare i dati non elaborati di più origini in base a valori di campo comuni. Combinando eventi e entità di sicurezza correlati in un'unica visualizzazione completa, puoi fornire un rilevamento e un'indagine sulle minacce più efficaci.

A differenza delle unioni statistiche che richiedono una sezione match per aggregare i risultati, un'unione di dati recupera i dati completi di eventi o entità e li visualizza senza alcuna aggregazione.

Come funzionano le unioni di dati

Puoi creare un'unione di dati mettendo in correlazione campi comuni in diversi blocchi di eventi o entità. Puoi farlo in uno dei seguenti modi:

  • Equivalgono direttamente i campi (ad esempio, $e1.principal.hostname = $e2.principal.hostname)

  • Assegna entrambi i campi alla stessa variabile segnaposto (ad esempio, $host = $e1.principal.hostname e $host = $e2.principal.hostname).

In entrambi i casi, Search unisce implicitamente i blocchi in cui i valori di questi campi sono identici.

Tipi di unione dei dati supportati

Puoi utilizzare i seguenti tipi di unione dei dati nelle query di ricerca:

  • Unioni da evento a evento:metti in correlazione i dati tra due diversi tipi di eventi Unified Data Model (UDM).

  • Unioni da evento a ECG:arricchisci i dati sugli eventi UDM con informazioni del grafico del contesto delle entità (ECG).

Unioni evento-evento

I join da evento a evento sono ideali per correlare i campi tra due diversi tipi di eventi UDM. Ciò è utile per trovare sequenze di eventi o azioni che coinvolgono le stesse entità in diverse origini log o tipi di eventi.

Il seguente esempio di query trova tutte le connessioni di rete (NETWORK_CONNECTION) che hanno origine da un host in cui si è verificato anche un accesso utente (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

Limitazioni

  • È possibile unire un massimo di due eventi.

  • L'intervallo di tempo della query è limitato a un massimo di 14 giorni.

  • Il limite di query è di 120 query all'ora (QPH).

Esempi

Il seguente esempio di query trova tutte le connessioni di rete (NETWORK_CONNECTION) provenienti da un host in cui si è verificato anche un accesso utente (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

Unione in base all'ID utente


  $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

Partecipa tramite indirizzo 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

Unioni del grafico di contesto da evento a entità

I join da evento a ECG sono ideali per arricchire gli eventi UDM con dati contestuali sulle entità coinvolte (ad esempio asset, utenti) dell'ECG. Questa unione fornisce un quadro più completo combinando i dati sugli eventi in tempo reale con le informazioni storiche e sulle entità relazionali.

Limitazioni

  • L'intervallo di tempo della query è limitato a un massimo di 14 giorni.

  • Il limite di query è 120 QPH.

  • Nella query è possibile unire un massimo di due eventi UDM.

  • Nella query è possibile unire al massimo un evento ECG.

  • L'esportazione in una tabella di dati non è supportata per le query di unione da evento a ECG.

  • I join ECG-to-ECG non sono supportati.

  • I join da ECG a tabella di dati non sono supportati.

Esempi

Questa query arricchisce gli eventi di connessione di rete con le informazioni sugli asset provenienti dal ECG unendo il nome 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

Unione in base all'indirizzo IP con un tipo di log specifico


  $ip = $e1.principal.ip

  $ip = $g1.graph.entity.ip

  $e1.metadata.log_type = "WINDOWS_DEFENDER_ATP"

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

Partecipare con un nome host con un filtro IP specifico


  $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

Best practice

Per evitare prestazioni lente e timeout delle query, utilizza filtri specifici e ristretti all'interno di ogni blocco ($e1, $e2, $g1) nelle query di unione.

Ad esempio, una query generica come la seguente:

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

Può essere ottimizzato aggiungendo criteri specifici come segue:


$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

Utilizzare i risultati

I risultati di un'unione di dati vengono visualizzati in una tabella Unioni, inclusi i campi combinati di entrambi gli eventi correlati. Questa tabella è diversa da una visualizzazione delle statistiche, in quanto fornisce i dati completi di eventi o entità e non un conteggio aggregato.

Dopo aver eseguito una query, puoi utilizzare i risultati nei seguenti modi:

  • Scarica come CSV:esporta il set di risultati completo in un file CSV per l'analisi offline.

  • Esporta in tabelle di dati:salva i risultati in una tabella di dati all'interno della tua istanza per riferimento o per ulteriori correlazioni (solo per le unioni da evento a evento).

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.