Menerapkan praktik terbaik aturan YARA-L 2.0
Dokumen ini menjelaskan praktik terbaik yang direkomendasikan Google Security Operations untuk menulis aturan di YARA-L 2.0.
Memfilter nilai nol
Kolom mungkin otomatis dihilangkan dalam peristiwa yang digunakan untuk menjalankan aturan. Jika kolom dihilangkan, kolom tersebut akan ditetapkan ke nilai nol secara default.
Misalnya, nilai string yang dihilangkan akan ditetapkan ke "" secara default.
Jika Anda menyamakan dua kolom yang keduanya dihilangkan, keduanya mungkin akan ditetapkan ke nilai nol secara default. Hal ini dapat menyebabkan kecocokan yang tidak diinginkan saat dua kolom cocok karena keduanya memiliki nilai nol. Anda dapat menghindari perilaku ini dengan menentukan nilai nol secara eksplisit.
Misalnya, jika Anda memiliki aturan yang menyamakan dua peristiwa berdasarkan dua kolom, ada kemungkinan kedua kolom tersebut kosong, sehingga menyebabkan kecocokan:
$e1.field1 = $e2.field2
Jika e1.field1 dan e2.field2 dihilangkan dalam data, "" = "" akan bernilai benar, sehingga menyebabkan kecocokan.
Ekspresi perbandingan berikut memastikan Anda tidak mendapatkan kecocokan karena e1.field1 dan e2.field2 tidak menyertakan data apa pun:
$e1.field1 = $e2.field2
$e1.field != ""
Nilai nol dan aturan yang bergantung pada pengayaan
Jika aturan bergantung pada data yang diperkaya yang belum diperbarui, nilainya mungkin null atau nol. Oleh karena itu, sebaiknya filter nilai nol (pemeriksaan null) pada aturan yang bergantung pada pengayaan. Pelajari cara Google SecOps memperkaya data peristiwa dan entity dan cara menggunakan data yang diperkaya konteks dalam aturan.
Menambahkan filter jenis peristiwa
Dalam contoh berikut, alamat IP untuk setiap peristiwa UDM diperiksa terhadap daftar referensi, sehingga menggunakan banyak resource:
events:
// For every UDM event, check if the target.ip is listed in
// the suspicious_ip_addresses reference list.
$e.target.ip in %suspicious_ip_addresses
Jika aturan YARA-L Anda hanya mendeteksi peristiwa UDM dari jenis peristiwa tertentu, menambahkan filter jenis peristiwa dapat membantu mengoptimalkan aturan Anda dengan mengurangi jumlah peristiwa yang perlu dievaluasi oleh aturan.
events:
// For every UDM event of type NETWORK_DNS, check if the target.ip is
// listed in the suspicious_ip_addresses reference list.
$e.metadata.event_type = "NETWORK_DNS"
$e.target.ip in %suspicious_ip_addresses
Tambahkan filter ini ke awal bagian peristiwa. Anda juga harus menempatkan filter kesamaan sebelum ekspresi reguler atau perbandingan lainnya. Filter diterapkan sesuai urutan kemunculannya dalam aturan.
Untuk blog Komunitas tentang cara menggunakan YARA-L, lihat:
- Dasar-dasar YARA-L
- Variabel aturan YARA-L
- Operator dan pengubah YARA-L
- Membuat aturan peristiwa tunggal menggunakan ekspresi reguler
- Mengagregasi peristiwa dalam aturan
- Menetapkan nilai minimum dalam kondisi
- Navigasi editor aturan
- Opsi Aturan YARA-L
- Membuat Aturan Peristiwa Tunggal - Kecocokan String
- Membuat Aturan Multi Peristiwa - Menggabungkan Peristiwa
- Membuat Aturan Multi Peristiwa - Mengurutkan Peristiwa
- Membuat Aturan Multi Peristiwa - Beberapa Penggabungan dan Jumlah dalam Kondisi
- Membuat Aturan Multi Peristiwa - Jendela Geser
- Memperkenalkan Hasil dalam Aturan Peristiwa Tunggal
- Hasil dalam Aturan Multi Peristiwa - Jumlah
- Hasil dalam Aturan Multi Peristiwa - Array
- Hasil dalam Aturan Multi Peristiwa - Maks, Min, Jumlah
- Hasil - Skor Risiko, Logika Kondisional, dan Operator Matematika
- Fungsi - strings.concat
- Fungsi - strings.coalesce
- Fungsi - Jaringan
- Daftar Referensi
- Daftar Referensi CIDR
- Daftar Referensi Ekspresi Reguler
- Fungsi String - Huruf Besar atau Huruf Kecil
- Fungsi Ekspresi Reguler - re.regex
- Fungsi Ekspresi Reguler - re.capture
- Fungsi String - strings.base64_decode
- Fungsi Ekspresi Reguler - re.replace
- Mulai menggunakan Penelusuran Statistik
- Penelusuran Statistik - Lebih dari Jumlah
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.