BU SERVİS, GOOGLE TARAFINDAN SAĞLANAN ÇEVİRİLER İÇEREBİLİR. GOOGLE, HERHANGİ BİR GARANTİ, GÜVENİLİRLİK VE TİCARİ ELVERİŞLİLİK, BELİRLİ BİR AMACA UYGUNLUK VE İHLAL ETMEME GARANTİLERİ DAHİL OLMAK ÜZERE AÇIK VEYA ZIMNİ GARANTİLER DE DAHİL OLMAK ÜZERE, AÇIK VEYA ZIMNİ TÜM GARANTİLERİ REDDEDER.

Kaspersky Lab web sitesi, Google Çeviri tarafından desteklenen çeviri yazılımı kullanılarak size kolaylık sağlamak amacıyla tercüme edilmiştir. Doğru bir çeviri sağlamak için makul çabalar sarf edilmiştir, ancak otomatik çeviri mükemmel değildir ve insan çevirmenlerinin yerini alması amaçlanmamıştır. Çeviriler, Kaspersky Lab web sitesinin kullanıcılarına bir hizmet olarak sunulur ve "olduğu gibi" sağlanır. İngilizce'den başka bir dile çevrilmiş herhangi bir çevirinin doğruluğu, güvenilirliği veya doğruluğu konusunda açık ya da zımni hiçbir garanti verilmemektedir. Çeviri yazılımı sınırlamaları nedeniyle bazı içerikler (görüntüler, videolar, Flash vb. Gibi) doğru bir şekilde çevrilemeyebilir.

Virus.Win9x.Memorial

Sınıf Virus
Platform Win9x
Açıklama

Teknik detaylar

Bu metin, Peter Förs, Data Fellows Ltd tarafından yazılmıştır.

Anıt çok ilginç bir Windows 95 virüsüdür. Şu ana kadar Windows virüs yazımında uzun bir gelişme olmuştur [1997 sonu]. Ancak, Windows 95 enfektörlerinin listesi hala uzun değil. Anıt, "hafıza sakini" Windows 95 virüsü olarak yeni fikirler gösteriyor. Bu, sırasıyla DOS tabanlı COM ve EXE dosyalarını ve Win32 PE (Taşınabilir Yürütülebilir) dosyalarını da enfekte eder. Virüsün ana formatı bir Windows 95 VxD'dir (Virtual Device Driver).

Virüs DOS tabanlı COM ve EXE dosyalarında şifrelenmez, ancak daha ziyade enfekte PE dosyaları bir oligomorfik (yarı polimorfik) rutin ile şifrelenir. Dahası, ana virüs gövdesi (VxD görüntüsü) basit bir algoritma ile paketlenmiştir. PE dosyalarında (Win95.Mad adı verilen) şifrelenmiş bir virüs var, ancak Memorial kesinlikle oligomorfik yetenekleri gösteren ilk Windows 95 virüsüdür. Böylece, Windows 95 polimorfizminin yolunda ilk adımı yapar.

Anıt ayrıca etkili bir retro virüsdür. Birçok bilinen virüsten koruma programını devre dışı bırakmak için Windows 95 kayıt defterini işler.

Neyse ki, virüsün yayılmasını yavaşlatabilecek birkaç büyük böcek vardır. Ancak, Memorial.12413'ün İsveç'te bu sorunlardan bağımsız olarak "vahşi" olduğu bildirilmiştir.

Virüs bulaşmış bir DOS COM dosyasını çalıştırma

Windows 95 virüs yazarları, insanların Windows 95 uygulamalarından daha fazla DOS programı değiştirdiğini anlamaya başladı. Bu, virüs açısından büyük bir sorun haline gelir: sadece Windows 95 programlarını etkileyerek çok fazla yayılamaz. Anıt, DOS yürütücülerini de bulaştırmak suretiyle bu sorunu çözmektedir. Virüs bulaşmış dosyalar, ana VxD modülünün damlalıkları olarak işlev görür.

Virüs bulaşmış bir COM dosyası çalıştırıldığında, virüs C: CLINT.VXD adlı C: sürücüsünün köküne bir VxD dosyası bırakır. Önce Windows'un şu anda çalışıp çalışmadığını kontrol eder. Öyleyse, virüs sadece DOS ana bilgisayar programını yürütür. Aksi halde, "Orada mısınız" çağrısını yapar, INT 2Fh AX = 0'dır. Eğer çağrıdan geri döndükten sonra, AX registerı 4AB3h olarak ayarlanmışsa, virüs bellekte zaten aktif olduğunu varsayar ve kontrolü ana programa döndürür. Sonra gizli bir öznitelikle C: CLINT.VXD dosyası oluşturur ve içine yazmaya başlar.

