Cyber Security Academy · Pelajaran

Sintaks Peraturan YARA

Rentetan, syarat dan metadata.

Pelajaran 2 daripada 413 langkah

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, description
  • reference — pautan laporan atau nasihat
  • hash — sampel yang menjadi asas pembinaan peraturan
  • tlp — 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 kecil
  • wide — 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" fullword

Rentetan 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\// ascii

Bahagian 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 $benign

Pengiraan dan Set

YARA menyediakan pengkuantiti ekspresif untuk set rentetan:

  • any of them / all of them
  • 2 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 >= 2

Ofset 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 bait
  • filesize — saiz keseluruhan, contohnya filesize < 200KB
  • uint16(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 $payload

Modul

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, imphash
  • hash — mengira md5/sha256 bagi kawasan
  • math — entropy dan statistik
  • elf, 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)
  • condition menggabungkan 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, private dan teg menyusun set peraturan

Seterusnya: pemburuan praktikal menggunakan rentetan dan heks.

Percuma untuk bermula

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

  1. Kegunaan YARA
  2. Sintaks Peraturan YARA
  3. Memburu dengan Rentetan dan Heksadesimal
  4. Menskalakan dan Mengautomatikkan Pengimbasan
← Kembali ke Cyber Security Academy