Viruses and Worms
This sample chapter is excerpted from Maximum Security: A Hacker's Guide to Protecting Your Internet Site and Network.
Do you have a virus? No instruments, no senses can tell you if you are in the presence of the predator.
Richard Preston, The Hot Zone
If doctors and pharmacists worked like anti-virus vendors, we'd all be immunized against all illnesses. Would this improve our viability as a species?
David Harley, Icarus
This chapter addresses one of the best-known, most-feared and least-understood problems in information security. It explains what viruses and worms really are (and aren't), summarizes the means of limiting their impact, and, most importantly, includes some pointers to further information.
Understanding Viruses and Worms
Computer viruses are perhaps the most well known and feared security threats of all. Certainly, they're among the most misunderstood. All viruses entail a certain degree of damage, but their impact, with some very prominent exceptions, is mostly social.
Every virus does cause some (usually) limited denial of service because they all steal disk space, memory, and/or clock cycles (processor time). Some cause unintended (accidental) damage on some systems. Some do intentional damage to files and file systems, and a few can make some hardware effectively unusable by trashing firmware (CIH, for example). At this time, no known virus directly damages hardware, although the possibility of such a virus can't be discounted. However, some of the most successful viruses (in terms of survival) achieve longevity by virtue of the fact that they do nothing but replicate and therefore aren't conspicuous. Direct damage tends to be noticeable. However, some viruses cause serious damage to data by slow and insidious corruption, and others continue to survive despite their high damage profile.
It has to be said even an innocuous virus can cause problems just by being there, or even by being misdiagnosed as being there. This can result in secondary damage because of inappropriate action taken by poorly informed virus victims. It can also result in social damage. Such damage can include loss of reputation, scapegoating of the victims of a virus attack, or even legal action. A victim might be accused of failing to apply "due diligence," of being in breach of contract, or of being in contravention of data protection legislation. He might even be accused of implication in the dissemination of a virus, which is illegal in many countries (even those in which the actual creation of viruses is not in itself a crime).
Viruses that do no intentional damage are sometimes described as benign, in much the same way that a tumor might be defined as malign or benign. However, this usage is potentially misleading because the use of benign in this context does not mean harmless, let alone benevolent, as it might be understood to mean.
The meteoric expansion of Internet usage (especially email) since the early 1990s has raised the status of the virus from an occasional nuisance to everyone's problem. The vastly increased use of local networks and other means of sharing data and applications has also increased the risks by orders of magnitude. In brief, viruses can travel further and faster than was the case a few years ago. The big comeback story in the virus field is that of the computer worm. In the early 1990s, Internet usage became less specific to "big iron" mainframes and minicomputers reached via dumb terminals and terminal emulators. The first generation of worms declined in impact accordingly. Virus and anti-virus technology became focused on the individual desktop PC. In the latter part of the decade, however, virus writers began to rediscover worm mechanisms as a means of accelerating dissemination, until worms and worm/virus hybrids have now become one of the most aggravating problems faced by systems administrators.
This chapter, although it addresses worm mechanisms is some detail, isn't particularly focused on differentiating between viruses and worms. Even within the industry, the terms are often used interchangeably in the context of the hybrid viruses/worms that dominate the current virus scene.
What Is a Computer Virus?
Most anti-virus professionals would accept a working definition of the term computer virus like this: "a program that replicates by 'infecting' other programs so that they contain a (possibly evolved) copy of the virus." (F. Cohen: A Short Course on Computer Viruses.)
Note that the emphasis here is on reproduction by infection. A virus is not per se destructive, whereas a destructive program is not per se a virus. Furthermore, although most viruses do attempt to operate without the knowledge of the system user, this isn't a requirement either. The only defining characteristic is replication: the primary 'intent' of the infective program is to reproduce.
The term program does not necessarily imply a program file, although, most viruses do in some way infect files. Nevertheless, we refer to infected and infective objects in this chapter unless we are specifically considering file infection, so as to include boot sector infectors and macro programs embedded in data files.
Infection is sometimes described in terms of attachment of the viral program to one or more programs on the target system. However, attachment is perhaps a misleading term, although it is conventionally used in this context because the word attachment has a rather different connotation in the context of email. It might be more useful to look at the process in terms of a chain of command. The viral code is inserted into the chain of command so that when the legitimate but infected program is run, the viral code is also executed (or in some instances, runs instead of the legitimate code).
We often describe infection in terms of the viral code becoming physically attached to the host program, but this isn't always the case. Sometimes, the environment is manipulated so that calling a given program calls the viral program. Sometimes, the viral program is activated before any program is run. This can effectively "infect" every executable file on the system, even though none of those files are actually physically modified. Viruses that take this approach include cluster or FAT (File Allocation Table) viruses, which redirect system pointers to infected files; companion viruses; and viruses that modify the Windows Registry so that their own code is called before legitimate executables.
Except for a few extraordinarily primitive and destructive examples that actually trash the host program on infection, all viruses work along these lines:
A computer user calls a legitimate program.
The virus code, having inserted itself into the chain of command, executes instead of the legitimate program.
The virus code terminates and hands over control to the legitimate program.
Companion or spawning viruses follow the same sequence, but the virus code is contained in a separate file, which is (characteristically) renamed so that it will be executed instead of the program the victim thought he was launching. (It then normally hands over control to the legitimate program.)
The virus process is a little like the process of biological viral infection, although the analogy is overworked and can be misleading. Think of a person infected with an airborne disease. Whenever he exhales in a public place, he risks infecting others. Similarly, whenever an infected program is executed, the virus's infective routine also runs, and can infect one or more other objects "in range". Just as biological viruses infect hosts that are predisposed to infection, computer viruses target certain type of files and system areas, according to virus type.
What Is a Computer Worm?
Replication is also the defining characteristic of a worm, and some authorities (including Fred Cohen, the "father" of computer virology) regard worms as a subset of the genus virus. However, worms present particular problems of definition. One viable definition distinguishes between worms and viruses in terms of attachment. Whereas a virus in some sense "attaches" to a legitimate program, a worm copies itself across networks and/or systems without attachment. It can be said that the worm infects the environment (an operating system or mail system, for instance), rather than specific infectable objects, such as files.
Some observers have used the term worm to refer to self-replicating malware (MALicious softWARE) that spreads across networks. This doesn't really amount to a meaningful distinction because many viruses can travel between machines on a Local Area Network, for instance, without being "aware" that a target volume is not on the same machine. This isn't to say, of course, that viruses are never network aware.