💾 Archived View for spam.works › mirrors › textfiles › virus › crcrevue.vir captured on 2023-06-16 at 21:01:53.

View Raw

More Information

-=-=-=-=-=-=-

       Comparison: Products to Detect Changes to Programs

               Prepared by David J. Stang, Ph.D.
                     and (c) 1990, 1991 by
           the National Computer Security Association
              Suite 309, 4401-A Connecticut Ave NW
                       Washington DC 20008
                       Voice: 202-364-8252
                        BBS: 202-364-1304

This document may be freely distributed, but may not be altered
in any way.

This is a review of some of those checksum or CRC comparison
programs. In it, I make an effort to concisely describe the 
merits of this class of products, and then to help
you in selecting a product from their ranks.

There is a difference between checksum algorithms and CRC --
cyclic redundancy check -- algorithms. The latter usually uses a
table, and is usually a bit slower than the former. Despite the
differences, many authors seem to use the words
interchangeably, and we will continue the sloppy practice in this
chapter.

Each file has a unique  fingerprint in the form of a checksum
or CRC. Changes in any character within the file likely change
the checksum or CRC. If a file's original CRC is known --
perhaps recorded in a file elsewhere -- and its current CRC is
known, the two values can be compared. Any difference indicates
that the file has been changed, and offers reason to investigate
further. For example, DELOUSE allows you to build a list of
critical system files that are normally subject to attack, and
check them periodically for changes.

If a program's size is changed, it must be concluded that some
modification has occured to the file. If the size has not changed,
some modification is still possible. A file that contains the simple
message  Hi Mom! could be modified so that it contained the
message  Hi Dad!, and it would not show any change in size.

A much tougher test of whether a file has been modified is to
compute the  checksum or CRC cyclic redundancy check. At
this writing, there are no viruses able to modify a file without
modifying the file's CRC. Thus any checksum checker will work
just fine in catching viruses, providing that you use it to
establish checksums before a virus has modified your files.

How is the checksum computed? Simply adding the values of all
the characters in the file is not enough, as a file containing just
"AE" would produce the same result as a file with just "EA".
Rather, the first byte of a file is read, and an algorithm applied
to it. This algorithm does something to the value of the byte,
such as rotating the bits a certain number of times, and logically
ANDING or ORING the bits to something else. The result of
that algorithm is then applied to the next byte of the file. The
process is repeated until the final byte is reached, and the
remainder is recorded. During this process, different algorithms
might be used for different portions of the code being processed.
With most procedures, a small file produces a checksum value of
the same size as a large file.

Is there such as thing as "the" CRC value? No. The algorithm
used defines the result. There are two popular algorithms in use:
a standard CCITT CRC and a popular XMODEM CRC. Consider
COMMAND.COM for DOS 3.3 dated 2/2/88 and taking 25308
bytes. Here are some of the checksums produced for this file by
various programs. SSCRC and Validate (method 1) use the
CCITT standard. All others in the list use some other approach.

	o	BSearch, 16-bit CRC - 13369 (3439 h)
	o	BSearch, CRCTT - 10994 (2AC0 h)
	o	CHKSUM - 20011 (4E2B h)
	o	CRCDOS - 59676 (E91C h)
	o	Delouse, method 1 - 1073916 (1062FC h)
	o	Delouse, method 2 - 1067428 (1049A4 h)
	o	Delouse, method 3 - 1048666 (10005A h)
	o	The Detective, CRC 1 - 26939 (693B h)
	o	The Detective, CRC 2 - 54914 (D682 h)
	o	Module Integrity Check - 24922 (615A)
	o	SSCRC - 52167 (CBC7 h) 
	o	Validate, method 1 - 52167 (CBC7 h)
	o	Validate, method 2 - 4024 (0FB8 h)
	o	VCheck - 2141344 (0020ACA0 h)



                       WHY DETECT CHANGES?



There are several good reasons.

	o  Viruses have great difficulty infecting your machine
         without making some change in it. To detect a change
         is to begin the process of detecting a virus. Although
         some are concerned that a change-detecting program
         cannot prove there isn't already a virus in your
         computer, the fact is that you needn't worry about this.
         If you infect your computer with a dozen viruses, then
         measure its state, one of these viruses will change that
         state in the next hour or so; a remeasurement
         establishes that something is afoot.

	o  Occasionally things go wrong with computer hardware
         and software. You run CHKDSK and discover a
         number of lost clusters in a number of lost chains. You
         scrap these clusters, but wonder what files you've lost.
         A proper change-detection program will give you a list
         of files deleted since your last run. You can then
         restore them from your backups.

	o  In many organizations, we only want to permit the use
         of "authorized software." Using a proper
         change-detection program, you can establish what
         software was added to the machine since your last run.
         Any "extra" software will quickly come to your
         attention.



                  CAN A VIRUS BEAT THE SYSTEM?


The answer may be yes. You need to know how, so it doesn't
happen to you. The defeat can come at the hands of a
CRC-aware virus (none exists yet) or at the hands of a stealth
virus (there are several now).



                        CRC-AWARE VIRUSES


In theory, a virus could be written that would compute a file's
CRC, add itself to the file, then replace additional characters
from the file until the new CRC was the same as the old one.
Such a virus would escape the attention of many checksum
checkers.

Programs could catch such a virus by using an  incremental
cyclic redundancy check approach. In this approach, files are
dissected into randomly-sized blocks of data, using dynamic
block size allocations that allow files as small as one byte to be
accurately checked. CHECKUP uses this approach. It scans and
compares every byte of the target files on a block-by-block basis.
If the recorded file sizes, any of the block CRC comparisons, or
the CRC totals do not match, CHECKUP alerts users that the
target files have been altered.

