YARA Kuralları ile Zararlı Yazılım Tespiti
Zararlı yazılım ailelerini imza tabanlı olarak tanımlamak için kullanılan endüstri standardı dil.
YARA, "Yet Another Ridiculous Acronym" (ironik bir şekilde kendine referans veren bir kısaltma) — zararlı yazılım analistlerinin, belirli dosya örüntülerine dayanarak zararlı yazılım ailelerini tanımlayıp sınıflandırmasını sağlayan, sektör standardı hâline gelmiş açık kaynaklı bir araç ve kural dilidir.
Temel YARA Kural Yapısı
Bir YARA kuralı üç ana bölümden oluşur:
rule Suspicious_Ransomware_Note
{
meta:
author = "analyst"
description = "Bilinen bir ransomware notu örüntüsünü tespit eder"
date = "2024-01-15"
strings:
$s1 = "your files have been encrypted" nocase
$s2 = "bitcoin" nocase
$s3 = { 4D 5A 90 00 03 00 00 00 } // PE header hex örüntüsü
condition:
uint16(0) == 0x5A4D and 2 of ($s1, $s2, $s3)
}
- meta: Kuralın kim tarafından, ne zaman, ne amaçla yazıldığına dair belgeleme bilgisi (kodun çalışmasını etkilemez, ama izlenebilirlik için önemlidir).
- strings: Aranacak metin dizileri (
nocaseile büyük/küçük harf duyarsız) veya ham hex byte örüntüleri ({ }içinde). - condition: Yukarıdaki string'lerin hangi mantıksal kombinasyonda (AND/OR, sayısal eşik gibi "2 of" — üçünden en az ikisi) eşleşmesi gerektiği.
Hex Wildcard ve Jump Kullanımı
YARA, tam eşleşme yerine esnek örüntü aramaya da izin verir:
$pattern = { E8 ?? ?? ?? ?? 83 C4 04 }
Buradaki ?? karakterleri "herhangi bir byte olabilir" anlamına gelir — bu, örneğin bir CALL komutunun (E8) hedef adresinin (genelde derleme/paketleme sırasında değişen) 4 byte'ını göz ardı ederek, komutun kendisinin (ve etrafındaki sabit byte'ların) örüntüsünü yakalamaya yarar. Bu teknik, aynı zararlı yazılım ailesinin farklı derlemelerini/varyantlarını tek bir kuralla yakalayabilmeyi mümkün kılar.
YARA'nın Kullanım Alanları
- VirusTotal entegrasyonu: Analistler kendi YARA kurallarını VirusTotal'a yükleyip, platforma yeni yüklenen HERHANGİ bir dosya bu kuralla eşleştiğinde otomatik bildirim alabilir — bu, yeni bir tehdit ailesinin varyantlarını proaktif olarak izlemek için güçlü bir yöntemdir.
- Uç nokta güvenlik ürünleri (EDR): Birçok kurumsal güvenlik ürünü, YARA kurallarını doğrudan tarama motorlarına entegre eder.
- Bellek taraması: YARA, sadece disk dosyalarını değil, çalışan bir sistemin belleğini de tarayabilir (Volatility ile entegre edilerek) — bu, dosyasız (fileless) tehditlerin tespitinde kritik bir rol oynar.
Kural Yazımında Denge: Spesifiklik vs Genellik
YARA kuralı yazımının en önemli zorluklarından biri doğru dengeyi bulmaktır:
- Çok spesifik bir kural (örneğin tek bir dosyanın tam hash'ine dayanan), o tek örneği yakalar ama en ufak bir değişiklikte (yeni bir derleme) işe yaramaz hâle gelir.
- Çok genel bir kural (örneğin sadece "MZ" PE header'ını arayan), neredeyse HER Windows çalıştırılabilir dosyasıyla eşleşir — bu da çok sayıda yanlış pozitif (false positive) üretir ve kuralı pratikte kullanışsız kılar.
İyi bir YARA kuralı, bir ailenin BENZERSİZ ve DEĞİŞMEZ (tüm varyantlarda sabit kalan) özelliklerini hedefler — örneğin kod içindeki benzersiz bir hata ayıklama mesajı, ailenin kendine özgü şifreleme rutini veya kendine özgü bir kod yapısı.
Pratik Senaryo
Bir tehdit istihbaratı analisti, yeni tespit edilen bir bilgi çalma (info-stealer) ailesinin birkaç örneğini inceliyor ve hepsinde ortak olarak, C2 sunucusuna veri gönderirken kullanılan özel bir HTTP header adı ("X-Session-Auth" gibi, standart olmayan bir başlık) buluyor. Bu header adını ve etrafındaki birkaç sabit byte'ı bir YARA kuralına dönüştürüp VirusTotal'a yüklüyor. Birkaç hafta içinde, bu ailenin yeni derlenmiş 15 farklı varyantı VirusTotal'a yüklendiğinde otomatik olarak eşleşip analiste bildirim gönderiliyor — analist, tek bir iyi tasarlanmış kuralla, ailenin gelecekteki varyantlarını proaktif olarak takip edebiliyor.
Bu makale, YARA kurallarının orta-ileri seviye teknik bir özetidir; SiberCrew ekibi tarafından hazırlanmış özgün içeriktir.