Yazma rutini anti-sezgisel bir işlev olarak görünür. Ancak, bu işlevin amacı farklıdır. Virüsün ana gövdesi 7508 bayta kadar paketlenmiştir ve bu fonksiyonun ambalajından çıkarılması gerekmektedir. Algoritma çok basit, ancak etkilidir. VxD dosyaları LE (Lineer Executable) formatındadır. Bu dosyaların yapısı birçok sıfır içerir. Bu nedenle bu alanların ambalajlanması oldukça etkili olabilir. Temel olarak, tam VxD, paketin açılmasından sonra 12413'e kadar büyüyerek 7508 bayta ambalajlanır. CLINT.VXD hazır olduğunda, Anonim bir kod parçasını 0: 200'de Interrupt Vector Tablosuna kopyalar ve INT 2Fh (Multiplex Interrupt) ile kancalar. Bu şekilde virüsün belleği nasıl ayıracağı konusunda endişelenmesi gerekmez, ancak bazı uygulamalarla uyumsuz olur.

INT 2Fh işleyicisi, "Siz var mısınız?" Yanıtını verir ve Windows Sıfırlama Bildirimini denetlemek için AX kaydında 1605 saate kadar bekler. Bu ileti, standart veya 386 gelişmiş mod Windows başlatılıyor DOS aygıt sürücüleri ve TSR'leri bildirir. Windows bu işlevi, Windows ortamında çalışmaya hazırlanmak üzere INT 2Fh'yi izleme fırsatını veren DOS aygıt sürücülerine ve TSR'lere izin vermeye başladığında çağırır.

Bu ilk çağrılar Memorial'ın kesme işleyicisine geldiğinde, virüs varlığını kontrol etmek için C: CLINT.VXD'yi açar. Açılış başarılı olursa, Anıt, VxD'yi yüklemek için Windows'u yönlendirmek üzere bir Win386_Stratup_Info_Struc yapısını başlatır. Herhangi bir aygıt sürücüsü veya TSR, Windows ortamında çalışmasını desteklemek için bir Windows VxD kullanabilir. VxD adını belirtmek için aygıt sürücüsü veya TSR, SIS_Virt_Dev_File_Ptr üyesini sanal aygıtın dosya adının adresine ayarlar. Böylece, Memorial C: CLINT.VXD yüklemek için Windows yönlendirilmiş belgelenmiş bir araç kullanır. Bu daha karmaşık ve çok başarılı olmayan SYSTEM.INI dosyasının aygıt bölümünü değiştirmekten daha zariftir.

Virüs bulaşmış bir DOS EXE dosyasını çalıştırma

Virüs bulaşmış bir EXE dosyası yürütüldüğünde aynı açma kodu, virüsün COM dosyalarındaki giriş noktasından kontrolünü alır. Ancak, bu işlev, DOS EXE bulaşma kodunda büyük bir hata olduğu için C: CLINT.VXD içine sonsuzca yazacaktır. Anıt EXE enfeksiyonu sırasında yanlış bir işaretçi ve kötü bir virüs boyutu parametresi kullanır. Paketlenmiş VxD kodunu (7508 bayt) EXE dosyalarına değil, paketten çıkarıldıktan sonra açılmamış 12413 bayt yazmaz. Bu nedenle, ambalajı açarken, damlalık kodu önceden açılmamış bir VxD görüntüsünü çıkarır.

Çıkarıcı kodu bu olası problemi bilmediği için, mevcut tüm sabit disk alanını doldurana kadar C: CLINT.VXD içine megabayt kod yazıyor, ancak kontrol bile DOS'a geri dönmeyecek. Bu işlem sırasında Ctrl-C kullanırken veya makineyi yeniden başlatırken, büyük C: CLINT.VXD, sadece DIR komutunun / AH (gizli dosyaları göster) seçeneği kullanılabilir. Böylece, EXE dosyalarındaki virüs "Hedeflenen" olarak sınıflandırılabilir. Neyse ki, bu dosyaların tespiti ve dezenfeksiyonu mümkün olmaya devam ediyor.

Virüs bulaşmış bir PE dosyasını çalıştırma

Virüs bulaşmış bir PE dosyası yürütüldüğünde, virüs ilk önce şifresini çözer, çünkü ana virüs gövdesi şifrelenir ve paketlenir. Decryptor, 46 bayt uzunluğunda ve oligomorfiktir (aşağıya bakınız).