Another approach to the problem is to compute the check in two
different ways. For example, if both a checksum and a file size
were to be calculated and recorded for later comparison, it is
unlikely that a virus could be modified without mismatching on
one of the comparisons. Or if checksums were to be calculated
using two different algorithms, the virus would again likely fail
to fool both techniques.

Thus if some future virus were to compute checksums prior to
infections, pad their viral code with characters that maintain
checksum integrity and then infect, CHECKUP could catch it.



                         STEALTH VIRUSES


A stealth virus is able to defeat a checksum program if it loads
into memory before the checksum program runs. The stealth
virus can then detect the checksum program as it attempts to
read each program on the disk, and before letting the checksum
program see the file it is trying to read, extracting the virus
from it. After the checksum program is satisfied that there is no
virus in the file, the virus in memory can re-insert it into the
file just checked.

Such a problem can be easily avoided: simply boot the system
from an uninfected floppy, then run your checksum program
from it.

In the tables presented here, space has been provided for you to
rate an additional product.



                       PRODUCT COMPARISONS




                           EASE OF USE


Conducting these evaluations was not easy. In the table below, I
record my joy or frustration in trying to master the program.

	Alert

         This program makes claims of ease of use, with a
         pop-up, drop-down menus, mouse support, nifty sound
         effects, and the like. But the blinking text on the
         screen will certainly drive you crazy, if you are still
         sane after waiting, Alert would like to run McAfee's
         scan every time you add a file to the list it will check;
         it doesn't accept wild cards, so if you thought you
         would do a checksum on all of your files, assume that
         you won't be able to install it in less than a week.
         Installation and simple evaluation took 53 minutes.

	The Antibody Test

         Antibody's installation is extremely easy, if it works.
         You cannot simply copy the files to your hard disk --
         you must let Antibody do it for you. In the process,
         Antibody wants to check the integrity of your
         distribution disk. If you have any alien file on this
         disk, Antibody will abort after 3 or 4 minutes of
         self-examination. Beat the system by clearing the
         read-only and hidden attributes of SIGNATURE.DAT,
         then rename it. Antibody will create a new file for you
         and proceed. The manual includes a comprehensive list
         of error messages and their meanings.

	BSearch

         No installation required! Copy BSEARCH.EXE to
         anywhere on your hard disk, and run it with the
         obvious wildcards. For example, BSEARCH C:\*.* will
         examine everything.

	CHKSUM

         Simply copy to anywhere on your hard disk and enter
         "CHKSUM". You'll be prompted for what you should
         have entered.

	Checkup

         The most difficult of all the packages reviewed here.
         Documentation spans five files, and numbers almost
         100 pages. With such a mass of instructions, you are
         unlikely to have any success in installing the program.
         The verbosity extends to the log file, which you can
         create to record any file mismatches. The log file for a
         single run on 183 files was 270K - nearly 2K per file.
         Should you try to use the product on a large hard disk,
         your log would be worthless.

	CRCDOS

         As with CHKSUM, simply copy to anywhere and go!
         Instructions will appear on the screen if you simply
         enter "CRCDOS."

	Delouse

         It took just four minutes to completely understand how
         Delouse works and to begin building the file of CRC
         values. Installation is nothing more than copying a few
         files to anywhere on your hard disk. Delouse can also
         be run from a floppy.

	The Detective

         Copy and go. When first run, the program pops up a
         simple menu that works very well. You'll be asked
         what drives to process and what file extensions to
         check. Entering * will process everything. You'll be
         asked if you also wish to scan for viruses (meaning to
         compute CRCs) as you produce the file list for
         subsequent checks. Also, The Detective keeps itself
         up-to-date with each run. On every run, the most
         recent signatures are copied to the "old" list, and new
         signatures are computed for comparison.

	F-Prot

         Copy F-OSCHK to any location on your hard disk and
         enter F-OSCHK. It will display five numbers which are
         encrypted checksums of the partition table, boot record,
         and three operating system files. AUTOEXEC.BAT can
         then be given a line beginning with (path) F-OSCHK
         and followed by these five values.

	FICHECK

         Seemingly easy to use. Can be run from a menu or as a
         command line in a batch file. However documentation
         for the command line operation is poor, and misleading.

	Module Integrity Check

         Copy the file MIC to anywhere on your hard disk and
         enter MIC. There are no menus, nothing to select.
         You'll create a list of CRCs, if none exists, in your root.
         If one exists, it will be renamed "OLD", and another
         will be created. The two will be automatically
         compared. You'll be notified of any changes, any added
         files, and any deleted files. You'll also be notified if
         nothing has changed. All information is automatically
         sent to reports in the root. Nothing could be simpler.

	Novirus

         Copy the program to anywhere on your hard disk, and
         it makes a hidden file in the root containing what it
         claims is encrypted CRC, file date, time, and size
         information for each of the three system files.
         Installation and use are very easy.

	SSCRC

         Very easy. Copy the file to your hard disk, and run the
         program. Onscreen instructions tell you to enter /F to
         create the File of CRCs or /C to Check files against
         these CRCs. Requires ANSI.SYS

	Validate

         Very easy to use for finding the CRC of a single file.
         Simply copy VALIDATE to your drive, and run it.
         Impossible to use for checking the CRCs of all files, as
         it does not work with a list, does not accept wildcards,
         and will not compare current CRC with stored CRC.

	VCheck

         Fairly straightforward. You may need to follow the
         example in the manual to guess the spacing required
         for parameters in the command line. Results are
         displayed on your screen, and you'll need to press a key
         to continue scanning, after the screen fills. This
         ensures you'll spot a surprise change in a file, but
         doesn't deliver the kind of power that suits it for a
         batch file. Not menu-driven.

	VirusGuard

         Simply type INSTALL. VirusGuard will install itself on
         your hard disk and scan all COM and EXE files for
         their signatures. It will also modify your
         AUTOEXEC.BAT to automatically invoke RAMWATCH
         on subsequent boots. Our copy of the program did not
         come with documentation, however, so we are a bit
         limited in our review here.



                      NUMBER OF TECHNIQUES



