Başlangıç Tehditler Virus Virus.Win9x.CIH
Bulunma tarihi 11/20/2002
Bu, yaklaşık 1Kbyte uzunluğunda olan Windows PE dosyalarını (Taşınabilir Yürütülebilir) enfekte eden bir Windows95 / 98 spesifik parazit virüsüdür. Çernobil olarak da bilinir. Bu virüs, Haziran 1998'de Tayvan'da "vahşi-vahşi" bulundu ve o zamanlar yerel bir üniversitede okuyan virüs yazarı tarafından serbest bırakıldı. Virüs (yanlışlıkla?), Virüsü Tayvan'dan serbest bırakan yerel bir İnternet konferansında yayınlandı. Bir hafta içinde virüs, Avusturya, Avustralya, İsrail ve Birleşik Krallık'ta bulundu ve ayrıca bazı diğer ülkelerden (İsviçre, İsveç, ABD, Rusya, Şili, vb.) Rapor edildi.
Yaklaşık bir ay içinde, virüs bulaşan dosyalar, küresel virüs salgınına neden olan ABD'de (oyun yazılımı dağıtım siteleri) birkaç Web sitesine yerleştirildi. Virüsün 26 Mart 1999'daki görüntüsünden yaklaşık bir yıl sonra, virüs kodundaki "zaman-bomba", bir milyon bilgisayarın yarısının virüs enfeksiyonu nedeniyle zarar gördüğünde bir bilgisayar felaketine neden oldu: hepsi, sabit diskteki verileri kaybetti Ve bunların birçoğu anakart BIOS'u da yok etti (ayrıca sabit sürücü verileri hasar gördü). Bu olay, şu ana kadar bilinen küresel ve korkunç bir bilgisayar olayı olmadığı için önemliydi.
Virüs “bomba” günü, 26 Nisan 1986'da dünyayı sarsan Çernobil felaketinin gününe denk geldiği için, “CIH” olarak bilinen virüs, ikinci adını aldı – "Çernobil".
Buna rağmen, virüs yazarı Çernobil'le “bomba” bağlantısını yapmamıştı (belki de Çernobil'den haber bile duymamıştı). Başka bir nedenle "bomba" günü seçildi. İlk virüs versiyonu (şans eseri Tayvan'dan ayrılmadı) 26 Nisan 1998'de serbest bırakıldı, böylece virüs 26 Nisan 1999'da "doğum günü" kutladı.
Virüs kendisini Windows belleğine yükler, dosya erişim çağrılarını kancalar ve açılan EXE dosyalarını bozar. Sistem tarihine bağlı olarak (aşağıya bakınız), virüs tetikleme rutini çalıştırır. Virüsün hataları vardır ve bazı durumlarda, virüslü bir uygulama çalıştırıldığında bilgisayarı durdurur.
Virüs 'tetikleme yordamı, Flash BIOS bağlantı noktaları ile çalışır ve "çöp" ile Flash belleğinin üzerine yazmaya çalışır. Bu sadece anakart ve yonga seti yazının Flash belleğe yazılmasına izin veriyorsa mümkündür. Genellikle Flash belleğe yazmak DIP anahtarıyla devre dışı bırakılabilir, ancak bu anakart tasarımına bağlıdır. Ne yazık ki, bir DIP anahtarıyla korunamayan modern anakartlar da var – bazılarının anahtar pozisyonuna dikkat etmediği ve bu korumanın hiç bir etkisi olmadı. Diğer bazı anakart tasarımları, yazılım tarafından devre dışı bırakılabilen / devre dışı bırakılabilen yazılı koruma sağlar.
Tetik rutini daha sonra kurulu tüm sabit sürücülerdeki verilerin üzerine yazar. Virüs, bunu başarmak için doğrudan disk yazma çağrıları kullanır ve MBR ve önyükleme sektörlerinin üzerine yazarken standart BIOS virüs korumasını atlar.
Çok yakından ilişkili olan ve sadece kodlarının birkaç bölümünde farklı olan üç "orijinal" virüs sürümü vardır. Virüs kodunun içinde farklı uzunluklara, metinlere ve tetikleme tarihlerine sahipler:
Uzunluk Metin Tetikleme Tarihi-In-The-Wild
26 Nisan'da 1003 CIH 1.2 TTIT
26 Nisan'da 1010 CIH 1.3 TTIT YOK
Her ayın 26'sında 1019 CIH 1.4 TATUNG var – birçok rapor
Bir dosyaya bulaşırken virüs, dosya gövdesinde "mağaralar" arar. Bu mağaralar, PE dosya yapısının bir sonucudur: tüm dosya bölümleri, PE dosya başlığında tanımlanan bir değere göre hizalanır ve bir önceki bölüm ile bir sonrakinin sonu arasında kullanılmayan dosya veri blokları vardır. Virüs bu mağaraları arar ve kodunu onlara yazar. Virüs daha sonra bölümlerin boyutunu gerekli değerlerle artırır. Sonuç olarak, dosya uzunluğu bulaşma sırasında artmaz.
Yeterince büyüklükte bir mağara varsa, virüs kodunu bir bölümden kaydeder. Aksi halde, kodunu birkaç parçaya ayırır ve bunları birkaç bölümün sonuna kaydeder. Sonuç olarak, virüs kodu, virüslü dosyalarda tek bir blok olarak değil, parça kümesi olarak bulunabilir.
Virüs ayrıca PE başlığında bir mağara arar. 184 bayttan daha az olmayan kullanılmayan bir blok varsa, virüs başlangıç ​​rutinini oraya yazar. Virüs, daha sonra PE başlığında giriş adresini, başlığa yerleştirilen başlangıç ​​rutini gösteren bir değerle yamalar. Bu, "Win95.Murkry" virüsünde kullanılan aynı numaradır: bazı dosya bölümlerine değil, dosya giriş noktalarına yönelik adres giriş dosyalarının adresi, yüklenebilir dosya verilerinin dışında. Buna rağmen, virüs bulaşmış programlar sorunsuz çalışır – Windows bu tür "garip" dosyalara herhangi bir dikkat göstermez, dosya başlığını belleğe yükler, sonra bölümler oluşturur ve sonra kontrolü PE başlığında virüs başlatma rutinine geçirir.
Virüs başlatma rutini kontrol altına alındığında, PageAllocate VMM çağrısını kullanarak bir bellek bloğu tahsis eder, kendisini oraya kopyalar, diğer virüs kodu bloklarını bulur ve bunları da tahsis edilen bellek bloğuna kopyalar. Virüs daha sonra sistem IFS API'sini kancalar ve ana programa kontrolü döndürür.
Virüs kodunun bu bölümündeki en ilginç şey, virüsün Ring3'ten Ring0'a atlamak için oldukça karmaşık hileler kullanmasıdır: virüs yeni tahsis edilen belleğe atlandığında, kodu daha sonra Ring0 rutini olarak yürütülür ve virüs dosya sistemi çağrılarını kancalayın (tüm kullanıcıların uygulamalarının yürütüldüğü Ring3'te mümkün değildir).
IFS API virüs işleyicisi sadece tek bir işlevi – dosya açmayı engeller. PE .EXE dosyaları açıldığında, yeterli boyutta mağaralar varsa, virüs onları enfekte eder. Enfeksiyondan sonra virüs dosya tarihini kontrol eder ve tetikleme rutini çağırır (yukarıya bakın).
Tetik rutinini çalıştırırken virüs, Flash BIOS bağlantı noktalarına ve VxD doğrudan disk erişim çağrılarına (IOS_SendCommand) doğrudan erişim kullanır.
Bilinen diğer virüs sürümleri
Orijinal virüs yazarı, etkilenen EXE dosyalarında yalnızca virüs kodlarını değil, aynı zamanda bir virüs kaynağı (assembler) kodunu da serbest bıraktı. Bu kaynak kodu yamalanmış, yeniden derlenmiş ve bunun sonucunda yeni virüs sürümleri bulundu. Bu sürümlerin çoğu buggy ve çoğaltamaz, ancak diğerleri yapabilir. Hepsi orijinal virüslere çok kapalı, ancak birkaç farklılık var. En önemli fark, "bomba" tarihinin değişmiş olmasıdır ve virüsün yeni türevleri, diğer günlerde verileri ve Flash BIOS'u siler veya bu rutin asla çağrılmaz.
Ayrıca virüsün "orijinal" sürümleri de vardır, böylece başka "bomba" günlerine sahip olurlar. Bunun nedeni aslında esprili: virüs, geçerli gün ve ay sayısını iki sabitle (iki bayt) karşılaştırarak tetik tarihini kontrol eder. Bu sabitleri yayarak, virüsün bilgisayarları yok edeceği herhangi bir günü seçmek mümkündür.