Panoramica dell'analisi sensibile al contesto

Supportato in:

Google Security Operations ti consente di visualizzare la telemetria, il contesto delle entità, le relazioni e le vulnerabilità come un singolo rilevamento all'interno del tuo account Google Security Operations. Fornisce la contestualizzazione delle entità per consentirti di comprendere sia i modelli comportamentali in telemetria che il contesto delle entità colpite da questi pattern.

Esempi:

  • Visualizzazione delle autorizzazioni per un account su cui è in corso un tentativo di accesso con forza bruta.
  • L'importanza dei dati ospitati da un asset che è anche l'origine dell'attività di rete in uscita.

I clienti possono utilizzare questa contestualizzazione per il filtraggio dei rilevamenti, la definizione delle priorità degli avvisi basati su regole, la gestione e le indagini.

Gli analisti della sicurezza e i tecnici del rilevamento in genere lavorano per creare un rilevamento sulla base di un modello base di telemetria degli eventi (una connessione di rete in uscita), creando numerosi rilevamenti che i loro analisti devono valutare. Gli analisti cercano di mettere insieme una comprensione di ciò che è accaduto per attivare l'avviso e di quanto sia significativa la minaccia.

L'analisi sensibile al contesto integra funzionalità di arricchimento avanzate nelle fasi iniziali del flusso di lavoro di creazione ed esecuzione del rilevamento, consentendo di fornire le seguenti funzionalità aggiuntive:

  • Rendere disponibile un contesto pertinente per il calcolo del punteggio di rischio contestuale basato su euristiche dei rilevamenti al momento dell'esecuzione del rilevamento anziché nella fase di triage da parte di persone
  • Riduzione del tempo impiegato per il triage e l'unione manuale delle informazioni provenienti da sistemi di sicurezza IT diversi (console EDR, log di firewall/proxy, contesto CMDB e IAM, risultati della scansione delle vulnerabilità)
  • Consente agli analisti e ai tecnici del rilevamento di filtrare interi gruppi di minacce che si possono verificare o rappresentare un pericolo minimo o nullo per l’azienda (test di malware in un ambiente sandbox, vulnerabilità e attività anomale in una rete di sviluppo senza dati o accesso sensibili, e altro ancora).

Scrivere regole per l'analisi contestuale

Puoi utilizzare le regole di Detection Engine per cercare dati relativi al contesto delle entità nel tuo account Google Security Operations.

Per cercare i dati relativi al contesto dell'entità, completa quanto segue:

  1. Specifica un'origine utilizzando udm o entità.

    $eventname.[<source>].field1.field2 Per il contesto di un'entità, <source> è "grafo". Per un evento UDM, <source> è "udm". Se omesso, il parametro <source> il valore predefinito è udm.

  2. Specifica i dati dell'entità:

    $e1.graph.entity.hostname = "my-hostname"

    $e1.graph.entity.relations.relationship = "OWNS"

  3. Specifica i dati sugli eventi UDM. Le seguenti dichiarazioni sono equivalenti.

    $e1.udm.principal.asset_id = "my_asset_id"

    $e1.principal.asset_id = "my_asset_id"

Puoi creare molti degli stessi tipi di regole per i contesti delle entità che per gli eventi UDM, tra cui:

  • Regole per più eventi

  • Confronto dei contesti di entità con altri contesti di entità

  • Confronto dei contesti delle entità con gli eventi UDM

  • Campi ripetuti in contesti di entità

  • Finestre scorrevoli

  • Calcolo di un punteggio di rischio per i rilevamenti

A differenza di un evento UDM, un contesto dell'entità non ha un timestamp specifico. Ogni record di contesto di entità ha un intervallo di tempo, entity.metadata.interval, in cui il contesto dell'entità è valido. Questo intervallo di tempo non può essere al limite di un giorno e possono avere una durata qualsiasi.

Un evento UDM viene correlato a un record di contesto dell'entità solo quando il timestamp dell'evento UDM rientra nell'intervallo di tempo del contesto dell'entità record. Se questa condizione non è soddisfatta, l'UDM e l'entità non vengono valutati per i rilevamenti. Il motore di rilevamento applica implicitamente questa impostazione e non è necessario specificarlo come condizione in una regola.

  • Quando confronti gli eventi UDM con un contesto di entità con windowing, il contesto dell'entità rappresenta un valore costante in una finestra specificata.
  • Se sono presenti bucket di giorni adiacenti in cui il contesto dell'entità cambia valore, Google Security Operations tenta di trovare corrispondenze in tutti i valori del contesto dell'entità e restituisce tutte le corrispondenze trovate.

Regole di esempio

Ricerca di entità con contesto amministratore

La seguente regola cerca le entità associate anche ai privilegi di amministratore. Cerca le volte in cui qualcuno con privilegi di amministratore tenta di accedere o disconnettersi dal sistema.

rule LoginLogout {
  meta:
  events:
    ($log_inout.metadata.event_type = "USER_LOGIN" or  $log_inout.metadata.event_type = "USER_LOGOUT")
    $log_inout.principal.user.user_display_name = $user

    $context.graph.entity.user.user_display_name = $user
    $context.graph.entity.resource.attribute.roles.type = "ADMINISTRATOR"

  match:
    $user over 2m

  condition:
    $log_inout and $context
}

Esempio di finestra scorrevole

Il seguente esempio di finestre scorrevoli è valido.