The program should compute checksums using two different
approaches, or compute both file size and checksum, to ensure
that a virus doesn't modify a file in such a way that the
checksum isn't changed. Gilmore Systems has a program called
PROVECRC that creates a modified version of a file that is
different, but that has the same CRC as the original. The
program proves that a single CRC is not fool-proof for virus
detection, for it is possible to write a virus -- much like they
wrote PROVECRC -- which can add code to your programs
without changing the CRC. When two algorithms are used,
PROVECRC creates changes undetected by one, but detected by
the other.

	Alert

         Alert uses different algorithms on different portions of
         each file. A file records the results of these algorithms
         in encrypted form in a file which covers all of a group
         of files you wish to check. It is very unlikely that any
         virus author would have the interest or patience to
         break the scheme.

	The Antibody Test

         Antibody lists all files added or deleted since the last
         comparison, as well as showing any changes in size,
         date, time, or attributes.

	BSearch

         Stores filenames (with paths), file sizes, 16-bit and
         32-bit checksums in an indexed databases. Uses a
         binary tree indexed database structure to store the files
         quickly and allow even quicker searches and updates.

	CHKSUM

         Uses a single 16-bit checksum approach.

	Checkup

         Offers three different options for calculation:
         table-driven incremental CRC, cumulative CRC, and
         cumulative checksum.

	CRCDOS

         Uses a single 16-bit checksum approach.

	Delouse

         Uses three different checksum algorithms. All are
         simple, but slightly different in the way they calculate
         the checksum. One of these algorithms is chosen at
         random when Delouse starts, and the method number
         is recorded in a data file. You can force Delouse to
         choose one of the three methods if you wish.

	The Detective

         Uses two different 16-bit CRC algorithms.

	F-Prot

         F-OSCHK uses just one algorithm.

	FICHECK

         FICHECK uses one 16-bit algorithm, MFICHECK uses
         another. Both are bundled in the same package.

	Module Integrity Check

         Uses one 16-bit algorithm.

	Novirus

         Appears from testing that Novirus uses no checksum or
         CRC algorithm, despite the claims of its
         documentation. Using a sector editor, for instance, the
         word "Microsoft" was changed to "Machosoft" in
         COMMAND.COM. Novirus was unable to recognize
         this. I changed the attributes of the hidden system
         files, and again Novirus failed to detect the change. I
         renamed COMMAND.COM, infected it with Jerusalem,
         and renamed it to COMMAND.COM. Novirus
         recognized the change, but only because of the
         increased file size. When I used NU to reduce the size
         of the infected file to its original size, as listed in the
         root directory, Novirus did not recognize it as a
         problem. It appears that no checksumming is done,
         although this is claimed in the documentation. Checks
         on file existence, date, size, and time do appear to be
         done. For instance, I booted, deleted COMMAND.COM,
         and ran Novirus. Novirus halted the system. It also
         halted the system when I used NU to increase the size
         of COMMAND.COM to 999999999. 

	SSCRC

         Uses one 16-bit CCITT CRC algorithm.

	Validate

         Uses two 16-bit algorithms, one of which is CCITT
         CRC.

	VCheck

         Uses one 32-bit algorithm.

	VirusGuard

         Appears to use one algorithm. CRCs are encrypted.



                SCANNING OF CRITICAL SYSTEM FILES



On an MS-DOS hard disk, there are five critical system files
that are read during the boot process: the partition table, the
boot record, two hidden system files, and COMMAND.COM.
Because many viruses take up residence in the partition table,
boot record, or COMMAND.COM, it may be desirable to check
these files on each boot. Not all CRC programs, however, can
check all of these files. Two points are awarded for each file it
can check. Note that viruses rarely touch the two hidden system
files, and many do not touch COMMAND.COM Quite a few,
however, get into the partition table of the hard disk or boot
record of floppies.

	Alert

         Alert cannot examine the partition table or boot record.
         It can check the other three files.

	The Antibody Test

         Antibody does not check the partition table. It does
         check the other four files automatically, however.

	BSearch

         Does not scan partition table or boot record.

	CHKSUM

         Does not scan partition table or boot record.

	Checkup

         Does not scan partition table or boot record.

	CRCDOS

         Does not scan partition table or boot record.

	Delouse

         Does not scan partition table or boot record.

	The Detective

         Does not scan partition table or boot record. Further,
         the evaluation version (reviewed here) will not examine
         anything in the root, which is certainly the two hidden
         system files and likely COMMAND.COM.

	F-Prot

         F-OSCHK scans all five files.

	FICHECK

         Automatically checks the CRC of the partition table
         and the boot record, and logs this along with available
         disk space and FAT ID byte. For all files checked, logs
         date, time, size, attributes, and CRC, and reports any
         discrepancies. Checking of hidden system files,
         COMMAND.COM, etc. is at user discretion.

	Module Integrity Check

         Does not scan partition table or boot record.

	Novirus

         Does not scan partition table or boot record.

	SSCRC

         Does not scan partition table or boot record.

	Validate

         Does not scan partition table or boot record.

	VCheck

         Does not scan partition table or boot record.

	VirusGuard

         Does not scan partition table or boot record.



                COMPLEXITY OF CHECKING ALGORITHM



