YARA ile Zararlı Yazılım Avcılığı: Kural Yazımı Eğitim Rehberi
YARA, dosya ve belleği desenlere göre eşleştiren ücretsiz açık kaynak zararlı yazılım tanımlama aracıdır ve hash tabanlı tespitin ötesine geçer. Bir kuralın üç bölümü (meta, strings, condition), iyi kural yazmanın sanatı, çok dar ve çok geniş kural dengesi, dosya ve bellek taraması, yanlış pozitif azaltma ve öğrenme yolu.
Hızlı cevap: YARA, dosyaları ve bellek bölgelerini metinsel ve ikili desenlere göre eşleştiren ücretsiz ve açık kaynak bir zararlı yazılım tanımlama aracıdır. Zararlı yazılım avcılığının ortak dilidir: bir kural yazarsınız, o kural belirli bir zararlı ailesini ya da tekniği tanımlayan dizeleri ve koşulları içerir, YARA bu kuralı binlerce dosyada saniyeler içinde tarar. Bir YARA kuralının üç bölümü vardır: meta (açıklama), strings (aranacak desenler) ve condition (eşleşme mantığı). En kritik beceri iyi kural yazmaktır: çok dar kural varyantı kaçırır, çok geniş kural yanlış pozitif üretir. YARA hash tabanlı tespitin ötesine geçer çünkü zararlının küçük değişikliklerine karşı dayanıklıdır.
Antivirüs bir dosyayı hash'ine göre tanır: dosya bir bit değişirse hash değişir ve tespit kaçar. Saldırganlar bunu bilir ve zararlılarını sürekli değiştirir. YARA bu oyunu bozar çünkü hash yerine desen arar. Zararlının içindeki karakteristik bir dize, bir kod parçası ya da bir yapı, dosya değişse bile kalır. Bu yazı, YARA'yı ve zararlı yazılım avcılığını eğitim gözüyle anlatıyor.
YARA neden hash'ten üstün
Bir örnekle başlayalım. Bir zararlı yazılımın hash'i biliniyor ve engelleniyor. Saldırgan tek bir karakter ekliyor, hash tamamen değişiyor ve dosya artık tanınmıyor. Buna polimorfizm denir ve modern zararlıların standart tekniğidir.
YARA farklı çalışır. Zararlının içindeki değişmeyen özellikleri hedefler:
- Belirli bir hata mesajı ya da komuta sunucusu adresi gibi karakteristik dizeler
- Şifreleme rutininin ya da paketleyicinin ikili imzası
- Dosya yapısındaki alışılmadık bir desen
- Belirli bir tehdit aktörünün araçlarında tekrar eden imzalar
Bu özellikler dosyanın hash'i değişse de kalır. Bu yüzden YARA bir zararlı ailesini tanır, tek bir örneği değil. Bir kural, aynı ailenin yüzlerce varyantını yakalayabilir.
Bir YARA kuralının anatomisi
Her kural üç bölümden oluşur. Basit bir örnek:
rule Ornek_Fidye_Yazilimi
{
meta:
aciklama = "Ornek fidye ailesini tanir"
yazar = "DSET"
tarih = "2026-07-25"
referans = "ic vaka"
strings:
$not1 = "Dosyalariniz sifrelendi" wide ascii
$uzanti = ".locked" ascii
$c2 = "http://ornek-c2-adresi" ascii
$imza = { 6A 40 68 00 30 00 00 6A 14 8D 91 }
condition:
uint16(0) == 0x5A4D and 2 of them
}
meta, kuralı belgeleyen bilgidir, eşleşmeye etki etmez ama raporlama ve bakım için kritiktir. Kim yazdı, neyi tanır, hangi vakaya dayanır.
| Desen türü | Örnek | Ne için |
|---|---|---|
| ASCII dize | $a = "encrypted" ascii |
Düz metin izleri |
| Unicode dize | $b = "hata" wide |
Windows genişletilmiş metin |
| Onaltılık blok | $c = { 6A 40 68 00 } |
Kod ve ikili imza |
| Düzenli ifade | $d = /c2-[0-9]{4}/ |
Değişken desenler |
strings, aranacak desenlerdir. Metin dizeleri (wide genişletilmiş Unicode, ascii düz metin), onaltılık ikili desenler ve düzenli ifadeler kullanılabilir. { 6A 40 ... } gibi onaltılık bloklar, kodun ikili imzasını yakalar.
condition, eşleşme mantığıdır. Bu örnekte "dosya bir Windows yürütülebiliri olsun (0x5A4D yani MZ imzası) ve tanımlı dizelerden en az ikisi bulunsun" der. Koşul bölümü kuralın kalitesini belirler.
İyi kural yazmanın sanatı
YARA'nın gücü de zorluğu da kural kalitesindedir. İki uç vardır:
Çok dar kural. Yalnızca bilinen tek bir örneği yakalar, en küçük varyantı kaçırır. Hash tabanlı tespitten çok az fark yaratır.
Çok geniş kural. Çok yaygın dizeleri hedefler ve masum dosyalarda da eşleşir. Yanlış pozitif üretir, bu da avcılığı kullanılamaz hale getirir çünkü her uyarıyı elle elemek zorunda kalırsınız.
İyi kural bu ikisinin arasındadır. İlkeler:
- Karakteristik olanı hedefle. Her zararlıda bulunan genel dizeleri değil, o aileye özgü olanı seç.
- Koşulu dosya türüyle çapala.
uint16(0) == 0x5A4Dgibi bir başlık kontrolü, kuralı yalnızca ilgili dosya türünde çalıştırır ve yanlış pozitifi azaltır. - Birden fazla zayıf işareti birleştir. Tek bir dize zayıfsa, "şunlardan üçü birden" koşulu güçlü ve dayanıklı olur.
- Test et. Kuralı hem bilinen zararlı örneklerinde (yakalamalı) hem büyük bir temiz dosya kümesinde (eşleşmemeli) çalıştırın. Yanlış pozitif oranını ölçmeden kuralı yayına almayın.
YARA nerede kullanılır
- Dosya taraması. Bir dizini ya da diski kurallara karşı tarayıp bilinen zararlıları bulmak.
- Bellek taraması. Çalışan bir sistemin belleğini ya da bir bellek dökümünü taramak. Diske hiç yazmayan dosyasız zararlıyı böyle yakalarsınız. Bellek tarafı için Volatility ile bellek analizi yazımıza bakın, Volatility'nin yarascan eklentisi YARA kurallarını doğrudan bellekte çalıştırır.
- Olay müdahalesi. Bir olayda çıkan zararlı için kural yazıp tüm ağı taramak, aynı zararlının başka nereye bulaştığını bulur.
- Tehdit istihbaratı. Kamuya açık YARA kural depoları, bilinen tehdit aktörlerinin araçlarını tanır.
Öğrenme yolu
Aşama 1. YARA sözdizimini öğrenin: meta, strings, condition. Basit kurallar yazın, bilinen bir dizeyi arayan tek satırlık kuraldan başlayın.
Aşama 2. Zararsız test dosyalarıyla çalışın. EICAR test dizesi, hiçbir gerçek zararlı içermeyen standart bir antivirüs test dosyasıdır ve YARA öğrenmek için güvenlidir. Kendi kuralınızla onu yakalayın.
Aşama 3. Kamuya açık kural depolarını inceleyin. Profesyonellerin nasıl kural yazdığını okumak en hızlı öğreticidir. YARA-Rules topluluk deposu iyi bir başlangıçtır.
Aşama 4. Yanlış pozitif avına çıkın. Bir kural yazın, büyük bir temiz dosya kümesinde çalıştırın ve masum eşleşmeleri bulup kuralı daraltın. İyi bir avcıyı ayıran beceri budur.
Not: Gerçek zararlı örnekleriyle çalışmak izole bir ortam (sanal makine, ağdan kopuk) gerektirir. Deneyimsizken canlı zararlı indirmeyin. Yapılandırılmış bir program için DSET Akademi içeriklerine bakabilirsiniz.
Adli bilişim ve avcılıktaki yeri
YARA hem geçmişe hem geleceğe bakar. Adli bir incelemede, bir imajı bilinen zararlı kurallarına karşı tarayıp olayın kök nedenini hızla daraltırsınız. Tehdit avcılığında ise, henüz bir uyarı olmadan ağınızı proaktif olarak tarayıp gizli tehdidi ararsınız.
İkisi de aynı prensibe dayanır: iyi bir kural, bir zararlı ailesinin ya da tekniğin değişmeyen imzasını yakalar. Bir olayda çıkan zararlı için yazdığınız kural, aynı saldırganın altı ay önce başka bir makineye bıraktığı izleri de bulabilir. Olay müdahalesi süreci için adli bilişim süreci ve delil zinciri yazımıza bakabilirsiniz.
Sık yapılan hatalar
- Çok geniş kural yazmak. Yanlış pozitif seli avcılığı işe yaramaz hale getirir.
- Kuralı temiz veri kümesinde test etmemek. Yanlış pozitif oranını bilmeden kural yayına alınmaz.
- Yalnızca dizelere güvenmek. Dizeler kolayca değişir. İkili imza ve yapı daha dayanıklıdır.
- Koşulu dosya türüyle çapalamamak. Her dosyada çalışan kural hem yavaştır hem yanlış pozitif üretir.
- Meta bölümünü boş bırakmak. Kim, ne, neden bilgisi olmadan kural altı ay sonra bakımı imkansız hale gelir.
- Canlı zararlıyı izolasyonsuz çalıştırmak. Kendi sisteminizi enfekte edersiniz.
Sık sorulan sorular
YARA antivirüsün yerini tutar mı? Hayır, tamamlar. Antivirüs geniş ve otomatiktir, YARA hedefli ve avcı odaklıdır. İkisi farklı işler yapar.
YARA kuralı yazmak için programcı olmak şart mı? Şart değil ama mantıksal düşünme gerekir. Sözdizimi basittir, zor olan iyi koşul kurmaktır.
Hazır kuralları kullanabilir miyim? Evet, kamuya açık depolar vardır. Ancak her kuralı kendi ortamınızda test edin, başkasının kuralı sizde yanlış pozitif üretebilir.
YARA bellekte çalışır mı? Evet. Çalışan sürecin belleğini ya da bir bellek dökümünü tarayabilir, dosyasız zararlıyı böyle yakalarsınız.
YARA-X nedir? YARA'nın Rust ile yeniden yazılmış yeni sürümüdür, daha hızlı ve daha güvenlidir. Sözdizimi büyük ölçüde uyumludur.
Yanlış pozitifi nasıl azaltırım? Koşulu dosya türüyle çapala, birden fazla işareti birleştir ve kuralı büyük bir temiz veri kümesinde test et.
Kaynaklar
- YARA resmi belgeleri (VirusTotal): https://yara.readthedocs.io
- YARA-X, yeni nesil sürüm: https://virustotal.github.io/yara-x/
- YARA-Rules topluluk kural deposu: https://github.com/Yara-Rules/rules
- MITRE ATT&CK, teknik referansı: https://attack.mitre.org
- SANS DFIR zararlı yazılım analizi kaynakları: https://www.sans.org
Zararlı yazılım avcılığı, bir tehdidi ağınızda o size zarar vermeden bulmaktır. İnceleme desteği ya da ekibinize YARA ve zararlı yazılım avcılığı eğitimi için DSET ile iletişime geçin. Ankara Hacettepe Teknokent laboratuvarımızdan olay müdahalesi ve tehdit avcılığı hizmeti veriyoruz.
Kimliğinizi doğrulayın
Yetkilendirilmiş erişim alanı. Tüm giriş denemeleri kayıt altına alınır.