Panoramica dell'analisi sensibile al contesto

Supportato in:

Google SecOps ti consente di visualizzare telemetria, contesto delle entità, relazioni e vulnerabilità come un unico rilevamento all'interno del tuo account Google SecOps. Fornisce la contestualizzazione delle entità per consentirti di comprendere sia i pattern comportamentali nella telemetria sia il contesto delle entità interessate da questi pattern.

Esempi:

  • Visualizzazione delle autorizzazioni per un account su cui viene tentato un accesso con attacco di tipo brute force.
  • 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 del rilevamento, la definizione delle priorità degli avvisi euristici, la gestione e l'indagine.

Gli analisti della sicurezza e gli ingegneri del rilevamento in genere si adoperano per creare un rilevamento su un pattern di base di telemetria degli eventi (una connessione di rete in uscita), creando numerosi rilevamenti che gli analisti devono valutare. Gli analisti tentano di ricostruire una comprensione di ciò che è successo per attivare l'avviso e quanto sia significativa la minaccia.

L'analisi sensibile al contesto incorpora funzionalità di arricchimento avanzate nella fase iniziale del flusso di lavoro di creazione ed esecuzione del rilevamento, consentendoti di fornire le seguenti funzionalità aggiuntive:

  • Rendere disponibile il contesto pertinente per l'assegnazione di un punteggio di rischio contestuale basato su euristiche dei rilevamenti al momento dell'esecuzione del rilevamento anziché nella fase di triage umano
  • Riduzione del tempo dedicato alla valutazione e all'unione manuale delle informazioni provenienti da sistemi di sicurezza IT disparati (console EDR, log di firewall o proxy, CMDB e contesto IAM, risultati della scansione delle vulnerabilità)
  • Consentire agli analisti e agli ingegneri di rilevamento di filtrare interi cluster di minacce che potrebbero essere previste o rappresentare un pericolo minimo o nullo per l'azienda (test di malware in un ambiente sandbox, vulnerabilità e attività anomala in una rete di sviluppo senza dati o accesso sensibili e altro ancora)

Scrivere regole per l'analisi sensibile al contesto

Puoi utilizzare le regole del motore di rilevamento per cercare dati di contesto delle entità nel tuo account Google SecOps.

Per cercare i dati di contesto dell'entità:

  1. Specifica un'origine utilizzando udm o entity.

    $eventname.[<source>].field1.field2 Per un contesto di entità, <source> è "graph". Per un evento UDM, <source> è 'udm'. Se omesso, il valore predefinito di <source> è 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 istruzioni 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à come faresti per gli eventi UDM, tra cui:

  • Più regole evento

  • Confrontare i contesti delle entità con altri contesti delle entità

  • Confrontare i contesti delle entità con gli eventi UDM

  • Campi ripetuti nei contesti delle 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 dell'entità ha un intervallo di tempo, entity.metadata.interval, durante il quale il contesto dell'entità è valido. Questo intervallo di tempo non può essere un limite giornaliero e può avere qualsiasi durata.

Un evento UDM verrà 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 viene soddisfatta, l'UDM e l'entità non vengono valutati per i rilevamenti. Il motore di rilevamento lo applica implicitamente e non devi specificarlo come condizione in una regola.

  • Quando si confrontano gli eventi UDM con un contesto entità con finestre, un contesto entità rappresenta un valore costante in una finestra specificata.
  • Se ci sono bucket di giorni adiacenti in cui il contesto dell'entità cambia valore, Google SecOps tenta di trovare una corrispondenza per 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 i momenti in cui qualcuno con privilegi di amministratore ha tentato di accedere al sistema o di uscire.

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 finestra scorrevole è 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 mobile non valido

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

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 utilizzando 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.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 processo sospetto

Il seguente esempio valuta i dati di processo degli eventi UDM rispetto ai dati di contesto IOC memorizzati come contesto dell'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 entità, devi fornire un <source> dopo il nome dell'evento. <source> deve essere graph.

Il seguente pattern si riferisce a un contesto di 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 della regola. Puoi utilizzare qualificatori diversi per lo stesso evento.

Sezione Risultato

Il motore di rilevamento supporta una sezione outcome che ti consente di ricavare ulteriori informazioni da una regola. La logica definita nella sezione outcome viene valutata in base a ogni rilevamento. Se una regola genera N rilevamenti, ciascuno dei N rilevamenti può comportare un insieme diverso di risultati.

Puoi trovare una regola di esempio che utilizza la sezione outcome in Regola con selezione del risultato.

L'utilizzo e la sintassi dettagliati di una sezione outcome sono disponibili nella sezione Risultato.

Sezione Risultato e deduplicazione / raggruppamento dei rilevamenti

Per le regole con una sezione di corrispondenza, ricorda che i rilevamenti sono "raggruppati per" le variabili di corrispondenza. In questo modo, i rilevamenti vengono deduplicati, in modo che venga restituita una riga per ogni insieme univoco di variabili di corrispondenza e intervallo di tempo.

Le variabili di risultato vengono ignorate durante questa deduplicazione. Pertanto, se ci sono due rilevamenti diversi con gli stessi valori per le variabili di corrispondenza e la finestra temporale, ma con valori diversi per le variabili di risultato, questi verranno deduplicati e vedrai un solo rilevamento. Ciò può accadere, ad esempio, quando è stata creata una rilevazione a causa di dati arrivati in ritardo. 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: hostname: test-hostname time window: [t1, t2] risk_score: 10

Rilevamento 2: hostname: test-hostname time window: [t1, t2] risk_score: 73

Poiché le variabili di corrispondenza e la finestra temporale sono le stesse per Rilevamento 1 e Rilevamento 2, questi vengono deduplicati e vedrai un solo rilevamento, anche se la variabile di risultato, risk_score, è diversa.

Passaggi successivi

Per informazioni su come Google SecOps acquisisce i dati contestuali e arricchisce le entità, consulta In che modo Google SecOps arricchisce i dati di eventi ed entità.

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