Sintaks Peraturan YARA
Rentetan, syarat dan metadata.
Sintaks Peraturan YARA ialah pelajaran Cyber Security Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Cyber Security Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Cyber Security Academy merangkumi sejumlah 4 pelajaran.
Tiga Bahagian
Sesuatu peraturan YARA mempunyai nama dan sehingga tiga bahagian: meta, strings dan condition. Syarat ialah satu-satunya bahagian wajib, tetapi peraturan sebenar menggunakan ketiga-tiganya.
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
}Bahagian meta
meta menyimpan metadata deskriptif yang tidak mempengaruhi pemadanan tetapi penting untuk pengutamaan dan penyelenggaraan.
author,date,descriptionreference— pautan laporan atau nasihathash— sampel yang menjadi asas pembinaan peraturantlp— pengelasan perkongsian
Nilai boleh berupa rentetan, nombor bulat atau nilai benar/palsu. Anggap meta sebagai dokumentasi: pihak yang bertindak balas seterusnya bergantung padanya.
Rentetan Teks
Bahagian strings mentakrifkan pengecam (bermula dengan $) yang dipautkan kepada corak. Bentuk paling mudah ialah rentetan teks dalam tanda petikan.
Pengubah suai memperincikan pemadanan:
nocase— tidak peka huruf besar dan kecilwide— UTF-16 (dua bait bagi setiap aksara, lazim dalam Windows)ascii— ASCII (lalai; gabungkan dengan wide untuk memadankan kedua-duanya)fullword— padan hanya sebagai perkataan penuh
strings:
$s1 = "cmd.exe /c" nocase
$s2 = "InjectDll" wide ascii
$s3 = "admin" fullwordRentetan Heksadesimal
Untuk corak perduaan, gunakan rentetan heksadesimal dalam pendakap. Rentetan ini memadankan bait mentah dan sesuai untuk kod operasi, nombor magik serta struktur.
Rentetan heksadesimal menyokong fleksibiliti:
??— nibel/bait kad bebas[n-m]— lompatan sebanyak n hingga m bait sewenang-wenangnya( 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 }Ungkapan Nalar
YARA menyokong corak ungkapan nalar yang dibatasi oleh garis miring, dengan pengubah yang sama seperti rentetan teks. Gunakan ungkapan nalar apabila corak berubah-ubah tetapi mengikut struktur, seperti penanda konfigurasi atau nama saling-kunci yang dijana.
Ungkapan nalar berkuasa tetapi mahal dari segi pengiraan; utamakan rentetan tetap atau heks jika boleh, dan tambat ungkapan nalar dengan ketat untuk mengelakkan pengimbasan seluruh fail.
strings:
$re1 = /mutex_[a-f0-9]{8}/ nocase
$re2 = /https?:\/\/[a-z0-9]{12,20}\.top\// asciiBahagian Syarat
condition ialah ungkapan logik yang menentukan padanan. Rujuk pengecam rentetan secara langsung; $a tanpa syarat bernilai benar jika rentetan itu ditemui.
Gabungkan menggunakan and, or, not dan kurungan. Di sinilah anda mengekod logik yang membezakan padanan keluarga sebenar daripada kebetulan.
condition:
$a and ($b or $c) and not $benignPengiraan dan Set
YARA menyediakan pengkuantiti ekspresif untuk set rentetan:
any of them/all of them2 of ($s*)— sekurang-kurangnya dua daripada satu kumpulan#a > 3— bilangan padanan bagi $a melebihi 3
Dengan ini, anda boleh mewajibkan, contohnya, tiga daripada lima penanda keluarga, sambil mengimbangi kepekaan dengan positif palsu.
condition:
3 of ($str*) and #marker >= 2Ofset dan Saiz Fail
Syarat boleh merujuk di mana padanan berlaku dan saiz fail:
$a at 0— padanan mesti berada pada ofset 0$a in (0..1024)— dalam julat baitfilesize— saiz keseluruhan, contohnyafilesize < 200KBuint16(0) == 0x5A4D— membaca nombor bulat pada sesuatu ofset (di sini pengepala MZ)
Menambat padanan pada kedudukan mengurangkan positif palsu dengan ketara dan mempercepatkan pengimbasan.
condition:
uint16(0) == 0x5A4D and filesize < 500KB and $payloadModul
Modul YARA mendedahkan data berstruktur yang memahami format, supaya syarat boleh membuat pertimbangan berdasarkan medan yang dihuraikan dan bukannya bait mentah.
pe— import PE, bahagian, titik masuk, tandatangan, imphashhash— mengira md5/sha256 bagi kawasanmath— entropy dan statistikelf,dotnet,magic
Mengimport pe, contohnya, membolehkan anda memadankan fungsi yang diimport atau imphash tertentu, yang jauh lebih teguh daripada rentetan literal.
import "pe"
condition:
pe.imphash() == "a1b2c3d4e5f6..." and
pe.imports("kernel32.dll", "VirtualAllocEx")Pengulangan Merentas Set
Untuk logik yang lebih kaya, YARA menyokong gelung merentas koleksi menggunakan for. Anda boleh menyatakan syarat seperti sekurang-kurangnya dua daripada ofset ini memenuhi sesuatu sifat, atau mana-mana nama bahagian sepadan dengan corak.
Ini penting apabila bekerja dengan data modul seperti bahagian PE atau imports, kerana anda perlu memeriksa senarai yang panjangnya berubah-ubah dan bukannya satu nilai sahaja.
import "pe"
condition:
for any i in (0..pe.number_of_sections - 1) : (
pe.sections[i].name == ".evil"
)Global, Persendirian dan Teg
Kata kunci peringkat rule menyusun set peraturan:
global rule— syaratnya mengawal semua peraturan lain dalam fail (contohnya, hanya mengimbas fail PE)private rule— blok binaan yang boleh digunakan semula, tidak dilaporkan sendiri tetapi boleh dirujuk oleh peraturan lain- teg selepas nama rule mengelaskan padanan (contohnya untuk menapis keluaran)
global private rule IsPE { condition: uint16(0) == 0x5A4D }
rule Dropper : trojan dropper {
strings: $a = "drop_payload"
condition: $a
}Semakan Pantas
Nilai keteguhan sesuatu syarat.
Imbas Kembali
Sintaks rule YARA sepintas lalu:
- Satu rule =
meta+strings+condition - Rentetan teks dengan pengubah tidak peka huruf besar kecil/lebar/ASCII/perkataan penuh
- Rentetan heks dengan kad bebas
??, lompatan[n-m]dan alternatif - Ungkapan nalar untuk corak berstruktur yang berubah-ubah (gunakan secara sederhana)
conditionmenggabungkan rentetan dengan dan/atau/NOT- Pengkuantiti: mana-mana/semua/N daripada, serta kiraan
#a - Penambatan: pada, dalam, saiz fail dan bacaan uint
- Modul (pe, hash, math) memadankan data berstruktur dan imphash
global,privatedan teg menyusun set peraturan
Seterusnya: pemburuan praktikal menggunakan rentetan dan heks.
Pelajari Cyber Security Academy dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 76
- Pelajaran
- 303
Soalan Lazim
Adakah pelajaran “Sintaks Peraturan YARA” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Cyber Security Academy, termasuk “Sintaks Peraturan YARA”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Cyber Security Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Sintaks Peraturan YARA”?
Rentetan, syarat dan metadata. Anda berlatih Cyber Security Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Cyber Security Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Cyber Security Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Sintaks Peraturan YARA” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Cyber Security Academy ini?
Ya. Setiap pelajaran Cyber Security Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Kegunaan YARA
- Sintaks Peraturan YARA
- Memburu dengan Rentetan dan Heksadesimal
- Menskalakan dan Mengautomatikkan Pengimbasan