A 32-bit CRC is potentially harder for a virus to beat than a
32-bit CRC; a pair of calculations is harder than a single
calculation. In this table, 10 points are awarded for the use of a
32-bit CRC or two 16-bit CRCs; 5 points for a single 16-bit CRC;
0 for no CRC.

	Alert

         Algorithm is not discussed in the documentation.
         However, the encrypted CRC for just one file is 748
         bytes - about 5% of the checked file's length. This
         suggests that the algorithm is essentially unbreakable.

	The Antibody Test

         Algorithm is not discussed in the documentation.
         However, the encrypted CRC for just each file is 128
         bytes. This suggests that the algorithm is essentially
         unbreakable.

	BSearch

         Performs both 16-bit and 32-bit checksums.

	CHKSUM

         Performs CRC-16 -- 16 bit cyclic redundancy check.

	Checkup

         Performs CRC-16 -- 16 bit cyclic redundancy check.
         Results are encrypted.

	CRCDOS

         Performs CRC-16 -- 16 bit cyclic redundancy check.

	Delouse

         Performs CRC-16 -- 16 bit cyclic redundancy check.

	The Detective

         Performs both 16-bit and 32-bit cyclic redundancy
         checks.

	F-Prot

         Not described in documentation. Encrypts recorded
         checksums. Uses only one algorithm.

	FICHECK

         Computes CRC with FICHECK, modified CRC with
         MFICHECK. You can run both, if you wish, to defeat
         any imaginary virus that is able to defeat one of these
         approaches.

	Module Integrity Check

         Computes a checksum on part of the file. Uses only one
         algorithm.

	Novirus

         Does not appear to do any CRC/checksum computation.

	SSCRC

         Uses only one algorithm -- a 16-bit CCITT standard
         CRC.

	Validate

         Uses two 16-bit algorithms, one of which is CCITT
         CRC.

	VCheck

         Uses one 32-bit algorithm.

	VirusGuard

         Unknown.



                  SPEED WHEN CHECKING ALL FILES



From time to time, it may be desirable to check all files on the
hard disk for changes. However, if this process takes a long
time, users will not do it as often as they should. What is the
speed of checking files?

For our tests, we did CRC calculations on a 20Mb hard disk in a
12Mhz XT. The XT had a Norton SI of 1.8 for its computing
index, and 1.4 for its disk index, an overall performance index of
1.6 that of an IBM XT. It had a total of 2.3 Mb in 134 files in 19
directories. In each case, the checksum program was run from a
floppy. Timing was done with a shareware program called
TIMER. Numbers reported here are per file. Since it is not the
number of files, but the number of bytes, that determines the
overall speed of operation, your times will vary if your files are
larger or smaller, on average, than those in the test suite. Our
average file was 18,651 bytes. So to say that scanning files took
about 2 seconds a piece is to say that the program could scan
9,325 bytes per second. A 20 Mb hard disk, full to the brim,
would take such a program 37 minutes to scan fully. If you
restricted the program to COM, EXE, OVL, BIN, SYS, and other
executable files (an intelligent restriction), you might cut this
time in half or more.

	Alert

         I could not imagine waiting while Alert checked all
         files on the hard disk. Scanning just one file took 13.5
         seconds. Checking the 2.3 Mb on the test hard disk
         would have taken about 17.5 minutes. This is
         unacceptable.

	The Antibody Test

         Antibody is slow, but not as slow as some of the others
         tested here. It took 6 minutes, 14 seconds to scan all
         programs on the hard disk -- 71 files, about 5 seconds a
         piece. 

	BSearch

         Building the initial database of all files -- including
         manuals and other files -- took BSearch 10 minutes, 35
         seconds -- about 4.7 seconds each. Then scanning
         against this file took 10 minutes, 20 seconds -- about
         4.6 seconds each.

	CHKSUM

         To compare the three DOS files with CRCs previously
         computed took 5.6 seconds, about 1.9 seconds each.
         Testing everything in the root took 13 seconds for 8
         files, about 1.6 seconds each. 

	Checkup

         To build a list of CRCs for 183 files took 9 minutes, 16
         seconds, about 3 seconds each. It took 8 minutes, 35
         seconds to use the author's proprietary "enhanced"
         CRCs, about 2.8 seconds each. Using the checksum
         approach took about 2.8 seconds each. 

	CRCDOS

         To build a list of CRCs for 146 files, CRCDOS took 6
         minutes 27 seconds, about 2.6 seconds each. Testing
         everything on this list took 6 minutes, 24 seconds,
         again about 2.6 seconds each.

	Delouse

         To build a list of CRCs for 146 files, Delouse took 2
         minutes 38 seconds, about 1.1 seconds each. Testing
         everything on this list took 2 minutes, 35 seconds,
         again about 1.1 seconds each.

	The Detective

         To build a list of CRCs for 146 files, The Detective took
         3 minutes 57 seconds, about 1.6 seconds each. Testing
         everything on this list took exactly the same length of
         time.

	F-Prot

         Scans five system files in 10.0 seconds, 2 seconds per
         file. However, F-OSCHK cannot be made to calculate
         checksums on any files but these.

	FICHECK

         To build a list of CRCs for 146 files, FICHECK took 5
         minutes 27 seconds, about 2.2 seconds each. Testing
         everything on this list took 5 minutes, 24 seconds,
         again about 2.2 seconds each.

	Module Integrity Check

         To build a list of CRCs for 146 files, MIC took only 1
         minute 30 seconds, about .6 seconds each! Testing
         everything on this list took the same length of time.
         The program achieves this blazing speed by performing
         a checksum only on the parts of the file that a virus is
         likely to infect: the top and the bottom.

	Novirus

         Scans three system files in 1.54 seconds, .5 seconds per
         file. However, cannot be made to check any files but
         these, and does not appear to calculate checksums.

	SSCRC

         To build a list of CRCs for 146 files, SSCRC took 6
         minutes 27 seconds, about 2.6 seconds each. Testing
         everything on this list took 6 minutes, 10 seconds,
         about 2.5 seconds each.

	Validate

         To validate a selected file requires issuing the validate
         command for that file, then looking the result up
         on-line, from a BBS in California. Minimum time
         required: perhaps 3 minutes per file.

	VCheck

         To build a list of CRCs for 87 COM and EXE files,
         VCheck took 1 minute 55 seconds, about 1.3 seconds
         each. Testing everything on this list took 1 minutes, 25
         seconds, about 1 second each.

	VirusGuard

         To build a list of CRCs for 87 COM and EXE files,
         VirusGuard took 1 minute 39 seconds, about 1.2
         seconds each. Testing everything on this list took 1
         minute, 42 seconds, again about 1.2 seconds each.



                EFFICIENCY IN CHECKING ALL FILES



