YARA
YARA (Yet Another Recursive/Ridiculous Acronym) adalah alat pattern matching yang digunakan untuk mengidentifikasi dan mengklasifikasikan malware berdasarkan pola biner atau teks dalam file. Dikembangkan oleh VirusTotal, YARA menjadi standar de facto dalam malware analysis, threat hunting, dan incident response.
Struktur Rule YARA
Setiap rule YARA terdiri dari tiga bagian utama: meta,
strings, dan condition.
Meta
Bagian meta berisi metadata deskriptif yang tidak mempengaruhi logika deteksi:
rule SuspiciousPowershell
{
meta:
author = "Analyst"
description = "Detects obfuscated PowerShell scripts"
date = "2025-01-15"
hash = "a1b2c3d4e5f6..."
mitre_id = "T1059.001"
...
}
Strings
Bagian strings mendefinisikan pola yang akan dicari dalam file target. YARA mendukung tiga tipe string:
- Text strings - String teks yang
dibungkus dengan tanda kutip ganda. Contoh:
$a = "malware".- Opsional:
nocase(case insensitive),wide(Unicode encode),ascii,xor(XOR variasi).
- Opsional:
- Hex strings - Byte hex yang dibungkus
dengan kurung kurawal. Contoh:
$b = { 6A 40 68 00 30 00 00 }.- Mendukung wildcard (
??) dan jumps ([X-Y]) untuk byte yang tidak diketahui.
- Mendukung wildcard (
- Regex strings - Pola regex yang
dibungkus dengan garis miring. Contoh:
$c = /http[s]?:\/\//.
Condition
Bagian condition mendefinisikan aturan logika yang harus dipenuhi agar rule menghasilkan match:
- all of them - Semua string harus ditemukan.
- any of them - Setidaknya satu string ditemukan.
- all of ($a)* - Semua string dengan
identifier berawalan
$a. - #a > 5 - String
$amuncul lebih dari 5 kali (count operator). - @a > 0x100 - Offset string
$alebih besar dari 0x100. - filesize < 200KB - Ukuran file di bawah 200 kilobyte.
- $a at 0 - String
$aditemukan pada offset tertentu. - $a in (0..1000) - String
$aditemukan dalam rentang offset 0 - 1000. - for any of ($a): ($)* - Loop untuk memeriksa string dalam grup.
- # - Operator count:
#amengembalikan jumlah kemunculan string$a.
Contoh Rule Lengkap
rule Mimikatz_Detection
{
meta:
author = "Detection Team"
description = "Detects Mimikatz in memory dump"
reference = "https://github.com/gentilkiwi/mimikatz"
strings:
$s1 = "sekurlsa::logonpasswords" ascii wide nocase
$s2 = { 4d 69 6d 69 6b 61 74 7a } // "Mimikatz" in hex
$s3 = /mimikatz/i
condition:
any of them
}
Modules YARA
Modules memperluas kemampuan YARA dengan menyediakan informasi tambahan tentang file target:
- PE Module - Mengekstrak informasi dari
PE header:
pe.entry_point,pe.sections[0].name,pe.imphash(),pe.number_of_sections,pe.rich_signature.clear_data. - ELF Module - Untuk file Linux ELF:
elf.type,elf.entry_point,elf.sections[*].name. - Math Module - Fungsi matematika untuk
condition:
math.entropy()untuk menghitung entropi data, berguna mendeteksi packing/encryption. - Magic Module - Mendeteksi tipe file
menggunakan libmagic (file signature):
magic.type()mengembalikan string seperti "PE32 executable" atau "PDF document".
YARA vs Sigma
| Aspek | YARA | Sigma |
|---|---|---|
| Target | File-based (file biner, memory dump, dokumen) | Log-based (event log, syslog, network log) |
| Fokus | Malware identification, threat hunting | Log monitoring, SIEM detection |
| Format | Rule engine khusus (.yar/.yara) | YAML generik (dikonversi ke query SIEM) |
| Konteks | Byte-level, pattern scanning | Event attributes, field matching |
| Deployment | YARA engine pada endpoint, memory scanner | SIEM pipeline, EDR query |
| Komunitas | YARA-Rules, VirusTotal | SigmaHQ |
YARA digunakan ketika anda memiliki file - baik file di disk, memory dump, attachment email, atau artefak biner. Sigma digunakan ketika anda memiliki log - event dari OS, aplikasi, atau layanan cloud.
Tools Ekosistem YARA
- YARA-X - Penerus YARA yang ditulis ulang di Rust untuk performa lebih baik, keamanan memori lebih kuat, dan kompatibilitas mundur dengan rule existing. Memiliki CLI modern dan API yang lebih bersih.
- yargen (YARA Rule Generator) - Alat untuk menghasilkan rule YARA secara otomatis dari sampel malware dengan menganalisis string unik, byte sequence, dan karakteristik file.
- yarAnalyzer - Alat statis untuk menganalisis rule YARA: mendeteksi redundant patterns, rule overlap, performance bottlenecks, dan false positive potential. Sangat berguna untuk quality assurance rule dalam skala besar.
YARA tetap menjadi alat paling powerful untuk detection engineering pada layer file, melengkapi Sigma yang bekerja pada layer log untuk memberikan cakupan deteksi menyeluruh.