Menggunakan pernyataan if bertingkat untuk logika yang lebih kompleks
Anda dapat menggunakan pernyataan if di bagian outcome dan events. Anda juga dapat menggunakan pernyataan if dalam
klausa else then dari pernyataan if lainnya. Kemampuan ini memungkinkan Anda
memperkenalkan logika yang lebih rumit ke kueri Anda.
Sintaksis ini didukung di Aturan, Penelusuran, dan Dasbor.
Sintaksis
if(BOOL_CLAUSE, THEN_CLAUSE, ELSE_CLAUSE)
Contoh if bertingkat
Contoh penelusuran: bagian hasil
Contoh ini menetapkan skor hasil berdasarkan 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))))
Contoh penelusuran: bagian acara
Contoh ini menetapkan IP placeholder ke target.ip atau principal.ip selama
IP tersebut tidak kosong. Jika nilai IP tidak ada, nilai no_valid_ip akan ditetapkan.
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
Contoh aturan: if bertingkat di bagian 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
}
Contoh aturan: if bertingkat di bagian 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
}
Batasan umum
Pernyataan if() adalah fungsi di YARA-L 2.0 dan tunduk pada batas kedalaman fungsi 20.
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.