Does the program permit checking of all files with some option
such as "/ALL", or is it necessary to feed the program a list of
all the files you wish checked? The latter approach can be
grueling for any user with a large hard disk! Is there an upper
limit to the number of files that can be checked? Is the program
smart enough to check other logical drives, such as D:?

	Alert

         No. There does not seem to be any such efficiency
         possible. The programwants to scan one file at a time,
         and add one at a time to its list. Alert can only manage
         a list of about 200 files. Alert does not know that
         viruses do not inhabit documentation, and is likely to
         begin by scanning its own manual! Creating a list to be
         checked is very labor-intensive.

	The Antibody Test

         Antibody automatically scans the entire hard disk upon
         installation. It can manage about 3900 file signatures.
         Antibody ignores drives D:, E:, etc., however.

	BSearch

         There is no upper limit to the number of files that can
         be checked. Ignores D:, E:. As with Antibody, BSearch
         can be called from a batch file that scans specified
         drives, directories. Output showing changes can be
         routed to the printer, if this is desired. 

	CHKSUM

         Power is about equivalent to BSearch. You can do
         almost anything with batch files, but you will need to
         be a bit handy with an ASCII editor to do so. You'll
         need to specify if you want CHKSUM to look at D: for
         you. There is no limit on the number of files that can
         be checked. Unlike BSearch, CHKSUM will not look at
         subdirectories of the specified target, unless you tell it
         to.

	Checkup

         Checkup simply processes everything on your hard
         disk, and does not work from any input list. There is
         no upper limit on the number of files that can be
         scanned, other than your patience. Checkup is happy to
         point out that files have been changed, when they
         haven't been. This occurs because Checkup creates one
         X.XUP for every file beginning with X. Thus the
         signature for X.BAT is stored in X.XUPand the
         signatures for X.COM, X.SYS, X.BAK, etc. are
         compared with the contents of this file. With perhaps
         10% of such "claims" wrong, you will lose patience with
         it quickly. Checkup gets a 10 for efficiency, a 0 for
         accuracy. 

	CRCDOS

         CRCDOS will process an ASCII list of files you give it,
         a list you can create by entering CHKDSK *.* /v >>
         filelist You can then feed CRCDOS this list with a
         command such as CRCDOS -m crclist filelist. There is
         no upper limit on the number of files that can be
         scanned. D: and other drives are ignored unless
         CRCDOS is told to work them over. Like CHKSUM,
         CRCDOS will not automatically look at subdirectories
         of the specified target, unless you tell it to.

	Delouse

         Much like CRCDOS. Delouse will process an ASCII list
         of files you give it, a list you can create by
         entering CHKDSK *.* /v >> delouse.dat You can then
         feed Delouse this list with a command such as
         DELOUSE MAKE. This creates a file DELOUSE.CHK
         file, used during checking. To check, you enter
         DELOUSE CHECK. There is no upper limit on the
         number of files that can be scanned. D: and other
         drives are ignored unless Delouse is told to work them
         over. Like CHKSUM and CRCDOS, Delouse will not
         automatically look at subdirectories of the specified
         target, unless you tell it to.

	The Detective

         Intelligent menu-driven design. Prompts for drives, file
         extensions. It is easier (and more sensible) to make it
         simply check everything than to be selective.

	F-Prot

         Very efficient, but scans only the five system files.

	FICHECK

         Intelligent menu-driven design. Prompts for drives, file
         extensions. It is easier (and more sensible) to make it
         simply check everything than to be selective. Some
         selectivity (with *.COM, *.EXE, etc.) is easy; other
         selectivity (specific files) is harder to do.

	Module Integrity Check

         Checks all files automatically. Processes only the
         current logical drive. Cannot be made to scan
         selectively. Creates all reports, as disk files,
         automatically. Because it is so fast, we award nearly
         full points here.

	Novirus

         Cannot be made to check multiple drives. Cannot be
         made to check files other than the three system files.

	SSCRC

         There is no upper limit to the number of files that can
         be checked. Ignores D:, E:. As with Antibody and
         BSearch, can be called from a batch file that scans
         specified drives, directories. Output showing changes
         can be routed to the printer, if this is desired. 

	Validate

         No. There does not seem to be any efficiency possible.
         The programwants to scan one file at a time, and is
         unable to compare its results with anything in a list of
         recorded checksums.

	VCheck

         Checks all COM and EXE files automatically. Processes
         whatever logical drive you specify on the command line.
         Cannot be made to scan selectively. Cannot be made to
         scan SYS, BIN, OVL, or other files that might become
         infected. Creates all reports, as disk files,
         automatically. 

	VirusGuard

         Checks all COM and EXE files automatically. Processes
         whatever logical drive you specify on the command line.
         Cannot be made to scan selectively. Cannot be made to
         scan SYS, BIN, OVL, or other files that might become
         infected. If a file is changed, the machine pauses
         during signature checking, with the message "X.X has
         been modified. Press F1 to acknowledge."



               USER CONTROL OF FILES TO BE CHECKED



