0Pricing
Cyber Security Academy · Pelajaran

Sintaks Aturan YARA

String, kondisi, dan metadata.

Sintaks Aturan YARA adalah pelajaran Cyber Security Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cyber Security Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cyber Security Academy mencakup 4 pelajaran total.

Tiga Bagian

Aturan YARA memiliki nama dan hingga tiga bagian: meta, strings, dan condition. Bagian condition adalah satu-satunya bagian yang wajib ada, tetapi aturan nyata menggunakan ketiganya.

rule Example_Malware
{
  meta:
    author = "analyst"
    description = "Detects Example family"
  strings:
    $a = "EvilConfig"
    $b = { 6A 40 68 00 30 00 00 }
  condition:
    $a and $b
}

Bagian meta

meta berisi metadata deskriptif yang tidak memengaruhi pencocokan, tetapi sangat penting untuk triase dan pemeliharaan.

  • author, date, description
  • reference — tautan laporan atau buletin keamanan
  • hash — sampel yang menjadi dasar pembuatan aturan
  • tlp — klasifikasi berbagi

Nilainya berupa teks, bilangan bulat, atau boolean. Perlakukan meta sebagai dokumentasi: analis berikutnya bergantung padanya.

Rangkaian Teks

Bagian strings mendefinisikan pengenal (yang diawali $) yang terikat pada pola. Bentuk paling sederhana adalah teks yang diapit tanda kutip.

Pengubah memperinci pencocokan:

  • nocase — tidak peka huruf besar-kecil
  • wide — UTF-16 (dua bita per karakter, umum di Windows)
  • ascii — ASCII (bawaan; gabungkan dengan wide untuk mencocokkan keduanya)
  • fullword — hanya cocok sebagai kata utuh
strings:
  $s1 = "cmd.exe /c" nocase
  $s2 = "InjectDll" wide ascii
  $s3 = "admin" fullword

Rangkaian Heksadesimal

Untuk pola biner, gunakan rangkaian heksadesimal di dalam kurung kurawal. Rangkaian ini mencocokkan bita mentah, sehingga ideal untuk kode operasi, angka magis, dan struktur.

Rangkaian heksadesimal mendukung fleksibilitas:

  • ?? — setengah-bita/bita pengganti
  • [n-m] — lompatan sepanjang n hingga m bita sembarang
  • ( A | B ) — alternatif
strings:
  $h1 = { 4D 5A 90 00 }
  $h2 = { E8 ?? ?? ?? ?? 83 C4 04 }
  $h3 = { 6A 00 [2-6] FF 15 ?? ?? ?? ?? }
  $h4 = { ( B8 | B9 ) 00 00 00 00 }

Ekspresi Reguler

YARA mendukung pola ekspresi reguler yang dibatasi garis miring, dengan pengubah yang sama seperti string teks. Gunakan ekspresi reguler saat suatu pola bervariasi tetapi mengikuti struktur, seperti penanda konfigurasi atau nama mutex yang dibuat secara otomatis.

Ekspresi reguler sangat kuat tetapi mahal; jika memungkinkan, utamakan string tetap atau heksadesimal, dan batasi ekspresi reguler dengan ketat menggunakan jangkar agar tidak perlu memindai seluruh berkas.

strings:
  $re1 = /mutex_[a-f0-9]{8}/ nocase
  $re2 = /https?:\/\/[a-z0-9]{12,20}\.top\// ascii

Bagian Kondisi

condition adalah ekspresi boolean yang menentukan kecocokan. Rujuk pengenal string secara langsung; $a tanpa konteks bernilai benar jika string tersebut ditemukan.

Gabungkan dengan and, or, not, dan tanda kurung. Di sinilah Anda menyandikan logika yang membedakan kecocokan keluarga yang nyata dari kebetulan.

condition:
  $a and ($b or $c) and not $benign

Penghitungan dan Himpunan

YARA menyediakan kuantor ekspresif atas himpunan string:

  • any of them / all of them
  • 2 of ($s*) — setidaknya dua dari suatu kelompok
  • #a > 3 — jumlah kecocokan $a melebihi 3

Dengan ini, Anda dapat mewajibkan, misalnya, tiga dari lima penanda keluarga, sehingga menyeimbangkan sensitivitas dengan positif palsu.

