Utilizzare istruzioni if nidificate per una logica più complessa
Puoi utilizzare le istruzioni if nelle sezioni outcome e events. Puoi anche utilizzare le istruzioni if all'interno delle clausole then else di un'altra istruzione if. Questa funzionalità ti consente di
introdurre una logica più complessa nella tua query.
Questa sintassi è supportata in Regole, Ricerca e Dashboard.
Sintassi
if(BOOL_CLAUSE, THEN_CLAUSE, ELSE_CLAUSE)
Esempi di if nidificati
Esempio di ricerca: sezione dei risultati
Questo esempio assegna un punteggio del risultato in base a principal.hostname.
$nested_if.principal.hostname != ""
outcome:
$score = max(
if($nested_if.principal.hostname = /win-adfs/,
5,
if($nested_if.principal.hostname = /server/,
3,
if($nested_if.principal.hostname = /win-atomic/,
1,
0))))
Esempio di ricerca: sezione degli eventi
Questo esempio assegna l'IP segnaposto a target.ip o principal.ip, purché
non siano vuoti. Se i valori IP non sono presenti, viene assegnato no_valid_ip.
events:
$e.metadata.event_type = "NETWORK_CONNECTION"
$ip = if($e.target.ip != "",
$e.target.ip,
if($e.principal.ip != "",
$e.principal.ip,
"no_valid_ip"))
match:
$ip
Esempio di regola: if nidificato nella sezione outcome
rule nested_if_outcome_example {
meta:
events:
$e.metadata.event_type = "NETWORK_CONNECTION"
$e.principal.ip = $ip
match:
$ip over 5m
outcome:
$score = max(
if($e.principal.hostname = /win-adfs/,
5,
if($e.principal.hostname = /server/,
3,
if($e.principal.hostname = /win-atomic/,
1,
0))))
condition:
$e
}
Esempio di regola: if nidificato nella sezione events
rule nested_if_events_example {
meta:
events:
$e.metadata.event_type = "NETWORK_CONNECTION"
$ip = if($e.target.ip != "",
$e.target.ip,
if($e.principal.ip != "",
$e.principal.ip,
"no_valid_ip"))
match:
$ip over 5m
condition:
$e
}
Limitazione nota
L'istruzione if() è una funzione in YARA-L 2.0 ed è soggetta al limite di profondità
delle funzioni di 20.
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.