Bulaştırmanın sıralamayı nasıl değiştirdiğine dikkat etmelisiniz: Eklenen virüs kodu kendini harekete geçirir ve fesat görevini başarıyla tamamladıktan sonra, komut, hiçbir şey olmamışçasına çalışmaya devam ederek ana dosyalara geri döndürülür.
Bulaşacakları dosyaların tipine bağlı olarak ekleme yöntemini kullanan bilgisayar virüsleri, işletim süresince denetimini hedefledikleri programlardan saptırmak için bir çok farklı teknikler kullanırlar. Örneğin, .COM ve .EXE kütükleri program giriş noktalarını (program kodlarının bellekteki başlama yerleri) bilgisayara tavsiye etmek için farklı algoritmalar (komut sıralaması) kullanırlar. Muzır yazılımcılar bulaştırma mekanizmalarını tasarlarken bu ince program farklılıklarına dikkat ederler, aksi takdirde ekleme yöntemini kullanan virüsleri yalnızca bir çalıştırılabilir dosya tipine yönelik oluştururlar. Bu nedenledir ki, bazı virüsler sadece .EXE dosyalarına bulaşabilirler. Bunların yazılımcıları, hedef kütüğün çok yönlü özelliklerin ele almada gereli uygun mantığı kullanmada yetersiz veya isteksizdirler.
ARAYA SOKMA ( Insertion )
Kendi yazılım kodlarını, doğrudan doğruya kullanılmamış olan kodların ve çalıştırılabilir programların veri bölümlerinin arasına yerleştiren bilgisayar virüsleri, hedefledikleri dosyaları denetlemek için araya sokma yöntemini kullanırlar. Bir önceki yöntemde olduğu gibi, araya sokma yöntemini kullanan virüsler de hedef dosyalarda bazı değişikliklere neden olurlar. Yöntemlerdeki farklılık, Şekil 3-2’de gösterildiği gibi, virüs kodunun sona eklenmesi yerine, hedeflenen çalıştırılabilir dosyanın içerisine yerleştirilmesidir.
ŞEKİL 3.2
_____________________________________________________________________________
Araya Sokma Yöntemini Kullanan Bir Virüs
Tarafından Bulaştırılan Bir Program
Enfeksiyondan önce program
PROGRAM.EXE
Dosya Uzunluğu=10240 bayt
Enfeksiyondan sonra program
PROG(VİRÜS KODU)RAM.EXE
Dosya Uzunluğu=10240 bayt
Araya sokma yöntemini kullanan virüslerin gelişimi, ekleme yöntemini kullanan virüslere göre daha zordur; çünkü temelde virüs kodunun uzunluğu minimumda tutulmalıdır. Çoğu zaman yeter büyüklükte kullanılmamış program alanı bulmak zor, hatta bazı durumlarda olanaksız olabilir. Bu uzunluk sınırlaması virüs kodunun uyarlanabilirliğini azaltarak, muzır yazılımcıların virüse ekleyecekleri fonksiyonların sayısını oldukça azaltır. Öte yandan, ekleme yöntemini kullanan virüslerde bu sınırlama yoktur. Özellikle .EXE dosyaları için tasarlanmaları daha kolaydır, çünkü .COM dosyaları için geçerli olan 64K dosya uzunluğu sınırlaması .EXE dosyaları için geçerli değildir.
YENİDEN YÖNLENDİRME ( Reduction )
Yeniden yönlendirerek bulaştırma yöntemi ileri düzeyde virüs yazılımcıları tarafından kullanılan ilginç ve üst düzeyde bir yaklaşımdır. Bu şema altında bilgisayar
virüsü denetim merkezleri, disk bölünüm alanları, bozuk olarak işaretlenmiş sektörler veya gizli dosyalarda gizlenirler. Ekleme veya araya sokma yöntemlerini kullanan “usta” virüsler, çalıştırılabilir. ( .EXE ) dosyalar arasına küçük virüs işçilileri yerleştirirler. Bu virüs işçileri hedeflenen program çalıştırıldığında ustalarına çağrılar (çalıştırma istekleri) yayınlayarak program akışını yeniden yönlendirirler. Usta (belki daha çok virüs işçisi yayarak) işçilerini yönetir ve daha sonra denetimi gerçek programa bırakırlar.
Virüs işçileri teoride birkaç düzine bayt küçüklüğünde veya bu uzunluktan daha kısa olduklarından, sınırlı sayıdaki kullanılmayan program alanları içerisine gizlenmeleri çok kolaydır. İşin daha ilginç yönü; bellekte kalıcı virüslerle ( boot sektörü veya komut işlemcisi buluşanları gibi) birleştirildiklerinde, virüs işçilerinin boyu iki başta kadar sıkıştırılabilirler ve bu iki bayt denetimi bellekteki virüslere devreden DOS kesintilerini ( interrup) çağırmak için gereklidir.
Yeniden yönlendirme yönteminde virüs kodlarının büyüklüğü ihmal edilebilir oranda az olduğu için, diskteki boş alanlarda herhangi bir değişiklik farkedilmez. Uygun küçüklükte olan bulaştırıcı kod parçaları program dosyalarını birkaç bayt büyütürler veya hiç büyütmezler. Sonuçta yeniden yönlendirme yöntemi muzır yazılımcılara, hedeflenen dosyalara veri kilobaytları eklemenin sonuçlarına aldırmaksızın geniş ve çok yönlü bilgisayar virüsleri yaratmalarına olanak tanır.
Yeniden yönlendirme yönteminin muzır programcılara sunduğu temel dezavantaj şudur: Bulaşıcılar belirlendiklerinde kolaylıkla sökülüp atılabilmektedirler. Gizlendikleri yerlerden ana virüs damarlarını silmek, bilgisayarı temizlemek için yeterlidir. Bu durum bütün virüs işçilerini güçsüz kılacaktır, çünkü onlar hiçbir zaman kendi başlarına ana kontrol programlarını bulamaz ve iletişime geçemezler.
YER DEĞİŞTİRME ( Replacement )
Şimdiye kadar virüs yazılımcıları tarafından kullanılan en ağır ve en hantal bulaştırma yöntemi, hedeflenen çalıştırılabilir ( .EXE ) dosyaların virüssel işletimcilerle yer değiştirilmesidir. Yer değiştirme yöntemini kullanan virüsler gerçekte çalıştırılabilir dosyaları enfekte etmezler, daha ziyade yerleştikleri sistemi enfekte ederler. Şekil 3-3’de gösterildiği gibi virüs kodları ile tamamen yer değiştirirler; bu anlamda hedef, dosyaların üzerine yazılır. Bulaştırılmış programın işletilmesi sırasında olayların sırasının değişmediğine ve program kodunun virüs kodu tarafından nasıl silinip yer değiştirdiğine dikkat edelim.
ŞEKİL 3-3
Yer Değiştirme Yöntemini Kullanan Virüs Tarafından
Bulaştırılmış Bir Program
Enfeksiyondan önce program
PROGRAM.EXE
Dosya Uzunluğu=10240 bayt
Enfeksiyondan sonra program
VİRÜS.EXE
Dosya Uzunluğu=10240 bayt
Muzır yazılımcılar açısından bu kaba güç kullanan yöntemin bazı yaraları vardır: Geçerli program dosyaları her yer değiştirmede tamamen yok edilirler ve hedeflenen sistem çok kısa bir süre içinde değersiz bir donanım yığını haline dönüşür. Bu yöntemin zayıf yönü ise, enfeksiyonların ilk ortaya çıkışından hemen sonra kolaylıkla belirlenebilmeleridir. Ancak yer değiştirme yöntemini kullanan virüsler, ilk işletimleriyle birlikte verileri yok ettiklerinden, hızlı ve etkili bir şekilde yok edilebilmelerine rağmen etkileri zarar vericidir.
VİRÜS KABUĞU ( The Viral Shell )
Virüslerin dünyasında bu yöntem gerçekte bir bulaştırma tekniği olarak düşünülmez; daha çok ileri düzeyde virüs yapıları tarafından kullanılan enfeksiyon sonrası yaşama yöntemidir. Komut işlemcisi ve bellekte sonrası yaşama yöntemidir. Komut işlemcisi ve bellekte kalıcı virüslerin onun özelliklerini desteklemelerine karşın, çoğunlukla boot sektörü bulaşanları tarafından oyuna dahil edilirler. Bu virüs, sisteminize yüklenebilecek en sinsi ölümdür.
Virüs kabuğu uygulamada sınırlayıcıdır. Bütün normal bilgisayar işlevlerin etkinliği altına alır ve belleğe yerleşen virüslerin varlığını tehdit eden, varlığını ve yerini ortaya çıkarıcı olası eylemleri durdurur veya maskeler. Dizin listeleri analiz edilir ve sonuçtaki ekran görüntüleri değiştirilir. Böylelikle birkaç ekstra kilobayt virüs kodu taşımalarına rağmen enfekte edilmiş dosyalar, normal dosya uzunluğuna sahiplermiş gibi görünürler. Boot sektörü, komut işlemcisi ve genel dosyaları görme, toplamı kontrol etme veya diğer türlü inceleme girişimleri hep sonuçsuz bırakılırlar.
Muzır yazılımcılar, her gün daha yenisi ve etkilisi geliştirilen virüs programlarının yayılması, desteklenmesi, işletilmesi ve yüklenmesinde kullanıcıları tuzağa düşüren şeytanca zeki yollar yaratmak için saatlerini, günlerini harcarlar. Bu bölümde tartışılan virüs tipleri ve bulaştırma yöntemlerinin, virüslerin nasıl çalıştığı ve bilgisayar sistemlerine nasıl girdikleri konusunda size önemli temel bilgiler verdiği düşünülmelidir.
BİLGİSAYAR VİRÜSLERİNİN YAYILMASINI ÖNLEMEK
ALINMASI GEREKEN ÖNLEMLER KAÇINILMASI GEREKEN ÖNLEMLER
Bilgisayar virüslerinin varlığını yok saymak felakete giden bir yoldur. “ Böyle bir şey benim başıma gelmez” yaklaşımını kabullenmek, muzır yazılıcıların ekmeğine yağ sürmekten başka bir şey değildir. Büyük bir olasılıkla bilgi işlemin uçsuz bucaksız dünyasında bir yerde, üzerinde kendi adınız veya dosyanızı paylaştığınız kişinin adı yazılı olan bir virüs vardır.
Felaketi önleminin yolu, en iyi bilgi işlem güvenlik uygulamalarına sıkı sıkıya bağlanmaktır. En etkili antivirüs yazılımlarına sıkı sıkıya bağlanmaktır. En etkili antivirüs yazılımlarını ve en iyi disk/dosya kullanım programlarını kullanmak, artık sık sık rastlanan virüs krizlerinden etkilenmemenizi sağlayacaktır. Yeni keşfedilen virüsleri tanımlayabilmek ve yok edebilmek, bu konuda uzmanlar bulunmasına karşın, oldukça gerekli bir zorunluluktur.
Sistem güvenliğini bugün piyasada olan antivirüs yazılımlarına emanet etmek, bir tavşana havuç tarlasını emanet etmek gibi bir şeydir. Virüs yazılımcıları, her zaman yazılım tabanlı güvenlik sistemlerinin üstesinden gelmeyi başarmışlardır. Antivirüs yazılımları, kullanıcıların kendilerini iyi hissetmelerine yardımcı olmakla beraber, hemen hiçbiri tam bir koruma sağlayamamaktadır.
Bugüne kadar kullanıcıların kendilerini bilgisayar virüs saldırılarına karşı silahlandırmak istediklerinde, en sık yaptıkları şey, antivirüs yazılım programları satın almak olmuştur. Antivirüs yazılımları tıpkı bilgisayar virüsleri gibi değişik tatta ve farklılıkta ortaya çıkarlar. Ancak bunların tümü iki geniş kategoriye ayrılırlar: Önleme sistemleri ve belirleme sistemleri.
Önleme Sistemleri
Önleme sistemleri, muzır yazılım saldırılarına anında karşı koyup durdurmaya yönelir. Bazıları yetkisiz programların ve kullanıcıların sistem donanımına erişimini engellemeye çalışır. Meydana geldikçe illegal disk erişimlerini belirleme ve bloke etme yoluyla, muzır yazılımların belleğe yüklenmesini durduracak ve şifre kullanımı ile yetkisiz kullanıcıların donanıma veya yazılıma erişimlerini önleyecek sistemin güvenlik düzeyini genişletirler.
Bütün önleme sistemleri, zorunlu olarak, bellekte kalıcı programlardır. Sürekli olarak devrededirler ve program yükleme, diske yazma ve diskten okuma gibi yazılım yönlü komut isteklerini durdurmak ve belirlemek için DOS kesintilerini izleme ilkesine dayanırlar. Kuşkulu eylemlerle (örneğin, bir programı yüklenip, boot sektörlerinin üzerine yazmak için DOS’tan izin isteminde bulunulması) karşılaşıldığında, önleme sistemi derhal harekete geçer. DOS çağrılarını kesintiye uğratır ve kullanıcıyı uyarırlar. Bu durumda kullanıcı, durdurulan eylemlerin devamına izin verilip verilmemesine karar verebilir. Doğal olarak, boot sektörü yazım işlemleri sırasında bütün faaliyetler her ne pahasına olursa olsun önlenmelidir.
Bu tür gerçek-zaman ( real-time ) denetim mekanizması teoride yaralı gibi görünse de, pratikte son kullanıcıya etkili ve yeterli bir koruma sağlayamaz. Herşeyden önce bellekte kalıcı koruma sistemleri değerli RAM alanlarını yutar. DOS iletişim sisteminde çalışan uygulama programları, program kod alanları için 64 K ile sınırlandırılmışlardır ve kullanıcılar olabildiği kadar çok kod alanını boş tutmaya çalışırlar. Öte yandan, diğer programlarla uyumluluk problemleri yaratmaya yönelik olmaları nedeniyle kötü bir üne sahip olan TSR programları, antivirüs sistemler olarak uygulandıkları zaman daha can sıkıcı olabilirler. Olası program yükleme, diskleri okuma ve diske yazma gibi her gün sık sık kullanılan bilgisayar aktivitelerini kesintiye uğratırlar; çünkü hangi aktivitelerin kullanıcı tarafından hangilerinin muzır yazılımlar tarafından başlatıldığını ayırdedemezler.
Dahası; PopDrop, Headroom, TurpolPower TSR gibi TSR yönetim sistemlerinin belleğe yerleşmiş olan programları belirleyebilmesi ve etkisiz kılabilmesi gibi, bilgisayar virüsleri ve darbe indirmeden önce hedeflerinin kalkanlarını yıkabilir. Virüsler, antivirüs sistemlerinin yerlerini belirlediklerinde onları susturabilir, muzır eylemlerini gerçekleştirdikten sonra hiçbir şey olmamış gibi eski aktif durumlarına döndürebilirler.
Bu tip saldırılara karşı koymak için bazı önleme sistemleri antivirüs kodlarına “nabız ölçme” baytları ekleyecek kadar ileri gitmişlerdir. Böylelikle önleme sistemi, bilgisayarın iç saatini sürekli olarak izleyerek onların ne zaman ve ne kadar süreyle illegal olarak kapatıldıklarını sorgulayabilirler. Ne var ki, bilgisayarın içindeki saati durdurmak ve antivirüs sisteminin işlevlerini çalışmaz hale getirdikten sonra yeniden başlatmak, bilgisayar virüsleri için pek zor bir iş değildir.
En kötüsü, antivirüs TSR programları disk erişim kontrollerinin doğrudan yönetimini belirleyemezler ve bu son derece zayıf bir yöndür. İyi tasarlanmış virüsler, bir kez yüklendiklerinde, DOS işletim sistemini (dolayısıyla önleme sistemlerini de) atlama yeteneğine sahiptirler ve disk erişimlerini doğrudan doğruya yönetirler. Bu tip ölümcül virüsler ürerlerken, kendilerini belleğe yükletip verileri tahrip ederlerken önleme sistemleri, arka bahçelerinde olup bitenlerden habersiz bir şekilde boş boş otururlar. Bu durum, bellekte kalıcı antivirüs sistemlerine, bilgisayar virüslerine karşı savunmada ana silah olarak güvenilmemesi gerektiğinin temel nedenidir. Bu tür önleme sistemleri, kötü tasarlanmış bombalara ve virüslere karşı sıradan bir kalkan oluştururlar.
Belirleme Sistemleri
Önleme sistemleri programlar çalışırken neler olup bittiğini sürekli olarak izlerlerken, belirleme sistemleri program çalıştırılmadan önce program kodunu kontrol ederler. Belirleme sistemleri, önleme sistemlerini tamamlarlar; davetsiz misafirlerin bozgunculuklarına izin vermekle birlikte, daha sonra onları izole etmek için oldukça karmaşık ve gelişmiş belirleme algoritmalarına sahiptiler ve bunlara güvenirler. Bulaştırılmış bir program kodu belirlediklerinde, kullanıcıyı uyarmakla birlikte, denetlenen programın kullanılmasına, ileri düzeyde değerlendirilmesine veya tamamen elenmesine karar verirler.
Önleme ve belirleme sistemleri karşılaştırıldığında, ikincisi daha dostça , daha uyumlu ve daha fazla güvenli olarak görünür. Belirleme sistemleri, diğer normal uygulama yazılımları gibi yüklenip çalıştırılır ve sonra bellekten çıkarlar. Önleme sistemlerinin aksine, ne sürekli olarak büyük bellek alanlarını ellerinde tutarlar, ne de normal programların işlemesini kesintiye uğratırlar.
Belirleme sistemlerinin iki türü karşımıza çıkmaktadır: Antibomba dedektörleri ve Antivirüs dedektörleri.
Antibomba Dedektörleri
Anitbomba dedektörleri, bir veya daha faza dosyayı tarama veay hedef dosyanın çalıştırılabilir ( .EXE ) koduna yerleştirilmiş yokedici yolları (örneğin, disketi yeniden formatlama çağrıları veya kütük silme komutları) araştırma yeteneklerine sahiptirler. Bazı antibomba dedektörleri, virüs aktivitelerinin açık belirtilerini (ekran mesajları gibi) araştırıp, program koduna depolanmış metin mesajlarını çıkartırlar. Ancak bunların da bazı eksik yönleri vardır: Bazı yasal yazılımları bomba olarak tanımlarlar, şifrelenmiş metin mesajlarının yerini belirleyemez veya görüntüleyemezler ve sık sık gerçekten öldürücü program komutlarını yakalayamazlar.
Antivirüs Dedektörleri
Virüssel aktivitenin doğası gereği (virüsler statik .EXE program dosyalarında belirlenebilir değişikliklere neden olurlar), önleme sistemleri ve antibomba dedektörlerine oranla antivirüs dedektörleri virüs aktivitesini belirlemede çok daha etkilidirler. Bu etkinlik, uygulamaya koyulan belirleme algoritmasının kalitesiyle daha da artırılabilir.
Antivirüs belirleme programları iki temel sınıfa ayrılırlar: Programa özgü dedektörler (genellikle virüs tarayıcılar olarak adlandırılırlar) ve genel dedektörler.
Programa Özgü Dedektörler: Belirli sayıda (500’e yakın) bilinen virüsün taramasını yaparlar. Belirlemek üzere programlandıkları virüslerin işaretlerini (imzalarını) tanımlamaya çalışarak dosyaları incelerler. Bilinen virüs işaretlerini içeren program dosyaları, virüs tarayıcılarının belirledikleri virüse ilişkin olarak kullanıcıları uyarmalarına neden olurlar. Programa özgü belirleme sistemleri, kuramsal eksiklikleri ortaya çıkana dek iyi ve mantıklı bir görünümdedirler: