Yara Kural Yapısı ve Kullanımı

Huseyin Rencber
5 min readJan 9, 2022

--

Covid süreci, iş ve hayattaki değişikliklerden çok yazmaya vakit ayıramadım. Fakat yeni öğrendiğim bilgileri ufak ufak topladığım notlar mevcut. Türkçe olarak paylaşımın önemli olduğunu düşündüğüm için bazılarını bu şekilde blog olarak yazacağım.

LinkedIn ve Twitter üzerinden bana ulaşabilirsiniz.

Sigma yazısı çok okunmuştu devam niteliğinde Yara kurallarını da yazmak istedim.

Loglar için ortak format sigma ve ağ trafiği için çok kullanılan format snort olduğu gibi dosyalar için de YARA diyebiliriz. Kısaca özetlersek proje Victor abimiz ( virustotal ekibinden ) tarafından oluşturulmuş. Açılımı da ilginç olan, zararlı yazılım dosyalarınızı tespit etmeye ve taramaya yardımcı olur. Metinsel veya binary formatında kötü amaçlı yazılım ailelerinin tanımlarını oluşturmak için kural tabanlı bir yaklaşım sağlar.

:))

Bu yazıda kendi tecrübelerim ve kullanım şeklimden bahsedeceğim. Ana dokümantasyona aşağıdaki bağlantıdan erişebilirsiniz.

Bir iki aydır yoğun şekilde crypto coin miner malware türleri için çeşitli kurallar yazdım bunlara da aşağıda örneklerde vereceğim. Windows, Linux ve Macos dosyaları için yara imzalarını kullanabilirsiniz.

YARA Kural Yapısı

Kısaca özetlemek açısından aşağıdaki infografik ( Thomas Roccia ) yeterli düzeyde bilgi sağlıyor. Anatomisi genel olarak aşağıdaki alanlardan oluşur.

  • Kural adı
  • Metadata
  • Strings
  • Condition
https://medium.com/malware-buddy/security-infographics-9c4d3bd891ef#18dd

Anatomisinden de anlaşılacağı üzere, YARA kuralları bir programlama dili gibidir, kötü amaçlı yazılım örneğinde bulunan kalıpları içeren bir dizi değişken tanımlayarak çalışırlar. Kurala bağlı olarak koşulların bazıları veya tümü karşılanırsa, bir kötü amaçlı yazılımın başarıyla tanımlanması için kullanılabilir. Kötü amaçlı yazılımın bir parçasını analiz ederken, araştırmacılar kötü amaçlı yazılım içinde, örneğin hangi tehdit grubuna ve kötü amaçlı yazılım ailesine atfedildiğini belirlemelerine olanak tanıyan benzersiz kalıpları ve dizeleri belirleyecektir. Bu sayede tehdit avcığılı yapabilir ve antivirüslerin de imza tabanlı kaçırdıkları yeni kötü amaçlı yazılım dosyalarını bulabilmenize olanak sağlar.

YARA Kuralı Kullanım Alanları

  • Siber güvenlik analisteleri zararlı yazılım araştırması yaparken kullanabilir. Tehdit avcılığı sırasında tarama yapılabilir.
  • Bir zararlı dosyayı kategorize edip tanımlarken kullanılabilir. ( hangi aileden hangi apt grubunun izlerini taşıyor vs gibi )
  • Email gateway, NDR ve EDR platformlarında kullanılabilir.

YARA Kuralı Nasıl Yazılır

Yazım için basit bir text editor uygulaması işinizi görecektir. ( notepad++ veya sublime iyidir ).

Metadata

Kuralın içeriğini veya YARA kuralının neyi arayacağını etkilemez, bunun yerine kuralın kendisi hakkında faydalı bilgiler sağlar. Author, Date, Version, Reference, Description, Hash gibi alanlar içerir. Kısacası yara kuralı hakkında öz bilgiler verir.

coin miner yara rule metadata

Strings

İşte burası mevzunun kilit noktası, çünkü mümkünse eşsiz bir string bulmanız gerekmektedir. Kötü amaçlı yazılım örneğinde benzersiz ve ilginç dizeler bulmak bir YARA kuralı oluşturmak için idealdir. Bir kural içinde bir dize tanımlamak için, dizenin kendisinin bir değişken olarak bildirilmeniz gerekir.

coin miner yara rule strings

