Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Crea analisi sensibile al contesto

Chronicle consente di visualizzare la telemetria, il contesto dell'entità, le relazioni e le vulnerabilità come un singolo rilevamento all'interno dell'account Chronicle. Fornisce il contestualizzazione delle entità per consentirti di comprendere sia i modelli comportamentali nella telemetria che il contesto delle entità interessate da tali modelli.

Esempi:

  • Mostrare le autorizzazioni per un account per cui si sta tentando di eseguire un accesso brute force.
  • Importanza dei dati ospitati da un asset che costituisce anche l'origine dell'attività di rete in uscita.

I clienti possono utilizzare questo contesto per il filtro di rilevamento, l'assegnazione di priorità agli avvisi euristici, la classificazione e l'indagine.

Gli analisti della sicurezza e i tecnici responsabili del rilevamento lavorano tipicamente per creare un rilevamento su un pattern di base della telemetria degli eventi (una connessione di rete in uscita), creando numerosi rilevamenti da far analizzare agli analisti. Gli analisti tentano di comprendere insieme cosa è accaduto per attivare l'avviso e la gravità della minaccia.

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

  • Rendere disponibile un contesto pertinente per il punteggio del rischio contestuale basato sull'euristica al momento dell'esecuzione del rilevamento, anziché nella fase di triage umano
  • Riduzione del tempo impiegato per il triage e unione manuale delle informazioni provenienti da sistemi di sicurezza IT disparati (console EDR, log firewall/proxy, contesto CMDB e IAM, risultati dell'analisi delle vulnerabilità)
  • Consentire ad analisti e tecnici del rilevamento di filtrare interi cluster di minacce che potrebbero essere previsti 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 accesso o dati sensibili e altro)

Scrivere regole per l'analisi sensibile al contesto

Puoi utilizzare le regole di Compute Engine per cercare i dati di contesto dell'entità nel tuo account Chronicle.

Per cercare i dati di 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> è 'graph'. Per un evento UDM, <source> è 'udm'. Se omessa, l'impostazione predefinita 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 degli eventi UDM. Le seguenti affermazioni sono equivalenti.

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

    $e1.principal.asset_id = "my_asset_id"

Per i contesti delle entità, puoi creare molti degli stessi tipi di regole applicabili agli eventi UDM, tra cui:

  • Più regole evento

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

  • Confronto dei contesti delle entità con gli eventi UDM

  • Campi ripetuti nei contesti dell'entità

  • Finestre scorrevoli

  • Calcolo di un punteggio di rischio per i rilevamenti

A differenza di un evento UDM, il contesto di un'entità non ha un timestamp specifico. Ogni record di contesto dell'entità ha un intervallo di tempo, instance.metadata.interval, rispetto al quale il contesto dell'entità è valido. Questo intervallo di tempo non può essere un limite di giorni e può essere di qualsiasi durata.

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

  • Quando si confrontano gli eventi UDM con un contesto dell'entità con finestra, un contesto dell'entità rappresenta un valore costante in una finestra specificata.
  • Se sono presenti bucket di giorni adiacenti in cui il contesto dell'entità modifica il proprio valore, Chronicle tenta di trovare una corrispondenza con tutti i valori di contesto dell'entità e restituisce tutte le corrispondenze trovate.

Regole di esempio

Ricerca di entità con contesto amministrativo

La seguente regola cerca le entità collegate anche ai privilegi di amministratore. Cerca i momenti in cui qualcuno con privilegio di amministratore ha tentato di accedere o di uscire dal sistema.

rule LoginLogout {
  meta:
  events:
    $log_in.metadata.event_type = "USER_LOGIN"
    $log_in.principal.user.user_display_name = $user

    $log_out.metadata.event_type = "USER_LOGOUT"
    $log_out.principal.user.user_display_name = $user

    $log_in.metadata.event_timestamp.seconds <=
     $log_out.metadata.event_timestamp.seconds

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

  match:
    $user over 2m

  condition:
    $log_in and $log_out 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 scorrevole non valida

Il seguente esempio di finestra scorrevole 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 tramite 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 dei processi di eventi UDM rispetto ai dati di contesto IOC archiviati 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 dell'entità, devi fornire una <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 anche altri qualificatori per lo stesso evento.

Sezione dei risultati

Il motore di rilevamento supporta una sezione outcome che consente di ricavare maggiori 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 rilevamenti N può determinare un insieme di risultati diverso.

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

L'utilizzo dettagliato e la sintassi di una sezione outcome sono disponibili in questa sezione.

Sezione dei risultati e deduplicazione / rilevamento del rilevamento

Per le regole con una sezione di corrispondenza, ricorda che i rilevamenti sono "raggruppati per" le variabili di corrispondenza. Ciò fa sì che i rilevamenti vengano deduplicati, in modo che venga restituita una riga per ogni insieme univoco di variabili di corrispondenza e finestre temporali.

Le variabili di risultato vengono ignorate durante questa deduplicazione. Pertanto, se esistono due rilevamenti diversi con gli stessi valori per le variabili di corrispondenza e l'intervallo di tempo, ma con valori diversi per le variabili dei risultati, questi verranno deduplicati e vedrai un solo rilevamento. Ciò può verificarsi quando, ad esempio, è stato creato un rilevamento a causa di dati in arrivo 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: nome host: test-nome host finestra temporale: [t1, t2] Risk_score: 10

Rilevamento 2: nome host: test-nome host finestra di tempo: [t1, t2] Risk_score: 73

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

Passaggi successivi: in che modo Chronicle arricchisce i dati di eventi ed entità

Per informazioni su come Chronicle importa i dati contestuali e arricchisce le entità, consulta la pagina In che modo Chronicle arricchisce i dati di eventi e entità