Implementare i join senza una sezione di corrispondenza

Supportato in:

Questo documento spiega il concetto di operazioni di join senza una sezione match o di join dei 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 ai valori dei campi comuni. Combinando eventi e entità di sicurezza correlati in un'unica visualizzazione completa, puoi fornire un rilevamento e un'analisi delle minacce più efficaci.

A differenza dei join statistici che richiedono una sezione match per aggregare i risultati, un join dei dati recupera i dati completi di eventi o entità e li visualizza senza alcuna aggregazione.

Come funzionano i join dei dati

Puoi creare un join dei dati correlando i campi comuni tra diversi blocchi di eventi o entità. Puoi farlo in uno dei seguenti modi:

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

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

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

Tipi di join dei dati supportati

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

  • Join da evento a evento: correla i dati tra due diversi tipi di eventi UDM (Unified Data Model).

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

Join da evento a evento

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

La query nell'esempio seguente 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

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

La query nell'esempio seguente 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

Join sull'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

Join sull'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

Join da evento a grafico del contesto delle entità

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

Limitazioni

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

  • Il limite di query è di 120 QPH.

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

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

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

  • I join da ECG a ECG non sono supportati.

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

Esempi

Questa query arricchisce gli eventi di connessione di rete con le informazioni sugli asset provenienti dall'ECG eseguendo il join sul 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

Join sull'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"

Join sul 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 join.

Ad esempio, una query ampia 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 ottimizzata 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 join dei dati vengono visualizzati in una tabella Join, 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 l'intero set di risultati in un file CSV per l'analisi offline.

  • Esporta in tabelle dati: salva i risultati in una tabella dati all'interno dell'istanza per riferimento o per ulteriori correlazioni (solo per i join da evento a evento).

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