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.DOS.Zhengxi

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

Teknik detaylar

Bu çok tehlikeli, polimorfik ve gizli parazitik virüslerin bir ailesidir. Bu virüsler 7K'dan daha uzun, çok karmaşık ve belki de en karmaşık DOS virüsleridir. Bu virüsler EXE, OBJ ve LIB dosyalarını bozar ve COM-damlalıklarını ZIP, ARJ ve RAR arşivlerine ekler. Virüsler dahili metin dizelerini içerir:


Olağandışı program sonlanması
Virüs / DOS 0.54 Telif Hakkı (c) 1995 Zhengxi Ltd
Uyarı! Bu program sadece dahili kullanım içindir!

Kurulum

Virüsün kodu, enfeksiyon yoluna bağlı olarak farklı noktalardan kontrolü alır, ancak her durumda hedef polimorfik şifre çözme rutinidir. EXE dosyalarında (ekleme) şifre çözme rutini, bir EXE dosyası çalıştırılmak üzere belleğe yüklendiğinde, EXE dosyaları (ekleme) – yükleyici kodundan (bkz. EXE bulaşması), virüs bulaşmış OBJ ile bağlantılı dosyalarda, hemen denetimi alır. LIB dosyaları – CALL komutundan (bkz. OBJ / LIB enfeksiyonu), COM damlalıklarının başlangıçlarında JMP komutu vardır, JMP de şifre çözme rutinine kontrol sağlar.