Örnekte de olduğu üzere değişkenlere atama yapıyoruz. Burada ince ayarlama yapmak adına değiştiriciler de ekleyebiliriz.

  • nocase: Büyük küçük harfe bakmadan eşleşme arar.
  • fullword: tam kelime araması için bunu ekleriz. örnek $s=”huseyinrencber” fullword olması halinde , “www.huseyinrencber.com” tespit edilebilecekken “www.huseyinrencbersitesi.com” tespit edilemez gibi.
  • wide : burada unicode strings meselesi devreye giriyor. boş baytlar olması halinde h.u.s.e.y.i.n gibi stringlerde işinize yarar.
  • wide ascii: unicode ve ascii karakterleri için

Bu ince ayarları da yaptığımıza göre en önemli kısım bunları nasıl bulacağımız. Asıl zorluk burada zaten. Ben genel olarak string komutuyla bir önden göz atıyorum , virustotal de inceleme yaparak stringleri kontrol ediyorum, intezer gibi sitelerden yararlanıyorum, hex editorlerle bakıyorum, pestudio ile de stringleri inceliyorum sonrasında mümkün mertebe eşsiz stringler üzerinden kural yazmaya çalışıyorum. Eğer antivirüsler tarafından bulunmamışsa daha istekli kural yazıyorum yoksa zaten çoğunlukla olay bittikten sonra yazmanız boşuna oluyor biraz da. Windows ortamında da oldukça fazla yara kuralı yazan olduğu için de çok girmiyordum. İlla ki aradığınızı sizden önce yazılmışını bulabiliyorsunuz. Bir siber olay varsa ve yeni hedefli bir malware ile karşı karşıyaysanız ve ortamınızda bunu taramak istiyorsanız işte o zaman dikkatli inceleyip güzel bir kural yazmak istiyorsunuz ( biraz da mecburi ss durumu var ).

strings komutuyla inceleme

Bulduğum stringleri mutlaka virustotal enterprise da content komutuyla aratırım. Diğer dosyalar arasında eşleşme oluyor mu f/p oranı nasıl öğrenirim ona göre de conditionları düzenlerim veya kuraldan komple çıkarırım.

Çıkan sonuçlara göre detections alanından ne kadar zararlı dosyada bu string den var anlayabilirsiniz veya hangi tip dosyalarda mevcut görebilirsiniz tag lerden.

Ender bir user agent varsa veya registry key ya da mutex varsa bunlar güzel kural yazımı için eşsiz ifadeleri barındırabilir.

Conditions

Bir YARA kuralı için kullanılacak arama ölçütlerini tanımlar, koşullar bölümü, kuralın başarılı bir eşleşmeyi tetiklemesi için ölçütleri tanımlar. İşte seçimi yapan kısım burası, string gelişmeyse bu sonuç. Karar verici amca burası. Aşağıdaki örneklerde olduğu gibi ölçütler belirleyebiliriz.

  • İşletim sistemine göre hex değeri girme örnek uint32(0)==0x464c457f
  • Dosya boyutuna göre (filesize<5MB)
  • Sayılarına göre str > 5
  • Koşul olarak kaç eşleşmenin tetiklenmesi gerektiğini göre
  • 4 of them veya any of them veya $str1 and not $str2

Koşullar belirterek hangi ölçütlerde tespit yapacağını kuralda belirtiriz.

import ve export language tanımı time belirteci detayları da mevcut fakat o kadar derine inmeye gerek yok , yazdıkça bunları da ekleyebilirsiniz kurallarınıza.

Yara Kurallarını Nasıl Kullanırız

Yazdık veya bu kuralları edindik, twitter olsun github olsun veya threat intel platformunuzdan aldınız diyelim. Bunu nasıl tarayacağız, bazı EDR ve NDR lar destekliyor onlar üzerinden taratabilirsiniz. Virustotalde hunting kuralı olarak kaydederek de tarama yapabilirsiniz. Direk indirmeyi deneyip oradan da tarayabilirsiniz.

Macos da kullandığım bir tool var bu da oldukça hoşuma gitti. Yazdığınız kuralı ekleyip görsel olarak kontrol ederek tarayabilirsiniz.

xprotect

Kullanım senaryosu olarak aşağıdaki gibi de istifade edebilir ve ortamınızı tarayabilirsiniz.

Bir sonraki blockchain , macos vb konulardaki yazılarda görüşmek üzere…

--

--

Huseyin Rencber
Huseyin Rencber

Written by Huseyin Rencber

Cyber Security, Theat Hunting, Incident Response

No responses yet