Sintaksis bagian Match

Didukung di:

Di YARA-L 2.0, bagian match menyediakan mekanisme untuk korelasi multi-peristiwa. Fitur ini menentukan logika untuk mengelompokkan peristiwa ke dalam satu deteksi dengan menautkan atribut umum, seperti pengguna, alamat IP, atau hash file, dalam batas waktu tertentu.

Anda menggunakan bagian match untuk kasus penggunaan berikut:

  • Menautkan dua peristiwa atau lebih yang berbeda dalam satu aturan.
  • Menggabungkan data di Penelusuran dan Dasbor, seperti menghitung upaya login yang gagal selama jangka waktu tertentu.

Menentukan kriteria korelasi

Gunakan untuk menentukan kriteria korelasi ini dengan menentukan hal berikut:

  • Kolom pengelompokan (kunci): Variabel (seperti $user atau $ip) yang harus memiliki nilai yang sama di seluruh peristiwa (ditentukan di bagian events) untuk memicu kecocokan.

  • Batasan waktu: Jangka waktu durasi terjadinya peristiwa yang dikelompokkan untuk memenuhi aturan atau agregasi. Di Aturan, ini menentukan periode deteksi; di Penelusuran dan Dasbor, ini menentukan periode agregasi atau korelasi.

Membandingkan persyaratan fitur

Tabel berikut menjelaskan perbandingan antara Aturan dengan Penelusuran dan Dasbor.

Fitur Persyaratan aturan Dukungan Penelusuran dan Dasbor
Jenis variabel Harus menggunakan placeholder yang ditentukan di bagian events. Mendukung placeholder dan kolom UDM langsung.
Periode waktu Menentukan batas deteksi. Menentukan bucket agregasi atau korelasi.
Sintaksis over <number><m/h/d> (misalnya, 10m, 2h, 1d) over <number><m/h/d>
Batas Min: 1m / Maks: 48h Min: 1m / Maks: 48h

Jenis jendela yang didukung

YARA-L 2.0 menggunakan perilaku windowing yang berbeda untuk menentukan cara membagi waktu dan cara mengelompokkan peristiwa. Anda dapat mengelompokkan kolom dan placeholder peristiwa di bagian match menurut perincian waktu yang ditentukan menggunakan salah satu periode yang didukung berikut.

Untuk mengetahui detail tentang jenis jendela yang didukung YARA-L 2.0, lihat Logika pembuatan jendela YARA-L 2.0.

Memahami batas temporal

Bagian match mempartisi peristiwa ke dalam grup berdasarkan kunci pengelompokan Anda. Durasi yang ditentukan menentukan batas temporal untuk setiap grup:

  • Inklusi: Hanya peristiwa dalam periode yang diteruskan ke evaluasi condition untuk pencocokan spesifik tersebut.
  • Pengecualian: Peristiwa di luar periode diabaikan untuk grup kecocokan tertentu tersebut, sehingga mencegah peristiwa yang tidak terkait memicu positif palsu.

Nilai nol di bagian match

Google SecOps secara implisit memfilter nilai nol untuk semua placeholder yang digunakan di bagian match ("" untuk string, 0 untuk angka, false untuk boolean, nilai di posisi 0 untuk jenis yang dienumerasi).

Contoh: Memfilter nilai nol

Contoh berikut menggambarkan kueri yang memfilter nilai nol.

rule ZeroValuePlaceholderExample {

events:
  // Because $host is used in the match section, the query behaves
  // as if the following predicate was added to the events section:
  // $host != ""
  $host = $e.principal.hostname

  // Because $otherPlaceholder was not used in the match,
  // there is no implicit filtering of zero values for $otherPlaceholder.
  $otherPlaceholder = $e.principal.ip

match:
  $host over 5m

condition:
  $e
}

Namun, jika placeholder ditetapkan ke fungsi, kueri tidak akan secara implisit memfilter nilai nol placeholder yang digunakan di bagian match.

Untuk menonaktifkan pemfilteran implisit nilai nol, Anda dapat menggunakan opsi allow_zero_values di bagian opsi. Opsi allow_zero_values hanya tersedia di Aturan.

Contoh: Izinkan nilai nol

Contoh berikut mengilustrasikan kueri yang tidak secara implisit memfilter nilai nol placeholder yang digunakan di bagian match:

rule AllowZeroValuesExample {

events:
  // Because allow_zero_values is set to true, there is no implicit filtering
  // of zero values for $host.
  $host = $e.principal.hostname

  // Because $otherPlaceholder was not used in the match,
  // there is no implicit filtering of zero values for $otherPlaceholder.
  $otherPlaceholder = $e.principal.ip

match:
  $host over 5m

condition:
  $e

options:
  allow_zero_values = true
}

Langkah berikutnya

Pelajari referensi berikut untuk melanjutkan logika YARA-L Anda atau mempelajari lebih dalam fungsi kueri lanjutan:

Sintaksis dan logika

Referensi dan contoh

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.