Praktik terbaik YARA-L
Dokumen ini menjelaskan praktik terbaik yang direkomendasikan Google Security Operations untuk menulis aturan dalam YARA-L.
Memfilter nilai nol
Kolom mungkin dihilangkan secara otomatis dalam peristiwa yang Anda gunakan untuk menjalankan aturan. Jika dihilangkan, kolom akan ditetapkan secara default ke nilai nol.
Misalnya, nilai string yang dihilangkan ditetapkan secara default ke ""
.
Jika Anda menyamakan dua kolom yang dihilangkan, keduanya mungkin ditetapkan secara default ke nilai nol. 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 (true), sehingga menyebabkan kecocokan.
Ekspresi perbandingan berikut memastikan bahwa Anda tidak mendapatkan kecocokan karena e1.field1
dan e2.field2
tidak menyertakan data apa pun:
$e1.field1 = $e2.field2
$e1.field != ""
Menambahkan filter jenis peristiwa
Dalam contoh berikut, alamat IP untuk setiap peristiwa UDM diperiksa berdasarkan daftar referensi, yang menghabiskan 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 kesetaraan sebelum ekspresi reguler atau perbandingan lainnya. Filter diterapkan sesuai urutan yang muncul 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 satu aturan peristiwa menggunakan ekspresi reguler
- Menggabungkan 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 Gabungan dan Jumlah dalam Kondisi
- Mem-build Aturan Multi-Peristiwa - Periode Berpindah
- 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 Bersyarat, dan Operator Matematika
- Fungsi - strings.concat
- Fungsi - strings.coalesce
- Fungsi - Jaringan
- Daftar Referensi
- Daftar Referensi CIDR
- Daftar Referensi Regex
- Fungsi String - Huruf Besar atau Kecil
- Fungsi Ekspresi Reguler - re.regex
- Fungsi Ekspresi Reguler - re.capture
- Fungsi String - strings.base64_decode
- Fungsi Ekspresi Reguler - re.replace
- Memulai Penelusuran Statistik
- Penelusuran Statistik - Lebih dari Hitungan