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 è passare dai rilevamenti come semplici query sui dati a indagini effettive basate su eventi. YARA-L deriva dal linguaggio YARA comunemente utilizzato nell'analisi del malware. L'L sta per log. YARA-L ti consente di sfruttare tutte le informazioni provenienti da più origini all'interno dei rilevamenti e di correlare questi eventi in avvisi strategici. Per ulteriori informazioni, consulta la Panoramica del linguaggio YARA-L 2.0.
Regole di rilevamento di esempio di Google Security Operations
Per aiutarti ad accelerare l'adozione del motore di rilevamento delle operazioni di sicurezza di Google, è disponibile un repository GitHub con regole di esempio. 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 la visualizzazione delle origini dati e specifica quali eventi e istruzioni di corrispondenza utilizzare.
Regole di esempio e ottimizzazione
La seguente regola crea una variabile evento $e1
utilizzata per monitorare il tipo di evento. La variabile evento può essere qualsiasi valore che abbia un significato per i dati
in fase di valutazione. Il campo UDM valutato in questo evento è
metadata.eventype
, quindi ha senso chiamarlo semplicemente e1
. Le righe successive cercano 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 condizioni not
potrebbero essere aggiunte a questa regola se identifichi frequenti falsi positivi provenienti da
altri percorsi 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
}
Specificare più di una variabile evento
YARA-L ti consente di avere più di una variabile evento in una regola. Nel
seguente esempio, la regola ha gli eventi $e1
e $e2
. La condizione indica la 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 Risultato regole
Utilizza la sezione relativa al risultato per impostare le variabili di attesa all'interno del rilevamento delle regole al fine di fornire un arricchimento per il consumo a valle. Ad esempio, puoi aggiungere informazioni sul
punteggio della gravità che si basano sui dati degli eventi analizzati. 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 per monitorare i valori di campo 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 ottimizzare le regole in base al tuo ambiente. Per farlo, puoi specificare le esclusioni all'interno della logica. Puoi anche utilizzare gli elenchi di riferimento per raggruppare gli elementi e poi fare riferimento a quell'elenco nella regola. Non dimenticare che Google Security Operations non ha bisogno di ricevere un avviso per ogni rilevamento. Puoi tenere traccia dei rilevamenti per diversi scopi e inviare avvisi solo per quelli che ritieni più critici nel tuo ambiente.