home *** CD-ROM | disk | FTP | other *** search
-
- *********************************************
- *** Reports collected and collated by ***
- *** PC-Virus Index ***
- *** with full acknowledgements ***
- *** to the authors ***
- *********************************************
-
-
- Report from Jim Bates - The Virus Information Service - 19th January
- 1991
-
- === FAUST Virus (aka SPYER & CHAOS) ===
-
- This virus was reported by a user as at large in the UK during
- January 1991. It apparently arrived attached to software imported
- from Hong Kong although there is a very slight possibility that
- infection occurred after importation.
-
- FAUST is a resident, parasitic virus which appends to executable
- files but does not infect COMMAND.COM. The infection process may
- possibly affect other file types if they are subject to the DOS LOAD
- & EXECUTE function request. There are two trigger routines, both of
- which are date activated on the 13th of any month, as well as a
- signature change during and after 25th December (any year).
-
- The primary trigger routine writes random garbage to a random
- position on the disk and this virus must therefore be classified as
- requiring immediate and total disinfection of any infected system if
- there is a risk that the primary trigger has been executed.
-
-
- OPERATION
-
- There are two distinct entry points to this virus, depending upon
- whether the host file is a COM or EXE type. The both entry points
- begin by issuing an "are you there?" call to DOS by placing a value
- of 0E7H into the AH register and requesting an INT 21H. If the
- virus is resident, the interrupt request will return with a value of
- 7Bh in the AH register. In this case, with COM files the original
- three bytes at the beginning of the program are repaired and program
- execution is returned to the start of the host program. With EXE
- files an immediate jump is implemented to the CS:IP setting
- contained within the original program header. If the virus is not
- resident, the processing at both entry points will relocate the
- virus code to offset zero of the code segment and then jump to the
- virus code proper.
-
- Once into the virus code proper, processing continues as follows for
- both types of infection:-
-
- A new stack is set up and a call is made to function 4AH of the DOS
- INT 21H to allocate around 1700 bytes of memory. No check is made
- to see if the memory was allocated successfully. A call is then
- made to obtain the system date and this is tested to see if a) it is
- earlier than 25th December, or b) it is the 13th of the month. If
- the date is 25th December or later, a signature used by the virus to
- recognise it's own presence within a file is modified. This
- modification occurs each time the virus is installed and will result
- in multiple infections of target files. Once January is reached and
- files have been infected with the latest signature version, they
- will not be re-infected until the process is repeated at the next
- 25th December. No other changes are made to the virus code and it
- is not known why this particular process has been incorporated. The
- recognition string reported below will identify all versions of the
- virus code since it does not include this signature. If the date is
- the 13th of the month, the virus installs three separate interrupt
- handlers - for INT 09h (Keyboard services), INT 13H (Disk I/O
- services) and INT 21H (DOS Functions). A temporary INT 24H
- (Critical Error) handler is also used within the INT 21H handler.
- If the date is NOT the 13th of the month, the INT 09H and INT 13H
- are NOT installed. Since these are concerned with the trigger
- routines this means that damage or interruption will not occur but
- file infection (via the INT 21H interception routines) will still
- take place. The operation of each interrupt handler is as follows
- :-
-
- INT 09H (installed 13th only) This is a simple interception routine
- which increments a counter within the virus code at every keystroke,
- and then tests its value. When the counter reaches 100 the video
- mode is set to 80 * 25 text (mode 2) and a short message is
- collected, decrypted and displayed before processing enters an
- infinite loop and the machine "hangs". The message is, "Chaos!!!
- Another Masterpiece of Faust...". This is where the identifying
- name of "FAUST" has been extracted from.
-
- INT 13H (installed 13th only) This handler invokes the primary
- trigger routine at every fifth disk access (ANY call to INT 13H)
- request. The counting process starts by incrementing a counter and
- testing for a value of 5. If the test fails processing continues
- unmolested, otherwise the trigger routine is executed. Counting
- does NOT start at zero but will vary according to the current month
- value recorded (and encoded) from the initial system date request.
- Thus for the months of January through to July (inclusive) and
- December, the initial count will start above 5 and will allow
- between 247 and 256 disk accesses before triggering. During August
- to November (inclusive) only 2 to 5 accesses are counted before
- triggering. The trigger routine itself holds the original INT 13H
- request and issues a Write instruction having first generated a
- random track/sector address. The instruction is to write 9 sectors
- taken from the caller's buffer area and the write process is always
- to head zero. No change is made to the drive specifier provided by
- the calling routine and this means that all local disks (fixed and
- floppy) are at risk.
-
- INT 21H (installed every time) This handler provides the infection
- routines and also the response to the "are you there?" call issued
- during initial execution. Apart from this function, the only other
- function intercepted is 4B00h (LOAD & EXECUTE). When this request
- is received, the virus first verifies that the amount of free space
- on the disk will allow the addition of virus code. Then the
- extension portion of the target filename is checked in an unusual
- way: counting back from the end of the filename, if the second
- letter is the same as the tenth letter (as in COMMAND.COM where the
- O's match) then infection is aborted. Then the file attributes are
- collected, stored and reset to allow write permission. Next, the
- first and last letters of the three letter extension are checked
- against each other. If they are the same then the virus sets a flag
- to indicate an EXE type file. This method obviously causes problems
- if a SYS file is processed with this function. Target files are
- checked for previous infection by examining the word at offset 41
- decimal from the end of the file. It is this word value which is
- incremented by four at every installation during and after 25th
- December. Thus the infection check will fail and files will gain
- multiple infections. In our sample, the value of this word was
- 1234H which may indicate that this version had NOT "mutated" in this
- way.
-
- The infection method is the (by now) fairly standard process of
- appending virus code to the file and modifying the initial program
- bytes (or header for EXE type files) to route processing through the
- virus code. The only major difference with this virus is that when
- an EXE type file is first loaded, the virus is installed and before
- being made resident (using DOS Function 31H), the original file is
- loaded and executed using the DOS 4B00H function. For EXE files
- which require large amounts of memory, this will result in Out of
- Memory errors at first execution.
-
- The general coding of this virus is extremely primitive and seems to
- have been written by a newcomer to assembler programming. The usual
- infantile message persuades me to advise the programmer NOT to give
- up his day job (presumably he is employed as a deranged vagrant).
- Despite the Hong Kong connection reported above, the use of the word
- "Chaos" in the message may indicate a connection with that odious
- group known to propagate virus code from Germany and other places in
- Europe. Alternatively, it could simply be an attempt at plagiarism.
- Interrupt handlers are installed using DOS functions 35H and 25H and
- the whole code is made TSR with function 31H. No encryption (apart
- from the message) is used and the code is easy to detect and defend
- against. However, the nature of the primary trigger routine is such
- as to make vigilance necessary since, like the Nomenklatura virus,
- the very presence of the virus code may indicate corrupted data
- which can not be quantified or repaired.
-
- Virus Information
- The virus is called FAUST, it is a resident virus which infects
- executable files via intercepted Load & Execute function calls.
- Infective length is 1184 bytes and a reliable recognition string is
- as follows :-
-
- B87A 0050 06B8 FD00 5026 C706 FD00 F3A4
-
- this will be found at offset 44H (68 decimal) from the start of the
- virus code. I do not normally recommend disinfection of parasitic
- viruses, but if valuable code becomes infected, and no backups are
- available, COM files can be repaired by replacing the first three
- bytes of the file with the second three bytes within the virus code
- (offsets 3, 4 and 5). EXE type files are repairable since the virus
- does not destructively overwrite any program code. However, the
- disinfection process is somewhat involved and not recommended
- without accurate reference to a full disassembly of the virus code.
-
- VIS Classification - CEARXD1184A
-
- The information contained in this report is the direct result of
- disassembling and analysing a specimen of the virus code. I take
- great pains to ensure the accuracy of these analyses but I cannot
- accept responsibility for any loss or damage suffered as a result of
- any errors or omissions. If any errors of fact are noted, please
- let me know at :-
-
- The Virus Information Service,
- Treble Clef House,
- 64, Welford Road,
- WIGSTON MAGNA,
- Leicester LE8 1SL
-
- or call +44 (0)533 883490
-
- Jim Bates
-
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ++++++++++++++++++++++++++ end of reports ++++++++++++++++++++++++
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++