COM enfeksiyonu durumunda, virüs ayrıca PE dosyalarından C: CLINT.VXD'yi de düşürür. DOS enfeksiyonları durumunda, damlalık işlevi virüsün giriş noktasında 275 bayt ek kod alır. PE dosyalarında bu işlev 32bit kodundadır ve DOS sürümünden daha karmaşıktır. Bu kodun daha uzun olmasının nedeni budur: 1360 bayt. Bu işlev ayrıca Memorial'ın aktivasyon rutinini içerir ve VxD'yi de yüklemesi gerekir.

İlk olarak virüs, GetModuleHandleA işlevinin belleğe giriş noktasını hesaplar. Bunu gerçek bir hack kullanarak yapar; iç Windows 95 yapılarında bir arama yapar. Bu PE enfeksiyonunu daha sonra biraz daha kolay hale getirir; Virüs, İthal İsimler Tablosuna herhangi bir isim eklememelidir. Anma, bu amaçla PE enfeksiyon kodunda karmaşık bir yama işlevine ihtiyaç duymaz.

Daha sonra GetProcAddress'in giriş noktasını aynı numarayı kullanarak hesaplar. Daha sonra KERNEL32 modülünün tanıtıcısını almak için GetModuleHanldeA kullanır. Bu tanıtıcıyı kullanarak Memorial, sırasıyla CreateFileA-, WriteFile-, ReadFile-, SetFilePointer-, CloseHandle-, GetLocalTime-, LocalAlloc prosedür adreslerini almak ve kaydetmek için GetProcAddress'i arayabilir. Bundan sonra, USER32'nin tanıtıcısını almak için GetModuleHandleA'yı tekrar kullanır. Ardından, MessageBox yordamının adresini kaydetmek için GetProcAddress'i kullanır.

Bundan sonra virüs, tarihi kontrol etmek için GetLocalTime işlevini çağırır: eğer 10 Nisan ise, virüs MessageBox prosedürünü kullanarak bir mesaj kutusu açar ve görüntüler:


Quantum / VLAD ve Qark / VLAD tarafından Clinton Haines Memorial Virüs
Clinton Haines, Harry McBungus, Terminator Z ve Talon olarak da bilinir
10'uncu 1997'de 21'inci yaş gününde bir aşırı dozda aşırı dozdan öldü.
Bir virüs yazarı sıfatıyla, No Frills ailesini yazdı, X-Fungus,
Daemon ve 1984 virüsleri. VLAD için iyi bir arkadaştı ve biz de yazdık
Bu virüs onun onuruna. Umarım adalet yapmak için yeterince iyidir.
VLAD Hatırlar. Huzur içinde yatsın
HUZUR İÇİNDE YATSIN
Aksi takdirde .CLINT zaten çalışıyor ve çalışıyorsa kontrol eder. Öyleyse, ana program çalıştırılır. Aksi halde, normal dosya olarak .C: CLINT.VXD (bu kez gizli özellik kullanılmadan) CreateFileA ile oluşturulur. Bu başarılı bir Memorial ise, LocalAlloc prosedürünü arayarak belleği ayırır. Bunun nedeni, paketlenmiş virüs gövdesini kodun dosyaya yazılabilmesi için yeni bir konuma açması gerektiğidir. Böylece VxD kodunu (7508 bayt) arabelleğe çözer ve 12413 bayttan WriteFile yordamına sahip CLINT.VXD dosyasına yazar. Ardından dosyayı CloseHandle ile kapatır. Bundan sonra VxD, bu amaç için belirtilen isim formatına sahip CreateFileA prosedürünü kullanarak yürütür .C: CLINT.VXD. Sonunda ana bilgisayar programını başlatır.

Başlatma (IFS API kancası)

CLINT.VXD dosyası yürütüldüğünde, virüs aşağıdaki Kontrol Mesajlarını Kontrol Mesajı İşleyicisinde bekler: W32_DEVICEIOCONTROL, INIT_COMPLETE, SYS_DYNAMIC_DEVICE_INIT ve SYS_DYNAMIC_DEVICE_EXIT. W32_DEVICEIOCONTROL mesajı durumunda, virüs diğer Win32 uygulamalarıyla iletişim kurmak istemediğinden 0 değerini döndürür. SYS_DYNAMIC_DEVICE_EXIT mesajı, boşaltma isteğini reddetmek için Memorial geri dönüşleri 1'e ulaştığında. SYS_DYNAMIC_DEVICE_INIT ve INIT_COMPLETE mesajlarının olması durumunda virüs, Başlatma prosedürünü yürütür.

