Skip to content
SiberOTAG

SiberOTAG

"Gençliği yetiştiriniz. Onlara ilim ve irfanın müspet fikirlerini veriniz. Geleceğin aydınlığına onlarla kavuşacaksınız.”

  • AnaSayfa
  • Yazılım
    • .NET
    • SQL
    • C#
    • Python
    • JavaScript
    • Rust
  • Siber Güvenlik
    • Network (Ağ) Güvenliği
    • Mobil Güvenlik
    • Cryptology (Kriptografi)
    • Data (Veri) Güvenliği
    • Web Güvenliği
    • Sosyal Mühendislik
  • Yapay Zeka
  • Siber’den Haber

YARA Kuralları 101: Malware Analizinin Temelleri ve Ötesi

Posted on Mayıs 3, 2025Mayıs 3, 2025 By SiberOtag
Siber Güvenlik

Günümüzün dijital çağında siber tehditler sürekli evrim geçiriyor. Tehdit aktörleri durmaksızın yeni ve karmaşık saldırı yöntemleri geliştirirken, biz siber güvenlik profesyonellerinin de bu tehditleri hızlı ve etkin bir şekilde tespit edip durduracak araçlara ihtiyacımız var. İşte tam bu noktada, siber güvenlik cephaneliğimizin vazgeçilmez bir parçası olan YARA devreye giriyor!

Peki, bu sihirli kelime “YARA” tam olarak nedir ve dijital dünyamızı korumada bize nasıl yardımcı olur? Gelin birlikte keşfedelim.

YARA Nedir? Sihirli Bir Kısaltmanın Ardındaki Güç

Basitçe söylemek gerekirse, YARA, zararlı yazılımları tanımlamak ve sınıflandırmak için kullanılan, kural tabanlı, açık kaynak kodlu bir araçtır. İsmini “Yet Another Recursive Acronym” (Yine Başka Bir Özyinelemeli Kısaltma) ifadesinden alan ve VirusTotal ekibi tarafından geliştirilen YARA, dijital dedektiflerin parmak izleri gibi düşünebileceğimiz belirli kalıpları (patterns) aramasını sağlar.

Bu kalıplar metin dizeleri (örneğin, bir komut), ikili kod parçacıkları (hexadecimal kodlar) veya belirli dosya özellikleri olabilir. YARA kuralları, bu kalıpların bir dosyada veya sistemde var olup olmadığını kontrol ederek şüpheli aktiviteyi ortaya çıkarır.

Temel amacı nedir? Güvenlik analistlerine ve araştırmacılara, özellikle hedefli saldırılar (APT’ler gibi) söz konusu olduğunda, zararlı yazılımları ışık hızında tespit etme, sınıflandırma ve analiz etme yeteneği kazandırmaktır.

Bir YARA Kuralının Anatomisi: 3 Temel Bölüm

YARA’nın gücünü tam olarak anlamak için, onun temel yapı taşı olan “kuralların” nasıl oluşturulduğunu bilmemiz gerekir. Bir YARA kuralı, yapılandırılmış bir metin bloğudur ve genellikle üç ana bölümden oluşur:

1. Meta Bölümü:

  • Ne İşe Yarar? Kuralın kimlik kartı gibidir. Kim yazdı (author), ne zaman yazıldı (date), kuralın amacı ne (description), hangi zararlıya referans veriyor (reference, hash) gibi tanımlayıcı bilgiler içerir.

  • Neden Önemli? Teknik olarak zorunlu olmasa da, kuralları yönetmek, paylaşmak ve ne işe yaradığını anlamak için kritik öneme sahiptir. İyi bir meta bölümü, kuralın hayat kurtarıcısı olabilir!

  • Nasıl Görünür? meta: anahtar kelimesiyle başlar ve anahtar = “değer” formatında bilgiler içerir.

meta:
  author = "Güvenlik Analisti X"
  date = "2023-10-27"
  description = "Belirli bir fidye yazılımı ailesini tespit eder."
  reference = "https://ornek-analiz-raporu.com/rapor123"
  hash = "abcdef1234567890..." // Örnek hash

