1774 lines
80 KiB
Plaintext
1774 lines
80 KiB
Plaintext
![]() |
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
|