Regole di rilevamento predefinite
linguaggio delle regole YARA-L
YARA-L è un linguaggio di regole di rilevamento sviluppato da Google. Lo scopo di YARA-L è quella di abbandonare i rilevamenti come semplici query di dati a quelli le indagini del caso. YARA-L deriva dal linguaggio YARA comunemente utilizzato nell'analisi del malware. L'L sta per log. YARA-L consente di sfruttare di tutte le informazioni provenienti da più fonti all'interno dei rilevamenti e correlare questi eventi in avvisi strategici. Per ulteriori informazioni, consulta la Panoramica delle lingua YARA-L 2.0.
Regole di rilevamento di esempio di Google Security Operations
Per accelerare l'adozione di Google Security Operations Detection Engine, c'è un repository GitHub con file . Questo repository contiene diverse categorie di regole di rilevamento, tra cui:
- CloudAudit di Google Cloud
- Google Workspace
- Avvisi informativi
- Malware
- MITRE ATT&CK
- Regole SOC prime
- Eventi sospetti
Ogni categoria adotta un approccio specifico per quanto riguarda la visualizzazione delle origini dati e specifica gli eventi e le istruzioni corrispondenti da utilizzare.
Regole di esempio e ottimizzazione
La seguente regola crea una variabile evento $e1
che viene utilizzata per monitorare
tipo di evento. La variabile evento può essere qualsiasi valore che abbia un significato per i dati
in fase di valutazione. Il campo UDM che viene valutato in questo evento è
metadata.eventype
, quindi ha senso chiamarlo semplicemente e1
. Le righe successive
cerca occorrenze specifiche di corrispondenze di espressioni regolari all'interno di e1
. La condizione che
crea un rilevamento in Google Security Operations si verifica ogni volta che si verifica
l'evento $e1
. A scopo di ottimizzazione, viene fornita una condizione not
per escludere determinati percorsi non dannosi per l'argomento della riga di comando. Altre not
condizioni
potrebbero essere aggiunti a questa regola se identifichi frequenti falsi positivi provenienti
e altri percorsi di file noti.
rule suspicious_unusual_location_svchost_execution
{
meta:
author = "Google Cloud Security"
description = "Windows 'svchost' executed from an unusual location"
yara_version = "YL2.0"
rule_version = "1.0"
events:
$e1.metadata.event_type = "PROCESS_LAUNCH"
re.regex($e1.principal.process.command_line, `\bsvchost(\.exe)?\b`) nocase
not re.regex($e1.principal.process.command_line, `\\Windows\\System32\\`) nocase
condition:
$e1
}
Specifica più di una variabile evento
YARA-L ti consente di avere più di una variabile evento in una regola. Nella
nell'esempio seguente, la regola ha eventi $e1
e $e2
. La condizione indica
condizione logica che attiva il rilevamento.
rule ExcludeZeroValues {
meta:
author = "noone@google.com"
events:
$e1.metadata.event_type = "NETWORK_DNS"
$e1.principal.hostname = $hostname
// $e1.principal.user.userid may be empty string.
$e1.principal.user.userid != "Guest"
$e2.metadata.event_type = "NETWORK_HTTP"
$e2.principal.hostname = $hostname
// $e2.target.asset_id cannot be empty string as explicitly specified.
$e2.target.asset_id != ""
match:
// $hostname cannot be empty string.
$hostname over 1h
condition:
$e1 and $e2
}
Sezione dei risultati delle regole
Utilizza la sezione Risultati per impostare le variabili di conservazione all'interno del rilevamento delle regole per
forniscono un arricchimento per il consumo downstream. Ad esempio, puoi aggiungere informazioni sul
punteggio della gravità che si basano sui dati degli eventi analizzati. La
Il seguente rilevamento esamina due eventi per attribuire il valore $hostname
. Se il valore $hostnames
corrisponde per un periodo di 5 minuti, viene applicato un punteggio di gravità. Quando utilizzi periodi di tempo, il motore di rilevamento di Google Security Operations esamina solo i blocchi di tempo discreti specificati.
rule OutcomeRuleMultiEvent {
meta:
author = "noone@google.com"
events:
$u.udm.principal.hostname = $hostname
$asset_context.graph.entity.hostname = $hostname
$severity = $asset_context.graph.entity.asset.vulnerabilities.severity
match:
$hostname over 5m
outcome:
$risk_score =
max(
100
+ if($hostname = "my-hostname", 100, 50)
+ if($severity = "HIGH", 10)
+ if($severity = "MEDIUM", 5)
+ if($severity = "LOW", 1)
)
$asset_id_list =
array(
if($u.principal.asset_id = "",
"Empty asset id",
$u.principal.asset_id
)
)
$asset_id_distinct_list = array_distinct($u.principal.asset_id)
$asset_id_count = count($u.principal.asset_id)
$asset_id_distinct_count = count_distinct($u.principal.asset_id)
condition:
$u and $asset_context and $risk_score > 50 and not arrays.contains($asset_id_list, "id_1234")
}
Conclusione
YARA-L è un linguaggio di rilevamento flessibile che ti consente di esaminare gli eventi di sicurezza e non solo restituire una query sui dati. La variabile evento viene utilizzata Monitorare i valori dei campi utilizzati nella sezione delle condizioni della regola. Puoi utilizzare un singolo evento, più eventi nel tempo, origini correlate per un singolo valore (ad esempio $hostname da origini dati diverse) e persino utilizzare strumenti come le espressioni regolari per fornire corrispondenze. È essenziale adattare le regole e questo può essere fatto specificando esclusioni all'interno della logica. Puoi anche utilizzare gli elenchi di riferimento per raggruppare gli elementi e poi fare riferimento a questo elenco nella regola. Ricorda che Google Security Operations non ha bisogno di ogni il rilevamento automatico su cui attivare gli avvisi. Puoi tenere traccia dei rilevamenti per più e avvisi solo su quelli che ritieni siano più critici completamente gestito di Google Cloud.