2. Strings (Dizeler) Bölümü:

  • Ne İşe Yarar? Kuralın “neyi arayacağını” tanımladığımız yerdir. YARA’nın arayacağı spesifik veri desenleri (izler) burada belirtilir.

  • Neler Aranabilir?

    • Metin Dizeleri (Text Strings): Bildiğimiz metinler (ASCII/UTF-8/UTF-16). nocase (büyük/küçük harf duyarsız), fullword (tam kelime eşleşmesi), ascii, wide gibi değiştiricilerle daha esnek aramalar yapılabilir.

    • Onaltılık Dizeler (Hexadecimal Strings): Belirli byte dizilerini (makine kodunu) aramak için kullanılır. ?? (joker karakter) veya [n-m] (atlama) gibi esneklikler sağlar. Bu, bilinen kod imzalarını veya belirli fonksiyon parçalarını bulmak için harikadır.

    • Düzenli İfadeler (Regular Expressions): Karmaşık ve değişken metin desenlerini tanımlamak için en güçlü yöntemlerden biridir. Perl uyumlu sözdizimini kullanır.

  • Nasıl Görünür? strings: anahtar kelimesiyle başlar. Her desen $ işareti, bir tanımlayıcı (identifier) ve = ile tanımlanır.

strings:
  $text_string = "Cmd.exe /c" nocase wide ascii
  $hex_string = { E8 ?? ?? ?? ?? 5B C3 } // Tipik bir call + pop + ret sekansı
  $regex_string = /kullaniciAdi=\w+/ // Basit bir kullanıcı adı deseni

3. Condition (Koşul) Bölümü:

  • Ne İşe Yarar? Kuralın “ne zaman eşleşeceğini” belirleyen mantıksal ifadedir. Strings bölümünde tanımlanan desenlerin varlığına, sayısına, konumuna veya dosyanın boyutu gibi diğer özelliklere göre karar verir.

  • Neler Kullanılır? Standart mantıksal operatörler (and, or, not), karşılaştırma operatörleri (>, <, ==, !=), ve YARA’ya özgü anahtar kelimeler (filesize, uint32(offset), for..of, at, in) kullanılır.

  • Nasıl Görünür? condition: anahtar kelimesiyle başlar ve bir Boole ifadesi (doğru/yanlış sonucu veren) içerir.

condition:
  // Metin dizesi bulunmalı VE (hex dizesi VEYA regex dizesi bulunmalı)
  $text_string and ($hex_string or $regex_string)

Basit Bir Kural Örneği:

rule OrnekKural {
  meta:
    author = "Blog Yazarı"
    description = "Basit bir metin ve hex dizesi arama örneği"
    date = "2024-01-15"
  strings:
    $a = "Bu metni ara" ascii
    $b = { 1A 2B 3C 4D }
  condition:
    // $a veya $b dizelerinden herhangi biri bulunursa kural eşleşir
    $a or $b
}

YARA Sahada: Gerçek Dünya Örnekleri

Teoriyi anladık, peki YARA pratikte nasıl işliyor? İşte size birkaç somut örnek:

Örnek 1: Sinsi Bir Exploit Kit Açılış Sayfasını Yakalamak

Exploit kit’ler (EK), tarayıcı zafiyetlerini kullanarak kullanıcılara fark ettirmeden zararlı yazılım bulaştırmaya çalışır. Genellikle tehlikeye atılmış siteler veya zararlı reklamlar aracılığıyla kullanıcıları özel hazırlanmış “açılış sayfalarına” (landing page) yönlendirirler. Bu sayfalar genellikle belirli JavaScript kodları veya gizleme teknikleri içerir.

Aşağıdaki (varsayımsal) kural, belirli bir JS fonksiyon adını ve sıkça kullanılan bir Flash ActiveX CLSID’sini arayarak potansiyel bir EK açılış sayfasını tespit etmeye çalışır:

rule EK_LandingPage_Heuristic {
  meta:
    description = "Potansiyel Exploit Kit açılış sayfasını belirli JS fonksiyonu ve CLSID ile tespit eder"
    author = "Tehdit Analisti"
    date = "2025-05-01"
    source = "İç Araştırma"
  strings:
    $js_func = "decryptPayloadAndExecute" ascii // Şüpheli JS fonksiyon adı
    $clsid = "{D27CDB6E-AE6D-11CF-96B8-444553540000}" wide // Flash Player CLSID (sıkça kullanılır)
  condition:
    // Dosya türü kontrolü (HTML/JS başlangıç imzaları)
    (uint32(0) == 0x6D74683C or uint32(0) == 0x213C2D2D) // '<htm' veya '<!-'
    // Dosya boyutu makul olmalı (çok büyük olmamalı)
    and filesize < 500KB
    // Hem JS fonksiyonu hem de CLSID bulunmalı
    and $js_func and $clsid
}

Analiz: Bu kural önce dosyanın ilk 4 baytına (uint32(0)) bakarak HTML veya JS dosyası olup olmadığını kontrol eder. Ardından dosya boyutunu sınırlar (filesize < 500KB). Son olarak, hem belirli JavaScript fonksiyon adının ($js_func) hem de Flash Player CLSID’sinin ($clsid) varlığını kontrol eder. Bu kombinasyon, bir exploit kit aktivitesine güçlü bir şekilde işaret edebilir.

Örnek 2: Gizlenen PowerShell Komutlarını Ortaya Çıkarmak

PowerShell, sistem yöneticileri için güçlü bir araç olduğu kadar, saldırganlar için de “dosyasız” (fileless) saldırılar ve yanal hareket için popüler bir tercihtir. Komutları base64 ile kodlayarak (-enc, -encodedcommand) veya gizli pencerelerde (-w hidden) çalıştırmak yaygın bir tekniktir.

Aşağıdaki kural, bu tür şüpheli PowerShell kullanımlarını ve base64 içinde gizlenmiş olabilecek yaygın tehlikeli API çağrılarını arar:

rule Suspicious_PowerShell_Execution {
  meta:
    description = "Şüpheli PowerShell çalıştırma desenlerini tespit eder (kodlanmış komutlar, gizli pencere, base64 içindeki şüpheli API'ler)"
    author = "Olay Müdahale Uzmanı"
    date = "2025-05-01"
  strings:
    // PowerShell çalıştırma ve argümanları
    $ps_encoded = "powershell" nocase wide ascii
    $ps_args1 = "-enc" nocase wide ascii
    $ps_args2 = "-encodedcommand" nocase wide ascii
    $ps_hidden = "-w hidden" nocase wide ascii

    // Kodlanmış PowerShell yüklerinde sıkça bulunan şüpheli API'lerin Base64 parçaları (Temsilidir!)
    $b64_apis1 = "VmlydHVhbEFsbG9j" // "VirtualAlloc" base64'ünün bir kısmı
    $b64_apis2 = "Q3JlYXRlVGhyZWFk" // "CreateThread" base64'ünün bir kısmı
    $b64_apis3 = "R2V0UHJvY0FkZHJlc3M=" // "GetProcAddress" base64'ü
  condition:
    // PowerShell kodlanmış argümanlarla VEYA gizli modda çalıştırılıyorsa
    ( ($ps_encoded and ($ps_args1 or $ps_args2)) or ($ps_encoded and $ps_hidden) )
    // VE şüpheli API'lerden en az biri base64 fragmanı olarak bulunuyorsa
    and 1 of ($b64_apis1, $b64_apis2, $b64_apis3)
}

Analiz: Kural, powershell komutunun kodlama (-enc, -encodedcommand) veya gizli pencere (-w hidden) argümanlarıyla kullanılmasını arar. Buna ek olarak, saldırılarda sıkça kullanılan VirtualAlloc, CreateThread, GetProcAddress gibi API’lerin base64 kodlanmış hallerinin (veya bunların belirgin parçalarının) varlığını kontrol eder (1 of ifadesi, parantez içindekilerden en az birinin bulunması gerektiğini söyler). Bu, kodlanmış zararlı PowerShell betiklerini tespit etmede çok faydalıdır. (Not: Gerçek base64 dizeleri daha uzun ve karmaşık olacaktır, buradakiler sadece temsilidir.)

Tekerleği Yeniden İcat Etmeyin: Hazır YARA Kuralları Hazinesi

