Menggunakan sintaksis N OF dengan variabel peristiwa
Dokumen ini menjelaskan cara menggunakan sintaksis N OF untuk
menulis logika fleksibel dan bersyarat dalam bagian condition
kueri Anda.
Sintaksis N OF memungkinkan Anda menggabungkan beberapa kondisi, sehingga mengurangi kompleksitas keseluruhan sintaksis kueri Anda:
- Menyediakan cara untuk menentukan bahwa sejumlah minimum ekspresi boolean dari daftar tertentu harus bernilai benar.
- Menghindari kebutuhan untuk menentukan setiap kemungkinan kombinasi, sehingga mengurangi kesalahan dan upaya.
Sintaksis N OF
Sintaksis untuk pernyataan N OF adalah daftar ekspresi boolean yang dipisahkan koma sebagai berikut:
[expr1, expr2, … , exprN] di mana [expr1, expr2, … , exprN]
Bagian berikut menunjukkan beberapa variasi sintaksis N OF.
SALAH SATU
Contoh berikut memeriksa apakah setidaknya satu ekspresi dalam daftar bernilai benar (true).
Ini sama seperti menggabungkan semua ekspresi dengan or.
condition:
ANY OF [$e1, #e2 > 5, $outcome1 = "FAILED"]
SEMUA
Jika semua ekspresi dalam daftar berikut benar, contohnya benar. Ini sama dengan menggabungkan semua ekspresi dengan and.
condition:
ALL OF [$e1, $e2, $outcome1 = "SUCCESS"]
N dari X
Fungsi ini dievaluasi ke benar (true) jika setidaknya N ekspresi dari daftar bernilai benar (true).
condition:
2 of [$e1, $e2 > 0, $e3, arrays.contains($outcome_ips, "1.2.3.4")]
Contoh aturan: menandai akses file sensitif
Aturan berikut menandai pengguna jika mereka berhasil login ($e1). Aturan
kemudian memeriksa apakah sesi juga memenuhi salah satu dari dua kriteria: file sensitif diakses ($e2) atau jumlah total file sensitif unik yang diakses melebihi
3.
rule MultiEventNOf {
meta:
author = "google-secops"
description = "Detects user login followed by sensitive file access or multiple sensitive files."
events:
$e1.principal.user.userid = $user
$e1.metadata.event_type = "USER_LOGIN"
$e2.principal.user.userid = $user
$e2.metadata.event_type = "FILE_OPEN"
re.regex($e2.target.file.full_path, `^/cns/sensitive/`)
match:
$user over 1h
outcome:
$sensitive_file_count = count_distinct($e2.target.file.full_path)
condition:
$e1 and ANY OF [$e2, $sensitive_file_count > 3]
}
Contoh penelusuran: tandai akses file sensitif
Contoh berikut menunjukkan cara memformat ulang contoh aturan sebagai kueri penelusuran.
$e1.principal.user.userid = $user
$e1.metadata.event_type = "USER_LOGIN"
$e2.principal.user.userid = $user
$e2.metadata.event_type = "FILE_OPEN"
re.regex($e2.target.file.full_path, `^/cns/sensitive/`)
match:
$user over 1h
outcome:
$sensitive_file_count = count_distinct($e2.target.file.full_path)
condition:
$e1 and ANY OF [$e2, $sensitive_file_count > 3]
Batasan umum
Keberadaan acara yang diperlukan: Sintaksis N OF tidak dapat tidak terikat. Keberadaan peristiwa harus menjadi persyaratan agar klausa bernilai benar (misalnya,
$e1atau#e1 > 0).Pencampuran jenis variabel: Anda tidak dapat menggabungkan variabel non-UDM dengan variabel peristiwa UDM dalam daftar N OF yang sama.
Batasan jendela: Anda tidak dapat menggunakan jendela bergulir dengan sintaksis N OF.
Apa langkah selanjutnya?
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.