Because checking all files can take some time, users may wish to
provide the program with a list of files to be checked. Can this
be done? Can the user use their text editor or other convenient
tool to build the file list?

	Alert

         Yes. Users select those files they wish to check, via
         menu. The menu system can be used to build a file list
         for subsequent use. The file list is encrypted and not
         editable with any program other than Alert, however.

	The Antibody Test

         No. Antibody cannot be given a short list. You may add
         to its understanding of what should be checked, but
         cannot subtract.

	BSearch

         You can only list by file type and directory. Thus you
         can specify all COM files within each of 4 directories,
         all EXEs within another 2 directories, etc. Each
         instruction is offered on a separate command line, and
         can be run from a batch file. The database cannot be
         edited with most word processing programs, however.

	CHKSUM

         Building the list of files to check can be done easily by
         redirecting the program's output (">>") to a file, then
         editing this file into a batch file.

	Checkup

         No control.

	CRCDOS

         Extremely easy to use here. Hand CRCDOS a list of
         files, and it builds a list of CRCs for those files. Hand
         it this list, and it compares current and stored CRCs
         for changes.

	Delouse

         A bit easier than CRCDOS, even, in that file names to
         scan and to compare are hard-coded, so the command
         line is simpler: you only need to enter "Delouse Make"
         or "Delouse Check"

	The Detective

         The user controls the drive(s) to check, and the file
         extensions to check, but cannot control the directories
         to check or provide a list of specific files.

	F-Prot

         The user can choose to not check any of the five system
         files. But the user cannot get F-OSCHK to scan any
         other files than these.

	FICHECK

         The user controls the drive(s) to check, and the file
         extensions to check, but cannot control the directories
         to check or provide a list of specific files.

	Module Integrity Check

         MIC is so fast that it doesn't make any sense to
         attempt to force it to scan selectively. Let it scan
         everything. You're done. MIC is certainly the easiest to
         use, most efficient of all the programs described in this
         chapter.

	Novirus

         Offers no control over the checking process. Takes only
         one command line - /I makes it start over with a new
         database of information on the three files.

	SSCRC

         Offers no control over the checking process other than
         permitting scan of a directory, rather than the entire
         drive.

	Validate

         You can make it scan any file in any directory. But
         scanning two files requires two commands. Not
         practical for real-life.

	VCheck

         Offers no control over the checking process other than
         permitting scan of a directory, rather than the entire
         drive.

	VirusGuard

         VirusGuard is so fast that it doesn't make any sense to
         attempt to force it to scan selectively. Let it scan
         everything. You're done. MIC is certainly the easiest to
         use, most efficient of all the programs described in this
         chapter.



                  ADDING SELF-CHECKING TO FILES



The most efficient approach to checking files is not to check only
critical files, or all files, but rather to check files as they are
run. This checking can be done with either code which is added
to each file, or with a memory-resident driver, that monitors file
access.

Adding code to a file is the idea of "vaccination." The file is
modified so that when it is run, control is first passed to the
appended code, which then calculates the checksum of the file
with the checksum that was stored in that file at the time of
vaccination. A failed comparison can result in an alert to the
user. 

There are a few drawbacks to the approach. It slows processing
a small amount, it enlarges each file a small amount, it may not
work on COM files that are nearly 64K in size, since 64K is the
largest size supported by the COM format; it cannot work with
BIN, SYS, and OVL files; it cannot work with archived,
self-extracting EXE files, and so on. While some authorities,
such as Rich Levin, view such approaches as substantially
flawed, we are unconvinced.

	Alert

         This feature is not offered.

	The Antibody Test

         This feature is not offered.

	BSearch

         This feature is not offered.

	CHKSUM

         This feature is not offered.

	Checkup

         This feature is not offered.

	CRCDOS

         This feature is not offered.

	Delouse

         This feature is not offered.

	The Detective

         This feature is not offered.

	F-Prot

         The F-Prot package includes F-XLOCK, a program that
         can make any other COM or EXE self-checking.
         Entering F-XLOCK *.* will protect all COM and EXE
         files in the current directory. When infected, the
         program will hang the system and report "THIS
         PROGRAM HAS BEEN INFECTED!" and the system
         hangs.

	FICHECK

         This feature is not offered.

	Module Integrity Check

         This feature is not offered.

	Novirus

         This feature is not offered.

	SSCRC

         This feature is not offered.

	Validate

         This feature is not offered.

	VCheck

         This feature is not offered.

	VirusGuard

         This feature is not offered.



             OPTIONAL SYSTEM LOCKUP ON DETECTION OF
MODIFICATION