Bu yordam, önce DOS IFS (Yüklenebilir Dosya Sistemi) API çağrısı kancalar. Bundan sonra, Windows 95'in kayıt defterinden, statik olarak yüklenmiş VxD adlarının bulunduğu 'SystemCurrentControlSetServicesVxd' altındaki birkaç anahtarı siler; anti virüs VxD'ler gibi. İlk önce 'VETMON95' ve 'VETMACRO' tuşlarını siler. Sonra 'NAVAP', 'virusafe', 'WIMMUN32' tuşlarını siler. Sonra 'SOFTWAREMicrosoftWindowsCurrentVersionRun' bölümünü açar ve aşağıdaki değerleri siler: 'NORTON AUTO-PROTECT', 'Windows 95 için TBAV', 'Anywhere Antivirus Validation', 'Vshwin32EXE' ve 'ViruSafe'. Ardından 'SOFTWAREMcAfeeScreenScan'a gider ve' bEnableScreenScan ',' bScanAllFiles ',' bScanSubDirs 'siler. Sonra 'SOFTWARECybecVET Antivirus for Win32' altındaki aşağıdaki tuşları siler: 'ActionsInfectedAction', 'ActionsSuspectAction', 'MemoryEnabled', 'ResidentFileCheck', 'ResidentInfectedAction', 'ResidentSuspectAction', 'ScanningScan Tüm Dosyalar', 'ScanningScan Type', 'ScanningSkip 'ScanningSubfolders' olarak yeniden adlandırıldı ve 'ScanningExtension List' değeri 'bin, dll, doc, drv, ovl, sys, dot' remove 'com, exe ve muhtemelen bu listeden' scr 'olarak ayarlanır. Bu şekilde Memorial, birçok Windows 95 antivirüs programını devre dışı bırakır.

Sonra virüs, C: CLINT.VXD'deki nitelikleri temizler. Bundan sonra dosyayı açar ve boyutlarını alır ve kaydeder ve paketlenmemiş ve paketlenmiş bir kopyası için yeterli bellek ayırır. Sonra kendini dosyadan ana arabelleğe okur. Anı sonra VxD dosyasını kapatır ve siler.

Bundan sonra VxD kodunu ikinci ara belleğe paketler. Sonunda başlatma rutinden döner.

COM Enfeksiyonu

Anma, bir dosya açma çağrısını durdurduğunda, önce dosyanın 'COM' ile karşılaştırmasını ilk önce kontrol et. Uzantı 'COM' ise, Memorial kurban dosyasının özniteliğini alır ve kaydeder ve temizler. Böylece salt okunur özelliği, enfeksiyonu önlemez. Sonra kurban açar ve ondan 4 bayt okur. Üçüncü bayt (ilk atlamadan sonra) 'Z' Anıtı ise, dosyanın zaten enfekte olduğunu varsayar. Daha sonra kurbanın yapısının COM olmadığından emin olmak için 'MZ', 'ZM' işaretlerini kontrol eder. Daha sonra kurbanın boyutunu kontrol eder ve 7168'den küçükse veya 51200 bayttan büyükse enfekte etmez. Ardından programın son 5 baytını okur ve 'SN' ile başlayıp başlamadıklarını kontrol eder. Bu bulunursa virüs dosyaya bulaşmaz. Bu özel işaretçiyi COM dosyalarının sonuna ekleyerek belirli bir PC'yi (virüs yazarlarının sahip olması muhtemel) inoküle etmek dışında başka bir neden görmüyorum.

Daha sonra Memorial paketlenmiş virüs görüntüsü (7508) bayt ile birlikte kurbanın sonuna DOS damlalık kodunu (275 bayt) ekler. Son olarak, ilk 4 baytı bir ilk atlama + bir 'Z' işaretçisine çevirerek kurbanın dilenmesini değiştirir ve özniteliği orijinaline ayarlar. Bu nedenle, COM enfeksiyonu durumunda virüsün boyutu 7783 bayttır.

DOS EXE Enfeksiyonu