rule Detection {
  meta:
  events:
    $e1.graph.entity.hostname = $host
    $e2.udm.principal.hostname = $host

  match:
    // Using e2 (a UDM event) as a pivot.
    $host over 3h after $e2

  condition:
    $e1 and $e2
}

Esempio di finestra scorrevole non valido

Il seguente esempio di finestra mobile non è valido. Il contesto dell'entità non può essere utilizzato come pivot per una finestra scorrevole.

rule Detection {
  meta:
  events:
    $e1.graph.entity.hostname = $host
    $e2.udm.principal.hostname = $host

  match:
    // Attempting to use $e1 (an entity context) as a pivot. Invalid.
    $host over 3h after $e1

  condition:
    $e1 and $e2
}

Esempio di accesso con la sezione dei risultati

L'esempio seguente utilizza la sezione outcome per calcolare un punteggio di rischio per il rilevamento.

rule Detection {
  meta:
  events:
    $auth.metadata.event_type = "USER_LOGIN"
    $auth.metadata.vendor_name = "Acme"
    $auth.metadata.product_name = "Acme SSO"
    $auth.target.user.userid = $user
    $auth.target.user.termination_date.seconds > 0

    $auth.metadata.event_timestamp.seconds >
       $context.graph.entity.user.termination_date.seconds

    $context.graph.metadata.vendor_name = "Microsoft"
    $context.graph.metadata.product_name = "Azure Active Directory"
    $context.graph.metadata.entity_type = "USER"
    $context.graph.entity.user.userid = $user
    $context.graph.entity.user.termination_date.seconds > 0

  match:
    $user over 15m

  outcome:
    $risk_score = max(
        if ( $auth.metadata.event_type = "USER_LOGIN", 50) +
        if (
            $context.graph.entity.user.title = "Remote" nocase or
            $context.graph.entity.user.title = "Temp" nocase or
            $context.graph.entity.user.title = "Vendor" nocase, 40) +
        if ( $context.graph.entity.user.title = "Legal" nocase, 10)
    )

  condition:
    $auth and $context
}

Esempio di avvio di un processo sospetto

L'esempio seguente valuta i dati di processo degli eventi UDM rispetto ai dati di contesto IOC archiviati come contesto di entità.

rule ProcessLaunch {
  meta:
  events:
    $ioc.graph.metadata.vendor_name = "ACME"
    $ioc.graph.metadata.product_name = "IOCs"
    $ioc.graph.metadata.entity_type = "FILE"
    $ioc.graph.entity.file.sha256 = $hash

    $process.metadata.event_type = "PROCESS_LAUNCH"
    $process.principal.hostname = $hostname
    (
        not $process.target.process.file.sha256 = "" and
        $process.target.process.file.sha256 = $hash
    )

  match:
    $hash over 15m

  condition:
    $ioc and $process
}

Qualificatori aggiuntivi per il contesto dell'entità

Per creare una variabile evento che utilizza un contesto dell'entità, devi fornire un <source> dopo il nome dell'evento. <source> deve essere graph.

Il seguente pattern si riferisce al contesto di un'entità:

  • $e.graph.entity.hostname

Tieni presente che esistono due metodi equivalenti per fare riferimento a un evento UDM:

  • $u.udm.principal.asset_id
  • $u.principal.asset_id

Puoi combinare tutti questi qualificatori nel testo delle regole. Puoi anche utilizzare qualificatori diversi per lo stesso evento.

Sezione Risultato

Il motore di rilevamento supporta una sezione outcome che ti consente di ricavare più le informazioni da una regola. Viene valutata la logica definita nella sezione outcome per ogni rilevamento. Se una regola genera N rilevamenti, ciascuno dei N rilevamenti potrebbe porta a risultati diversi.

Puoi trovare una regola di esempio che utilizza la sezione outcome qui.

Puoi trovare informazioni dettagliate sull'utilizzo e sulla sintassi di una sezione outcome in questa sezione.

Sezione di risultati e deduplica/raggruppamento dei rilevamenti

Per le regole con una sezione di corrispondenza, ricorda che i rilevamenti sono "raggruppati per" il di corrispondenza delle variabili. In questo modo, i rilevamenti vengono deduplicati, in modo da restituire una riga per ogni insieme univoco di variabili di corrispondenza e finestra temporale.

Le variabili di risultato vengono ignorate quando si esegue questa deduplicazione. Pertanto, se sono presenti due diversi rilevamenti con gli stessi valori per le variabili di corrispondenza e finestra temporale, ma con valori diversi per le variabili di risultato, verrà deduplicato e vedrai solo un rilevamento. Questo può accadere quando è stato creato a causa di dati arrivati in ritardo, ad esempio. Ecco un esempio che illustra questo caso.

rule ExampleOutcomeRule {
  ...
  match:
    $hostname over <some window>
  outcome:
    $risk_score = <some logic here>
  ...
}

Questa regola genera le seguenti corrispondenze:

Rilevamento 1: nome host: test-hostname finestra temporale: [t1, t2] punteggio_rischio: 10

Rilevamento 2: nome host: test-hostname finestra temporale: [t1, t2] punteggio_rischio: 73

Poiché le variabili di corrispondenza e l'intervallo di tempo sono uguali per di rilevamento 1 e rilevamento 2, questi vengono deduplicati e solo un rilevamento, anche se la variabile di risultato, risk_score, è diverso.

Passaggi successivi

Per informazioni su come Google Security Operations importa dati contestuali e arricchisce le entità; consulta In che modo Google Security Operations arricchisce i dati di eventi ed entità