condition:
  3 of ($str*) and #marker >= 2

Offset dan Ukuran Berkas

Kondisi dapat merujuk pada lokasi terjadinya kecocokan dan ukuran berkas:

  • $a at 0 — kecocokan harus berada pada offset 0
  • $a in (0..1024) — dalam rentang bita
  • filesize — ukuran total, misalnya filesize < 200KB
  • uint16(0) == 0x5A4D — membaca bilangan bulat pada offset (dalam contoh ini, header MZ)

Menjangkarkan kecocokan ke posisi secara drastis mengurangi positif palsu dan mempercepat pemindaian.

condition:
  uint16(0) == 0x5A4D and filesize < 500KB and $payload

Modul

Modul YARA menyediakan data terstruktur yang memahami format, sehingga kondisi dapat menalar bidang yang telah diuraikan, bukan bita mentah.

  • pe — imports PE, bagian, titik masuk, tanda tangan, imphash
  • hash — menghitung md5/sha256 dari berbagai wilayah
  • math — entropy dan statistik
  • elf, dotnet, magic

Mengimpor pe, misalnya, memungkinkan Anda mencocokkan fungsi yang diimpor atau imphash tertentu, yang jauh lebih tangguh daripada string literal.

import "pe"
condition:
  pe.imphash() == "a1b2c3d4e5f6..." and
  pe.imports("kernel32.dll", "VirtualAllocEx")

Melakukan Iterasi pada Himpunan

Untuk logika yang lebih kaya, YARA mendukung perulangan atas koleksi dengan for. Anda dapat menyatakan kondisi seperti setidaknya dua dari offset ini memenuhi suatu sifat, atau nama bagian mana pun cocok dengan suatu pola.

Hal ini penting saat bekerja dengan data modul seperti bagian PE atau imports, ketika Anda harus memeriksa daftar dengan panjang variabel, bukan satu nilai saja.

import "pe"
condition:
  for any i in (0..pe.number_of_sections - 1) : (
    pe.sections[i].name == ".evil"
  )

Global, Privat, dan Tag

Kata kunci tingkat rule menata kumpulan aturan:

  • global rule — kondisinya menjadi gerbang bagi semua rule lain dalam berkas (misalnya, hanya memindai berkas PE)
  • private rule — blok pembangun yang dapat digunakan kembali, tidak dilaporkan sendiri tetapi dapat dirujuk oleh rule lain
  • tag setelah nama rule mengklasifikasikan kecocokan (misalnya untuk memfilter keluaran)
global private rule IsPE { condition: uint16(0) == 0x5A4D }

rule Dropper : trojan dropper {
  strings: $a = "drop_payload"
  condition: $a
}

Pemeriksaan Cepat

Pertimbangkan ketangguhan suatu kondisi.

Ringkasan

Sintaks rule YARA dalam satu tampilan:

  • Satu rule = meta + strings + condition
  • String teks dengan pengubah nocase/wide/ascii/fullword
  • String heksadesimal dengan karakter pengganti ??, lompatan [n-m], dan alternatif
  • Ekspresi reguler untuk pola variabel yang terstruktur (gunakan secukupnya)
  • condition menggabungkan string dengan and/or/not
  • Kuantor: any/all/N of, dan jumlah #a
  • Penjangkaran: at, in, filesize, pembacaan uint
  • Modul (pe, hash, math) mencocokkan data terstruktur dan imphash
  • global, private, dan tag menata kumpulan aturan

Berikutnya: pencarian praktis dengan string dan heksadesimal.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Sintaks Aturan YARA” gratis?

Ya — teks lengkap “Sintaks Aturan YARA” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cyber Security Academy, upgrade ke CoddyKit PRO. Kursus Cyber Security Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Sintaks Aturan YARA”?

String, kondisi, dan metadata. Kamu berlatih Cyber Security Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Cyber Security Academy?

Tidak diperlukan pengalaman sebelumnya. Cyber Security Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Sintaks Aturan YARA” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Cyber Security Academy ini?

Ya. Setiap pelajaran Cyber Security Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Kegunaan YARA
  2. Sintaks Aturan YARA
  3. Perburuan dengan String dan Heksadesimal
  4. Meningkatkan Skala dan Mengotomatiskan Pemindaian
← Kembali ke Cyber Security Academy