17 Mayıs 2011

Virüslerden Kurtulma yolları 2

Basit şekil değiştirmeler
Geçmişte virüsler kendilerini basit şekillerde değiştirebiliyorlardı. Örneğin virüsler, kaynak kodlarında yer alan ve görevleri benzer altprogram ünitelerini değiş tokuş etmekteydi. 2+2 yapısındaki bir virüs takas sonunda 1+3 forumuna dönerken işlevinde herhangi bir değişiklik olmuyordu. Günümüzde bu durum gelişmiş virüs tarayıcılar için bir problem oluşturmuyor.
Değişken anahtarlar ile şifreleme [değiştir]
Daha gelişmiş bir yöntem ise virüsü basit şifreleme yöntemleri ile saklamaktı. Bu durumda virüs, ufak bir şifre çözücü modül ile virüs kodunun şifrelenmiş bir kopyasından oluşmaktaydı. Her dosya bulaşmasında virüs faklı bir anahtar ile şifreleniyor olsa da virüsün sürekli sabit kalacak tek bölümü, virüsün son bölümüne iliştirilen çözücü modül olacaktır. Bu durumda virüs tarayıcı virüs imzalarını kullanarak virüsü tespit edemeyecektir, ama sabit olan çözücü bölüm tespit edilerek virüsü dolaylı yollar ile bulmanın imkânı vardır.
Genel olarak virüslerin uyguladıkları çözücü teknikleri basitti ve büyük çoğunlukla her byte'ı ana virüs dosyasında saklanan rastgele hale getirilmiş anahtar ve Xor takısı ile birleştirmek suretiyle elde ediliyordu. Şifreleme ve çözme düzenlerinin aynı olmasından ötürü Xor uygulmalarının kullanılması virüse ek avantaj sağlıyordu. (a XOR b = c, c XOR b = a.)
Çokşekilli Kod [değiştir]
Çokşekilli kodlar, tarayıcılara yönelik ciddi tehdit arz eden ilk teknikti. Şifrelenmiş virüslere benzer şekilde çokşekilli virüsler de dosyalara şifrelenmiş kopyaları ile bulaşmakta idi. Bununla birlikte şifre çözücü modül de her dosya bulaşmasında değişmekteydi. Dolayısıyla iyi yazılmış çokşekilli bir virüs her bulaşmada sabit kalacak hiçbir parçaya sahip değildi ve bu da virüs imzalarını kullanarak virüsü tespit etmeyi imkânsız hale getiriyordu. Antivirüs yazılımları virüsü, öykünücü (emulator) vasıtasıyla çözerek ya da şifrelenmiş virüs gövdesinin istatistiki model analizini yaparak tespit edebiliyorlardı. Çokşekilli koda sahip olabilmek için virüs, şifrelenmiş gövdesi içerisinde çokşekilli motora (değiştirme motoru ya da değişim motoru) sahip olmalıdır.
Bazı virüsler çokşekilli kodları virüsün değişim hızını arttırmakta kullanmaktalar. Örneğin bir virüs zaman içinde yavaş biçimde değişim gösterecek şekilde programlanabilir ya da başka virüs kopyaları bulaşmış dosyalara tutunmaktan kendini alıkoyabilir. Bu türden yavaş çokşekilli viruslerin üstünlüğü, antivirüs uzmanlarının bu türden virüslere ait temsil numulerini elde etmekte zorlanmalarıdır. Çünkü belirli bir zaman sürecinde olta dosyalarına sadece benzer ya da aynı tip virüs versiyonları bulaşacaktır. Bu durum açıkça gösteriyor ki bu türden viruslerin virüs tarayıcıları ile tespiti güvenilir değildir ve sonuç olarak virüsün bazı örneklerinin tespit edilmekten kaçabildiği açıkça belli olmaktadır.
Başkalaşım kodu [değiştir]
Öykünücüler (emulatorler) vasıtasıyla tespit edilmekten kurtulabilmek için her yeni yürütülebilir dosyaya bulaşmadan önce kendilerini tamamiyle yeniden yazan virüslerdir. Başkalaşım geçirebilmeleri için bu viruslerin başkalaşım motoru kullanmaları gerekir. Bir başkalaşım motoru genelde çok büyüktür ve karmaşıktır . Örneğin W32/Simile 14000 satır çevirici dili içerir ve %90'ı başkalaşım motoruna aittir.

Hiç yorum yok:

Yorum Gönder