Panoramica dell'analisi sensibile al contesto
Google SecOps 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 SecOps. Fornisce la contestualizzazione delle entità per consentirti di comprendere sia i modelli di comportamento nella telemetria sia il contesto delle entità interessate da questi modelli.
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 della priorità degli avvisi basati su euristiche, la gestione e le indagini.
In genere, gli analisti della sicurezza e i tecnici di rilevamento si impegnano a creare un rilevamento su un pattern di base della telemetria degli eventi (una connessione di rete in uscita), creando numerosi rilevamenti che gli analisti devono valutare. Gli analisti cercano di capire cosa è successo per attivare l'avviso e 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, consentendoti di fornire le seguenti funzionalità aggiuntive:
- Mettere a disposizione 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 eterogenei (console EDR, log di firewall o proxy, contesto CMDB e IAM, risultati della scansione delle vulnerabilità)
- Consente agli analisti e agli addetti al rilevamento di filtrare interi cluster di minacce che potrebbero essere previste o che rappresentano un pericolo ridotto o nullo per l'azienda (test di malware in un ambiente sandbox, vulnerabilità e attività anomale in una rete di sviluppo senza dati o accessi sensibili e altro ancora)
Scrivere regole per l'analisi sensibile al contesto
Puoi utilizzare le regole del Detection Engine per cercare i dati di contesto delle entità nel tuo account Google SecOps.
Per cercare i dati di contesto dell'entità:
Specifica un'origine utilizzando l'attributo udm o l'entità.
$eventname.[<source>].field1.field2
Per un contesto entità, <source> è "graph". Per un evento UDM, <source> è 'udm'. Se omesso, il valore predefinito di <source> è udm.Specifica i dati dell'entità:
$e1.graph.entity.hostname = "my-hostname"
$e1.graph.entity.relations.relationship = "OWNS"
Specifica i dati sugli eventi UDM. Le seguenti affermazioni 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 faresti per gli eventi UDM, tra cui:
Più regole evento
Confrontare i contesti delle entità con altri contesti delle entità
Confronto dei 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 del contesto dell'entità ha un intervallo di tempo, entity.metadata.interval, per il quale il contesto dell'entità è valido. Questo intervallo di tempo non deve necessariamente coincidere con il confine di un giorno e può avere qualsiasi durata.
Un evento UDM verrà correlato a un record del contesto dell'entità solo quando il timestamp dell'evento UDM rientra nell'intervallo di tempo del record del contesto dell'entità. Se questa condizione non è soddisfatta, l'UDM e l'entità non vengono valutati per i rilevamenti. Il motore di rilevamento lo applica implicitamente e non è necessario specificarlo come condizione in una regola.
- Quando confronti gli eventi UDM con un contesto entità con finestre, un contesto 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 SecOps 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 amministrativo
La seguente regola cerca entità collegate anche ai privilegi di amministratore. Cerca i momenti in cui un utente con privilegi amministrativi ha provato ad accedere o a uscire 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 mobile
Il seguente esempio di finestra mobile è 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 valida
Il seguente esempio di finestra mobile 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 del risultato
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 lancio di un processo sospetto
L'esempio seguente valuta i dati di elaborazione degli eventi UDM rispetto ai dati del contesto IOC memorizzati come contesto 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 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 anche utilizzare diversi qualificatori per lo stesso evento.
Sezione Risultato
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 N
rilevamenti può comportare un insieme diverso di risultati.
Puoi trovare un esempio di regola che utilizza la sezione outcome
in
Regola con selezione di risultati.
Puoi trovare l'utilizzo e la sintassi dettagliati di una sezione outcome
nella
sezione relativa ai risultati.
Sezione di risultati e deduplica / 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 da restituire una riga per ogni insieme univoco di variabili di corrispondenza e finestra temporale.
Le variabili di esito vengono ignorate durante questa deduplica. Pertanto, se esistono 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 un rilevamento è stato creato a causa di dati 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 il rilevamento 1 e il rilevamento 2, queste vengono deduplicate e vedrai un solo rilevamento, anche se la variabile di risultato, risk_score, è diversa.
Passaggi successivi
Per informazioni su come Google SecOps importa i dati contestuali e arricchisce le entità, consulta In che modo Google SecOps arricchisce i dati su eventi ed entità