textfiles/virus/800-5.txt

1774 lines
80 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

NIST Special Publication 800-5
Guide to the Selection of Anti-Virus Tools and Techniques
W. T. Polk
L. E. Bassham
Dec. 1992
National Institute of Standards and Technology
Computer Security Division
Ascii text version:
No references or indices.
Tables at end.
Footnotes in text, following paragragh where they occur.
Some references to documents or other sections within the text
may be missing from ascii version!
Abstract
Computer viruses continue to pose a threat to the integrity and availability of
computer systems. This is especially true for users of personal computers. A
variety of anti-virus tools are now available to help manage this threat. These
tools use a wide range of techniques to detect, identify, and remove viruses.
This guide provides criteria for judging the functionality, practicality, and
convenience of anti-virus tools. It furnishes information which readers can use
to determine which tools are best suited to target environments, but it does
not weigh the merits of specific tools.
Table of Contents
1.0 Introduction
1.1 Audience and Scope
1.2 How to Use This Document
1.3 Definitions and Basic Concepts
2.0 Functionality
2.1 Detection Tools
2.1.1 Detection by Static Analysis
2.1.2 Detection by Interception
2.1.3 Detection of Modification
2.2 Identification Tools
2.3 Removal Tools
3.0 Selection Factors
3.1 Accuracy
3.1.1 Detection Tools
3.1.2 Identification Tools
3.1.3 Removal Tools
3.2 Ease of Use
3.3 Administrative Overhead
3.4 System Overhead
4.0 Tools and Techniques
4.1 Signature Scanning and Algorithmic Detection
4.1.1 Functionality
4.1.2 Selection Factors
4.1.3 Summary
4.2 General Purpose Monitors
4.2.1 Functionality
4.2.2 Selection Factors
4.2.3 Summary
4.3 Access Control Shells
4.3.1 Functionality
4.3.2 Selection Factors
4.3.3 Summary
4.4 Checksums for Change Detection
4.4.1 Functionality
4.4.2 Selection Factors
4.4.3 Summary
4.5 Knowledge-Based Virus Removal Tools
4.5.1 Functionality
4.5.2 Selection Factors
4.5.3 Summary
4.6 Research Efforts
4.6.1 Heuristic Binary Analysis
4.6.2 Precise Identification Tools
4.7 Other Tools
4.7.1 System Utilities
4.7.2 Inoculation
5.0 Selecting Anti-Virus Techniques
5.1 Selecting Detection Tools
5.1.1 Combining Detection Tools
5.2 Identification Tools
5.3 Removal Tools
5.4 Example Applications of Anti-Virus Tools
5.4.1 Average End-User
5.4.2 Power Users
5.4.3 Constrained User
5.4.4 Acceptance Testing
5.4.5 Multi-User Systems
5.4.6 Network Server
6.0 Selecting the Right Tool
6.1 Selecting a Scanner
6.2 Selecting a General Purpose Monitor
6.3 Selecting an Access Control Shell
6.4 Selecting a Change Detector
6.5 Selecting an Identification Tool
6.6 Selecting a Removal Tool
7.0 For Additional Information
1.0 Introduction
This document provides guidance in the selection of security tools for
protection against computer viruses. The strengths and limitations of various
classes of anti-virus tools are discussed, as well as suggestions of
appropriate applications for these tools. The technical guidance in this
document is intended to supplement the guidance found in NIST Special
Publication 500-166, "Computer Viruses and Related Threats: A Management
Guide".
This document concentrates on widely available tools and techniques as well as
some emerging technologies. It provides general guidance for the selection of
anti-virus tools, regardless of platform. However, some classes of tools, and
most actual products, are only available for personal computers. Developers of
anti-virus tools have focused on personal computers since these systems are
currently at the greatest risk of infection.
footnote: Certain commercial products are identified in this paper in order to
adequately specify procedures being described. In no case does such
identification imply recommendation or endorsement by the National Institute of
Standards and Technology, nor does it imply that the material identified is
necessarily the best for the purpose. footnote
1.1 Audience and Scope
This document is intended primarily for technical personnel selecting
anti-virus tools for an organization. Additionally, this document is useful for
personal computer end-users who wish to select appropriate solutions for their
own system. This document begins with an overview of the types of functionality
available in anti-virus products and follows with selection criteria which must
be considered to ensure practicality and convenience. The body of the document
describes specific classes of anti-virus tools (e.g., scanners) in terms of the
selection criteria. This document closes with a summary comparing the different
classes of tools and suggests possible applications.
The guidance presented in this document is general in nature. The document
makes no attempt to address specific computer systems or anti-virus tools.
However, at this time the computer virus problem is most pressing in the
personal computer arena. Consequently, most types of anti-virus tools are
available as personal computer products. As a result, some information will
address that specific environment.
1.2 How to Use This Document
The remainder of this section is devoted to terminology and basic concepts.
Section 2 describes the different types of functionality that are available in
anti-virus tools. Several different types of detection tools are described, as
well as identification and removal tools. This information should assist
readers in identifying the classes of products appropriate for their
environment.
Section 3 describes some critical selection factors, including accuracy, ease
of use, and efficiency. The description of each of these factors is dependent
on the functional class of product in question. These selection factors are
used to describe product classes in the sections that follow.
Section 4 describes specific classes of tools, such as scanners or checksum
programs, and the techniques they employ. This section provides the reader with
detailed information regarding the functionality, accuracy, ease of use and
efficiency of these classes of tools.
Section 5 presents guidelines for the selection of the most appropriate class
of anti-virus tools. It begins by outlining the important environmental aspects
that should be considered. Next, the information from Section 4 is summarized
and a variety of tables comparing and contrasting the various classes of tools
are presented. The remainder of the section provides several hypothetical user
scenarios. A battery of tools is suggested for each application.
Section 6 presents guidelines for the selection of the best tool from within a
particular class. Important features that may distinguish products from others
within a particular class are highlighted.
This document will be most useful if read in its entirety. However, the reader
may wish to skip the details on different tools found in Section 4 on an
initial reading. Section 5 may help the reader narrow the focus to specific
classes of tools for a specific environment. Then the reader may return to
Section 4 for details on those classes of tools.
1.3 Definitions and Basic Concepts
This section presents informal definitions and basic concepts that will be used
throughout the document. This is intended to clarify the meaning of certain
terms which are used inconsistently in the virus field. However, this section
is not intended as a primer on viruses. Additional background information and
an extensive "Suggested Reading" list may be found in NIST Special
Publication 500-166.
A virus is a self-replicating code segment which must be attached to a host
executable. (1) When the host is executed, the virus code also executes. If
possible, the virus will replicate by attaching a copy of itself to another
executable. The virus may include an additional "payload" that triggers when
specific conditions are met. For example, some viruses display a message on a
particular date.
footnote (1): An executable is an abstraction for programs, command files and
other objects on a computer system that can be executed. On a DOS PC, for
example, this would include batch command files, COM files, EXE-format files
and boot sectors of disks.
A Trojan horse is a program that performs a desired task, but also includes
unexpected (and undesirable) functions. In this respect, a Trojan horse is
similar to a virus, except a Trojan horse does not replicate. An example of a
Trojan horse would be an editing program for a multi-user system which has been
modified to randomly delete one of the user's files each time that program is
used. The program would perform its normal, expected function (editing), but
the deletions are unexpected and undesired. A host program that has been
infected by a virus is often described as a Trojan horse. However, for the
purposes of this document, the term Trojan horse will exclude virus-infected
programs.
A worm is a self-replicating program. It is self-contained and does not require
a host program. The program creates the copy and causes it to execute; no user
intervention is required. Worms commonly utilize network services to propagate
to other computer systems.
A variant is a virus that is generated by modifying a known virus. Examples are
modifications that add functionality or evade detection. The term variant is
usually applied only when the modifications are minor in nature. An example
would be changing the trigger date from Friday the 13th to Thursday the 12th.
An overwriting virus will destroy code or data in the host program by replacing
it with the virus code. It should be noted that most viruses attempt to retain
the original host program's code and functionality after infection because the
virus is more likely to be detected and deleted if the program ceases to work.
A non-overwriting virus is designed to append the virus code to the physical
end of the program or to move the original code to another location.
A self-recognition procedure is a technique whereby a virus determines whether
or not an executable is already infected. The procedure usually involves
searching for a particular value at a known position in the executable.
Self-recognition is required if the virus is to avoid multiple infections of a
single executable. Multiple infections cause excessive growth in size of
infected executables and corresponding excessive storage space, contributing to
the detection of the virus.
A resident virus installs itself as part of the operating system upon execution
of an infected host program. The virus will remain resident until the system is
shut down. Once installed in memory, a resident virus is available to infect
all suitable hosts that are accessed.
A stealth virus is a resident virus that attempts to evade detection by
concealing its presence in infected files. To achieve this, the virus
intercepts system calls which examine the contents or attributes of infected
files. The results of these calls must be altered to correspond to the file's
original state. For example, a stealth virus might remove the virus code from
an executable when it is read (rather than executed) so that an anti-virus
software package will examine the original, uninfected host program.
An encrypted virus has two parts: a small decryptor and the encrypted virus
body. When the virus is executed, the decryptor will execute first and decrypt
the virus body. Then the virus body can execute, replicating or becoming
resident. The virus body will include an encryptor to apply during replication.
A variably encrypted virus will use different encryption keys or encryption
algorithms. Encrypted viruses are more difficult to disassemble and study since
the researcher must decrypt the code.
A polymorphic virus creates copies during replication that are functionally
equivalent but have distinctly different byte streams. To achieve this, the
virus may randomly insert superfluous instructions, interchange the order of
independent instructions, or choose from a number of different encryption
schemes. This variable quality makes the virus difficult to locate, identify,
or remove.
A research virus is one that has been written, but has never been unleashed on
the public. These include the samples that have been sent to researchers by
virus writers. Viruses that have been seen outside the research community are
termed "in the wild."
It is difficult to determine how many viruses exist. Polymorphic viruses and
minor variants complicate the equation. Researchers often cannot agree whether
two infected samples are infected with the same virus or different viruses. We
will consider two viruses to be different if they could not have evolved from
the same sample without a hardware error or human modification.
2.0 Functionality
Anti-virus tools perform three basic functions. Tools may be be used to detect,
identify, or remove viruses.(2) Detection tools perform proactive detection,
active detection, or reactive detection. That is, they detect a virus before it
executes, during execution, or after execution. Identification and removal
tools are more straightforward in their application; neither is of use until a
virus has been detected.
footnote (2): A few tools are designed to prevent infection by one or more
viruses. The discussion of these tools is limited to Section 4.7.2, Inoculation,
due to their limited application.
2.1 Detection Tools
Detection tools detect the existence of a virus on a system. These tools
perform detection at a variety of points in the system. The virus may be
actively executing, residing in memory, or stored in executable code. The virus
may be detected before execution, during execution, or after execution and
replication.
2.1.1 Detection by Static Analysis
Static analysis detection tools examine executables without executing them.
Such tools can be used in proactive or reactive fashion. They can be used to
detect infected code before it is introduced to a system by testing all
diskettes before installing software on a system. They can also be used in a
more reactive fashion, testing a system on a regular basis to detect any
viruses acquired between detection phases.
2.1.2 Detection by Interception
To propagate, a virus must infect other host programs. Some detection tools are
intended to intercept attempts to perform such "illicit" activities. These
tools halt the execution of virus-infected programs as the virus attempts to
replicate or become resident. Note that the virus has been introduced to the
system and attempts to replicate before detection can occur.
2.1.3 Detection of Modification
All viruses cause modification of executables in their replication process. As
a result, the presence of viruses can also be detected by searching for the
unexpected modification of executables. This process is sometimes called
integrity checking .
Detection of modification may also identify other security problems, such as
the installation of Trojan horses. Note that this type of detection tool works
only after infected executables have been introduced to the system and the
virus has replicated.
2.2 Identification Tools
Identification tools are used to identify which virus has infected a particular
executable. This allows the user to obtain additional information about the
virus. This is a useful practice, since it may provide clues about other types
of damage incurred and appropriate clean-up procedures.
2.3 Removal Tools
In many cases, once a virus has been detected it is found on numerous systems
or in numerous executables on a single system. Recovery from original diskettes
or clean backups can be a tedious process. Removal tools attempt to efficiently
restore the system to its uninfected state by removing the virus code from the
infected executable.
3.0 Selection Factors
Once the functional requirements have been determined, there will still be a
large assortment of tools to choose from. There are several important selection
factors that should be considered to ensure that the right tool is selected for
a particular environment.
There are four critical selection factors: Accuracy, Ease of Use,
Administrative Overhead and System Overhead. Accuracy describes the tool's
relative success rate and the types of errors it can make. Ease of use
describes the typical user's ability to install and execute the tool and
interpret the results. Administrative overhead is the measure of technical
support and distribution effort required. System overhead describes the tool's
impact on system performance. These factors are introduced below. In depth
discussions of these factors are in subsequent subsections.
Accuracy is the most important of the selection factors. Errors in detecting,
identifying or removing viruses undermine user confidence in a tool, and often
cause users to disregard virus warnings. Errors will at best result in loss of
time; at worst they will result in damage to data and programs.
Ease of use is concerned with matching the background and abilities of the
system's user to the appropriate software. This is also important since
computer users vary greatly in technical skills and ability.
Administrative overhead can be very important as well. Distribution of updates
can be a time-consuming task in a large organization. Certain tools require
maintenance by the technical support staff rather than the end-user. End-users
will require assistance to interpret results from some tools; this can place a
large burden on an organization's support staff. It is important to choose
tools that your organization has the resources to support.
System overhead is inconsequential from a strict security point of view.
Accurate detection, identification or removal of the virus is the important
point. However, most of these tools are intended for end-users. If a tool is
slow or causes other applications to stop working, end-users will disable it.
Thus, attention needs to be paid to the tool's ability to work quickly and to
co-exist with other applications on the computer.
3.1 Accuracy
Accuracy is extremely important in the use of all anti-virus tools.
Unfortunately, all anti-virus tools make errors. It is the type of errors and
frequency with which they occur that is important. Different errors may be
crucial in different user scenarios.
Computer users are distributed over a wide spectrum of system knowledge. For
those users with the system knowledge to independently verify the information
supplied by an anti-virus tool, accuracy is not as great a concern.
Unfortunately, many computer users are not prepared for such actions. For such
users, a virus infection is somewhat frightening and very confusing. If the
anti-virus tool is supplying false information, this will make a bad situation
worse. For these users, the overall error rate is most critical.
3.1.1 Detection Tools
Detection tools are expected to identify all executables on a system that have
been infected by a virus. This task is complicated by the release of new
viruses and the continuing invention of new infection techniques. As a result,
the detection process can result in errors of two types: false positives and
false negatives.
When a detection tool identifies an uninfected executable as host to a virus,
this is known as a false positive (this is also known as a Type I error.) In
such cases, a user will waste time and effort in unnecessary cleanup
procedures. A user may replace the executable with the original only to find
that the executable continues to be identified as infected. This will confuse
the user and result in a loss of confidence in either the detection procedures
or the tool vendor. If a user attempts to "disinfect" the executable, the
removal program may abort without changing the executable or will irreparably
damage the program by removing useful code. Either scenario results once more
in confusion for the user and lost confidence.
When a detection tool examines an infected executable and incorrectly proclaims
it to be free of viruses, this is known as a false negative, or Type II error.
The detection tool has failed to alert the user to the problem. This kind of
error leads to a false sense of security for the user and potential disaster.
3.1.2 Identification Tools
Identification tools identify which virus has infected a particular executable.
Defining failure in this process turns out to be easier than success. The
identification tool has failed if it cannot assign a name to the virus or
assigns the wrong name to the virus.
Determining if a tool has correctly named a virus should be a simple task, but
in fact it is not. There is disagreement even within the anti-virus research
community as to what constitutes "different" viruses. As a result, the
community has been unable to agree on the number of existing viruses, and the
names attached to them have only vague significance. This leads to a question
of precision.
As an example, consider two PC virus identification tools. The first tool
considers the set of PC viruses as 350 distinct viruses. The second considers
the same set to have 900 members. This occurs because the first tool groups a
large number of variants under a single name. The second tool will name viruses
with greater precision (i.e., viruses grouped together by the first tool are
uniquely named by the second).
Such precision problems can occur even if the vendor attempts to name with high
precision. A tool may misidentify a virus as another variant of that virus for
a variety of reasons. The variant may be new, or analysis of samples may have
been incomplete. The loss of precision occurs for different reasons, but the
results are no different from the previous example. Any "successful" naming
of a virus must be considered along with the degree of precision.
3.1.3 Removal Tools
Removal tools attempt to restore the infected executables to their uninfected
state. Removal is successful if the executable, after disinfection, matches the
executable before infection on a byte-for-byte basis. The removal process can
also produce two types of failures: hard failure and soft failure.
A hard failure occurs if the disinfected program will no longer execute or the
removal program terminates without removing the virus. Such a severe failure
will be obvious to detect and can occur for a variety of reasons. Executables
infected by overwriting viruses cannot be recovered in an automated fashion;
too much information has been lost. Hard failures also occur if the removal
program attempts to remove a different virus than the actual infector.
Removal results in a soft failure if the process produces an executable, which
is slightly modified from its original form, that can still execute. This
modified executable may never have any problems, but the user cannot be certain
of that. The soft failure is more insidious, since it cannot be detected by the
user without performing an integrity check.
3.2 Ease of Use
This factor focuses on the level of difficulty presented to the end-user in
using the system with anti-virus tools installed. This is intended to gauge the
difficulty for the system user to utilize and correctly interpret the feedback
received from the tool. This also measures the increased difficulty (if any) in
fulfilling the end-user's job requirements.
Ease of Use is the combination of utilization and interpretation of results.
This is a function of tool design and quality of documentation. Some classes of
tools are inherently more difficult to use. For example, installation of the
hardware component of a tool requires greater knowledge of the current hardware
configuration than a comparable software-only tool.
3.3 Administrative Overhead
This factor focuses on the difficulty of administration of anti-virus tools. It
is intended to gauge the workload imposed upon the technical support team in an
organization.
This factor considers difficulty of installation, update requirements, and
support levels required by end-users. These functions are often the
responsibility of technical support staff or system administrators rather than
the end-user. Note that an end-user without technical support must perform all
of these functions himself.
3.4 System Overhead
System overhead measures the overall impact of the tool upon system
performance. The relevant factors will be the raw speed of the tool and the
procedures required for effective use. That is, a program that is executed
every week will have a lower overall impact than a program that runs in the
background at all times.
4.0 Tools and Techniques
There is a wide variety of tools and techniques which can be applied to the
anti-virus effort. This section will address the following anti-virus
techniques:
o signature scanning and algorithmic detection
o general purpose monitors
o access control shells
o checksums for change detection
o knowledge-based removal tools
o research efforts
- heuristic binary analysis
- precise identification
o other tools
- system utilities as removal tools
- inoculation
For detection of viruses, there are five classes of techniques: signature
scanning and algorithmic detection; general purpose monitors; access control
shells; checksums for change detection; and heuristic binary analysis. For
identification of viruses, there are two techniques: scanning and algorithmic
detection; and precise identification tools. Finally, removal tools are
addressed. Removal tools come in three forms: general system utilities,
single-virus disinfectors, and general disinfecting programs.
4.1 Signature Scanning and Algorithmic Detection
A common class of anti-virus tools employs the complementary techniques of
signature scanning and algorithmic detection. This class of tools is known as
scanners , which are static analysis detection tools (i.e., they help detect
the presence of a virus). Scanners also perform a more limited role as
identification tools (i.e., they help determine the specific virus detected).
They are primarily used to detect if an executable contains virus code, but
they can also be used to detect resident viruses by scanning memory instead of
executables.
They may be employed proactively or reactively. Proactive application of
scanners is achieved by scanning all executables introduced to the system.
Reactive application requires scanning the system at regular intervals (e.g.,
weekly or monthly).
4.1.1 Functionality
Scanners are limited intrinsically to the detection of known viruses. However,
as a side effect of the basic technique, some new variants may also be
detected. They are also identification tools, although the methodology is
imprecise.
Scanners examine executables (e.g., .EXE or .COM files on a DOS system) for
indications of infection by known viruses. Detection of a virus produces a
warning message. The warning message will identify the executable and name the
virus or virus family with which it is infected. Detection is usually performed
by signature matching; special cases may be checked by algorithmic methods.
In signature scanning an executable is searched for selected binary code
sequences, called a virus signature, which are unique to a particular virus, or
a family of viruses. The virus signatures are generated by examining samples of
the virus. Additionally, signature strings often contain wild cards to allow
for maximum flexibility.
Single-point scanners add the concept of relative position to the virus
signature. Here the code sequence is expected at a particular position within
the file. It may not even be detected if the position is wrong. By combining
relative position with the signature string, the chances of false positives is
greatly reduced. As a result, these scanners can be more accurate than blind
scanning without position.
Polymorphic viruses , such as those derived from the MtE (mutation engine)
[Sku92] , do not have fixed signatures. These viruses are self-modifying or
variably encrypted. While some scanners use multiple signatures to describe
possible infections by these viruses, algorithmic detection is a more powerful
and more comprehensive approach for these difficult viruses.
4.1.2 Selection Factors
Accuracy
Scanners are very reliable for identifying infections of viruses that have been
around for some time. The vendor has had sufficient time to select a good
signature or develop a detection algorithm for these well-known viruses. For
such viruses, a detection failure is unlikely with a scanner. An up-to-date
scanner tool should detect and to some extent identify any virus you are likely
to encounter. Scanners have other problems, though. In the detection process,
both false positives and false negatives can occur.
False positives occur when an uninfected executable includes a byte string
matching a virus signature in the scanner's database. Scanner developers test
their signatures against libraries of commonly-used, uninfected software to
reduce false positives. For additional assurance, some developers perform
statistical analysis of the likelihood of code sequences appearing in
legitimate programs. Still, it is impossible to rule out false positives.
Signatures are simply program segments; therefore, the code could appear in an
uninfected program.
False negatives occur when an infected executable is encountered but no pattern
match is detected. This usually results from procedural problems; if a stealth
virus is memory-resident at the time the scanner executes, the virus may hide
itself. False negatives can also occur when the system has been infected by a
virus that was unknown at the time the scanner was built.
Scanners are also prone to misidentification or may lack precision in naming.
Misidentification will usually occur when a new variant of an older virus is
encountered. As an example, a scanner may proclaim that Jerusalem-B has been
detected, when in fact the Jerusalem-Groen Links virus is present. This can
occur because these viruses are both Jerusalem variants and share much of their
code. Another scanner might simply declare "Jerusalem variant found in
filename." This is accurate, but rather imprecise.
Ease of Use
Scanners are very easy to use in general. You simply execute the scanner and it
provides concise results. The scanner may have a few options describing which
disk, files, or directories to scan, but the user does not have to be a
computer expert to select the right parameters or comprehend the results.
Administrative Overhead
New viruses are discovered every week. As a result, virus scanners are
immediately out of date. If an organization distributes scanners to its users
for virus detection, procedures must be devised for distribution of updates. A
scanner for a DOS PC that is more than a few months old will not detect most
newly developed viruses. (It may detect, but misidentify, some new variants.)
Timely updates are crucial to the effectiveness of any scanner-based anti-virus
solution. This can present a distribution problem for a large organization.
Installation is generally simple enough for any user to perform. Interpreting
the results is very simple when viruses are correctly identified. Handling
false positives will usually require some assistance from technical support.
This level of support may be available from the vendor.
Efficiency
Scanners are very efficient. There is a large body of knowledge about searching
algorithms, so the typical scanner executes very rapidly. Proactive application
will generally result in higher system overhead.
4.1.3 Summary
Scanners are extremely effective at detecting known viruses. Scanners
are not intended to detect new viruses (i.e., any virus discovered after the
program was released) and any such detection will result in misidentification.
Scanners enjoy an especially high level of user acceptance because they name
the virus or virus family. However, this can be undermined by the occurrence of
false positives.
The strength of a scanner is highly dependent upon the quality and timeliness
of the signature database. For viruses requiring algorithmic methods, the
quality of the algorithms used will be crucial.
The major strengths of scanners are:
Up-to-date scanners can be used to reliably detect more than 95 percent
of all virus infections at any given time. Scanners identify both the infected
executable and the virus that has infected it. This can speed the recovery
process. Scanners are an established technology, utilizing highly efficient
algorithms. Effective use of scanners usually does not require any special
knowledge of the computer system.
The major limitations of scanners are:
A scanners only looks for viruses that were known at the time its
database of signatures was developed. As a result, scanners are prone to false
negatives. The user interprets "No virus detected" as "No virus exists.''
These are not equivalent statements. Scanners must be updated regularly to
remain effective. Distribution of updates can be a difficult and time-consuming
process. Scanners do not perform precise identification. As a result, they are
prone to false positives and misidentification.
4.2 General Purpose Monitors
General purpose monitors protect a system from the replication of viruses or
execution of the payload of Trojan horses by actively intercepting malicious
actions.
4.2.1 Functionality
Monitoring programs are active tools for the real-time detection of viruses and
Trojan horses. These tools are intended to intervene or sound an alarm every
time a software package performs some suspicious action considered to be
virus-like or otherwise malicious behavior. However, since a virus is a code
stream, there is a very real possibility that legitimate programs will perform
the same actions, causing the alarms to sound.
The designer of such a system begins with a model of "malicious" behavior,
then builds modules which intercept and halt attempts to perform those actions.
Those modules operate as a part of the operating system.
4.2.2 Selection Factors
Accuracy
A monitoring program assumes that viruses perform actions that are in its model
of suspicious behavior and in a way that it can detect. These are not always
valid assumptions. New viruses may utilize new methods which may fall outside
of the model. Such a virus would not be detected by the monitoring program.
The techniques used by monitoring tools to detect virus-like behavior are also
not fool-proof. Personal computers lack memory protection, so a program can
usually circumvent any control feature of the operating system. As a part of
the operating system, monitoring programs are vulnerable to this as well. There
are some viruses which evade or turn off monitoring programs.
Finally, legitimate programs may perform actions that the monitor deems
suspicious (e.g., self-modifying programs).
Ease of Use
Monitoring software is not appropriate for the average user. The monitor may be
difficult to configure properly. The rate of false alarms can be high,
particularly false positives, if the configuration is not optimal.
The average user may not be able to determine that program A should modify
files, but program B should not. The high rate of false alarms can discourage
such a user. At worst, the monitor will be turned off or ignored altogether.
Administrative Overhead
Monitoring programs can impose a fairly heavy administrative workload. They
impose a moderate degree of overhead at installation time; this is especially
true if several different systems are to be protected. The greatest amount of
overhead will probably result from false positives, though. This will vary
greatly according to the users' level of expertise.
On the other hand, the monitoring software does not have to be updated
frequently. It is not virus-specific, so it will not require updating until new
virus techniques are devised. (It is still important to remain up-to-date; each
time a new class of virus technology is developed, a number of variations
emerge.)
Efficiency
Monitoring packages are integrated with the operating system so that additional
security procedures are performed. This implies some amount of overhead when
any program is executed. The overhead is usually minimal, though.
4.2.3 Summary
Monitoring software may be difficult to use but may detect some new
viruses that scanning does not detect, especially if they do not use new
techniques.
These monitors produce a high rate of false positives. The users of these
programs should be equipped to sort out these false positives on their own.
Otherwise, the support staff will be severely taxed.
Monitors can also produce false negatives if the virus doesn't perform any
activities the monitor deems suspicious. Worse yet, some viruses have succeeded
in attacking monitored systems by turning off the monitors themselves.
4.3 Access Control Shells
Access control shells function as part of the operating system, much like
monitoring tools. Rather than monitoring for virus-like behavior, the shell
attempts to enforce an access control policy for the system. This policy is
described in terms of programs and the data files they may access. The access
control shell will sound an alarm every time a user attempts to access or
modify a file with an unauthorized software package.
4.3.1 Functionality
To perform this process, the shell must have access to identification and
authentication information. If the system does not provide that information,
the access control shell may include it. The access control shell may also
include encryption tools. These tools can be used to ensure that a user does
not reboot from another version of the operating system to circumvent the
controls. Note that may of these tools require additional hardware to
accomplish these functions.
Access control shells are policy enforcement tools. As a side benefit, they can
perform real-time detection of viruses and Trojan horses. The administrator of
such a system begins with a description of authorized system use, then converts
that description into a set of critical files and the programs which may be
used to modify them. The administrator must also select the files which require
encryption.
For instance, a shipping clerk might be authorized to access the inventory
database with a particular program. However, that same clerk may not be allowed
to access the database directly with the database management software. The
clerk may not be authorized to access the audit records generated by the
trusted application with any program. The administrator would supply
appropriate access control statements as input to the monitor and might also
encrypt the database.
4.3.2 Selection Factors
Accuracy
Access control shells, like monitoring tools, depend upon the virus or Trojan
horse working in an expected manner. On personal computer systems, this is not
always a valid assumption. If the virus uses methods that the access control
shell does not monitor, the monitor will produce false negatives.
Even with the access control shell, a well-behaved virus can modify any program
that its host program is authorized to modify. To reduce the overhead, many
programs will not be specifically constrained. This will allow a virus to
replicate and is another source of false negatives.
False positives can also occur with access control shells. The system
administrator must have sufficient familiarity with the software to authorize
access to every file the software needs. If not, legitimate accesses will cause
false alarms. If the system is stable, such false positives should not occur
after an initial debugging period.
Ease of Use
These tools are intended for highly constrained environments. They usually are
not appropriate for the average user at home. They can also place a great deal
of overhead on system administrators. The access control tables must be rebuilt
each time software or hardware is added to a system, job descriptions are
altered, or security policies are modified. If the organization tends to be
dynamic, such a tool will be very difficult to maintain. Organizations with
well-defined security policies and consistent operations may find maintenance
quite tolerable.
This software is easy for users, though. They simply log in and execute
whatever programs they require against the required data. If the access control
shell prevents the operation, they must go through the administrator to obtain
additional privileges.
Efficiency
An access control shell modifies the operating system so that additional
security procedures are performed. This implies some amount of overhead when
any program is executed. That overhead may be substantial if large amounts of
data must be decrypted and re-encrypted upon each access.
Administrative Overhead
An access control shell should not require frequent updates. The software is
not specific to any particular threat, so the system will not require updates
until new techniques are devised for malicious code. On the other hand, the
access control tables which drive the software may require frequent updates.
4.3.3 Summary
Access control shells may be difficult to administer, but are
relatively easy for the end-user. This type of tool is primarily designed for
policy enforcement, but can also detect the replication of a virus or
activation of a Trojan horse.
The tool may incur high overhead processing costs or be expensive due to
hardware components. Both false positives and false negatives may occur. False
positives will occur when the access tables do not accurately reflect system
processing requirements. False negatives will occur when virus replication does
not conflict with the user's access table entries.
4.4 Checksums for Change Detection
Change detection is a powerful technique for the detection of viruses and
Trojan horses. Change detection works on the theory that executables are static
objects; therefore, modification of an executable implies a possible virus
infection. The theory has a basic flaw: some executables are self-modifying.
Additionally, in a software development environment, executables may be
modified by recompilation. These are two examples where checksumming may be an
inappropriate solution to the virus problem.
4.4.1 Functionality
Change detection programs generally use an executable as the input to a
mathematical function, producing a checksum. The change detection program is
executed once on the (theoretically) clean system to provide a baseline(3)
for testing. During subsequent executions, the program compares the computed
checksum with the baseline checksum. A change in the checksum indicates a
modification of the executable.
footnote (3): The original file names and their corresponding checksums.
Change detection tools are reactive virus detection tools. They can be used to
detect any virus, since they look for modifications in executables. This is a
requirement for any virus to replicate. As long as the change detector reviews
every executable in its entirety on the system and is used in a proper manner,
a virus cannot escape detection.
Change detection tools employ two basic mathematical techniques: Cyclic
Redundancy Checks (CRC) and cryptographic checksums .
CRC-Codings
CRC checksums are commonly used to verify integrity of packets in networks and
other types of communications between computers. They are fairly efficient and
well understood. CRC-based checksums are not extremely secure; they are based
on a known set of algorithms. Therefore they can be broken (the particular
algorithm can be guessed) by a program if it can find the checksum for a file.
CRC checksum tools, like all change detection tools, can only detect that a
virus has replicated. Additionally, the executable must be appear in the
baseline.
Cryptographic Checksums
Cryptographic checksums are obtained by applying cryptographic algorithms to
the data. Both public and private key algorithms can be used. In general,
private key algorithms are used for efficiency. These techniques are sometimes
used in conjunction with two other procedures to decrease system overhead.
These techniques are message digesting and hashing.(4)
footnote (4): Discussion of cryptographic terminology is beyond the scope of
this document. Please see [Sim92].
In Message Digesting , hashing is used in conjunction with cryptographic
checksums. The hash function, which is very fast, is applied directly to the
executable. The result is much smaller than the original data. The checksum is
computed by applying the cryptographic function to the hash result. The final
result approaches the cryptographic checksum for security, but is much more
efficient.
4.4.2 Selection Factors
Accuracy
Properly implemented and used, change detection programs should detect every
virus. That is, there are no false negatives with change detection. Change
detection can result in high numbers of false positives, however. Programs tend
to store configuration information in files containing executable code. If
these files are checksummed, as they should be, a change in configuration will
trigger the change detector. Additionally, the system must be virus-free when
the checksums are calculated; resident viruses may fool the change detection
software.
Ease of Use
Change detection software is more challenging to use than some other anti-virus
tools. It requires good security procedures and substantial knowledge of the
computer system. Procedurally, it is important to protect the baseline. The
checksums should be stored off-line or encrypted. Manipulation of the baseline
will make the system appear to have been attacked.
Analysis of the results of a checksumming procedure is also more difficult. The
average user may not be able to determine that one executable is self-modifying
but another is not. False positives due to self-modifying code can discourage
such a user, until the output of the change detector is ignored altogether.
Administrative Overhead
Change detection software is easy to install and it requires no updates. The
baseline must be established by a qualified staff member. This includes the
initial baseline, as well as changes to the baseline as programs are added to
the system. Once in operation, a high degree of support can be required for the
average end-user, however. A qualified staff member must be available to
determine whether or not a change to a particular executable is due to a virus
or simply a result of self-modification.
Efficiency
Change detectors do not impose any overhead on general system use. There is,
however, some storage overhead for the baseline checksums. These are best
stored off-line with the checksum program.
The calculation of checksums is computationally intensive; the mathematical
functions must be calculated on at least a portion of the executable. To be
exhaustive, the function should be calculated on the entire executable.
4.4.3 Summary
If change is detected, there are several possibilities: a virus infection,
self-modification, recompilation, or modification of the baseline. A
knowledgeable user is required to determine the specific reason for change.
The primary strength of change detection techniques is the ability to detect
new viruses and Trojan horses. The limitation of change detection is the need
for a knowledgeable user to interpret the output.
4.5 Knowledge-Based Virus Removal Tools
The primary means of automated removal of virus infection is knowledge-based
removal tools. These removal tools attempt to reverse the modifications a virus
makes to a file. After analyzing a particular virus to determine its effects on
an infected file, a suitable algorithm is developed for disinfecting files.
Tools are available which address only a single virus. These single virus
disinfectors are usually developed as the result of a particularly virulent
outbreak of a virus. Others detectors are general virus removal programs,
containing removal algorithms for several viruses.
4.5.1 Functionality
Knowledge-based removal tools restore an executable to its pre-infection state.
All modifications to the original executable must be known in order to
accomplish this task. For example, if a file is infected with an overwritting
virus, removal is not possible. The information that was overwritten cannot be
restored.
The most critical piece of information in the removal process is the identity
of the virus itself. If the removal program is removing Jerusalem-DC, but the
host is infected with Jerusalem-E2, the process could fail. Unfortunately, this
information is often unavailable or imprecise. This is why precise
identification tools are needed.
4.5.2 Selection Factors
Disinfecting software is not very accurate, for a variety of reasons. The error
rates are fairly high; however, most are soft errors. This is a result of
incomplete information regarding the virus and the lack of quality assurance
among virus writers. Additionally, removal techniques tend to fail when a
system or file has been infected multiple times (i.e., by the same virus more
than once, or by more than one virus).
These programs are relatively easy to use and can disinfect large numbers of
programs in a very short time. Any system overhead is inconsequential since the
system should not be used until the virus is removed.
4.5.3 Summary
Accurate removal may not be possible. Even if it is theoretically possible,
precise identification of the virus is necessary to ensure that the correct
removal algorithm is used.
Certain viruses (e.g., overwriting viruses) always cause irreparable damage to
an executable. Some extraordinarily well-behaved viruses can be disinfected
every time. Most viruses fall somewhere in between. Disinfection will often
work, but the results are unpredictable.
Some executables cannot be recovered to the exact pre-infection state. In such
a case, the file length or checksum of the disinfected executable may differ
from the pre-infection state. In such a case, it is impossible to predict the
behavior of the disinfected program. This is the reason virus researchers
generally dislike removal programs and discourage their use.
4.6 Research Efforts
The following subsections describe research areas in the anti-virus field. New
tools, based on techniques developed in these and other areas, may be available
in the near future.
4.6.1 Heuristic Binary Analysis
Static analysis detection tools, based upon heuristic binary analysis, are a
focus of research at this time. Heuristic binary analysis is a method whereby
the analyzer traces through an executable looking for suspicious, virus-like
behavior. If the program appears to perform virus-like actions, a warning is
displayed.
Functionality
Binary analysis tools examine an executable for virus-like code. If the code
utilizes techniques which are common to viruses, but odd for legitimate
programs, the executable is flagged as "possibly infected." Examples include
self-encrypted code or code that appears to have been appended to an existing
program.
Selection Factors
Both false positives and negatives are sure to result with use of this type of
software. False positives occur when an uninfected program uses techniques
common to viruses but uncommon in legitimate programs. False negatives will
occur when virus code avoids use of those techniques common to viruses.
Binary analysis tools are fairly easy to use. The user simply specifies a
program or directory to be analyzed. Analyzing the results is more difficult.
Sorting out the false positives from real infections may require more knowledge
and experience than the average user possesses.
Heuristic analysis is more computationally intensive than other static analysis
methods. This method would be inappropriate for daily use on a large number of
files. It is more appropriate for one-time use on a small number of files, as
in acceptance testing.
A heuristic analysis program will require updates as new techniques are
implemented by virus writers.
Summary
Early examples of this class of tool appear to have fairly high error rates as
compared with commercial detection software. As with system monitors, it is
difficult to define suspicious in a way that prevents false positives and false
negatives. However, these types of tools have been used successfully to
identify executables infected by "new" viruses in a few actual outbreaks.
Heuristic binary analysis is still experimental in nature. Initial results have
been sufficiently encouraging to suggest that software acceptance procedures
could include these tools to augment more traditional technology.
4.6.2 Precise Identification Tools
Precise identification tools are a means by which viruses are named with a much
higher degree of assurance. These tools are intended to augment detection
tools. Once a virus has been detected, a precise identification tool would be
invoked in order to more accurately identify the virus.
Functionality
Virus scanners, currently the most common virus detection method, generally
employ signature scanning to detect and identify viruses. This method, however,
can lead to misidentifications. The signature that the scanner matched could
appear in more than one variant of the virus. To avoid mis-identification the
whole virus must match, not just a subset of the virus (i.e., the signature).
It is neither feasible nor desirable for identification software to be
distributed containing the code to all viruses it can detect. Therefore,
prototype precise identification tools utilize a "virus map" to represent the
contents of the virus. The virus map contains checksum values for all constant
parts of the virus code. The map skips over sections of the virus that contain
variable information such as text or system dependent data values.
If the checksums generated by the corresponding portions of the program match,
the program is almost certainly infected by the virus corresponding to the map.
If none of the maps in the database correspond, the program is infected by a
new virus (or is uninfected.)
Selection Factors
The quality of the results produced by a precise identification tool is
dependent upon the quality of the virus map database. If that has been done
well and kept current, these tools are extremely accurate and precise when
identifying known viruses. Conversely, if the virus is new or has no
corresponding entry in the database, the precise identification tool should
always "fail" to identify the viruses.
This type of tool is easy to use. The user simply specifies an executable, and
the tool returns a name, if known. The results are straightforward; it is virus
"X," or unknown.
Precise identification tools are slow due to the intensive nature of the
computations. These tools may be used to perform an identification pass after
the use of a more efficient detection tool. Such a plan would provide the user
with the benefits of precise identification without great overhead. Once a
virus has been detected, the user wants to know exactly what virus he has and
time is not a significant factor.
Summary
Users want to know more about the virus infecting their systems. Precise
identification will help them obtain more complete information and can also
facilitate automated removal.
Researchers will also wish to use this type of tool. It will allow them to
separate samples of known viruses from new ones without performing analysis.
4.7 Other Tools
The remaining tools, system utilities and inoculation, are included for
completeness. These tools can be used to provide some measure of functionality.
In general, however, these tools are weaker than general anti-virus tools.
4.7.1 System Utilities
Some viruses can be detected or removed with basic system utilities. (5)
For example, most DOS boot sector infectors and some Macintosh viruses can be
removed with system utilities. System utilities can also be used to detect
viruses by searching for virus signatures. These tools have a rather limited
focus, though.
footnote (5): Two examples of these system utilities are Norton Utilities for
the PC and ResEdit for the Macintosh.
Viruses that can be disinfected "by hand" are generally the extremely
well-behaved, highly predictable viruses that are well understood. Such viruses
are the exception, not the rule. There are many more viruses that cannot be
disinfected with these tools.
Where possible, disinfection with system utilities will produce dependable
results. A reasonable amount of knowledge is required about the computer system
and the virus itself, though. This technique can also be very laborious if a
large number of systems are infected.
System utilities are an inefficient means of detection. Generally, only one
signature can be handled at a time. This might be a useful technique if a
specific virus is to be detected.
Summary
Accurate removal by system utilities is frequently impossible. Certain classes
of viruses (e.g., overwriting viruses) always damage the executable beyond all
hope of repair. Others modify the executable in rather complicated ways. Only
viruses that are extremely well-behaved can be disinfected every time.
Similarly, detection with system utilities has limited application.
4.7.2 Inoculation
In some cases, an executable can be protected against a small number of viruses
by "inoculation." This technique involves attaching the self-recognition code
for the virus to the executable at the appropriate location.
Since viruses may place their self-recognition codes in overlapping locations,
the number of viruses that can be inoculated against simultaneously will be
small. To make matters worse, a common way to create a new variant is to change
the self-recognition code. Thus, this technique will often fail when tested by
minor variants of the viruses inoculated against.
Inoculation is no substitute for more robust anti-virus tools and procedures.
It might be useful, though, if an organization has had recurring infections
from a single virus. For example, after cleaning three or four outbreaks of a
particular virus from a network of PCs, inoculation might be considered as a
desperation measure.
5.0 Selecting Anti-Virus Techniques
The selection of the appropriate class of anti-virus tools requires answers to
the following set of questions:
o What is the probability of a virus infection?
o What are the consequences of a virus infection?
o What is the skill level of the users in your organization?
o What level of support is available to the end-user?
The first two questions address risk; security should always be commensurate
with need. The third and fourth questions address the limitations of the tools
and personnel. The answers will be different for each person or organization.
Every organization is at some risk of virus infection. Virus infections can
occur whenever electronic information is shared. Every organization shares
information in some way and is a potential victim of a virus infection. Most
organizations should have some tools available to detect such an infection.
Personal computer users may benefit from tools to identify viruses, since so
many viruses exist. Identification tools are not necessary where viruses are
few or only theoretically possible.
The use of removal tools is generally not required.(6) It may be desirable in
situations where a single person or a small team is tasked with cleaning up
after an infection or where high connectivity can result in rapid spread of the
virus (such as networks).
footnote (6): Exceptions, such as the DIR-2 PC virus, may be extremely difficult
to remove without appropriate tools. In this case, the only alternative to
removal tools is to format the disk.
5.1 Selecting Detection Tools
The first point to consider when selecting a detection product is the type of
viruses likely to be encountered. Approximately 95 percent of all virus
infections are accounted for by a small number of viruses. The viruses that
constitute this small set can vary geographically. The common viruses can be
distinct on different continents, due to the paths in which they travel. Of
course, different hardware platforms will be at risk from different viruses.
International organizations may be vulnerable to a larger set of viruses. This
set may be obtained by merging the sets of viruses from different geographical
regions where they do business. Organizations with contacts or installations in
locations where virus writers are particularly active [Bon91] are also more
likely to encounter new viruses.
Risk from new viruses is an important consideration. Scanners are limited by
their design to known viruses; other detection tools are designed to detect any
virus. If your organization is at high risk from new viruses, scanners should
not be the sole detection technique employed.
Another important criteria to consider is the number and type of errors
considered tolerable. The tolerance for a particular type of error in an
organization will vary according to the application. Table 1 shows the types of
errors which should be expected. An estimate of the frequency that this class
of error is encountered (Infrequent, Frequent, or Never) is also given for each
class of tools and error type. All anti-virus tools are subject to errors, but
their relative frequencies vary widely. Scanners probably have the lowest
overall error rate. Checksummers do not produce false negatives.
The third and fourth items to consider when selecting anti-virus tools are the
ease of use and administrative overhead required for each tool. Questions to
consider are:
What is the average skill level of your organization's end-user?
Does your organization have a support staff to assist user with more technical
problems?
Table 2 includes a general evaluation of the ease of use and administrative
overhead imposed by each class of tools.
If several tools still appear to be candidates, consider the functionality of
these tools beyond virus detection. Viruses are only one of the many threats to
computer security. All detection tools except scanners have general security
applications beyond viruses. Scanners are limited in application to viruses,
but have the added functionality of virus identification. (7) Consider the added
functionality which is most needed by your organization and choose accordingly.
The alternatives are outlined in table 3.
footnote (7) Some scanners can also detect known Trojan horses.
The final selection criteria to be considered is when does the tool detect
viruses. Proactive detection tools allow the user to keep viruses off a system
by testing incoming software. These tools only allow one chance of detecting a
virus (upon initial introduction to the system). Active detection tools
intervene during the replication phase itself. Reactive detection tools can be
used any time after a virus has entered the system. Additionally, reactive
tools are not as rigorous in their demands on system performance. Table 4 shows
when these different tools detect viruses.
5.1.1 Combining Detection Tools
The most complete protection will be obtained by combining tools which perform
in radically different fashion and protect against different classes of
viruses. For instance, when used together a scanner and a checksum program will
protect against both known and unknown viruses. The scanner can detect known
viruses before software is installed on the system. A virus can be modified to
elude the scanner, but it will be detected by the checksum program.
The two tools should have different "additional functionality" (see table )
to form the most comprehensive security package. For instance, the combination
of a checksum program and an access control shell would also detect Trojan
horses and enforce organizational security policy in addition to virus
detection. On the other hand, adding a binary analyzer to a system that already
employs checksumming would not provide additional functionality.
If you must use two scanners, be sure that they use different search strings. A
number of tools are based on published search strings; shareware tools commonly
utilize the same public domain signature databases. Two different scanner
engines looking for the same strings do not provide any additional protection
of information. (8)
footnote (8): Algorithms for detection tend to be independently developed.
5.2 Identification Tools
Currently, scanners are the only effective means of identifying viruses. As
discussed in Section , the accuracy to which scanners identify viruses can
vary. In the future, precise identification tools should offer greatly
increased accuracy.
5.3 Removal Tools
The most dependable technique for virus removal continues to be deletion of the
infected executable and restoration from a clean backup. If backups are
performed regularly and in a proper manner, virus removal tools may be
neglected.
In large organizations with high connectivity, automated removal tools should
be obtained. Virus eradication through the removal of infected executables may
require too much time and effort. Knowledge based tools will disinfect the
largest number of different viruses, but proper identification of the virus
prior to disinfection is critical. Even with knowledge based removal tools,
disinfection of executables is not always reliable (see Sec. ). Test all
disinfected executables to be sure they appear to execute properly. There is
still a chance, however, that soft errors will occur.
5.4 Example Applications of Anti-Virus Tools
This section provides hypothetical scenarios for the use of anti-virus tools.
For each application, a battery of tools is suggested. There are several ways
these tools can be applied to the same scenario; this text represents just one
set of rational solutions.
5.4.1 Average End-User
Detailed knowledge of the computer system is not required for the average
end-user to perform one's job. Such a user should not be required to obtain
detailed knowledge just to use anti-virus tools. This implies that scanners are
probably most appropriate for the average end-users. Any other choice will
require support from a technical support team or computer security incident
response team. Of the remaining tools, the best option is a checksum program.
By executing the checksum program regularly, for example weekly or monthly,
infections will be detected within a limited timeframe.
Another possibility is to relieve these users of the responsibility of
detecting viruses entirely. If a technical support team is already providing
other regular services (e.g., backup), the support team can use any combination
of anti-virus tools deemed necessary.
5.4.2 Power Users
Power users, those with detailed knowledge of their computer systems, will be
better equipped to handle a larger variety of anti-virus tools. A power user is
more able to determine whether a change detected by a checksum program is in
fact legitimate. Additionally, a power user is going to be better equipped to
configure some of the other tools, such as general purpose monitors and access
control shells.
5.4.3 Constrained User
If the user is constrained by policy to run a small set of programs against a
known set of data files, an access control shell may be the appropriate choice.
As an example, consider a data entry clerk who is permitted to run one
particular database application and a basic set of utilities: mail, word
processing, and a calendar program. An access control shell can be configured
so that any changes to executable files by that user are deemed illegal
operations. Additionally, if the set of executable files is restricted for the
user, it is difficult to introduce a virus into the system. The virus is unable
to spread if it can never be executed.
5.4.4 Acceptance Testing
Acceptance testing is a means by which software is verified to be
"virus-free" before it is put into daily use. This is usually accomplished by
placing the software on an isolated system and performing tests that are
intended to mimic every day use. A combination of anti-virus tools is required
to adequately perform this function, which must detect both known and future
viruses. In particular, a checksum program is most useful. Even if the trigger
conditions for the payload are not met, the virus will still most likely
attempt to replicate. It is the result of the replication process that a
checksum program detects.
5.4.5 Multi-User Systems
Although viruses found in the wild have been limited to personal computer
systems, viruses for multi-user systems have been demonstrated in a number of
laboratory experiments. Therefore, the potential exists for viruses on
multi-user systems. As a result, it is prudent to ensure that the security
measures taken on a multi-user system address viruses as well.
Currently, administrators of multi-user systems have a limited number of
options for virus protection. Administrators of these systems cannot use
monitors or scanners. Since there are no known viruses, there are no signatures
to search for or expected virus behavior to detect. An option that is available
to administrators of multi-user systems is change detection. Many of these
systems are already equipped with a checksum program. Access control shells are
another possibility for many systems. Like access control, though, they are not
usually designed for virus detection.
5.4.6 Network Server
Network servers present an interesting problem. They can support a wide variety
of machines, but may run an entirely different operating system. For instance,
a UNIX server may support a network of PC and Macintosh workstations.
The UNIX system cannot be infected by the Jerusalem-B or WDEF viruses, but
infected files may be stored on its disk. Once the network server has infected
files on it, the workstations it supports will rapidly become infected as well.
Since the viruses never execute on the server, the administrator is limited to
static detection techniques such as scanners or change detectors. The nature of
network servers allows these tools to be run automatically during off-peak
periods.
6.0 Selecting the Right Tool
Once an anti-virus technique has been selected, an appropriate tool from that
class must be selected. This section presents several features to be considered
when selecting a specific product from a class of tools.
6.1 Selecting a Scanner
Scanners are implemented in several forms. Hardware implementations, available
as add-on boards, scan all bus transfers. Software implementations include both
non-resident and resident software for the automatic scanning of diskettes.
Non-resident software is sufficiently flexible to meet most needs; however, to
be effective the user must execute the software regularly. Hardware or resident
software are better choices for enforcing security policy compliance. Resident
scanners may be susceptible to stealth viruses.
Although most scanners use similar detection techniques, notable differences
among products exist. Questions that potential users should consider when
selecting a scanner include:
o How frequently is the tool updated? A scanner must be updated regularly
to remain effective. How frequently updates are needed depends on which
platform the scanner is used. Update frequency should be proportional
to the rate at which new viruses are discovered on that platform.
o Can the user add new signatures? This can be very important if a
particularly harmful virus emerges between updates.
o Does the tool employ algorithmic detection? For which viruses does the
tool use algorithmic detection? Algorithmic detection is preferable to
the use of multiple signatures to detect polymorphic viruses.
o How efficient is the tool? Users are less likely to use a slow scanner.
There can be a significant difference in performance between different
search algorithms.
o Does the vendor develop their own virus signatures, or are the
signatures based on published search strings? There is nothing
particularly wrong with published search strings, but it indicates the
level of resources the vendor has committed to the product.
o What is the level of documentation? Some packages arrive with large
fact-filled binders; other packages are a single floppy disk with a few
ASCII files describing installation and parameters.
6.2 Selecting a General Purpose Monitor
General purpose monitors are usually implemented in software; however, hardware
implementations do exist. Hardware versions may be more difficult to
circumvent, but they are not foolproof. The following questions should be
considered when selecting a general purpose monitor:
o How flexible are the configuration files? Can different parts of the
monitor be disabled? Can the monitor be configured so that certain
executables can perform suspect actions? For example, a self-modifying
executable will still need to be able to modify itself.
o What types of suspect behavior are monitored? The more types of behavior
monitored, the better. A flexible configuration to select from the set
of features is desirable.
o Can the monitor be reconfigured to scan for additional virus techniques?
Are updates provided as new virus techniques are discovered?
6.3 Selecting an Access Control Shell
Access control shells may be implemented in software or as hybrid packages with
both hardware and software components. If encryption modules are required, they
can be designed as software or hardware. The following questions should be
considered when selecting an access control shell:
o What type of access control mechanism does the shell provide and does
it fit your security policy?
o If encryption is employed, what is the strength of the algorithms used?
In general, publicly scrutinized algorithms are to be preferable to
secret, proprietary algorithms where you are depending on the secrecy of
the algorithm, rather than secrecy of the key.
o How strong are the identification and authentication mechanisms?
provides basic criteria for analyzing the strength of these mechanisms.
o Are the passwords themselves adequately protected? Passwords should
never be stored in cleartext.
6.4 Selecting a Change Detector
Due to cost considerations, change detection tools are usually implemented in
software. However, hardware implementations do speed the calculation of
cryptographic checksums. The following questions should be considered when
selecting a change detector:
o What kind of checksum algorithm does the tool use - CRC or
cryptographic? CRC algorithms are faster. Cryptographic checksums are
more secure.
o Can the tool be configured to skip executables that are known to be
self-modifying? Consistent false positives will eventually cause the
end-user to ignore the reports.
o How are the checksums stored? Some tools create a checksum file for
every executable, which tends to clutter the file system and wastes
disk space. Other tools store all checksums in a single file. Not only
is this technique a more efficient use of disk space, but it also
allows the user to store the checksum file off-line (e.g., on a floppy).
6.5 Selecting an Identification Tool
The following questions should be considered when selecting a scanner for
identification:
o How many viruses does it detect? How many different viruses are
identified? The former asks how many different viruses are detected,
whereas the latter asks how many different names are assigned to these
different viruses. If a scanner is using signature strings, signatures
can appear in variants. These questions will give some understanding
regarding the level of precision provided by a particular tool.
o What names are used by the identification tool? Many viruses have
numerous "aliases," so different scanners will produce different names
for the same infection. This is especially true with IBM PC viruses.
The identification feature of the scanner is only useful if the scanner
comes with a virus catalog or uses the same nameset as an available
catalog.
Precise identification tools will be more useful when they become available,
although the same limitations regarding a virus information catalog will still
apply.
6.6 Selecting a Removal Tool
Removal tools are more difficult to evaluate, but the following items may be of
assistance:
o Ask for a list of viruses that can be removed, and the general level of
accuracy. (For example, "75 of disinfections will result in a working
executable.") Ask for a list of viruses that cannot be removed. Use
the ratio for the basis of a rough comparison.
o Get a scanner and removal tool that work from the same naming space. The
removal tool works on the basis of the virus you name. You need to
supply it with the name by which it knows the virus. Matched
identification and removal tools are required to make it work.
7.0 For Additional Information
The National Institute of Standards and Technology's Computer Security Division
maintains an electronic bulletin board system (BBS) focusing on information
systems security issues. It is intended to encourage sharing of information
that will help users and managers better protect their data and systems. The
BBS contains the following types of information specific to the virus field:
o alerts regarding new viruses, Trojan horses, and other threats;
o anti-virus product reviews (IBM PC and Macintosh);
o technical papers on viruses, worms, and other threats;
o anti-virus freeware and shareware;
o and archives of the VIRUS-L forum.
Occasionally, the alerts contain signature strings to update scanners. The
anti-virus product reviews examine and evaluate specific tools. The papers
provide an extensive body of basic knowledge regarding these threats. The
VIRUS-L forum has served as a world-wide discussion forum for the exchange of
information regarding viruses since April 1988. The past issues are available
for download.
Access Information
The NIST Computer Security Resource Center BBS can be access via dial-up or
through the Internet via telnet:
Dial-up access: (301) 948-5717 (2400 baud or less)
(301) 948-5140 (9600 baud)
Internet: telnet cs-bbs.ncsl.nist.gov (129.6.54.30)
References
[BP92] Lawrence E. Bassham III and W. Timothy Polk. "Precise Identification
of Computer Viruses", in the Proceedings of the 15th National Computer
Security Conference, 1992.
[Sku92] Fridrik Skulason. "The Mutation Engine - The Final Nail?", Virus
Bulletin, pages 11-12, April 1992.
[Rad91] Yisrael Radai. "Checksumming Techniques for Anti-viral Purposes",
In "Proceedings of the First International Virus Bulletin Conference", 1991.
[Bon91] Vesselin Bontchev. "The Bulgarian and Soviet Virus Factories", In
"Proceedings of the First International Virus Bulletin Conference", 1991.
[Coh92] Dr. Frederick Cohen. "Current Best Practices Against Computer Viruses
With Examples From The DOS Operating System", In "Proceedings of the Fifth
International Computer Virus & Security Conference", 1992.
[Sol92] Dr. Alan Solomon. "Mechanisms of Stealth", In "Proceedings of the Fifth
International Computer Virus & Security Conference", 1992.
[FIPS112] Password Usage. Federal Information Processing Standard (FIPS PUB)
112, National Institute of Standards and Technology, May 1985.
[WC89] John Wack and Lisa Carnahan. "Computer Viruses and Related Threats:
A Management Guide", Special Publication 500-166. National Institute of
Standards and Technology. August, 1989.
Gustavus J. Simmons, editor. "Contemporary Cryptology: The Science of
Information Integrity", IEEE Press, 1992.
Index
see hardcopy.
Tables
Error Scanner Binary Generic Access
Type Checksum Analysis Monitor Shell
=============================================================================
False I F F F F
Positive
False I N F F F
Negative
I= Infrequent
F= Frequent
N= Never
Table 1
Scanner Binary Generic Access
Criteria Checksum Analysis Monitor Shell
=============================================================================
Ease of VG A P P A
Use
Admin. L L H H H
Overhead
VG = Very Good
A = Average
P = Poor
L = Low
H = High
Table 2
Tool Add'l Functionality
=============================================
Scanner Identification
Checksum Detect known Trojan horses
Binary Detect Trojan Horses
Analysis
Generic Detect Trojan horses
Monitor
Access Enforcing organizational
Shell security policy
Table 3
Point of Scanner Binary Generic Access
Detection Checksum Analysis Monitor Shell
=============================================================================
Static YES No Yes No No
Executable
Replication No No No Yes Yes
Phase
After Yes Yes Yes No Yes
Infection
Table 4