Win95.CIH.based

This is a Windows95/98 specific parasitic virus infecting Windows PE files (Portable Executable), about 1Kbyte of length. This virus was found in-the-wild in Taiwan in June 1998 - it was released by virus author in a local university he was studied this time, then the virus was (accidentally?) posted to a local Internet conference that released the virus out of Taiwan: within a week the virus was found in Austria, Australia, Israel, United Kingdom, and was also reported from several other countries (Switzerland, Sweden, USA, Russia, Chile, e.t.c.).

In about a month the infected files were accidentally put on several Web sites in USA (game software distribution sites) that caused global virus epidemic. In about a year after virus appearing on March 26th 1999 the bomb in virus code caused the computer catastrophe. About half of million computers were damaged because of virus infection: all of them lost data on the hard drive, many of them also got a destroyed chip on the motherboard (plus to damaged hard drives). This incident was the major one - there were no such global and terrible computer incidents known.

Because the virus bomb day fall to the day of Chernobyl catastrophe, shocked the world on 26th April 1986, the virus, already known as CIH got its second name - Cernobyl .

Despite on this the virus author did not link his bomb with Chernobyl (maybe he ever haven\ t heard this name before). It seems the bomb day was selected by another reason. The first virus version (that fortunately haven\ t left Taiwan) was releases on April 26 1998, so the virus celebrated its birthday on April 26 1999.

The virus works

The virus installs itself into the Windows memory, hooks file access calls and infects EXE files that are opened. Depending on the system date (see below) the virus runs its trigger routine. The virus has bugs and in some cases halts the computer when an infected application is run.

The virus\ trigger routine operates with Flash BIOS ports and tries to overwrite Flash memory with garbage . This is possible only if motherboard and chipset allow to write to Flash memory. Usually writing to Flash memory can be disabled by a DIP switch, however this depends on the motherboard design. Unfortunately, there are modern motherboards that cannot be protected by a DIP switch - also, some of them do not pay attention for switch position and this protection has no effect at all. Some other motherboard designs provide write protection that can be disabled/overriden by software.

The trigger routine then overwrites data on all installed hard drives. The virus uses direct disk write calls to achieve this and bypasses standard BIOS virus protection while overwriting the MBR and boot sectors.

There are three original virus versions known, which are very closely related and only differ in few parts of their code. They have different lengths, texts inside the virus code and trigger date:

Length Text Trigger date Found In-The-Wild 1003 CIH 1.2 TTIT on April 26th YES 1010 CIH 1.3 TTIT on April 26th NO 1019 CIH 1.4 TATUNG on 26th of any month YES - many reports

Technical details

While infecting a file the virus looks for caves in the file body. These caves are a result of the PE file structure: all file sections are aligned by a value that is defined in PE file header, and there are not used blocks of file data between the end of previous section and next one. The virus looks for these caves and writes its code into them. The virus then increases the size of sections by the necessary values. As a result the file length is not increased while infecting.

If there is a cave of enough size, the virus saves its code in one section. Otherwise it splits its code into several parts and saves them to the end of several sections. As a result the virus code may be found as set of pieces, not as a single block in infected files.

The virus also looks for a cave in the PE header. If there is a not used block not less than 184 bytes of length, the virus writes its startup routine to there. The virus then patches the entry address in the PE header with a value that points to the startup routine placed in the header. This is the same trick that was used in the Win95.Murkry virus: address of program entry points not to some file section, but to file header - out of loadable file data. Despite this, infected programs are run with no problems - Windows does not pay attention for such strange files, loads the file header into the memory, then file sections, and then passes control to the virus startup routine in PE header.

When the virus startup routine takes control, it allocates a block of memory by using the PageAllocate VMM call, copies itself to there, locates other blocks of virus code and also copies them to allocated block of memory. The virus then hooks system IFS API and returns control to the host program.

The most interesting thing in this part of the virus code is that the virus uses quite complex tricks to jump from Ring3 to Ring0: when the virus jumps to newly allocated memory its code is then executed as Ring0 routine, and the virus is able to hook the file system calls (it is not possible in Ring3, where all users applications are run).

The IFS API virus handler intercepts only one function - file opening. When PE .EXE files are opened, the virus infects them, provided there are caves of enough size. After infection, the virus checks the file date and calls trigger routine (see above).

While running its trigger routine the virus uses direct access to Flash BIOS ports and VxD direct disk access calls (IOS_SendCommand).

Other known virus versions

The original virus author released to the wild not only virus code in affected EXE files, but virus source (assembler) code as well. These source code were patched, reocompiled, and new virus version were found because of that. Most of these versions are buggy and not able to replicate, but other do that. All of them are very closed to original viruses, but there are few differences. The main difference is that the bomb date was changed, and new variants of virus either erase data and Flash BIOS on other days, or this routine is never called.

There are also original versions of virus patched so that they have other bomb days. The basic of this fact is very silly: the virus checks the trigger date by comparing current day and month number with two constants (two bytes). By patching these constants it is possible to select any day the virus will destroy the computers.

 


News Download Order Support Free Contact
All rights reserved.

Copyright (c) 1999, 2000 VirDet Labs.


ßíäåêñ öèòèðîâàíèÿ