Şifresi çözüldüğünde, virüsün kurulum rutini kontrolü alır. Virüs INT 1 (Bir Adım İzleme) kancalar ve INT 21h izler. İzleme sırasında, virüs INT 21h işleyicisi içindeki bazı özel kodları arar (bu kod, DOS 5.x ve DOS 6.x'te bulunur). Böyle bir kod bulunursa, virüs birkaç koşulu denetler ve bazı durumlarda yüklemeyi sonlandırır.

Virüs yüklemeyi sonlandırırsa:

  • MS Windows yüklü
  • önyükleme sürücüsü A: veya B:
  • INT 8, 13h, 28h aynı segmente işaret ediyor (anti-virüs monitörü kurulu ise kurulumdan çıkmak için)?
  • anasistem dosyasının gün (tarih ve saat damgası) geçerli güne (aynı gün veya saat damgası) eşittir (dosya günü ile birlikte XORed öğesinin en yüksek iki bit'i sıfırdır)
Ardından virüs, virüsün TSR kopyası için sistem belleğinin bloğunu ayırır, INT 21h işleyicisinin adresinden 11 baytlık gövde içinde depolar ve INT 21h kodunu FAR CALL komutuyla (2F FF 1E ???) getirir. INT 25h işleyicisine kontrol (Mutlak Disk Okuma). Daha sonra virüs, INT 25h işleyicisinin ilk beş baytını depolar ve orada beş baytlık FAR JMP virüs koduna yazar. Sonuç şöyle görünüyor:

INT 21h işleyicisi:
… …
+ ——- 2E FF 1F ???? ÇAĞRI ÇAĞRI CS: Int25
7 C7 06 ???? ; sihirli kelime?
25 Int25: ???? ???? ???? ???? ; INT 25h uzak addr
� … …

+> INT 25h işleyicisi:
+ ——– EA ???? ???? JMP FAR VirusHandler
� … …

+> Virüs işleyici:
2E 8F 06 … POP CS: Arayan_IP
… …

Sonuç olarak virüs, hem INT 21h hem de INT 25h çağrılarını engellemek için aynı işleyiciye sahiptir. Bu çağrıları ayırmak için virüs arayanın (Caller_IP) adresini kontrol eder. Çağrı INT 21h işleyicisinden geçerse, virüs kontrolünü Virüs INT 21h işleyicisi rutinine geçirir, başka bir durumda da Virus INT 25h işleyicisi kontrolü alır.

Yükleme yordamı tamamlandı, ancak virüs kodunu diğer bellek bloklarına taşıyabilir (bkz. INT 21h işleyici analizi). Bu nedenle, virüsün TSR kopyası, sistem belleğinin aynı bloklarını işgal etmez, ancak kendisini UMB olanlar da dahil olmak üzere diğer adreslere taşıyabilir.

Sonra virüs kontrolü ana programa döndürür. Bu dönüşün üç farklı varyantı vardır, bunlar enfeksiyon yöntemine bağlıdır. COM damlalık durumunda virüs sadece mesajı görüntüler:


Olağandışı program sonlanması
ve Terminate işleviyle DOS'a döner (INT 21h, AH = 4Ch). EXE ekleyen bir enfeksiyon yöntemi durumunda, virüs, polimorfik motor kullanarak orijinal dosya başlığını geri yükler (polimorfik şifre çözme rutini üretir ve orijinal üstbilgiyi geri yüklemek için çalıştırır, bkz. Aşağıdaki EXE enfeksiyonu). Virüs yükleyicinin dosyaya eklenmesi nedeniyle EXE, kendi kendine özgün kodu geri yükler çünkü EXE-ekleme yolu virüs sadece ana bilgisayar programına döner. OBJ / LIB dosyası durumunda virüs, sadece ana programa geri döner (aşağıdaki OBJ / LIB enfeksiyonuna bakınız).

INT 21h Handler

Virüs INT 21h fonksiyonlarının 18'ini kesiyor:

3Dh, 6Ch – Dosya Aç / Oluştur
3Eh – Dosyayı Kapat
3Fh – Okuma Dosyası
42h – Lseek
4Bh – Dosya Çalıştır
41h – Dosya Sil
11h, 12h – FindFist / Sonraki FCB
4Eh, 4Fh – FindFist / Sonraki ASCII
00h, 4Ch – Sonlandır
31h – TSR Kal
67h – Set Sayısı
48h, 49h, 4Ah – bellek yönetimi işlevleri (Allocate, Free, Resize)
Set Tutar Sayısı, Execute File ve hafıza yönetimi fonksiyonları, virüs tarafından kodun sistem belleğine gizlenmesinde kullanılır – virüs, bellek tarama yardımcı programlarını kullanırken bellek haritasında görünmemek için MCB blokları ile çalışır.

Terminate, Stay TSR ve FreeMemory fonksiyonlarının durdurulması sırasında virüs, kodunu sistem belleğinde yeni adrese taşır. Virüs belleğin yeni bloğunu (geleneksel veya UMB bellek bloğu olabilir) tahsis eder ve kendini oraya kopyalar. Bu nedenle, virüsten yüklenirken, TSR kopyasını yerleştirmek için UMB bloklarını etkilemez, ancak kendini UMB'ye taşıyabilir ve kendini orada gizleyebilir.

Virüs açıldığında dosya birkaç farklı arama gerçekleştirir. İlk olarak, virüs açılış modunu kontrol eder ve dosya yazmak için açılmışsa, virüs dosyayı dezenfekte eder.

Dezenfeksiyondan önce virüs dosyaya erişilir ve bu dosyaya erişen program (arayan). Virüs, erişim programının adını (arayan) isimlerin listesiyle karşılaştırır (aşağıya bakınız) ve erişilen programın adı bu listeden bulunuyorsa erişilen dosyayı dezenfekte etmez. Dosya isimleri:


UUENCODE.EXE, PKLITE.EXE, LZEXE.EXE, NDD.EXE, DIET.EXE, AFD.EXE, SD.EXE,
SPEEDDSK.EXE, DEFRAG.EXE, TLINK.EXE, LINK.EXE
AH = 3D00h işlevi (ReadOnly'yi Aç) durumunda, virüs bazı garip eylemler gerçekleştirir. Arayanın kodunu tarar ve yamalar. Bazı anti-virüs tarayıcılarının yamalarına benziyor. Neyse ki, virüsün bir hatası var ve o dal hiçbir zaman idam edilmiyor.

Dosyayı açarken virüs de kontrolü gizli strana getiriyor – virüs, dosya uzunluğunu orijinali ile değiştiriyor.

Dosyadan okurken virüs gizli rutini çağırır. Virüs bulaşmış dosyanın üstbilgisinden okunması durumunda, virüs okuma, orijinal üstbilgiyi okuma arabelleğine okur, çözer ve kopyalar.

Lseek fonksiyonu durumunda virüs, kontrolü virüsün başka bir gizli gizliliğine getirir – virüs, orijinal dosya uzunluğundan arama yapmaya izin vermez.

Virüs bulaşmış dosyanın silinmesi sırasında virüs dezenfekte eder.

FindFirst / Next aramaları ile dosyaları ararken, dosya virüs bulaşmışsa virüs, orijinali ile dosya uzunluğunu değiştirir.

FindFist / Next ASCII çağrıları virüs tarafından virüs bulaşmalarını yakalamak için kullanılır. Virüs, FindFirst işleviyle erişilen herhangi bir dosyanın adını ve FindNext işleviyle erişilen yaklaşık her 5. dosya (olasılık 3/16 ile) kaydeder. Virüsün dosya adı için sadece bir arabelleği vardır, böylece her adın bir öncekinin üzerine yazılır.

Herhangi bir dosyanın kapatılması sırasında virüs, arabellekte saklanan adla dosyayı denetler ve bu dosyaya bulaşır. Virüs ayrıca, kapalı olan dosyayı da enfekte eder, ancak olasılıkla 1/4 (virüsün rasgele üreteci) sonucunu doğurur.

enfeksiyon

Dosyaya bulaşmadan önce virüs çeşitli durumları kontrol eder:
  • dosya, geçerli gün numarasını dosyanın dosya tarihi ve zaman damgasıyla (yükleme sırasında olduğu gibi) karşılaştırarak "sadece oluşturur" değildir.
  • dosya yereldir ve A: veya B: sürücüsünde değil
  • dosya adı *.? V? (* .OVL?)
  • boş disk alanı yeterlidir (INT 21h, AH = 36h ile kontroller)
Tüm bu koşullar söz konusu olduğunda virüs dosya başlığını okur ve EXE, OBJ, LIB ve arşiv pulları için kontrol eder.

EXE Dosyaları Infect

Virüs, EXE'i kendi kendine ayıklanan dosyalara eklemek, eklemek ve arşivlemek için üç farklı yöntemle bulaşır.

İlk olarak, virüs dosya yapısını kontrol eder ve eğer EXE dosyası (örneğin, ZIP2EXE tarafından yaratılır) kendiliğinden ayıklanırsa, virüs, aşağıda açıklanan yöntemle ekli arşive (ZIP, ARJ, RAR) bulaşır – COM dropper oluşturur ve bunu arşivin içeriğine ekler.

Ardından virüs, dosya uzunluğunu kontrol eder ve uzunlukları 400h (1024) bayttan daha az olan dosyaları etkilemez. Yüklenebilir modülün uzunluğu (not: dosya uzunluğu değil) 32K daha büyükse, virüs yükleyiciyi dosya ortasına yerleştirir. Başka bir durumda virüs, dosyaya ekleme yöntemiyle bulaşır.

Dosyaları ekleyerek dosyaları etkilerken virüs dosya üstbilgisini okur, şifreler ve dosyanın sonuna kaydeder. Sonra virüs polimorfik jeneratörünü çalıştırır ve şifreli virüs gövdesini ve polimorfik döngüleri dosya sonuna kaydeder. Virüs bulaşmayı bitirmek için virüs, dosya uzunluğunu 9Dh'ye bölerek 25 saat (kalan virüslü dosyaları tespit etmek için virüs "ID" damgası) verir ve EXE başlık alanlarını (kayıtlar ve modül uzunluğu) değiştirir.

Not: virüs, ana makine dosyasının orijinal üstbilgisini polimorfik şifreleme döngüsü ile şifreler ve bu döngü, virüs gövdesini şifrelerken kullanılan rutinden farklıdır. Yani virüs, orijinal EXE başlığını şifrelerken ve ana gövdeyi şifrelerken, polimorfik motoru iki kez çağırır.

Virüs bulaşmış EXE dosyasının çalıştırılması sırasında, şifre çözme döngüleri ana virüs gövdesini geri yükler, ancak orijinal dosya başlığını geri yüklemez. Ana bilgisayar programına dönmek için virüsün ana bilgisayar verilerinin şifresini çözmesi gerekir, ancak rasgele seçilen şifreleme işlevleriyle motor rasgele döngüler üretir. Bu sorunu çözmek için virüs, ana verileri şifrelerken rastgele üretecin başlangıç ​​değerlerini depolar ve bu verilerin şifresini çözerken aynı değerlere sahip polimorfik jeneratörü çalıştırır. Sonuç olarak, jeneratör, ana veriyi şifrelemek için kullanılan kodun aynısını getirmekte ve bu rutinin onu şifresini çözerek çalıştırılmaktadır.

EXE dosyaları bulaşıyor (ekleme)

Dosya uzunluğu 32 K'dan büyükse, virüs, EXE ana modülünün başlangıcına gider (EXE başlığından hemen sonra), kodun 6K'sını okur ve orada C / Pascal rutinlerini arar. Genellikle C / Pascal rutinleri, BP kaydını kaydeden aynı "başlık" dan başlar ve yığın gösterici SP'yi BP'ye taşır.

Virüs, bu "üstbilgiler" için kodu tarar ve bu tür bir kod bulunursa, virüs bir sonraki alt yordamın veya yer değiştirilmiş adresin çakışmasını önlemek için RET veya CALL FAR talimatı için sonraki 54 saat bayt kodunu tarar. Böyle bir kod (RET veya CALL FAR) bulunursa, virüs enfeksiyon rutininden çıkar.

Sonra virüs bu rutinin 54h byte'ını okur, virüs yükleyicisinin koduyla yazar, daha sonra ana virüs gövdesini polimorfik motorla şifreler ve dosya sonuna kaydeder. Daha sonra virüs, basit SUB fonksiyonu ile alt programın orijinal kodunu ve yükleyicinin ikinci kısmını şifreler ve dosyayı dosyanın sonuna kaydeder. Sonra virüs, dosyanın sonuna "rastgele" enfeksiyon yöntemi ile aynı şekilde rastgele veriler yazar.


Enfekte bulaşmadı
———— ——–
+ ————– + + ————– +
�Exe Başlık � �Exe Başlık �
+ ————– � + ————– �
�Ana EXE kodu � �Ana EXE kodu �
� ————– � � ————– �
/C / Pascal subr � – + �Virus yükleyici � Bölüm 1, 52h bayt, şifrelenmemiş
� ————– � � � ————– �
EXE � � � Ana EXE kodu �
� � � � (devam) �
+ ————– + � + ————– �
� �Virus pol Polimorfik döngülerle şifrelenmiş
� � ————– �
Command �Virus loader SUB Bölüm 2, SUB komutu ile şifrelenmiş
H � ————– � 70 sa bayt
+ -> �Saved kodu pat Yamalı alt yordamın orijinal kodu,
SUB ile şifrelenmiş h ————– � 52h bayt
�Random verileri � dosya uzunluğu / 9Dh, kalan 25h
+ ————– +
Yükleyicinin çalıştırılması, PSP alanlarını kullanarak ana dosya adını arar, dosyaları açar, dosya sonuna arar, daha sonra damlalıkların ikinci kısmını okur, çözer ve çalıştırır. Bu bölüm, yamalanmış alt yordamı geri yükler, sistem belleğini (geleneksel veya UMB) ayırır, ana virüs gövdesini okur ve denetimi şifre çözme polimorfik döngüsüne geçirir. Bu döngü virüs gövdesinin şifresini çözer ve kontrolü kurulum rutinine geçirir.

Bu çok sinsi bir enfeksiyon yoludur. Virüsün kodu dosyada gizlidir ve dosya kodundan virüs koduna doğrudan giriş yoktur. Virüs yükleyiciyle değiştirilen alt program, "nadiren" gerçekleştirilebilir. Örneğin, hata iletisini görüntüleyen alt yordam. Böylece virüs, bu tür dosyalarda uzun süre "uyuyabilir" ve daha sonra sisteme bazı sınırlı koşullar altında atlar ve bulaşır.

Arşivleri Arşivleme

Arşiv durumunda virüs, virüs bulaşmış COM damlalık görüntüsünü belleğe alır ve arşive ekler. Bu COM damlalıkları her zaman JMP komutu ile başlar, ardından rastgele veriler, şifrelenmiş virüs kodu ve şifre çözme polimorfik döngüdür. JMP komutu, kontrolü şifre çözme döngüsüne getirir.

Damlalık adı rastgele seçilir ve .COM uzantısı ile tamamlanır, örneğin:


HAIF.COM, UCM.COM, DOO.COM, VLG.COM, vb.
Arşiv alanlarını işlerken virüs harici bir yardımcı program kullanmaz, ancak gerekli tüm alanları kendisi doldurur. Virüs damlalığı paketlemez, ancak "saklanmış" yöntemini kullanır – virüs "olduğu gibi" arşivde saklanır. Virüs bulaşırken arşiv içeriğini kontrol eder ve iki kez enfekte etmez.

OBJ ve LIB Dosyalarını Enfekte Etme

OBJ / LIB modüllerini enfekte ederken virüs dosya alanlarını kontrol eder, oluşturur ve polimorfik döngülerle şifrelenmiş virüs kodunu içeren yeni nesne kayıtlarına ekler.

Nesne dosyasını tararken, virüs, C / Pascal alt yordamı "üstbilgisi" için olduğu gibi EXE dosyasının içine eklenirken bu dosyanın kodunu denetler ve yalnızca bu kodun bulunması durumunda dosyalara bulaşır. Ancak OBJ veya LIB modülünde virüs, yükleyicinin kodlarını oraya indirmez, fakat C / Pascal başlığını CALL komutuyla (E8xxxx) üzerine yazar.

CALL'in virüs polimorfik şifre çözme döngüsüne kontrolü getirdiği yürütülebilir dosyaya bağlı olmak. Bu döngü virüs kodunu çözer ve kontrolü virüs yükleme rutinine geçirir.

EXE dosyalarının (ekleme) yanı sıra ÇAĞRI kontrolünü asla alamaz ve virüs uzun süre uyuyabilir. Ancak bazı koşullar altında virüs dışarı fırlayabilir ve sistemi enfekte edebilir.

INT 25h İşleyici

Bu işleyici, INT 25h seviyesinde gizli rutini gerçekleştirmektedir. Dizin girişlerine erişilirken virüs, dosya uzunluğunu orijinal olanlarla değiştirir, virüs bulaşmış dosyanın üstbilgisini okurken virüs geri yükler ve orijinal biçimini getirir.

Virüs, tabii ki, INT 25h seviyesinde% 100 gizlilik gerçekleştirmiyor. Gizli rutini atlamanın yolları var. Ancak, bazı anti-virüs programları, dosya içeriğini INT 21h DOS işlevleriyle okursa, dizin yapısını okur ve sonra içeriğini 25 INT çağrıları mutlak olarak arar, virüs görünmez kalır.

Tetik Rutin

ZIP dosyaları işlenirken, virüs "saklanan" yöntemle dolu bir kayıt bulur, ZIP dosyasının tarih ve zaman damgasını kontrol eder. Bu dosyanın son değiştirilme yılı 1996 ya da daha fazlaysa, virüs, C: 'den Z:' ye kadar olan tüm disklerin tüm dizinlerinin tüm dosyalarını arar ve daha sonra dosyaları ve tüm alt dizini siler.


Orijinaline link