Kendi YARA kurallarınızı yazmak harika bir beceri olsa da, her zaman sıfırdan başlamak zorunda değilsiniz! Siber güvenlik topluluğu sürekli olarak yeni tehditler, zararlı yazılım aileleri ve şüpheli davranışlar için YARA kuralları oluşturuyor ve bunları cömertçe paylaşıyor. Bu hazır kurallardan yararlanmak, tehdit algılama yeteneklerinizi hızla artırmanın en akıllıca yollarından biridir.

Peki, bu değerli kuralları nerede bulabilirsiniz?

  • GitHub: YARA kuralları için adeta bir altın madeni! Bireysel araştırmacılar, güvenlik şirketleri ve açık kaynak projeleri, kendi kural setlerini GitHub depolarında yayınlar. “YARA rules”, “malware YARA”, “threat hunting YARA” gibi anahtar kelimelerle arama yapabilirsiniz. Popüler depolardan bazıları:

    • Yara-Rules Projesi: https://github.com/Yara-Rules/rules (Geniş, topluluk tarafından yönetilen koleksiyon)

    • Florian Roth (Neo23x0): https://github.com/Neo23x0/signature-base (APT grupları, exploit kitler ve genel tehdit avcılığı için yüksek kaliteli kurallar)

    • Elastic Security: https://github.com/elastic/detection-rules (Elastic SIEM için geliştirilmiş, YARA dahil çeşitli tespit kuralları)

  • VirusTotal: Yüklediğiniz dosyaları veya platformdaki mevcut dosyaları kendi YARA kurallarınızla taramanıza olanak tanır. Ayrıca, VirusTotal Intelligence gibi ücretli servisler aracılığıyla diğer kullanıcıların paylaştığı kurallara da erişebilirsiniz.

  • YARAify: https://yaraify.abuse.ch/ – Şüpheli dosyalarınızı geniş bir YARA kural deposuna karşı tarayarak hızlıca analiz etmenizi sağlayan ücretsiz ve harika bir çevrimiçi hizmet.

  • Güvenlik Blogları ve Raporları: Birçok güvenlik araştırma ekibi, yeni bir tehdit veya zararlı yazılım analizi yayınladığında, ilgili YARA kurallarını da blog yazılarında veya raporlarında paylaşır. Takipte kalın!

  • Tehdit İstihbaratı Platformları (TIPs): Ticari tehdit istihbaratı sağlayıcıları, abonelerine genellikle kapsamlı ve güncel YARA kural setleri sunar.

 

 

YAZAR : İBRAHİM ARSLAN

Etiketler: exploit kit tespiti malware tespiti PowerShell security Siber güvenlik siber tehdit istihbaratı tehdit avcılığı VirusTotal YARA YARA kuralları YARA rule structure zararlı yazılım analizi

Yazı gezinmesi

❮ Previous Post: Sosyal Medya Hesap Güvenliği: Tehditler ve Korunma Yöntemleri

You may also like

Cryptology (Kriptografi)
RSA Algoritması: Güvenli İletişimin Temel Taşı
Mayıs 28, 2024
Siber Güvenlik
HTTP Protokolü Nedir: Web’in Çalışma Mekanizması
Haziran 19, 2024
Siber Güvenlik
SQL Injection Nedir ? Sqlmap Nedir ve Nasıl Kullanılır ?
Mayıs 1, 2024
Network (Ağ) Güvenliği
Wi-Fi Yapısı ve Güvenliği
Şubat 25, 2025

Son Gönderiler

  • YARA Kuralları 101: Malware Analizinin Temelleri ve Ötesi
  • Sosyal Medya Hesap Güvenliği: Tehditler ve Korunma Yöntemleri
  • Prompt Mühendisliği: Yapay Zeka ile İletişimin Yeni Sanatı
  • Mantık Devreleri: Temel Kavramlar, Kapılar ve Uygulama Alanları
  • Wi-Fi Yapısı ve Güvenliği

Kategoriler

  • Cryptology (Kriptografi)
  • JavaScript
  • Network (Ağ) Güvenliği
  • Python
  • Siber Güvenlik
  • Siber’den Haber
  • Sosyal Mühendislik
  • Web Güvenliği
  • Yapay Zeka
  • Yazılım
  • 🌐 Linkedin
  • 📩contact@siberotag.com

Copyright © 2025 SiberOTAG.

Theme: Oceanly News Dark by ScriptsTown