Dosya 'MZ' veya 'ZM' işaretçileriyle başlamışsa, virüs uzantıyı '.EXE' ve '.SCR' ile karşılaştırarak denetler. Ardından, IFSMgr_Get_DOSTime rasgele sayı üreteci için bir baz numarasına sahip olmak için çağırır. PE dosyalarında virüsün PE başlık alanına eklenmiş bir bölüm ismine ihtiyacı olduğu ve oligomorfik olmasını istediği için sabit bir bölüm adı kullanmak istememektedir. Böylece standart adı 'CLINTON' dan önce bir 'çöp' dizgisine dönüştürülür.

Temel olarak şifreleme için 8 bit XOR kullanır. Şifreleme sırasında bir kontrol baytını hesaplar ve bölüm adı dizesinin son karakteri olarak kaydeder. Bu ilave bayt mevcut PE enfeksiyonlarını kontrol ederken kullanılacaktır. Anma sadece DOS EXE enfeksiyonları sırasında bölüm adını değiştirir. Bu mutasyonu yavaşlatır (yavaş oligomorfizm).

Bu hazır olduğunda, Memorial kurbanı açar, başlığını okur ve 'MZ', 'ZM' imzasını kontrol eder. Ardından dosyanın 3Ch konumundan 4 bayt okur. Bu çifte kelime, Windows yürütücüler başlık alanına bir işaretçi tutar. Bu işaretçi 0 ise, virüs, dosyanın normal bir DOS EXE dosyası olduğunu varsayar ve bu şekilde bulaşmaya çalışır. EXE üstbilgisinin sağlama toplam alanını denetler. Bu 6666h ise, virüs dosyaya bulaşmaz, ayrıca IP alanı 100h başlıkta ise virüs de virüs bulaşmaz.

Sonra virüs, EXE dosyalarının boyutunu paragraf sınırına kadar artırır ve dosyanın sonuna VxD damlalık kodunu (275 bayt) ekler. Sonra virüsdeki en büyük hata geliyor: Paketlenmemiş VxD'yi dosyanın sonuna yazıyor (12413 bayt). Böylece DOS EXE kurban dosyaları durumunda virüs boyutu 12688 bayttır. Son olarak, programın başlığını, virüs giriş noktasına işaret edecek noktaya değiştirir.

PE Enfeksiyonu

EXE veya SCR dosyası Windows Executable olarak kabul edildiğinde, Memorial önce PE imzasını kontrol eder. Daha sonra salt okunur özniteliğine dikkat eder. Ardından, Image Header yapısından son bölümü okur ve bölüm adındaki kontrol baytını hesaplar. Eğer sağlama toplamı, Memorial ile uyuşmazsa, enfekte olmaz. Aksi takdirde, yeni virüs bölümünü ekleyerek PE başlığını değiştirir. Anma bir oligomorfik virüs olduğundan, ilk olarak vücudunun başlangıcı için 46 baytlık bir uzun decryptor (bakınız: Oligomorfik motor) değiştirir. Daha sonra VxD dropper'ın 1360 bayt uzunluğundaki PE versiyonunu şifreler. Şifreleme, 8 bit'lik bir XOR'a dayanır. Sonra decryptor'un kodunu + VxD damlalık kodunu kurbanın sonuna (1406 bayt) ekler. Sonunda paketlenmiş VxD görüntüsünü şifreler ve dosyanın sonuna ekler (7508 bayt). Daha sonra kurbanın niteliğini geri yükler ve kapatır. PE enfeksiyonu hazırdır. Böylece virüs kodunun boyutu 46 + 1360 + 7508 = 8914 bayttır. Bununla birlikte, virüsün dosya boyutunu bir bölüm hizalamasına yükseltmesi gerektiğinden bunun değişebileceğini unutmayın.

Oligomorfik motor

Bu motor basit ama etkilidir. Temel decrypor 11 farklı bölümden oluşmaktadır. Mutasyon motoru, bu küçük blokların sırasını, bazıları ile değiştirerek değiştirir. Böylece blok 1 ile 2, 8 ile 9, 6 ile 7, 3 ile 4, 5 ile 4 ve 10 ile 0 diğerleri ile değiştirilebilir. Bu 2 * 2 * 2 * 2 * 6 hepsini 96 farklı durumda bir araya getirir. Bu, PE dosyalarında virüsün tespit edilmesini zorlaştırır.

Sonuç

Anıt çok karmaşık bir virüs. Bu, polimorfik Windows 95 virüslerinin, daha sonra sadece Polymorphic Mutation Engines'de bulunan ve yalnızca Windows 95 virüsleriyle kullanılabilecek özelliklerde görüneceğini göstermektedir. Bu, bu yeni hayvanlar için yeni tarama motorlarını uygulama zamanı geldi.


Orijinaline link