Ringkasan YARA-L 2.0

Didukung di:

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 meta menentukan 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 events menentukan peristiwa yang harus dilacak: login pengguna, login pengguna yang gagal (variabel peristiwa), dan link ke variabel kecocokan user (variabel placeholder).

  • Bagian outcome menentukan penghitungan yang akan dilakukan pada peristiwa dan variabel placeholder: menghitung upaya login yang gagal dan waktu terjadinya kegagalan pertama.

  • Bagian match menentukan variabel untuk mengelompokkan peristiwa menurut ($user) dan jangka waktu (10m) terjadinya peristiwa tersebut agar dianggap cocok.

  • Bagian condition menentukan untuk hanya menampilkan pengguna yang memiliki lebih dari lima atau lebih banyak login yang gagal.

Langkah berikutnya

Informasi tambahan

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