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,descriptionreference— tautan laporan atau buletin keamananhash— sampel yang menjadi dasar pembuatan aturantlp— 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-kecilwide— 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" fullwordRangkaian 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\// asciiBagian 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 $benignPenghitungan dan Himpunan
YARA menyediakan kuantor ekspresif atas himpunan string:
any of them/all of them2 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 >= 2Offset 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 bitafilesize— ukuran total, misalnyafilesize < 200KBuint16(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 $payloadModul
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, imphashhash— menghitung md5/sha256 dari berbagai wilayahmath— entropy dan statistikelf,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)
conditionmenggabungkan 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
- Kegunaan YARA
- Sintaks Aturan YARA
- Perburuan dengan String dan Heksadesimal
- Meningkatkan Skala dan Mengotomatiskan Pemindaian