Ringkasan YARA-L 2.0
YARA-L 2.0 adalah bahasa khusus di Google Security Operations yang beroperasi pada data log perusahaan untuk memungkinkan profesional keamanan menjelajahi data tersebut, menyelidiki ancaman, dan membuat aturan deteksi.
Dokumen ini menjelaskan YARA-L dan sintaksisnya, yang menunjukkan cara menggunakannya untuk mengekspresikan semuanya mulai dari kueri filter dasar hingga aturan yang mencari pola kompleks. Gunakan bagian dalam kueri YARA-L untuk mendukung fungsi gabungan, logika kondisi, dan menambahkan konteks melalui gabungan, pencocokan pola, dan lainnya.
Ringkasan sintaksis YARA-L 2.0
Untuk membuat aturan atau kueri YARA-L, sebaiknya Anda memahami struktur dan sintaksis untuk menentukan deklarasi, definisi, dan penggunaan variabel.
Struktur aturan
Aturan YARA-L berisi bagian berikut dan harus ditentukan dalam urutan berikut:
| Pesanan | Bagian | Aturan | Penelusuran/Dasbor | Deskripsi |
|---|---|---|---|---|
| 1 | meta | Wajib | T/A | Menjelaskan aturan, dapat mencakup nilai seperti penulis, tingkat keseriusan, deskripsi, dan prioritas. Lihat Sintaksis bagian meta. |
| 2 | acara | Wajib | Wajib | Menentukan cara memfilter dan menggabungkan peristiwa. Lihat Sintaksis bagian peristiwa. |
| 3 | cocok | Opsional | Opsional | Menentukan kolom yang akan dikelompokkan saat menggabungkan hasil. Lihat Sintaksis bagian kecocokan. Catatan: Jika Anda mengecualikan bagian match, aturan dapat mencocokkan satu peristiwa. |
| 4 | hasil | Opsional | Opsional | Menentukan data yang akan dikeluarkan saat aturan dijalankan atau saat aturan dipicu. Lihat Sintaksis bagian hasil. |
| 5 | kondisi | Wajib | Opsional | Berisi logika yang menentukan apakah suatu aturan dipicu. Lihat Sintaksis bagian kondisi. |
| 6 | opsi | Opsional | Opsional | Memungkinkan pengaktifan atau penonaktifan perilaku aturan tertentu. Lihat Sintaksis bagian opsi. |
Contoh berikut mengilustrasikan struktur umum aturan:
rule <rule name>
{
meta:
// Stores arbitrary key-value pairs of the rule details, such as who wrote
// it, what it detects on, version control, etc.
events:
// Defines which events to filter and the relationship between events.
match:
// Values to return when matches are found.
outcome:
// Define the output of each rule and security alert.
condition:
// Condition to check events and the variables used to find matches.
options:
// Options to turn on or off while executing this rule. The `options` syntax is only valid for rules.
}
Saat Anda membuat aturan, Google SecOps akan melakukan pemeriksaan jenis terhadap sintaks YARA-L Anda dan menampilkan error untuk membantu Anda merevisi aturan agar berfungsi dengan benar. Contoh berikut menunjukkan error yang ditampilkan saat sintaksis tidak valid digunakan:
// $e.target.port is of type integer which cannot be compared to a string.
$e.target.port = "80"
// "LOGIN" is not a valid event_type enum value.
$e.metadata.event_type = "LOGIN"
Contoh aturan ini menemukan 5 kali login gagal berturut-turut per pengguna dalam jangka waktu 10 menit.
rule failed_logins
{
meta:
author = "Security Team"
description = "Detects multiple failed user logins within 10-minute windows."
severity = "HIGH"
events:
$e.metadata.event_type = "USER_LOGIN"
$e.security_result.action = "FAIL"
$user = $e.target.user.userid
match:
$user over 10m
outcome:
$failed_login_count = count($e.metadata.id)
$first_fail_time = min($e.metadata.event_timestamp.seconds)
condition:
#e >= 5
}
Aturan ini ditentukan sebagai berikut:
- Bagian
metamenentukan penulis aturan (Tim keamanan), deskripsi (Mendeteksi beberapa kegagalan login pengguna dalam jangka waktu 10 menit), dan tingkat keparahan (Tinggi).
Mendeteksi beberapa login pengguna yang gagal dalam jangka waktu 10 menit
Bagian
eventsmenentukan peristiwa yang harus dilacak: login pengguna, login pengguna yang gagal (variabel peristiwa), dan link ke variabel kecocokanuser(variabel placeholder).Bagian
outcomemenentukan penghitungan yang akan dilakukan pada peristiwa dan variabel placeholder: menghitung upaya login yang gagal dan waktu terjadinya kegagalan pertama.Bagian
matchmenentukan variabel untuk mengelompokkan peristiwa menurut ($user) dan jangka waktu (10m) terjadinya peristiwa tersebut agar dianggap cocok.Bagian
conditionmenentukan untuk hanya menampilkan pengguna yang memiliki lebih dari lima atau lebih banyak login yang gagal.
Langkah berikutnya
- Sintaksis bagian meta
- Sintaksis bagian Acara
- Sintaksis bagian kecocokan
- Sintaksis bagian hasil
- Sintaksis bagian kondisi
- Sintaksis bagian opsi
Informasi tambahan
- Ekspresi, operator, dan konstruksi yang digunakan di YARA-L 2.0
- Fungsi di YARA-L 2.0
- Membangun aturan deteksi komposit
- Contoh: Kueri YARA-L 2.0
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.