Many things can modify a program: a virus, a hacker, an error
in using a sector editor. If a program has been modified, do you
want to try to run it? The smart money says no, let's stop right
now and see what has happened here. Running any program
that contains a virus is certain to spread the virus. It might be
desirable if the system is able to prevent any modified program
from running.

	Alert

         You are given ample warning about what files have
         been modified. The warning is both auditory and
         visual, and the screen requires you to press a key after
         reading what has happened. The warning may not be
         accurate, however. I swapped the names of two test
         files, and Alert was unable to find one, told me the
         other was the wrong size. Both, in fact, were where
         they had been, but were completely modified. Further,
         the warning on the screen tells the user to consult the
         manual, rather than telling the user what to do next.

	The Antibody Test

         The log shows what has changed, and how. Optionally,
         you may ask the program to display any text in any
         file which has been changed since the last check.
         However, there is no system lockup if a modification is
         detected, nor are there any audible warnings.

	BSearch

         The log shows what has changed, and how. There is no
         system lockup if a modification is detected. A faint beep
         can be heard when any change is detected.

	CHKSUM

         Upon detecting a changed file, CHKSUM beeps and
         displays a message. But it doesn't pause in its labors,
         and the result of a massive infection is likely to go
         scrolling off the screen. No lockup takes place on
         mismatches.

	Checkup

         The documentation indicates that the system can be set
         to lockup upon detection of a mismatch. We were not
         able to create this effect on our test machine, however.
         Further, although the documentation claims to permit
         production of a log file, we were not able to do this.
         Our copy was downloaded from the author's BBS.

	CRCDOS

         There is an extensive screen message whenever a
         change is detected, but the system does not beep. No
         lockup takes place on mismatches, either.

	Delouse

         There is a modest screen message whenever a change
         is detected, but the system does not beep. No lockup
         takes place on mismatches, either.

	The Detective

         You won't get a beep or message on the screen. A
         report, sent to disk or your printer, lists the files that
         have been added, deleted, or changed since the last run
         of The Detective. Far too subtle for most users.

	F-Prot

         If any of the programs in the F-Prot package becomes
         infected with any virus, or changed in any way, it
         reports "THIS PROGRAM HAS BEEN INFECTED!". If
         any program is protected with F-XLOCK, it will then
         hang the system.

	FICHECK

         You won't get a beep or message on the screen. A
         report, sent to disk or your printer, lists the files that
         have been added, deleted, or changed since the last run
         of FICHECK. Changes noted can include size, date,
         time, crc. If the report is not requested, or not
         requested correctly, or sent to disk, users may not
         become aware of virus-induced changes.

	Module Integrity Check

         You get several very nice reports, automatically placed
         in your root, showing files removed, added, and
         changed since the last run. If a file has been changed
         for any reason, MIC will tell you, and will tell you to
         read the change report.

	Novirus

         If Novirus does manage to find a problem with a
         change in the time, date, size or presence of one of your
         three system files, it will halt the system and display a
         full-screen warning message.

	SSCRC

         You won't hear a beep. You might see a notice go past
         on the screen when a changed file is found. At the end
         of the scan, you'll see a summary table, including a row
         showing number of files failing CRC. Their names are
         listed at the top of REPORT.CRC, placed in the root.
         Your batch file that invokes SSCRC could send this
         report to the printer, if you wished. There is no system
         lockup. We might want this less subtle.

	Validate

         Because Validate makes no comparison with
         pre-recorded CRCs, it cannot know if there is a
         problem with a file. It is happy to scan infected files
         and report their CRCs. 

	VCheck

         You won't hear a beep. You will see a list, on screen, of
         exactly which COM and EXE files have different CRCs
         or sizes. Their names can be listed in a report you
         create, which can be sent to the printer. There is no
         system lockup.

	VirusGuard

         No beeps. But you'll see the changed program listed on
         the screen, with the message that it has been modified.
         You'll need to tap a key to remove the message from
         the screen. There is no system lockup, and no hard
         copy report or file of changes is created.



               SELF-PROTECTION OF CHECKSUM PROGRAM



If a checksum program becomes infected, it then puts the virus
into memory before it begins to run. A stealth virus in memory
is able to remove itself from any file as the file is checksummed,
preventing the checker from finding the virus. Thus we need
some notification that the checksum program has been infected.
Ideally, the checker reports that it has been infected and quits
running.

