2377 lines
85 KiB
Plaintext
2377 lines
85 KiB
Plaintext
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses and Related Problems
|
|||
|
|
|||
|
Steve R. White
|
|||
|
David M. Chess
|
|||
|
IBM Thomas J. Watson Research Center
|
|||
|
Yorktown Heights, NY
|
|||
|
|
|||
|
Chengi Jimmy Kuo
|
|||
|
IBM Los Angeles Scientific Center
|
|||
|
Los Angeles, CA
|
|||
|
|
|||
|
Research Report (RC 14405)
|
|||
|
January 30, 1989
|
|||
|
|
|||
|
|
|||
|
|
|||
|
This research report is provided without restriction;
|
|||
|
we encourage its redistribution.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Copies may be requested from:
|
|||
|
|
|||
|
IBM Thomas J. Watson Research Center
|
|||
|
Distribution Services F-11 Stormytown
|
|||
|
Post Office Box 218
|
|||
|
Yorktown Heights, New York 10598
|
|||
|
|
|||
|
(This report will be available from this address up to
|
|||
|
one year after the IBM publication date (up to Jan 1990))
|
|||
|
|
|||
|
|
|||
|
This online version differs from the hardcopy report only
|
|||
|
in pagination, and in using *asterisks* for emphasis. It
|
|||
|
is formatted to print at 66 lines per page, and 80 or so
|
|||
|
characters per line (including a 10 character margin on
|
|||
|
either side).
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses and Related Problems
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Steve R. White
|
|||
|
David M. Chess
|
|||
|
IBM Thomas J. Watson Research Center
|
|||
|
Yorktown Heights, NY
|
|||
|
|
|||
|
Chengi Jimmy Kuo
|
|||
|
IBM Los Angeles Scientific Center
|
|||
|
Los Angeles, CA
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Research Report Number RC 14405
|
|||
|
|
|||
|
January 30, 1989
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
ABSTRACT
|
|||
|
|
|||
|
|
|||
|
|
|||
|
We discuss computer viruses and related problems. Our
|
|||
|
intent is to help both executive and technical managers
|
|||
|
understand the problems that viruses pose, and to suggest
|
|||
|
practical steps they can take to help protect their
|
|||
|
computing systems.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Abstract ii
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
CONTENTS
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1.0 Executive Summary . . . . . . . . . . . . . . . . . 1
|
|||
|
1.1 What Is a Computer Virus? . . . . . . . . . . . . . 1
|
|||
|
1.2 How Can Computer Viruses Affect an Organization? . . 2
|
|||
|
1.3 How Serious Is The Problem? . . . . . . . . . . . . 2
|
|||
|
1.4 Summary and Recommendations . . . . . . . . . . . . 3
|
|||
|
|
|||
|
2.0 Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management . . . . . . . . . . . . . . . . . . . . . . . 5
|
|||
|
2.1 How Viruses Infect Computing Systems . . . . . . . . 5
|
|||
|
2.2 How Viruses Differ From Other Security Threats . . . 6
|
|||
|
2.3 General Security Policies . . . . . . . . . . . . . 7
|
|||
|
2.3.1 User Education . . . . . . . . . . . . . . . . . 7
|
|||
|
2.3.2 Backups . . . . . . . . . . . . . . . . . . . . 7
|
|||
|
2.4 Decreasing the Risk of Viral Infection . . . . . . . 8
|
|||
|
2.4.1 Isolated Systems . . . . . . . . . . . . . . . . 8
|
|||
|
2.4.2 Limited-Function Systems . . . . . . . . . . . . 9
|
|||
|
2.4.3 Policies for Software Repositories . . . . . . 10
|
|||
|
2.4.4 Policies for Production Systems . . . . . . . 11
|
|||
|
2.5 Detecting Viral Infections . . . . . . . . . . . . 12
|
|||
|
2.5.1 Watching for Unexpected Things Happening . . . 13
|
|||
|
2.5.2 Some Symptoms of Known Viruses . . . . . . . . 13
|
|||
|
2.5.3 Watching for Changes to Executable Objects . . 15
|
|||
|
2.5.4 Using External Information Sources . . . . . . 17
|
|||
|
2.6 Containing Viral Infections . . . . . . . . . . . 17
|
|||
|
2.6.1 The Importance of Early Detection . . . . . . 17
|
|||
|
2.6.2 The Importance of Rapid Action . . . . . . . . 18
|
|||
|
2.7 Recovering from Viral Infections . . . . . . . . . 19
|
|||
|
2.7.1 Restoration and Backups . . . . . . . . . . . 19
|
|||
|
2.7.2 Virus-Removing Programs . . . . . . . . . . . 20
|
|||
|
2.7.3 Watching for Re-Infection . . . . . . . . . . 20
|
|||
|
2.8 Summary and Recommendations . . . . . . . . . . . 21
|
|||
|
|
|||
|
For Further Reading . . . . . . . . . . . . . . . . . . 23
|
|||
|
|
|||
|
Glossary . . . . . . . . . . . . . . . . . . . . . . . 24
|
|||
|
|
|||
|
Appendix: Viral Infections in PC-DOS . . . . . . . . . 27
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Contents iii
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PREFACE
|
|||
|
|
|||
|
|
|||
|
|
|||
|
While this document has been widely reviewed, and many
|
|||
|
helpful suggestions have been incorporated, the authors are
|
|||
|
entirely responsible for its present content. It does not
|
|||
|
represent the opinions, policies, or recommendations of IBM
|
|||
|
or any other organization.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Preface iv
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1.0 EXECUTIVE SUMMARY
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Computer viruses present a relatively new kind of security
|
|||
|
problem in computing systems. The purpose of this section
|
|||
|
is to acquaint the senior management of an organization with
|
|||
|
the nature of the problem. It also outlines some of the
|
|||
|
steps that can be taken to reduce the organization's risk
|
|||
|
from computer viruses and other, similar, problems.
|
|||
|
|
|||
|
Traditional computer security measures are helpful, but new
|
|||
|
measures are needed to deal with the problems effectively.
|
|||
|
The computer security management of the organization will
|
|||
|
play a key role in reducing the risk. But education and
|
|||
|
ongoing participation of the users are also vital.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1.1 WHAT IS A COMPUTER VIRUS?
|
|||
|
|
|||
|
|
|||
|
A computer virus is one kind of threat to the security and
|
|||
|
integrity of computer systems. Like other threats, a
|
|||
|
computer virus can cause the loss or alteration of programs
|
|||
|
or data, and can compromise their confidentiality. Unlike
|
|||
|
many other threats, a computer virus can spread from program
|
|||
|
to program, and from system to system, without direct human
|
|||
|
intervention.
|
|||
|
|
|||
|
The essential component of a virus is a set of instructions
|
|||
|
which, when executed, spreads itself to other, previously
|
|||
|
unaffected, programs or files. A typical computer virus
|
|||
|
performs two functions. First, it copies itself into
|
|||
|
previously-uninfected programs or files. Second, (perhaps
|
|||
|
after a specific number of executions, or on a specific
|
|||
|
date) it executes whatever other instructions the virus
|
|||
|
author included in it. Depending on the motives of the
|
|||
|
virus author, these instructions can do anything at all,
|
|||
|
including displaying a message, erasing files or subtly
|
|||
|
altering stored data. In some cases, a virus may contain no
|
|||
|
intentionally harmful or disruptive instructions at all.
|
|||
|
Instead, it may cause damage by replicating itself and
|
|||
|
taking up scarce resources, such as disk space, CPU time, or
|
|||
|
network connections.
|
|||
|
|
|||
|
There are several problems similar to computer viruses.
|
|||
|
They too have colorful names: worms, bacteria, rabbits, and
|
|||
|
so on. Definitions of them are given in the glossary. Each
|
|||
|
shares the property of replicating itself within the
|
|||
|
computing system. This is the property on which we will
|
|||
|
focus, using viruses as an example. There are also a
|
|||
|
variety of security issues other than viruses. Here, we
|
|||
|
|
|||
|
|
|||
|
Executive Summary 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
will deal only with viruses and related problems, since new
|
|||
|
measures are required to deal with them effectively.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1.2 HOW CAN COMPUTER VIRUSES AFFECT AN ORGANIZATION?
|
|||
|
|
|||
|
|
|||
|
Let us examine a particular sequence of events, by which a
|
|||
|
virus could enter an organization and spread within it.
|
|||
|
Suppose that the organization hires an outside person to
|
|||
|
come in and perform some work. Part of that person's work
|
|||
|
involves working on one of the organization's personal
|
|||
|
computers. The person brings in a few programs to aid in
|
|||
|
this work, such as a favorite text editor.
|
|||
|
|
|||
|
Without the person having realized it, the text editor may
|
|||
|
be infected with a virus. Using that editor on one of the
|
|||
|
organization's machines causes the virus to spread from the
|
|||
|
editor to one of the programs stored on the organization's
|
|||
|
machine, perhaps to a spreadsheet program. The virus has
|
|||
|
now entered the organization.
|
|||
|
|
|||
|
Even when the outside person leaves, the virus remains on
|
|||
|
the machine that it infected, in the spreadsheet program.
|
|||
|
When an employee uses that spreadsheet subsequently, the
|
|||
|
virus can spread to another program, perhaps to a directory
|
|||
|
listing program that the employee keeps on the same floppy
|
|||
|
disk as the spreadsheet data files. The listing program is
|
|||
|
then infected, and the infection can be spread to other
|
|||
|
computers to which this floppy disk is taken. If the
|
|||
|
employee's personal computer is connected to the
|
|||
|
organization's network, the employee may send the listing
|
|||
|
program to another user over the network. In either case,
|
|||
|
the virus can spread to more users, and more machines, via
|
|||
|
floppy disks or networks. Each copy of the virus can make
|
|||
|
multiple copies of itself, and can infect any program to
|
|||
|
which it has access. As a result, the virus may be able to
|
|||
|
spread throughout the organization in a relatively short
|
|||
|
time.
|
|||
|
|
|||
|
Each of the infected programs in each of the infected
|
|||
|
machines can execute whatever other instructions the virus
|
|||
|
author intended. If these instructions are harmful or
|
|||
|
disruptive, the pervasiveness of the virus may cause the
|
|||
|
harm to be widespread.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1.3 HOW SERIOUS IS THE PROBLEM?
|
|||
|
|
|||
|
|
|||
|
Traditional security measures have attempted to limit the
|
|||
|
number of security incidents to an acceptable level. A
|
|||
|
|
|||
|
|
|||
|
Executive Summary 2
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
single incident of lost files in a year may be an acceptable
|
|||
|
loss, for instance. While this is important, it only
|
|||
|
addresses part of the problem of viruses. Since a single
|
|||
|
virus may be able to spread throughout an organization, the
|
|||
|
damage that it could cause may be much greater than what
|
|||
|
could be caused by any individual computer user.
|
|||
|
|
|||
|
Limiting the number of initial viral infections of an
|
|||
|
organization is important, but it is often not feasible to
|
|||
|
prevent them entirely. As a result, it is important to be
|
|||
|
able to deal with them when they occur.
|
|||
|
|
|||
|
Most actual viruses discovered to date have either been
|
|||
|
relatively benign, or spread rather slowly. The actual
|
|||
|
damage that they have caused has been limited accordingly.
|
|||
|
In some cases, though, thousands of machines have been
|
|||
|
affected. Viruses can easily be created which are much less
|
|||
|
benign. Their *potential* damage is indeed large.
|
|||
|
Organizations should evaluate their vulnerability to this
|
|||
|
new threat, and take actions to limit their risks.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1.4 SUMMARY AND RECOMMENDATIONS
|
|||
|
|
|||
|
|
|||
|
o A computer virus is a program that can infect other
|
|||
|
programs by modifying them to include a copy of itself.
|
|||
|
When the infected programs are executed, the virus
|
|||
|
spreads itself to still other programs.
|
|||
|
|
|||
|
o Viruses can spread rapidly in a network or computing
|
|||
|
system and can cause widespread damage.
|
|||
|
|
|||
|
o Unlike many other security threats, viruses can enter a
|
|||
|
given computing system without anyone intending them to.
|
|||
|
|
|||
|
|
|||
|
o There are no known ways to make a general computing
|
|||
|
system completely immune from viral attacks, but there
|
|||
|
are steps you can take to decrease the risks:
|
|||
|
|
|||
|
- Use good general security practices. (For a more
|
|||
|
complete discussion of these points, and some
|
|||
|
examples of others, see reference (6).)
|
|||
|
|
|||
|
-- Keep good backups of critical data and programs.
|
|||
|
-- Periodically review overall controls to
|
|||
|
determine weaknesses.
|
|||
|
-- Use access control facilities to limit access to
|
|||
|
information by users, consistent with their job
|
|||
|
duties and management policies. Audit accesses
|
|||
|
that do occur.
|
|||
|
|
|||
|
|
|||
|
Executive Summary 3
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
-- Do not use network connections to outside
|
|||
|
organizations without a mutual review of
|
|||
|
security practices.
|
|||
|
-- Consider limiting electronic mail communications
|
|||
|
to non-executable files. Separate
|
|||
|
communications that must move executable files
|
|||
|
from electronic mail, so that they can be
|
|||
|
separately controlled.
|
|||
|
-- Make security education a prerequisite to any
|
|||
|
computer use.
|
|||
|
|
|||
|
- Put a knowledgeable group in place to deal with
|
|||
|
virus incidents.
|
|||
|
|
|||
|
-- The group may be a formal part of the
|
|||
|
organization, or may be an informal collection
|
|||
|
of knowledgeable people.
|
|||
|
|
|||
|
-- The group should be responsible for educating
|
|||
|
users about the threat of viruses, providing
|
|||
|
accurate information about viruses, responding
|
|||
|
to reports of viruses, and dealing with viral
|
|||
|
infections when they occur.
|
|||
|
|
|||
|
-- Make sure each employee who works with a
|
|||
|
computer knows how to contact this group if they
|
|||
|
suspect a viral infection.
|
|||
|
|
|||
|
- Develop a plan to deal with viruses *before* there is
|
|||
|
a problem.
|
|||
|
|
|||
|
-- Decrease the risks of an initial infection, from
|
|||
|
internal and external sources.
|
|||
|
-- Put mechanisms in place to detect viral
|
|||
|
infections quickly.
|
|||
|
-- Develop procedures to contain an infection once
|
|||
|
one is detected.
|
|||
|
-- Know how to recover from a viral infection.
|
|||
|
|
|||
|
- Test the plan periodically, as you would test a fire
|
|||
|
evacuation plan.
|
|||
|
|
|||
|
-- But *do not* use a real virus to test the plan!
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Executive Summary 4
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.0 COPING WITH COMPUTER VIRUSES: A GUIDE FOR TECHNICAL
|
|||
|
MANAGEMENT
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Once an organization makes a commitment to deal with the
|
|||
|
problems of computer viruses, there are specific areas which
|
|||
|
should receive attention. The purpose of this section is to
|
|||
|
acquaint technical management with the problems and to
|
|||
|
indicate the actions that can be taken to limit the risks
|
|||
|
posed by viruses.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.1 HOW VIRUSES INFECT COMPUTING SYSTEMS
|
|||
|
|
|||
|
|
|||
|
There are many ways in which a system can become infected
|
|||
|
with a virus. Any time a program is run which can alter one
|
|||
|
or more other programs, there is the possibility of viral
|
|||
|
infection. Any time a user executes a program which is
|
|||
|
written by anyone else, compiled by a compiler, or linked
|
|||
|
with run time libraries, all the resources to which that
|
|||
|
program has access are in the hands of every person who
|
|||
|
contributed to that program, that compiler, or those
|
|||
|
libraries.
|
|||
|
|
|||
|
The initial introduction of an infected program can occur
|
|||
|
through a large variety of channels, including:
|
|||
|
|
|||
|
o Software introduced into or used on the system by an
|
|||
|
outsider who had access to the system,
|
|||
|
|
|||
|
o Software used at home by an employee whose home computer
|
|||
|
system is, unknown to the employee, itself infected,
|
|||
|
|
|||
|
o Software purchased from a commercial software company
|
|||
|
whose production facilities are infected,
|
|||
|
|
|||
|
o Software that turns out to be infected that has been
|
|||
|
down-loaded from public bulletin boards for business
|
|||
|
use, or by employees,
|
|||
|
|
|||
|
o Software intentionally infected by a malicious or
|
|||
|
disgruntled employee,
|
|||
|
|
|||
|
o *Any* other time that a piece of software (including
|
|||
|
programs, operating systems, and so on) is created
|
|||
|
within the organization, or brought in from *any*
|
|||
|
outside source.
|
|||
|
|
|||
|
See the appendix for an example of sources and locations of
|
|||
|
possible infection for one operating system.
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management 5
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.2 HOW VIRUSES DIFFER FROM OTHER SECURITY THREATS
|
|||
|
|
|||
|
|
|||
|
|
|||
|
There are many kinds of threats to security. Threats
|
|||
|
traceable to dial-in systems are greatly reduced with the
|
|||
|
use of call-back systems. Simple threats created by
|
|||
|
disgruntled employees can often be traced to the person
|
|||
|
responsible. One important thing that makes the virus
|
|||
|
different from all the rest is its untraceability. Except
|
|||
|
in rare cases, the only way a virus' author becomes known is
|
|||
|
if the author admits to ownership. As a result, an author
|
|||
|
can create a virus with reasonable certainty that he will
|
|||
|
not be discovered. This allows great latitude in the design
|
|||
|
of the destructive portion of the virus.
|
|||
|
|
|||
|
The only perfect ways to protect against viral infection are
|
|||
|
isolation and reduced functionality. A computer system
|
|||
|
cannot be infected if it runs only one fixed program, and
|
|||
|
cannot have new programs either loaded or created on it.
|
|||
|
But this is clearly not very useful in many circumstances.
|
|||
|
So there is almost always some exposure. As with other
|
|||
|
security concerns, it is a matter of weighing benefits,
|
|||
|
practicality, and potential risks, and then taking
|
|||
|
cost-effective action to help control those risks.
|
|||
|
|
|||
|
Viruses exhibit elements of many other security threats.
|
|||
|
(See the Glossary for a summary of some of these threats.)
|
|||
|
There are important differences, though. Dr. Fred Cohen,
|
|||
|
who has done much of the original research on computer
|
|||
|
viruses, defines a virus as:
|
|||
|
|
|||
|
a program that can "infect" other programs by modifying
|
|||
|
them to include a possibly evolved copy of itself. (See
|
|||
|
reference (1).)
|
|||
|
|
|||
|
But a virus is more than the part that replicates itself.
|
|||
|
There is usually also a potentially damaging portion. This
|
|||
|
portion could be a "time bomb" (on November 11th, display a
|
|||
|
political message), a "logic bomb" (when it sees a certain
|
|||
|
write to disk, it also corrupts the file structure), or
|
|||
|
anything else the virus author can design. The variety of
|
|||
|
possible effects is part of the reason why the notion of a
|
|||
|
virus is so confusing to many people. The term "virus" is
|
|||
|
sometimes misused to refer to anything undesirable that can
|
|||
|
happen to a computer. This is incorrect. The thing that
|
|||
|
makes viruses and related threats different from other
|
|||
|
problems is that they spread.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management 6
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.3 GENERAL SECURITY POLICIES
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.3.1 User Education
|
|||
|
|
|||
|
|
|||
|
Good security policies depend on the knowledge and
|
|||
|
cooperation of the users. This is just as true of security
|
|||
|
against viruses as it is of policies about password
|
|||
|
management. Users should be aware of the dangers that
|
|||
|
exist, should know what to do if they suspect they have
|
|||
|
found a security problem. In particular, they should know
|
|||
|
whom to call if they have questions or suspicions, and
|
|||
|
should know what to do, and what not to do, to minimize
|
|||
|
security risks. Users should be encouraged to feel that
|
|||
|
security measures are things that they want to do for their
|
|||
|
own benefit, rather than things that are required for no
|
|||
|
rational reason.
|
|||
|
|
|||
|
A strategy to detect and contain viruses is described below.
|
|||
|
An important part of that strategy is for users to know whom
|
|||
|
to call if they see a system problem that may be the result
|
|||
|
of a virus. Someone should always be available to work with
|
|||
|
the user in determining if a problem exists, and to report
|
|||
|
the problem to a central source of information if it is
|
|||
|
serious. This central source must have the ability to
|
|||
|
inform the necessary people of the problem quickly and
|
|||
|
reliably, and to set in motion the process of containing and
|
|||
|
solving the problem. More detailed suggestions for this
|
|||
|
mechanism will be given below, but each stage depends on
|
|||
|
education. It is important to educate the end users, the
|
|||
|
first-level support people, and management involved at all
|
|||
|
levels, since they must take the necessary actions quickly
|
|||
|
when a viral infection is detected.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.3.2 Backups
|
|||
|
|
|||
|
|
|||
|
Even without the threat of viruses, good backups are an
|
|||
|
important part of system management. When a program or a
|
|||
|
data file is lost, a good set of backups can save many days
|
|||
|
or months of work. The potential harm caused by computer
|
|||
|
viruses only increases the need for backups.
|
|||
|
|
|||
|
Although they are necessary for recovery, backups can also
|
|||
|
present a place for a virus to hide. When a virus attack
|
|||
|
has been stopped, and the virus removed from all software on
|
|||
|
the system, the obvious way to recover altered or lost files
|
|||
|
is by restoring them from backups. Great care must be taken
|
|||
|
not to reintroduce the virus into the system in the process!
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management 7
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
All backups should be inspected to ensure that the virus is
|
|||
|
not present in any file on any backup. Until a backup has
|
|||
|
been certified "clean," it should not be used, unless
|
|||
|
certain files on it are not recoverable through other means.
|
|||
|
Even in this case, it is necessary to be very careful to
|
|||
|
restore only objects which the virus did not infect or
|
|||
|
otherwise change. The behavior of the virus should be well
|
|||
|
understood before any restoration from backup is attempted.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.4 DECREASING THE RISK OF VIRAL INFECTION
|
|||
|
|
|||
|
|
|||
|
Viruses can spread from one user to another on a single
|
|||
|
system, and from one system to another. A virus can enter a
|
|||
|
company either by being written within the company, or by
|
|||
|
being brought in from the outside. Although a virus cannot
|
|||
|
be written accidentally, a virus may be brought in from the
|
|||
|
outside either intentionally or unintentionally. Viruses
|
|||
|
can enter a company because a program is brought in from
|
|||
|
outside which is infected, even though the person who brings
|
|||
|
it in does not know it.
|
|||
|
|
|||
|
Because sharing of programs between people is so
|
|||
|
commonplace, it is difficult to prevent an initial infection
|
|||
|
from "outside." An employee may take a program home to use
|
|||
|
it for business purposes on his or her home computer, where
|
|||
|
it becomes infected. When the program is returned to the
|
|||
|
workplace, the infection can spread to the workplace.
|
|||
|
Similarly, an outside person can bring a set of programs
|
|||
|
into a company in order to perform work desired by the
|
|||
|
company. If these programs are infected, and they are
|
|||
|
executed on the company's systems, these systems may also
|
|||
|
become infected.
|
|||
|
|
|||
|
There are two major ways to prevent infection in the first
|
|||
|
place, and to limit the spread of an existing infection:
|
|||
|
isolating systems, and limiting their function.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.4.1 Isolated Systems
|
|||
|
|
|||
|
|
|||
|
Since viruses spread to new users and systems only when
|
|||
|
information is shared or communicated, you can prevent
|
|||
|
viruses from spreading by isolating users and systems.
|
|||
|
Systems that are connected to other systems by a network can
|
|||
|
spread a virus across that network. Isolating systems from
|
|||
|
the network will prevent their being infected by that
|
|||
|
network. If a company maintains connections with other
|
|||
|
companies (or universities, or other institutions) by a
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management 8
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
network, a virus may be able to enter the company through
|
|||
|
that network. By isolating the company from such external
|
|||
|
networks, it cannot be infected by these networks.
|
|||
|
|
|||
|
This is a reasonable policy to follow when possible,
|
|||
|
especially for those systems which contain especially
|
|||
|
sensitive programs and data. It is impractical in many
|
|||
|
cases, though. Networks are valuable components of a
|
|||
|
computing system. The easy sharing of programs and data
|
|||
|
that they make possible can add substantially to the
|
|||
|
productivity of a company. You should be aware, however,
|
|||
|
that this sharing also increases the risk of viral infection
|
|||
|
to these systems. This is especially true if the network
|
|||
|
security measures have not been designed with viruses and
|
|||
|
related threats in mind.
|
|||
|
|
|||
|
Your organization may wish to limit the kinds of access to
|
|||
|
systems afforded to those outside the organization. In many
|
|||
|
cases, users of external systems may be less motivated to be
|
|||
|
benevolent to your systems than internal users are. This
|
|||
|
may make it worthwhile to limit the ability of external
|
|||
|
users to transmit executable files, or have full interactive
|
|||
|
access, to internal systems.
|
|||
|
|
|||
|
Similarly, movement of programs between personal computers
|
|||
|
on floppy disks can result in one system infecting another.
|
|||
|
If an employee's home computer is infected, for instance,
|
|||
|
bringing a program (or even a bootable disk) from home to
|
|||
|
work could result in the work computer becoming infected.
|
|||
|
You may want to have a policy that employees should not
|
|||
|
bring programs or bootable disks between work and home. Or,
|
|||
|
you may want to have a policy that employees should use
|
|||
|
virus-detection tools on their home computers as well as
|
|||
|
their work computers.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.4.2 Limited-Function Systems
|
|||
|
|
|||
|
|
|||
|
Since viruses must be able to infect other executable
|
|||
|
objects in order to spread, you can help prevent viruses
|
|||
|
from spreading by eliminating this ability from a computing
|
|||
|
system. This can be done in some circumstances by
|
|||
|
restricting the ability to add or change programs on a
|
|||
|
system.
|
|||
|
|
|||
|
If general-purpose programming must be done on a system, as
|
|||
|
is the case with development systems, it is not possible to
|
|||
|
prevent users from creating or adding new programs. On
|
|||
|
these systems, it is not possible to prevent the
|
|||
|
introduction of viruses under every possible condition.
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management 9
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Many companies have computing systems, including
|
|||
|
workstations and personal computers, that are not used for
|
|||
|
general-purpose programming. A bank, for instance, may use
|
|||
|
personal computers as teller stations, to handle a fixed set
|
|||
|
of teller transactions. Since the tellers need not program
|
|||
|
these systems, it may be possible to strictly limit the
|
|||
|
introduction of new programs and thus greatly limit the
|
|||
|
introduction of viruses onto them.
|
|||
|
|
|||
|
This is a prudent policy. Whenever practical, limit the
|
|||
|
ability of users to add or change programs on the systems
|
|||
|
they use. This ability should be restricted to authorized
|
|||
|
personnel, and these personnel should use every means
|
|||
|
available to them to check any new programs for viruses
|
|||
|
before they are installed in the limited-function systems.
|
|||
|
As long as no new programs are introduced, no new viruses
|
|||
|
can be introduced onto these systems.
|
|||
|
|
|||
|
Remember, though, that the trend in personal workstations
|
|||
|
has been toward the empowerment of the individual user,
|
|||
|
including giving the user the ability to create programs to
|
|||
|
suit his or her own needs. Thus, it may not be practical
|
|||
|
and competitive in the long run to impose restrictions on
|
|||
|
many systems. The risk of viral infection must be weighed
|
|||
|
against the benefits of providing power and flexibility to
|
|||
|
the individual user.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.4.3 Policies for Software Repositories
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Software repositories are places in which programs reside
|
|||
|
which may be used by a number of people. These may be disks
|
|||
|
on a mainframe, which can be accessed from a number of
|
|||
|
different users' accounts. They may also be disks on a
|
|||
|
local area network file server, from which many users get
|
|||
|
common programs.
|
|||
|
|
|||
|
These repositories can pose more of a risk in the spread of
|
|||
|
viruses than most "private" program storage locations. If a
|
|||
|
commonly-accessed program becomes infected, such as a text
|
|||
|
editor used by an entire department, the entire department
|
|||
|
can become infected very quickly. So, extra care is
|
|||
|
required to prevent infection of repositories.
|
|||
|
|
|||
|
A policy can be put into place that requires each program
|
|||
|
added to a repository to be checked thoroughly for possible
|
|||
|
infection. It is helpful, for instance, to use tools to
|
|||
|
ensure that it is not infected with any of the already-known
|
|||
|
viruses.
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management 10
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
In cases in which users who access the repository deal with
|
|||
|
especially sensitive programs and data, it may be prudent to
|
|||
|
enforce even more stringent policies. Programs to be added
|
|||
|
may be tested first on isolated systems, to see if they show
|
|||
|
any signs of infecting other programs. Or, a repository
|
|||
|
team may inspect the source code of the program for viral
|
|||
|
code. If no viral code is found, the repository team can
|
|||
|
compile the program on an isolated system that has been
|
|||
|
certified to be free of viruses. In such a case, the only
|
|||
|
object code allowed on the repository would come directly
|
|||
|
from the team's compilation on its isolated system.
|
|||
|
|
|||
|
Repositories can also be helpful in detecting and
|
|||
|
controlling viruses. Consider the situation in which most
|
|||
|
users run a significant amount of the software that they
|
|||
|
execute from a central server to which they do not have
|
|||
|
write access, rather than from individual writeable disks.
|
|||
|
Since the users do not regularly update this software,
|
|||
|
viruses will not be able to spread as quickly between these
|
|||
|
users. If a program on a central repository becomes
|
|||
|
infected, it may be comparatively simple to replace it with
|
|||
|
an uninfected version (or remove it entirely). It may be
|
|||
|
more difficult to screen all programs on hundreds of
|
|||
|
individual systems. It may also be easier to audit the
|
|||
|
usage of, and updates to, a single software repository, as
|
|||
|
opposed to a large number of individual systems.
|
|||
|
|
|||
|
There are a variety of other areas in many organizations
|
|||
|
which could spread viruses rapidly, and hence which should
|
|||
|
be carefully controlled. Internal software distribution
|
|||
|
centers, for instance, could spread a virus widely if they
|
|||
|
were infected. Similarly, a software lending library, if
|
|||
|
infected, may transmit a virus to many other users before it
|
|||
|
is detected. Walk-in demo rooms and educational centers are
|
|||
|
also potential problems. In general, any place from which
|
|||
|
software is widely distributed, and which has uncontrolled
|
|||
|
software importation, needs special attention.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.4.4 Policies for Production Systems
|
|||
|
|
|||
|
|
|||
|
Production systems are those systems which are used to
|
|||
|
prepare internally-developed programs for distribution
|
|||
|
either within a company, or for sale to external customers.
|
|||
|
If these systems were infected with a virus, the virus could
|
|||
|
spread to programs used widely within the company, or to
|
|||
|
programs used by the company's customers. In the former
|
|||
|
case, this could spread the virus widely throughout the
|
|||
|
company. In the latter case, it could damage the reputation
|
|||
|
of the company with its customers. There has been
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management 11
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
documented cases of companies accidentally shipping
|
|||
|
virus-infected program products to customers.
|
|||
|
|
|||
|
Since the infection of production systems could have serious
|
|||
|
consequences, you should be especially careful about
|
|||
|
protecting them. The key to this is the institution of
|
|||
|
stringent change control policies on production systems.
|
|||
|
|
|||
|
They should be strongly isolated from non-production
|
|||
|
systems, so that only known, authorized files can be put
|
|||
|
onto the system. Each file should be checked for infection,
|
|||
|
to whatever extent possible. Installing object code on
|
|||
|
these systems should be avoided whenever possible. Rather,
|
|||
|
source code should be installed, and compiled locally with a
|
|||
|
trusted compiler. Where the impact of a viral infection
|
|||
|
would be particularly large, it may be important to inspect
|
|||
|
the source code before it is compiled, to avoid the
|
|||
|
introduction of a virus through the source code. If object
|
|||
|
code must be installed, its origin should be verified
|
|||
|
beforehand. For instance, object code for a personal
|
|||
|
computer could be installed only from an original,
|
|||
|
write-protected distribution disk, which has been found to
|
|||
|
be free of viruses.
|
|||
|
|
|||
|
In addition, virus-checking programs (see below) should be
|
|||
|
run frequently on production systems. On a multitasking
|
|||
|
system, it may be possible to run a virus detector
|
|||
|
continuously in the background. Further, a policy can be
|
|||
|
instituted which ensures that a virus detector will be
|
|||
|
executed at least once between the time that new files are
|
|||
|
installed on the system, and the time that any files are
|
|||
|
exported from the system.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.5 DETECTING VIRAL INFECTIONS
|
|||
|
|
|||
|
|
|||
|
With the possible exception of isolation, all of the methods
|
|||
|
outlined above for preventing viral infections are only
|
|||
|
somewhat reliable. Viruses can still reach some systems
|
|||
|
despite the implementation of preventative measures.
|
|||
|
Indeed, no perfect defense exists that still allows
|
|||
|
programming, and sharing of executable information. There
|
|||
|
is no "one time fix," as there is for many other computer
|
|||
|
security problems. This is a hole that cannot be plugged
|
|||
|
completely. Defenses will have to be improved with time to
|
|||
|
deal with new classes of viruses. Because of this, virus
|
|||
|
*detection* is an important component of system security.
|
|||
|
|
|||
|
The two most important resources available for the detection
|
|||
|
of viruses are watchful users and watchful programs. The
|
|||
|
best approaches to virus detection include both. The users
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management 12
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
should be aware of the possibility of viruses, just as they
|
|||
|
are aware of the need for backups, and to know what kinds of
|
|||
|
things to watch for. System programs and utilities should
|
|||
|
be available to help the users, and the computer center
|
|||
|
staff, to take advantage of this awareness.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.5.1 Watching for Unexpected Things Happening
|
|||
|
|
|||
|
|
|||
|
If users are aware of the kinds of visible things that are
|
|||
|
known to happen in systems that are virus-infected, these
|
|||
|
users can serve as an important line of defense. Users
|
|||
|
should know that odd behavior in a computer system may be a
|
|||
|
symptom of penetration by a virus, and they should know to
|
|||
|
whom such odd behavior should be reported.
|
|||
|
|
|||
|
On the other hand, it is a fact that odd behavior is usually
|
|||
|
*not* caused by viral penetration. Software bugs, user
|
|||
|
errors, and hardware failures are much more common. It is
|
|||
|
important to avoid unfounded rumors of viral infections, as
|
|||
|
dealing with such "false alarms" can be costly. An actual
|
|||
|
infection, however, may require rapid action. So the group
|
|||
|
to which users report oddities must have the skill to
|
|||
|
determine which reports are almost certainly due to one of
|
|||
|
these more common causes, and which merit closer
|
|||
|
investigation for possible viral infection. One obvious
|
|||
|
choice for such a group is within the computing center or
|
|||
|
"help desk," since the computing center staff probably
|
|||
|
already has a good idea of what sorts of oddities are
|
|||
|
"business as usual."
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.5.2 Some Symptoms of Known Viruses
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.5.2.1 Workstation Viruses
|
|||
|
|
|||
|
|
|||
|
This section lists specific oddities that are known to occur
|
|||
|
in workstations infected with particular viruses that have
|
|||
|
already occurred. Some of the things in these examples only
|
|||
|
occur once the virus is in place, and is triggered to
|
|||
|
perform its particular function. Others occur while the
|
|||
|
virus is still spreading. Some things users should know to
|
|||
|
watch for include:
|
|||
|
|
|||
|
o Unexpected changes in the time stamps or length of
|
|||
|
files, particularly executable files,
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management 13
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
o Programs taking longer to start, or running more slowly
|
|||
|
than usual,
|
|||
|
o Programs attempting to write to write-protected media
|
|||
|
for no apparent reason,
|
|||
|
o Unexplained decreases in the amount of available
|
|||
|
workstation memory, or increases in areas marked as
|
|||
|
"bad" on magnetic media,
|
|||
|
o Executable files unexpectedly vanishing,
|
|||
|
o Workstations unexpectedly "rebooting" when certain
|
|||
|
previously-correct programs are run, or a relatively
|
|||
|
constant amount of time after being turned on,
|
|||
|
o Unusual things appearing on displays, including
|
|||
|
"scrolling" of odd parts of the screen, or the
|
|||
|
unexpected appearance of "bouncing balls" or odd
|
|||
|
messages,
|
|||
|
o Unexpected changes to volume labels on disks and other
|
|||
|
media,
|
|||
|
o An unusual load on local networks or other communication
|
|||
|
links, especially when multiple copies of the same data
|
|||
|
are being sent at once.
|
|||
|
|
|||
|
It is important to remember, though, that future viruses may
|
|||
|
do none of these things. Users should be alert to oddities
|
|||
|
in general and should have a place to report them, as
|
|||
|
recommended above.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.5.2.2 Mainframe Viruses
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Viruses in multi-user computer systems share some of the
|
|||
|
typical behaviors of viruses in single-user workstations.
|
|||
|
In particular, lengths or time stamps of executable files
|
|||
|
may change, programs may load or execute more slowly,
|
|||
|
unusual errors (especially relating to disk-writes) may
|
|||
|
occur, files may vanish or proliferate, and odd things may
|
|||
|
appear on displays. If the virus is attempting to spread
|
|||
|
between users, users may also notice "outgoing mail" that
|
|||
|
they did not intend to send, "links" to other user's
|
|||
|
information that they did not intentionally establish, and
|
|||
|
similar phenomena.
|
|||
|
|
|||
|
Generally, the same comments apply in this environment as in
|
|||
|
the single-user workstation environment. Future viruses may
|
|||
|
do none of these things, and users should be sensitive to
|
|||
|
suspicious oddities in general, and have a place to which to
|
|||
|
report them.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management 14
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.5.3 Watching for Changes to Executable Objects
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Users are not the only line of defense in the detection of
|
|||
|
viruses. It is comparatively simple to create programs that
|
|||
|
will detect the presence and the spread of the simpler
|
|||
|
classes of viruses. Such programs can go a long way in
|
|||
|
"raising the bar" against computer viruses.
|
|||
|
|
|||
|
One effective approach to detecting simple viruses involves
|
|||
|
notifying the user of changes to the contents of executable
|
|||
|
objects (program files, "boot records" on magnetic media,
|
|||
|
and so forth). Users can be provided with a program to be
|
|||
|
run once a day which will examine the executable objects to
|
|||
|
be checked, and compare their characteristics with those
|
|||
|
found the last time the program was run. (This could be run
|
|||
|
at the same time as the backup program, for instance.) The
|
|||
|
user can then be presented with a list of objects that have
|
|||
|
changed. If things have changed that should not have, the
|
|||
|
user can contact the appropriate people to investigate. If
|
|||
|
certain objects that should seldom or never change (such as
|
|||
|
the operating system files themselves) are different, the
|
|||
|
user can be specially warned, and urged to contact the
|
|||
|
appropriate people.
|
|||
|
|
|||
|
Often, a central system programming group has control over a
|
|||
|
large multi-user computing system. That group can execute
|
|||
|
this sort of program periodically, to check for changes to
|
|||
|
common operating system utilities, and to the operating
|
|||
|
system itself. Because viruses can often spread to
|
|||
|
privileged users, they are quite capable of infecting even
|
|||
|
those parts of the system that require the highest authority
|
|||
|
to access.
|
|||
|
|
|||
|
The frequency with which virus detectors should be used
|
|||
|
depends upon the rate at which executables are transmitted,
|
|||
|
and the value of the information assets on the systems.
|
|||
|
Workstations that are not connected to networks can exchange
|
|||
|
information via floppy disks. The known computer viruses
|
|||
|
that propagate by way of floppy disks do so relatively
|
|||
|
slowly. It may take days, or weeks, or even months for such
|
|||
|
a virus to propagate across a large organization. In this
|
|||
|
case, running virus detectors once a day, or once a week,
|
|||
|
may be sufficient. For systems connected to networks,
|
|||
|
especially large-scale networks, the situation is much
|
|||
|
different. Experience has shown network viruses to be
|
|||
|
capable of spreading very rapidly across the network. In
|
|||
|
some cases, replicating programs have spread across
|
|||
|
nationwide networks in a matter of hours or days. In these
|
|||
|
cases, it may be important to run virus detectors hourly or
|
|||
|
daily.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management 15
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Below is an outline of one possible implementation of a
|
|||
|
virus detecting program. It is for illustration only; many
|
|||
|
different structures would do the job as well or better.
|
|||
|
|
|||
|
1. The program obtains a list of files to be checked. For
|
|||
|
PC-DOS, for instance, this should include .COM and .EXE
|
|||
|
files, any files that are listed as device drivers in
|
|||
|
the CONFIG.SYS file, the CONFIG.SYS file itself, and any
|
|||
|
other executables such as batch files or BASIC programs.
|
|||
|
2. For each of these files, the program
|
|||
|
o Determines the time/date and length of the file from
|
|||
|
the operating system.
|
|||
|
o If desired, actually reads the data in the file, and
|
|||
|
performs a calculation such as a CRC (cyclic
|
|||
|
redundancy check) on the data. (The number of files
|
|||
|
checked in such detail depends on the importance of
|
|||
|
the file, the speed of the program, and the amount
|
|||
|
of time the user is willing to spend.)
|
|||
|
o Compares this file information (time/date, length,
|
|||
|
and perhaps CRC or other code) with the database
|
|||
|
generated last time the program was run.
|
|||
|
o If the file was not present the last time the
|
|||
|
program was run, or if the information in the
|
|||
|
previous database was different from the information
|
|||
|
just obtained, the program records that the file is
|
|||
|
new or changed.
|
|||
|
3. After checking all relevant files, the program reads all
|
|||
|
other known executable objects in the system(1), and
|
|||
|
compares their CRC or other codes with the values in the
|
|||
|
database, and records any changes.
|
|||
|
4. When all the existing objects have been checked in this
|
|||
|
way, the program updates the database for next time and
|
|||
|
presents all its findings to the user.
|
|||
|
5. On the basis of this information, the user can decide
|
|||
|
whether any of the reported changes are suspicious, and
|
|||
|
worth reporting.
|
|||
|
|
|||
|
This method is by no means foolproof. A sophisticated virus
|
|||
|
could do a variety of things. It could change an executable
|
|||
|
object without altering the time, date, length, or CRC code.
|
|||
|
It could only alter objects that had been legitimately
|
|||
|
changed recently. It could act directly on the database
|
|||
|
itself and thus escape detection. More sophisticated
|
|||
|
versions of the program outlined here can provide
|
|||
|
significantly more foolproof detection. It is advantageous
|
|||
|
to have many different virus detectors in place at the same
|
|||
|
|
|||
|
----------------
|
|||
|
(1) For PC-DOS, this would typically include the boot record
|
|||
|
on a floppy diskette, and the master and partition boot
|
|||
|
records on hard disks. For multi-user operating
|
|||
|
systems, this might include "shared system images," or
|
|||
|
"IPL datasets" or equivalent objects.
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management 16
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
time. That way, a virus that can evade one detector may be
|
|||
|
caught by another. Nevertheless, user awareness, and
|
|||
|
procedures for recovery in the event of an infection that is
|
|||
|
not detected until too late, are both still vital.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.5.4 Using External Information Sources
|
|||
|
|
|||
|
|
|||
|
Software viruses are able to spread because information
|
|||
|
flows so quickly in the modern world. That same information
|
|||
|
flow can help in the detection of viruses. Newspapers,
|
|||
|
magazines, journals, and network discussion groups have
|
|||
|
carried significant amounts of material dealing with
|
|||
|
computer viruses and other forms of malicious software.
|
|||
|
These sources of information can be valuable in maintaining
|
|||
|
awareness of what hazards exist, and what measures are
|
|||
|
available to detect or prevent specific viruses. This kind
|
|||
|
of information can be invaluable to the people in your
|
|||
|
organization charged with investigating suspicious events
|
|||
|
reported by users, and deciding which ones to follow up on.
|
|||
|
On the other hand, these channels also carry a certain
|
|||
|
amount of inevitable misinformation, and care should be
|
|||
|
taken not to react to, or spread, rumors that seem to have
|
|||
|
no likely basis in fact.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.6 CONTAINING VIRAL INFECTIONS
|
|||
|
|
|||
|
|
|||
|
Having procedures in place to detect viral infection is very
|
|||
|
important. By itself, however, it is of little use. The
|
|||
|
individual who makes the first detection must have a
|
|||
|
procedure to follow to verify the problem and to make sure
|
|||
|
that appropriate action occurs. If the information supplied
|
|||
|
in the detection phase is allowed to "fall between the
|
|||
|
cracks," even for a relatively short time, the benefit of
|
|||
|
detection can easily be lost.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.6.1 The Importance of Early Detection
|
|||
|
|
|||
|
|
|||
|
Computer viruses generally spread exponentially. If a virus
|
|||
|
has infected only one system in a network on Monday, and
|
|||
|
spread to four by Tuesday, sixteen systems could easily be
|
|||
|
infected by Wednesday, and over five hundred by Friday.
|
|||
|
(These numbers are just samples, of course, but they give an
|
|||
|
idea of the potential speed of spread. See reference (1)
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management 17
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
for some experiments in which much faster spread was
|
|||
|
observed.)
|
|||
|
|
|||
|
Because viruses can spread so fast, it is very important to
|
|||
|
detect them as early as possible after the first infection.
|
|||
|
The surest way of doing this is to have every vulnerable
|
|||
|
user run the best available virus-detection software as
|
|||
|
often as feasible. This solution may be too expensive and
|
|||
|
time-consuming for most environments.
|
|||
|
|
|||
|
In most groups of users, it is possible to identify a number
|
|||
|
of "star" users who do a disproportionately large amount of
|
|||
|
information-exchange, who generally run new software before
|
|||
|
most people do, and who are the first to try out new things
|
|||
|
in general. In multi-user systems, some of these people
|
|||
|
often have special authorities and privileges. When a virus
|
|||
|
reaches one of these people, it can spread very rapidly to
|
|||
|
the rest of the community. In making cost/benefit decisions
|
|||
|
about which users should spend the most time or effort on
|
|||
|
virus-detection, these are the people to concentrate on.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.6.2 The Importance of Rapid Action
|
|||
|
|
|||
|
|
|||
|
When a virus is detected, every moment spent deciding what
|
|||
|
to do next may give the virus another chance to spread. It
|
|||
|
is vital, therefore, to have action plans in place *before* an
|
|||
|
infection occurs. Such plans should include, for instance:
|
|||
|
|
|||
|
o Designation of one particular group (whether formal or
|
|||
|
informal) as the "crisis team,"
|
|||
|
o Procedures for identifying infected systems, by
|
|||
|
determining how and from where the infection reached
|
|||
|
each system known to be infected,
|
|||
|
o Procedures for isolating those systems until they can be
|
|||
|
rendered free of the virus,
|
|||
|
o Procedures for informing vulnerable users about the
|
|||
|
virus, and about how to avoid spreading it themselves,
|
|||
|
o Procedures for removing the virus from infected systems,
|
|||
|
o Procedures for identifying the virus involved, and for
|
|||
|
developing or obtaining specific software or procedures
|
|||
|
to combat the virus. These may remove the virus from
|
|||
|
infected systems and files, determine whether or not
|
|||
|
backups are infected, and so on.
|
|||
|
o Procedures for recording the characteristics of the
|
|||
|
virus and the effectiveness of the steps taken against
|
|||
|
it, in case of later re-infection with the same or a
|
|||
|
similar virus.
|
|||
|
|
|||
|
Some suggestions for recovery are given in the next section.
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management 18
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.7 RECOVERING FROM VIRAL INFECTIONS
|
|||
|
|
|||
|
|
|||
|
Once a virus has been detected and identified, and measures
|
|||
|
have been taken to stop it from spreading further, it is
|
|||
|
necessary to recover from the infection, and get back to
|
|||
|
business as usual. The main objective of this activity is
|
|||
|
to provide each affected user with a normal, uninfected
|
|||
|
computing environment. For individual workstations, this
|
|||
|
means ensuring that no infected objects remain on the
|
|||
|
workstation. For more complex environments, it means
|
|||
|
ensuring that no infected objects remain anywhere on the
|
|||
|
system where they might inadvertently be executed.
|
|||
|
|
|||
|
The basic recovery activities are:
|
|||
|
|
|||
|
o Replacing every infected object in the system with an
|
|||
|
uninfected version, and
|
|||
|
o Restoring any other objects that the virus' actions may
|
|||
|
have damaged.
|
|||
|
|
|||
|
It is of critical importance during these activities to
|
|||
|
avoid re-introducing the virus into the system. This could
|
|||
|
be done, for instance, by restoring an infected executable
|
|||
|
file from a backup tape.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.7.1 Restoration and Backups
|
|||
|
|
|||
|
|
|||
|
|
|||
|
An obvious but incorrect approach to removing the infection
|
|||
|
from a system is simply to restore the infected objects from
|
|||
|
backups. This is *not* a wise thing to do, however, since
|
|||
|
the backups themselves may be infected. If the virus first
|
|||
|
entered the system sufficiently long ago, infected objects
|
|||
|
may well have been backed up in infected form.
|
|||
|
|
|||
|
Once the virus has been well understood, in terms of what
|
|||
|
types of objects it spreads itself to, three different
|
|||
|
categories of objects may be considered for restoration:
|
|||
|
|
|||
|
o Objects of the type that the virus infects. These
|
|||
|
should only be restored from backups if the backed-up
|
|||
|
versions are thoroughly and individually checked for
|
|||
|
infection by the virus. If it is possible, it is
|
|||
|
preferable to restore the objects from more "trusted"
|
|||
|
sources, such as original, unwriteable, copies supplied
|
|||
|
by the manufacturer, or by recompiling source code.
|
|||
|
Even in these cases, it is worthwhile to check once
|
|||
|
again for infection after restoration has been done.
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management 19
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
o Objects of types that the virus does not infect, but
|
|||
|
which have been destroyed or altered by the virus'
|
|||
|
actions. These can generally be restored from backups
|
|||
|
safely, although again it is worth checking the
|
|||
|
integrity of the backed-up copies. If the virus has
|
|||
|
been in the system long enough, it may have damaged
|
|||
|
objects that were later backed up.
|
|||
|
|
|||
|
o Objects of types that the virus neither infects, nor
|
|||
|
damages. If you are very sure that the virus does not
|
|||
|
infect or alter certain types of files, there may be no
|
|||
|
need to restore those files during the recovery process.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.7.2 Virus-Removing Programs
|
|||
|
|
|||
|
|
|||
|
Once a virus has been studied, you can write or obtain
|
|||
|
programs to help remove that particular virus. One type of
|
|||
|
these programs checks for the presence of the virus in a
|
|||
|
executable objects. Another type tries to remove the
|
|||
|
infection by restoring the object to its previous uninfected
|
|||
|
form. "Checking" programs can be extremely valuable during
|
|||
|
the recovery process, to ensure that files that are being
|
|||
|
restored after infection or damage by the virus are now
|
|||
|
"clean." "Removal" programs are somewhat less useful, and
|
|||
|
should usually only be used when there is no other practical
|
|||
|
way to obtain an uninfected version of the object. Removing
|
|||
|
a virus from an executable object can be a complex and
|
|||
|
difficult process, and even a well-written program may fail
|
|||
|
to restore the object correctly.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.7.3 Watching for Re-Infection
|
|||
|
|
|||
|
|
|||
|
Once recovery is complete, and all known infected and
|
|||
|
damaged objects have been restored to uninfected and correct
|
|||
|
states, it is necessary to remain watchful for some time. A
|
|||
|
system that has recently been infected by a certain virus
|
|||
|
runs an increased risk of re-infection by that same virus.
|
|||
|
The re-infection can occur through some obscure, infected
|
|||
|
object that was missed in the recovery process. It can also
|
|||
|
occur from the same outside source as the original
|
|||
|
infection. This is especially true if the original source
|
|||
|
of infection is not known.
|
|||
|
|
|||
|
Vigilance in the use of general virus-detection programs,
|
|||
|
like those described above, continues to be important. In
|
|||
|
addition, it will often be possible to obtain or write
|
|||
|
programs designed to detect the specific virus from which
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management 20
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
the system has just recovered. Specific virus-detection
|
|||
|
programs of this kind are particularly useful at this time.
|
|||
|
The same users who use the general virus-detection programs,
|
|||
|
and any users who would be specifically vulnerable to the
|
|||
|
virus just recovered from, can be given such programs to
|
|||
|
run. This increases the probability of detection, should an
|
|||
|
infection recur. The programs might also be incorporated
|
|||
|
into the backup system for a time, to scan files being
|
|||
|
backed up for infection, and even into appropriate places in
|
|||
|
networks and file-sharing systems. Because such checks will
|
|||
|
introduce extra overhead, there will be a trade-off between
|
|||
|
performance and added security in considering how long to
|
|||
|
leave them in place.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.8 SUMMARY AND RECOMMENDATIONS
|
|||
|
|
|||
|
|
|||
|
Computer viruses can pose a threat to the security of
|
|||
|
programs and data on computing systems. We have suggested
|
|||
|
several means of limiting this threat. They are summarized
|
|||
|
below.
|
|||
|
|
|||
|
|
|||
|
o Viruses represent a new kind of threat to the security
|
|||
|
of computing systems.
|
|||
|
|
|||
|
- They can be spread without the intent of the people
|
|||
|
who spread them.
|
|||
|
- They can spread widely and quickly within an
|
|||
|
organization, reaching systems and users well beyond
|
|||
|
the initial infection point.
|
|||
|
- They can perform virtually any action that their
|
|||
|
designer intends.
|
|||
|
|
|||
|
|
|||
|
o The risks posed by viruses can be limited by proper
|
|||
|
action.
|
|||
|
|
|||
|
- Follow good security practices in general.
|
|||
|
|
|||
|
-- Educate your users about security threats,
|
|||
|
including computer viruses.
|
|||
|
-- Make sure that good backups are kept of all
|
|||
|
important data.
|
|||
|
|
|||
|
- Take steps to reduce the possibility of being
|
|||
|
infected.
|
|||
|
|
|||
|
-- Where practical, isolate critical systems from
|
|||
|
sources of infection, such as networks and
|
|||
|
outside programs.
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management 21
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
-- Where practical, limit the ability to create or
|
|||
|
install new programs on those systems which do
|
|||
|
not require this ability.
|
|||
|
-- Ensure that adequate controls exist on software
|
|||
|
repositories, production systems, and other
|
|||
|
important areas of your organization. These
|
|||
|
include careful change management and the use of
|
|||
|
virus detectors.
|
|||
|
|
|||
|
- Take steps to ensure that virus infections will be
|
|||
|
detected quickly.
|
|||
|
|
|||
|
-- Educate your users about possible warning signs.
|
|||
|
-- Use virus detectors, which will inform users of
|
|||
|
the unintended modification of programs and
|
|||
|
data.
|
|||
|
-- Make sure your users know to whom they can
|
|||
|
report a potential problem.
|
|||
|
|
|||
|
- Take steps to contain virus infections that are
|
|||
|
detected.
|
|||
|
|
|||
|
-- A plan to deal with an infection should be put
|
|||
|
into place *before* an infection occurs.
|
|||
|
-- A "crisis team" should be put into place, which
|
|||
|
can respond quickly to a potential problem.
|
|||
|
-- Isolate infected systems until they can be
|
|||
|
cleaned up, to avoid them infecting other
|
|||
|
systems, and to avoid their becoming reinfected.
|
|||
|
|
|||
|
- Take steps to recover from viral infections that are
|
|||
|
contained.
|
|||
|
|
|||
|
-- Be able to restore critical programs and data
|
|||
|
from virus-free backups.
|
|||
|
-- Know how to remove viruses from programs if
|
|||
|
virus-free backups are unavailable.
|
|||
|
-- Watch for a reinfection from that particular
|
|||
|
virus.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Coping with Computer Viruses: A Guide for Technical
|
|||
|
Management 22
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
FOR FURTHER READING
|
|||
|
|
|||
|
|
|||
|
|
|||
|
(1) Fred Cohen, "Computer Viruses: Theory and Experiment,"
|
|||
|
Computers & Security, Vol. 6 (1987), pp. 22-35
|
|||
|
|
|||
|
(2) Fred Cohen, "On the Implications of Computer Viruses
|
|||
|
and Methods of Defense," Computers & Security, Vol. 7
|
|||
|
(1988), pp. 167-184
|
|||
|
|
|||
|
(3) W.H. Murray, "Security Considerations for Personal
|
|||
|
Computers," IBM System Journal, Vol. 23, No. 3 (1984),
|
|||
|
pp. 297-304
|
|||
|
|
|||
|
(4) --, "Security Risk Assessment in Electronic Data
|
|||
|
Processing Systems," IBM Publication Number
|
|||
|
G320-9256-0 (1984)
|
|||
|
|
|||
|
(5) --, "Good Security Practices for Information Systems
|
|||
|
Networks," IBM Publication Number G360-2715-0 (1987)
|
|||
|
|
|||
|
(6) --, "An Executive Guide to Data Security," IBM
|
|||
|
Publication Number G320-5647-0 (1975)
|
|||
|
|
|||
|
(7) --, "Security, Auditability, System Control
|
|||
|
Publications Bibliography," IBM Publication Number
|
|||
|
G320-9279-2 (1987)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
For Further Reading 23
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
GLOSSARY
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Computer viruses and the like are relatively new
|
|||
|
phenomena. The terms used to describe them do not
|
|||
|
have definitions that are universally agreed upon. In
|
|||
|
this glossary, we give definitions that try to clarify
|
|||
|
the differences between the various concepts. These
|
|||
|
terms may be used differently elsewhere.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Availability: That aspect of security that deals with
|
|||
|
the timely delivery of information and services to the
|
|||
|
user. An attack on availability would seek to sever
|
|||
|
network connections, tie up accounts or systems, etc.
|
|||
|
|
|||
|
Back Door: A feature built into a program by its
|
|||
|
designer, which allows the designer special privileges
|
|||
|
that are denied to the normal users of the program. A
|
|||
|
back door in a logon program, for instance, could
|
|||
|
enable the designer to log on to a system, even though
|
|||
|
he or she did not have an authorized account on that
|
|||
|
system.
|
|||
|
|
|||
|
Bacterium (informal): A program which, when executed,
|
|||
|
spreads to other users and systems by sending copies
|
|||
|
of itself. (Though, since it does "infect" other
|
|||
|
programs, it may be thought of as a "system virus" as
|
|||
|
opposed to a "program virus.") It differs from a
|
|||
|
"rabbit" (see below) in that it is not necessarily
|
|||
|
designed to exhaust system resources.
|
|||
|
|
|||
|
Bug: An error in the design or implementation of a
|
|||
|
program that causes it to do something that neither
|
|||
|
the user nor the program author had intended to be
|
|||
|
done.
|
|||
|
|
|||
|
Confidentiality: That aspect of security which deals
|
|||
|
with the restriction of information to those who are
|
|||
|
authorized to use it. An attack on confidentiality
|
|||
|
would seek to view databases, print files, discover a
|
|||
|
password, etc., to which the attacker was not
|
|||
|
entitled.
|
|||
|
|
|||
|
Integrity: That aspect of security that deals with
|
|||
|
the correctness of information or its processing. An
|
|||
|
attack on integrity would seek to erase a file that
|
|||
|
should not be erased, alter an element of a database
|
|||
|
improperly, corrupt the audit trail for a series of
|
|||
|
events, propagate a virus, etc.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Glossary 24
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Logic Bomb: A Trojan Horse (see below), which is left
|
|||
|
within a computing system with the intent of it
|
|||
|
executing when some condition occurs. The logic bomb
|
|||
|
could be triggered by a change in a file (e.g. the
|
|||
|
removal of the designer's userid from the list of
|
|||
|
employees of the organization), by a particular input
|
|||
|
sequence to the program, or at a particular time or
|
|||
|
date (see "Time Bomb" below). Logic bombs get their
|
|||
|
name from malicious actions that they can take when
|
|||
|
triggered.
|
|||
|
|
|||
|
Rabbit (informal): A program is designed to exhaust
|
|||
|
some resource of a system (CPU time, disk space, spool
|
|||
|
space, etc.) by replicating itself without limit. It
|
|||
|
differs from a "bacterium" (see above) in that a
|
|||
|
rabbit is specifically designed to exhaust resources.
|
|||
|
It differs from a "virus" (see below) in that it is a
|
|||
|
complete program in itself; it does not "infect" other
|
|||
|
programs.
|
|||
|
|
|||
|
Rogue Program: This term has been used in the popular
|
|||
|
press to denote any program intended to damage
|
|||
|
programs or data, or to breach the security of
|
|||
|
systems. As such, it encompasses malicious Trojan
|
|||
|
Horses, logic bombs, viruses, and so on.
|
|||
|
|
|||
|
Security: When applied to computing systems, this
|
|||
|
denotes the authorized, correct, timely performance of
|
|||
|
computing tasks. It encompasses the areas of
|
|||
|
confidentiality, integrity, and availability.
|
|||
|
|
|||
|
Time Bomb: A "logic bomb" (see above) activated at a
|
|||
|
certain time or date.
|
|||
|
|
|||
|
Trojan Horse: Any program designed to do things that
|
|||
|
the user of the program did not intend to do. An
|
|||
|
example of this would be a program which simulates the
|
|||
|
logon sequence for a computer and, rather than logging
|
|||
|
the user on, simply records the user's userid and
|
|||
|
password in a file for later collection. Rather than
|
|||
|
logging the user on (which the user intended), it
|
|||
|
steals the user's password so that the Trojan Horse's
|
|||
|
designer can log on as the user (which the user did
|
|||
|
not intend).
|
|||
|
|
|||
|
Virus (pl. viruses): a program that can "infect"
|
|||
|
other programs by modifying them to include a possibly
|
|||
|
evolved copy of itself. Note that a program need not
|
|||
|
perform malicious actions to be a virus; it need only
|
|||
|
"infect" other programs. Many viruses that have been
|
|||
|
encountered, however, do perform malicious actions.
|
|||
|
|
|||
|
Worm: A program that spreads copies of itself through
|
|||
|
network-attached computers. The first use of the term
|
|||
|
|
|||
|
|
|||
|
Glossary 25
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
described a program that copied itself benignly around
|
|||
|
a network, using otherwise-unused resources on
|
|||
|
networked machines to perform distributed computation.
|
|||
|
Some worms are security threats, using networks to
|
|||
|
spread themselves against the wishes of the system
|
|||
|
owners, and disrupting networks by overloading them.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Glossary 26
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
APPENDIX: VIRAL INFECTIONS IN PC-DOS
|
|||
|
|
|||
|
|
|||
|
|
|||
|
This section is intended to give an example of the
|
|||
|
places in a typical computer system where a virus
|
|||
|
might enter. It is intended for a reader with some
|
|||
|
knowledge of the workings of PC-DOS, although it may
|
|||
|
be instructive to others as well. PC-DOS was chosen
|
|||
|
for convenience; many computer systems have similar
|
|||
|
vulnerabilities.
|
|||
|
|
|||
|
Consider the process that is required for you to run a
|
|||
|
single program. What is happening? Which parts do
|
|||
|
you not bother checking since you have seen it a
|
|||
|
million times?
|
|||
|
|
|||
|
For example, you turn on the power switch and then ...
|
|||
|
|
|||
|
o You boot off the disk. What code ran to enable
|
|||
|
you to boot off the disk?
|
|||
|
|
|||
|
o You boot off a diskette drive. Again ...
|
|||
|
|
|||
|
o You run a program. It reads off a disk. What was
|
|||
|
actually read in? How was it read in? What did
|
|||
|
the reading?
|
|||
|
|
|||
|
o You compile a program. Are you using any library
|
|||
|
files? What is in them?
|
|||
|
|
|||
|
o When was the last time you looked at your
|
|||
|
CONFIG.SYS? AUTOEXEC.BAT?
|
|||
|
|
|||
|
o You just bought a brand new program. You just
|
|||
|
brought it home from the store. What do you know
|
|||
|
about the program? About the company that
|
|||
|
produced it?
|
|||
|
|
|||
|
This list is not meant to be all-inclusive nor
|
|||
|
thorough. It is meant to be a spark to start
|
|||
|
education. Let us continue by examining each of these
|
|||
|
cases. (Where found, the symbol "(!)" is used to
|
|||
|
designate a potential point of attack for viruses.)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
When you turn on the power switch
|
|||
|
|
|||
|
|
|||
|
Before we investigate the different cases above, we
|
|||
|
examine the steps that occur when you first flip the
|
|||
|
power switch of your IBM PC to the ON position.
|
|||
|
|
|||
|
|
|||
|
Appendix: Viral Infections in PC-DOS 27
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Power is given to the system. A section of code known
|
|||
|
as POST (Power On Self Test) residing in ROM (Read
|
|||
|
Only Memory) starts running. It checks memory,
|
|||
|
devices, peripherals, and then transfers control to
|
|||
|
any "properly signatured" ROMs found in the I/O
|
|||
|
channels. Assuming those pieces run smoothly, control
|
|||
|
returns to POST. When POST completes, it searches for
|
|||
|
a diskette in the diskette drive. If unsuccessful, it
|
|||
|
tries to boot off a hard file. And finally, if
|
|||
|
neither works, it starts running the BASIC interpreter
|
|||
|
which is found in its ROM.
|
|||
|
|
|||
|
The first place where programs are read into system
|
|||
|
RAM (Random Access Memory) is the hard file or
|
|||
|
diskette boot up process. Until then, all the code
|
|||
|
that is run has come from ROM. Since these ROMs are
|
|||
|
from trusted sources, we must assume that they have
|
|||
|
not been created with viruses installed. ROMs, by
|
|||
|
their nature, can only be written by special
|
|||
|
equipment, not found in your PC. Thus to tamper with
|
|||
|
them, they must be removed and/or replaced without
|
|||
|
your knowledge. For the purposes of this discussion,
|
|||
|
we will assume that this has not happened.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Boot from hard file
|
|||
|
|
|||
|
|
|||
|
When the computer boots off the hard file, it relies
|
|||
|
on code which has been placed in two areas on the hard
|
|||
|
file. The first location is the master boot
|
|||
|
record(!). The master boot record contains code and
|
|||
|
information to designate which "system boot record"(!)
|
|||
|
to read and run. This is the "active partition."
|
|||
|
There are potentially many system boot records, one
|
|||
|
for each partition, while there is only one master
|
|||
|
boot record.
|
|||
|
|
|||
|
Boot records on a fixed disk vary. But usually, up to
|
|||
|
a whole track is reserved. This is a large amount of
|
|||
|
space, most of which is not normally used. The large
|
|||
|
empty space provides a potential area for viruses to
|
|||
|
hide.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Boot from diskette
|
|||
|
|
|||
|
|
|||
|
For a floppy disk, the boot record is a properly
|
|||
|
"signatured" sector at head 0 track 0 sector 1 of the
|
|||
|
disk(!). If the machine finds a proper signature, it
|
|||
|
takes the bytes stored in that sector and begins
|
|||
|
|
|||
|
|
|||
|
Appendix: Viral Infections in PC-DOS 28
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
executing them. This code is usually very short.
|
|||
|
Usually, one of the first things it does is to tell
|
|||
|
the machine where to get other sectors to form a
|
|||
|
complete boot up program.
|
|||
|
|
|||
|
Viruses can hide parts of themselves on either hard or
|
|||
|
floppy disks, in sectors that they mark as "bad."(!)
|
|||
|
These sectors would require special commands to be
|
|||
|
read. This prevents the code from being accidentally
|
|||
|
overwritten. They also provide an obvious sign,
|
|||
|
should you be looking for them (CHKDSK will report bad
|
|||
|
sectors).
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC-DOS, the operating system
|
|||
|
|
|||
|
|
|||
|
The purpose of the boot records is to load the
|
|||
|
operating system. This is done by loading files with
|
|||
|
the names IBMBIO.COM(!), IBMDOS.COM(!), and
|
|||
|
COMMAND.COM(!). These files contain the operating
|
|||
|
system.
|
|||
|
|
|||
|
After the operating system is loaded, it becomes the
|
|||
|
integral portion of all system activities. This
|
|||
|
includes activities such as reading and writing
|
|||
|
files(!), allocating memory(!), and allocating all
|
|||
|
other system resources(!). Few applications exist
|
|||
|
that do not use the operating system to take advantage
|
|||
|
of the system resources. Thus, some viruses change
|
|||
|
COMMAND.COM or intercept attempts to request a system
|
|||
|
resource.
|
|||
|
|
|||
|
The purpose of such action would be two-fold. The
|
|||
|
first purpose is to place the virus in a common code
|
|||
|
path, so that it is executed frequently so that it may
|
|||
|
have ample opportunity to spread. The second is to
|
|||
|
cause damage, intercepting the proper request and
|
|||
|
altering the request.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Running a program
|
|||
|
|
|||
|
|
|||
|
What code runs when you run a program? (!) (The
|
|||
|
following list is not meant to be complete. It is to
|
|||
|
show you that any link could be a potential point of
|
|||
|
attack for a virus. Since the virus' purpose is to be
|
|||
|
executed frequently, it would find itself executed
|
|||
|
frequently enough if it resided in any of the
|
|||
|
following areas.)
|
|||
|
|
|||
|
|
|||
|
Appendix: Viral Infections in PC-DOS 29
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
o DOS accepts your keystrokes.
|
|||
|
|
|||
|
- BIOS INT 9H, INT 16H, INT 15H, INT 1BH
|
|||
|
- DOS INT 21H keyboard functions, INT 28H
|
|||
|
- Any keyboard device driver or TSR (Terminate
|
|||
|
and Stay Resident) program.
|
|||
|
|
|||
|
o DOS loads your program
|
|||
|
|
|||
|
- BIOS INT 13H, INT 40H, INT 15H
|
|||
|
- DOS INT 21H file search functions, memory
|
|||
|
allocation, set DTA, disk read, CTRL-BREAK
|
|||
|
check, etc.
|
|||
|
- Any DOS extension driver or TSR (Terminate and
|
|||
|
Stay Resident) program.
|
|||
|
|
|||
|
o General background functions
|
|||
|
|
|||
|
- BIOS INT 8 (timer), INT 0FH (printer), INT 1CH
|
|||
|
(timer)
|
|||
|
- Any system driver or TSR (Terminate and Stay
|
|||
|
Resident) program.
|
|||
|
|
|||
|
All these things happen and more, each time you run a
|
|||
|
program.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
CONFIG and AUTOEXEC
|
|||
|
|
|||
|
|
|||
|
Every time you boot your system, CONFIG.SYS(!) and
|
|||
|
AUTOEXEC.BAT(!) tell the system to load many files and
|
|||
|
options before you can start working on the computer.
|
|||
|
If a virus decided to attach an extra line of
|
|||
|
instruction to one of these files, it would result in
|
|||
|
the program being loaded each day. When was the last
|
|||
|
time you looked at CONFIG.SYS? AUTOEXEC.BAT? Do you
|
|||
|
remember the reason for the existence of each line in
|
|||
|
the two files?
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Compiling programs, using libraries
|
|||
|
|
|||
|
|
|||
|
When you compile a program, you use several programs.
|
|||
|
One is the compiler itself (!). If the compiler is
|
|||
|
infected with a virus, the virus may spread to other,
|
|||
|
unrelated programs. But it could also spread to the
|
|||
|
program being compiled.
|
|||
|
|
|||
|
When a compiled program is linked to form an
|
|||
|
executable program, it is common to link in programs
|
|||
|
|
|||
|
|
|||
|
Appendix: Viral Infections in PC-DOS 30
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
from libraries(!). These library programs provide
|
|||
|
standard operating system interfaces, perform input
|
|||
|
and output, and so on. If one or more of the library
|
|||
|
programs are infected with a virus, then every program
|
|||
|
which is linked with it will be infected.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Appendix: Viral Infections in PC-DOS 31
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|