Details
WildLicker.3372
It is a harmless memory resident parasitic polymorphic virus. It hooks INT 21h and writes itself to the end of COM files that are executed. The virus contains the text strings:
3all 2… 1… WILD LICKER !!! a PKWARE+NUKE+TRIDENT virus for your fucked
pentium (bug inside)
thanks to [NuKE] N.R.L.G. AZRAEL
thanks to PKWARE
PKLITE Copr. 1992 PKWARE Inc. All Rights ReservedNot enough memory
and thanks to [ MK / TridenT ]
[TPE 1.4]
The virus seems to be a compilation of two different engines with new ideas of hiding in PKLITE-like code. These engines are virus constructor NRLG and polymorphic generator TPE. The virus installation routine is the same that NRLG viruses use in their code, and the virus code in the file is encrypted by using TPE polymorphic loop.
To mask virus in PKLITE-like code is the main feature of that virus. The jump-to-EntryPoint instruction does not present in clear in the infected file, but is processed by original PKLITE 1.15 decompression code that PKLITE puts to the beginning of COM files while compressing them. As a result, the virus code is encrypted by TPE polymorphic engine, and jump to entry point is hidden in PKLITE code and data.
Infection
When this virus is infecting a file, it allocates a block of memory to use it while infecting, hooks INT 24h to prevent standard DOS error message while accessing write-protected disk, gets and saves file attributes and date&time stamp.
To separate the infected and not infected files the virus uses time and date stamp. It makes logical ‘or’ operation with seconds field - OR 0Ah, i.e. sets 3rd and 1st bit in stamp. When separating the files the virus checks these bits in stamp and does not infect file, if these bits are set. Moreover, the virus sets this stamp ever it fails to infect the file. As a result all files that have been accessed by this virus have new value in seconds field, and next time the virus ever does not try to infect the file that has been accessed by virus before.
Then the virus compares the internal file format with EXE stamp MZ (the virus does infect only COM files) and checks file length. If the file length is less than 512 bytes or greater than 50K, the virus terminates infection routine.
If all conditions are correct, the virus moves 512 (200h) bytes from file header to the end of file, then overwrites file header with 1CFh bytes of PKLITE entry code. It then runs TPE polymorphic engine, encrypts itself and writes the result to the end of the file:
0000 +———–+ ——-+ +————+
¦File header¦ ¦ ¦PKLITE entry¦
¦ ¦ ¦ ¦code ¦
¦ ¦ ¦ ¦————¦
¦ ¦ ¦ ¦ ¦
0200 ¦———–¦ -+ ¦ ¦————¦
¦ ¦ ¦ ¦ ¦ ¦
. . . . . . . .
¦ ¦ ¦ ¦ ¦ ¦
FEnd +———–+ ¦ +-> +————¦
¦ ¦Original ¦
¦ ¦file header ¦
¦ ¦ ¦
¦ ¦ ¦
FEnd+0200 +——-> ¦————¦
¦TPE polymorp¦
¦loop ¦
¦————¦
¦Encrypted ¦
¦virus code ¦
¦ ¦
+————+
Execution
When an infected file is executed, the control is passed to PKLITE entry code. That code is 100% PKLITE version 1.15 entry code that is saved by PKLITE to the beginning of compressed COM files. When run, that code decompresses a JMP_Virus routine, copies it to the beginning of the program and passes the control to there, the same as original PKLITE routine does.
In detail, 1CFh bytes that the virus saves to beginning of the file decompress themselves to 200h bytes data that is filled with zero byte and contain the instruction JMP NEAR Virus_Entry (E9h XXXXh) at the top:
Before decompression After decompression
0000 +————+ +————+
¦PKLITE entry¦ ¦JMP Near ¦ —+
¦code ¦ ¦ ¦ ¦
¦————¦ ¦ ¦ ¦
¦ ¦ ¦ ¦ ¦
0200 ¦————¦ ¦————¦ ¦
¦ ¦ ¦ ¦ ¦
. . . . . . . . ¦
¦ ¦ ¦ ¦ ¦
FEnd +————¦ +————¦ ¦
¦Original ¦ ¦Original ¦ ¦
¦file header ¦ ¦file header ¦ ¦
¦ ¦ ¦ ¦ ¦
¦ ¦ ¦ ¦ ¦
FEnd+ ¦————¦ ¦————¦ <–+
0200 ¦TPE polymorp¦ ¦TPE polymorp¦
¦loop ¦ ¦loop ¦
¦————¦ ¦————¦
¦Encrypted ¦ ¦Encrypted ¦
¦virus code ¦ ¦virus code ¦
¦ ¦ ¦ ¦
+————+ +————+
If someone tries to decompress any infected file, decompression brings just 200h-bytes file with JMP-out-of-file command at file beginning. By PKLITE’s point of view, the file contains just 200h bytes, and all other data are just like some kind of internal overlay. As a result, decompression corrupts the file and erases the virus code.