To test this, we infected each checker with Jerusalem-B, and
tried running it.

	Alert

         Alert runs no worse with an infection than without one,
         and never seems to notice that it has become a carrier
         of Jerusalem. 

	The Antibody Test

         As with Alert, Antibody runs just fine after infection.

	BSearch

         As with Alert and Antibody, BSearch runs just fine
         with a Jerusalem infection.

	CHKSUM

         Runs well when infected.

	Checkup

         Runs as well when infected as when not infected --
         poorly.

	CRCDOS

         Runs well when infected.

	Delouse

         Runs well when infected.

	The Detective

         Runs well when infected.

	F-Prot

         F-OSCHK reports that it has been infected. F-XLOCK
         reports that it has been infected, and hangs the
         system.

	FICHECK

         Runs well when infected. Includes an option to
         self-check for virus infection. The self-check works.
         After a few moments, it will report "Error - This
         program has been altered or tampered with!" However,
         the user must invoke this option deliberately and
         manually.

	Module Integrity Check

         Runs well when infected.

	Novirus

         Runs well when infected.

	SSCRC

         Runs well when infected.

	Validate

         Runs well when infected.

	VCheck

         Runs well when infected.

	VirusGuard

         Runs well when infected.



                       VENDOR INFORMATION



	o  Alert. Version 2.20, available from the NCSA BBS as
         ALERT220.ZIP. Also available from Robert W. Reed,
         3858 Waterview Loop, Winter Park, FL 32792. Price:
         $25 each for 1-10 licensees.

	o  The Antibody Test, version 1.03B. Available from
         the NCSA BBS as ANTIBODY.ZIP. Also available at
         no charge from Commander, TRADOC, ATTN: ATIS-S
         (Major Richard W. Adams), Ft. Monroe, VA
         23651-5000.

	o  BSearch. "If you find BSearch of value, a contribution
         of $10 would be helpful." Available from the NCSA
         BBS as BSEARCH.ZIP, or from David Harris, POB
         2058, El Paso, TX 79951.

	o  CHKSUM is available from the NCSA BBS in a file
         called CHKSUM.ZIP. It is also available from its
         author, Bob Taylor, 8602 Woodlake Drive, Richmond,
         VA 23229. The author does not request a contribution.
         The package includes C source code. 

	o  Checkup v. 3.9 (Levin) "This is not free software.
         You are granted a limited license to evaluate this
         program for ten days in your home or office. If you
         continue to use this program, you must register with
         the author. Registration fees are $24.95 per copy for
         home users and $49.95 per copy for office users."
         Available from the NCSA BBS as CHKUP39.ZIP or
         from Richard B. Levin, POB 14546, Philadelphia, PA
         19115.

	o  CRCDOS version 1.0. Available from the NCSA BBS
         as CRCDOS.ZIP. This ZIP file includes C source
         code. Written by R.E. Faith, January 11, 1988.
         Released to the public domain, on condition that no fee
         be charged for distribution, that authorship information
         concerning source and any modifications will be
         retained, and that the code is not included as part of a
         commercial package.

	o  Delouse version 0.9 Available from the NCSA BBS as
         DELOUSE.ZIP. Written by Phillip M. Nickell, February
         28, 1988. Includes Pascal source code. No fee is
         requested. No copyright is taken. Appears to be public
         domain. Thanks, Mr. Nickell!

	o  The Detective version 1.2 Available from the NCSA
         BBS as DETECT.ZIP. "The free version of The
         Detective is expressly prohibited for use in commercial,
         educational, and governmental institutions except for
         the purpose of evaluation." The price per computer, if
         you choose to register, is $25 for 1-50 computers, and
         less with more. You may order the current version from
         PC Solutions, POB 742, Mequon, WI 53092. (414)
         241-9119. The shareware version, distributed via
         bulletin boards, is unable to process files in the root
         directory.

	o  F-Prot, version 1.12, is available from the NCSA's BBS
         as FPROT112.ZIP. Version 1.12 of this package
         contains a large number of extremely useful anti-virus
         tools. From the standpoint of the present review, only
         two are relevant, however: F-XLOCK (which permits all
         programs to check for CRC changes as they are
         executed) and F-OSCHK (which checks the partition
         table, boot record, two hidden system files, and
         COMMAND.COM) F-Prot is available from Fridrik
         Skulason, Box 7180, IS-127 Reykjavik, Iceland. Pricing:
         Skulason suggests $15 for 1-7 computers, and lower
         payments on larger volumes.

	o  FICHECK, version 5.0, comes bundled with
         MFICHECK 5.0 and PROVECRC ver 1.0. It may be
         downloaded from the NCSA BBS as FICHECK5.ZIP. It
         is available from the author, Chuck Gilmore, Gilmore
         Systems, POB 3831, Beverly Hills, CA 90212-0831.
         Pricing: "A 30 day trial period is granted. Afterward,
         you may either order one of the commercial versions or
         destroy the evaluation copies." Two commerical
         versions are available: XFICHECK (eXtended
         FICHECK) for $15 and PFICHECK (Professional
         FICHECK) for $20.

	o  Module Integrity Check, version 1.0, is available
         from the NCSA BBS in a file called MIC10.ZIP.
         Pricing: "This program may be used by anyone free of
         charge... Anyone who finds this program of value is
         encouraged to make a voluntary donation to the
         author... Even if you do not make a donation you are
         still free to use this program as you see fit." Author:
         Steve Leonard, 260 Dunbar Road, Hilton, NY 14468.

	o  Novirus version 3.0, accompanied by documentation
         for version 2.0, is available in a file called
         NOVIRUS3.ZIP on the NCSA BBS. It is also available
         from the Interconnect BBS, 703-827-5762. Author:
         Jeffrey Morley. Price: free.

	o  SSCRC, version 1.4, is available in a file called
         SSCRC.ZIP from the NCSA BBS. Pricing: "If you use
         this utility to protect your system, do the right thing
         and send us $10", says the author. It is available from
         OSR, 561 Blaxland Road, Eastwood, 2122, NSW,
         Australia.

	o  Validate, version 0.3, is available in a file called
         VALIDAT3.ZIP from the NCSA BBS. It is also
         available at no charge from Computer Virus Industry
         Association, 4423 Cheeney St., Santa Clara, CA 95054.
         (408)-727-4559. Price: free.

	o  VCheck, version 1.1E, is available in a file called
         VCHECK.ZIP on the NCSA BBS. Pricing: "If you use
         VCHECK, send a registration of $25 to
         Systemberatung Axel Dunkel, Robert-Schuman-Ring
         37, D 6239 Kriftel, West Germany."

	o  VirusGuard. 



                        SOME OBSERVATIONS



Once again, the correlation between price and value is upset.
Many of our highest scoring packages were the cheapest. 

We note also the contradiction betwen our ratings and those
published elsewhere. The documentation accompanying Checkout
notes that the product is Compute!'s PC Magazine Editors choice
for virus protection, is the featured virus detection system in
Dvorak and Anis' "Dvorak's Guide to PC Telecommunications",
etc. We found it at the bottom of our scoring system. You may
wish to review our ratings of this product.



                 OTHER EVALUATION CONSIDERATIONS



We did not compare products on the following items, but you
may wish to:

	o  Can the program work on files with hidden, system,
         read-only attributes.

	o  Can the program work from floppy disk? This is
         valuable if you wish to use the program to monitor
         another user's machine, for instance, to see if they are
         clandestinely running a golf game that is not on the
         approved corporate software list. It is also valuable for
         guarding against stealth viruses.

	o  Can the program produces separate lists of deleted
         files, added files, and changed files? Separate lists may
         have benefits over a massive list of changes.

	o  Do you have control over whether the program updates
         its baseline database? If the program updates this
         everytime it is run, you will lose your history file.



                             +++++