YARA, kötü amaçlı yazılım araştırmacıları ve güvenlik uzmanları tarafından kullanılan, metin veya ikili dosyalardaki kalıpları (örüntüleri) tanımlamaya yarayan bir kalıp eşleştirme aracıdır. Temel olarak, YARA, dosyaları tanımlamak ve sınıflandırmak için "YARA kuralları" adı verilen tanımlayıcı tanımlamalar kullanır.
YARA, kötü amaçlı yazılımları ve diğer türden dosyaları, karakteristik özellikleri veya kalıpları kullanarak tanımlamak için tasarlanmış güçlü ve esnek bir araçtır. Bu kalıplar, belirli metin dizileri, düzenli ifadeler veya ikili kodlar olabilir. YARA kuralları, karmaşık mantıksal ifadelerle birleştirilerek daha sofistike eşleştirme yetenekleri sunar.
YARA, Victor Manuel Alvarez tarafından yazılmıştır. İlk olarak 2007 yılında piyasaya sürülmüş ve o zamandan beri kötü amaçlı yazılım analizi topluluğunda yaygın olarak kullanılan bir araç haline gelmiştir. Geliştirilmesi açık kaynaklı olarak devam etmektedir.
YARA, önceden tanımlanmış YARA kurallarını kullanarak bir dosya veya bir dizi dosya üzerinde tarama yapar. Her bir kural, bir veya daha fazla dize (metin veya ikili) ve bu dizelerin bir dosyada bulunması durumunda kuralın "eşleştiğini" belirten bir koşul içerir.
Süreç şu adımlardan oluşur:
YARA kuralları, kötü amaçlı yazılımları veya diğer ilgilenilen dosyaları tanımlamak için kullanılır. Her kural, bir ad, meta veriler, dizeler ve bir koşul içerir.
Temel YARA kuralı söz dizimi şöyledir:
rule KuralAdi
{
meta:
// Meta veriler buraya
strings:
// Dizeler buraya
condition:
// Koşul buraya
}
Meta veriler, kural hakkında ek bilgiler sağlar. Örneğin, kuralın yazarı, açıklaması, oluşturulma tarihi vb.
meta:
author = "John Doe"
description = "Bu kural, belirli bir fidye yazılımını tespit etmek için kullanılır."
date = "2023-10-27"
Dizeler, bir dosyada aranacak olan metin veya ikili dizileridir. Dizeler, farklı özelliklere sahip olabilir:
$dize_adı = "aranacak metin"
: Basit metin dizesi.$dize_adı = { AA BB CC DD }
: İkili dize (hexadecimal).$dize_adı = /düzenli ifade/
: Düzenli ifade.Dize değiştiricileri şunları içerir:
nocase
: Büyük/küçük harf duyarlılığını devre dışı bırakır.ascii
: Dizenin ASCII olarak kodlandığını belirtir.wide
: Dizenin Unicode olarak kodlandığını belirtir.xor
: Dizenin XOR ile şifrelendiğini belirtir (bir anahtar belirtilebilir).Koşul, kuralın eşleşmesi için hangi dizelerin bulunması gerektiğini belirtir. Mantıksal operatörler (and, or, not) ve dize sayacıları (#dize_adı) kullanılabilir.
condition:
$dize1 and $dize2 and #dize3 > 5
Bu koşul, $dize1
ve $dize2
'nin bulunmasını ve $dize3
'ün 5'ten fazla kez bulunmasını gerektirir.
YARA, çeşitli güvenlik alanlarında yaygın olarak kullanılmaktadır.
YARA, kötü amaçlı yazılım örneklerini tanımlamak, sınıflandırmak ve analiz etmek için temel bir araçtır. Kötü amaçlı yazılım ailelerini, varyantlarını ve yaygın özelliklerini tanımlamak için kullanılır.
Bir güvenlik ihlali durumunda, YARA, sistemleri taramak ve kötü amaçlı yazılım bulaşmış dosyaları tespit etmek için kullanılabilir.
YARA kuralları, tehdit istihbaratı verilerini kullanarak yeni ve gelişen tehditleri tanımlamak için kullanılabilir.
YARA, çeşitli araçlar ve platformlarla entegre edilebilir:
Avantajları:
Dezavantajları:
Bu örnek kural, "WannaCry" fidye yazılımının bazı karakteristik dizelerini tanımlar.
rule WannaCry
{
meta:
author = "John Doe"
description = "WannaCry Ransomware Detection"
date = "2023-10-27"
strings:
$s1 = "Please pay 0.1 Bitcoin to the following address:"
$s2 = "WANNACRY!"
$s3 = "This won't decrypt your files if you don't pay!"
condition:
all of them
}