|This is an old revision of this page, as edited by Warren at 03:36, 23 April 2006 (Microsoft Word -> Microsoft Office Word using AWB). The present address (URL) is a permanent link to this revision, which may differ significantly from the .|
Malware is software designed to infiltrate or damage a computer system, without the owner's consent. The term is a portmanteau of "mal-" (or perhaps "malicious") and "software", and describes the intent of the creator, rather than any particular features. Malware is commonly taken to include computer viruses, Trojan horses, spyware and adware. In law, malware is sometimes known as a computer contaminant, for instance in the legal codes of California, West Virginia, and several other U.S. states . Malware is sometimes pejoratively called scumware.
Malware should not be confused with defective software, that is, software which has a legitimate purpose but contains errors or bugs.
Over the years, people have written malicious software for a number of different purposes.
Many early infectious programs, including the Internet Worm and a number of MS-DOS viruses, were written as experiments or pranks -- generally intended to be harmless or merely annoying, rather than to cause serious damage. Young programmers, learning about the possibility of viruses and the techniques used to write them, might write one just to prove that they can do it, or to see how far it could spread.
A slightly more hostile intent can be found in programs designed to vandalize or cause data loss. Many DOS viruses were designed to destroy files on a hard disk, or to corrupt the filesystem by writing junk data. Network-borne worms such as the Code Red worm or Ramen worm fall into the same category. Designed to vandalize Web pages, these worms may seem like an online equivalent of graffiti tagging, with the author's name or affinity group appearing everywhere the worm goes.
Revenge is sometimes a motive to write malicious software. A programmer or system administrator about to be fired from a job may leave behind backdoors or software "time bombs" that will allow them to damage the former employer's systems or destroy their own earlier work.
However, since the rise of widespread broadband Internet access, a greater portion of malicious software has been focused strictly on a profit motive. For instance, since 2003, the majority of widespread viruses and worms have been designed to take control of users' computers for black-market exploitation. Infected "zombie computers" are used to send email spam, to host contraband data such as child pornography, or to engage in distributed denial-of-service attacks as a form of extortion.
Another strictly for-profit category of malware has emerged in spyware -- programs designed to monitor users' Web browsing, display unsolicited advertisements, and redirect affiliate marketing revenues to the spyware creator. Spyware programs don't spread like viruses; usually they are installed by exploiting browser security holes, or are installed like a Trojan horse when the user installs other software.
- 1 Infectious malware: viruses and worms
- 2 Concealment: Trojan horses and rootkits
- 3 Malware for profit: spyware, botnets, loggers, and dialers
- 4 Malware tools and aids
- 5 Vulnerability to Malware
- 6 Curing an infection
- 7 Academic Research on Malware: A Brief Overview
- 8 References
- 9 See also
- 10 External links
Infectious malware: viruses and worms
The best-known types of malware, viruses and worms, are known for the manner in which they spread, rather than any other particular behavior. Originally, the term computer virus was used for a program which infected other executable software, while a worm transmitted itself over a network to infect computers. More recently, the words are often used interchangeably.
Today, some draw the distinction between viruses and worms by saying that a virus requires user intervention to spread, whereas a worm spreads automatically. This means that infections transmitted by email, which rely on the recipient opening an attachment to infect the system, are classed as viruses.
Capsule history of real-world viruses and worms
Before Internet access became widespread, viruses spread on personal computers by infecting programs or the executable boot sectors of floppy disks. By inserting a copy of itself into the machine code instructions in these executables, a virus causes itself to be run whenever the program is run or the disk is booted. Early computer viruses were written for the Apple II and Macintosh, but they became more widespread with the dominance of the IBM PC and MS-DOS system. Executable-infecting viruses are dependent on users exchanging software or boot floppies, so they spread heavily in computer hobbyist circles.
The first worms -- network-borne infectious programs -- originated not on personal computers, but on multitasking Unix systems. The first well-known worm was the Internet Worm of 1988, which infected SunOS and VAX BSD systems. Unlike a virus, this worm did not insert itself into other programs; rather, it exploited security holes in network server programs and started itself running as a separate process. This same behavior is used by today's worms as well.
With the rise of the Microsoft Windows platform in the 1990s, and the flexible macro systems of its applications, it became possible to write infectious code in the macro language of Microsoft Word and similar programs. These macro viruses infect documents and templates rather than applications, but rely on the fact that macros in a Word document are a form of executable code.
Today, worms are most commonly written for the Windows OS, although a small number are also written for Linux and other Unix systems. Worms today work in the same basic way as 1988's Internet Worm: they scan the network for computers with vulnerable network services, break in to those computers, and copy themselves over. Worm outbreaks have become a cyclical plague for both home users and businesses, eclipsed recently in terms of damage by spyware.
Concealment: Trojan horses and rootkits
For a malicious program to accomplish its goals, it must be able to do so without being shut down by the user or administrator of the computer it's on. Concealment can also help get the malware installed in the first place: by disguising a malicious program as something innocuous or desirable, users may be tempted to install it without knowing what it does. This is the technique of the Trojan horse or trojan.
Broadly speaking, a Trojan horse is any program that invites the user to run it, but conceals a harmful or malicious payload. The payload may take effect immediately and can lead to many undesirable effects, such as deleting all the user's files, or more commonly it may install further harmful software into the user's system to serve the creator's longer-term goals. Trojan horses known as droppers are used to start off a worm outbreak, by injecting the worm into users' local networks.
One of the most common ways that spyware is distributed is as a Trojan horse, bundled with a piece of desirable software that the user downloads off the Web or a peer-to-peer file-trading network. When the user installs the software, the spyware is installed alongside. Spyware authors who attempt to act legally may include an end-user license agreement which states the behavior of the spyware in loose terms, but with the knowledge that users are unlikely to read or understand it.
Once a malicious program is installed on a system, it is often useful to the creator if it stays concealed. The same is true when a human attacker breaks into a computer directly. Techniques known as rootkits allow this concealment, by modifying the host operating system so that the malware is hidden from the user. Rootkits can prevent a malicious process from being reported in the process table, or keep its files from being read. Originally, a rootkit was a set of tools installed by a human attacker on a Unix system where the attacker had gained administrator (root) access; today, the term is used more generally for concealment routines in a malicious program.
Malware for profit: spyware, botnets, loggers, and dialers
During the 1980s and 1990s, it was usually taken for granted that malicious programs were created as a form of vandalism or prank. More recently, the greater share of malware programs have been written with a financial or profit motive in mind. This can be taken as the malware authors' choice to monetize their control over infected systems: to turn that control into a source of revenue.
Since 2003 or so, the most costly form of malware -- in terms of time and money spent in recovery -- has been the broad category known as spyware. Spyware programs are commercially produced for the purpose of gathering information about computer users, showing them pop-up ads, and altering Web-browser behavior to financially benefit the spyware creator. For instance, some spyware programs redirect search engine results to pages full of paid advertisements. Others -- deemed "stealware" by the media -- overwrite affiliate marketing codes so that the revenue goes to the spyware creator rather than a legitimate Web site owner.
Spyware programs are usually installed as Trojan horses of one sort or another. They differ in that their creators present themselves openly as businesses, for instance by selling advertising space on the pop-ups created by the malware. Most such programs present the user with an end-user license agreement which purportedly protects the creator from prosecution under computer contaminant laws. However, spyware EULAs have not yet been upheld in court.
Another way that financially-motivated malware creator can monetize their infections is to directly use the infected computers to do work for the creator. Spammer viruses, such as the Sobig and Mydoom virus families, are commissioned by e-mail spam gangs. The infected computers are used as proxies to send out spam messages. The advantage to spammers of using infected computers is that they are available in large supply (thanks to the virus) and they provide anonymity, protecting the spammer from prosecution. Spammers have also used infected PCs to target anti-spam organizations with distributed denial-of-service attacks.
In order to coordinate the activity of many infected computers, attackers have used coordinating systems known as botnets. In a botnet, the malware logs in to an Internet Relay Chat channel or other chat system. The attacker can then give instructions to all the infected systems simultaneously. Botnets can also be used to push upgraded malware to the infected systems, keeping them resistant to anti-virus software or other security measures.
Lastly, it is possible for a malware creator to profit by simply stealing from the person whose computer is infected. Stealing here can mean stealing information such as passwords, or outright financial theft. Some malware programs install a key logger, which copies down the user's keystrokes when entering a password, credit card number, or other useful information. This is then transmitted to the malware creator automatically, enabling credit card fraud and other theft. Similarly, malware may copy the CD key or password for online games, allowing the creator to steal accounts or virtual items.
Another way of stealing money from the infected PC owner is to take control of the modem and dial an expensive toll call. Dialer (or porn dialer) software dials up a premium-rate telephone number -- such as a U.S. "900 number" -- and leaves the line open, costing the user hundreds of dollars in telephone bills.
Malware tools and aids
An exploit is a piece of software that attacks a particular security vulnerability. Exploits are not necessarily malicious in intent — they are often devised by security researchers as a way of demonstrating that a vulnerability exists. However, they are a common component of malicious programs such as network worms.
Vulnerability to Malware
In this context, as throughout, it should be borne in mind that the “system” under attack may be of various types, ee.g. a single computer and operating system, a netwerk or an application.
Various factors make a system more vulnerable to malware:
- Homogeneity – e.g. when all computers in a network run the same OS, it is easier to subvert.
- Bugginess – most systems containing errors which may be exploited by malware.
- Unconfirmed code – code from a floppy disk, CD or USB device may be executed without the user’s agreement.
- Over-privileged users – some systems allow all users to modify their internal structures.
- Over-privileged code – most popular systems allow code executed by a user all rights of that user.
An oft-cited cause of vulnerability of networks is homogeneity. In particular Microsoft Windows has such a large share of the market that concentrating on it will enable a cracker to subvert a large number of systems. Introducing inhomogeneity purely for the sake of robustness would however bring high costs in terms of training and maintenance.
Most systems contain bugs which may be exploited by malware. Typical examples are buffer overruns, in which an interface designed to store data in a small area of memory allows the caller to suppy too much, and then overwrites its internal structures. This may used by malware to force the system to execute its code.
Originally, PCs had to be booted from floppy disks, and until recently it was common for this to be the default boot device. This meant that a corrupt floppy disk could subvert the computer during booting, and the same applies to CDs. Although that is now less common, it is still possible to forget that one has changed the default, and rare that a BIOS makes one confirm a boot from removable media.
In some systems, normal users are over-privileged, in the sense that they are allowed to modify internal structures of the system. Malware, running as over-privileged code, can use this to subvert the system. This does not apply to UNIX-like systems, but very much to Microsoft Windows, especially when using the old FAT file system.
Almost all currently popular operating systems, and also many scripting applications allow code too many privileges, usually in the sense that when a user executes code, the system allows that code all rights of that user. This makes users vulnerable to malware in the form of e-mail attachments, which may or may not be disguised. Given this state of affairs, users are warned only to open attachments they trust, and to be wary of code received from untrusted sources. It also common for operating systems to be so designed that device drivers need a lot of privileges, while they are supplied by more and more hardware manufacturers, some of whom may unreliable.
Eliminating over-privileged code
The design flaw of over-privileged code dates from the time when most programmes were either delivered with a computer or written in-house, and repairing it would at a stroke render most anti-virus software almost redundant. It would, however, have appreciable consequences for the user interface and system management.
The system would have to maintain privilege profiles, and know which to apply for each user and programme. In the case of newly installed software, an administrator would need to set up default profiles for the new code.
The default profile need only allow access to a display, input devices, a limited amount of space in scratch directory, and only such files as the user specifies via the operating system or are universally accessible (read-only). This would be sufficient for the many programmes that normally only need to work on a single file, and otherwise start an “Open File” dialogue to determine where to save or find a file. In such cases, the operating system would need to return not a path but a file-handle. One might suppose for a moment that a programme could put up a trojan horse dialogue, but this would not enable it to get a file-handle. For programmes run in the background one might want a way of specifying their rights in a script.
Eliminating vulnerability to rogue device drivers is probably harder than for arbitrary rogue executables. Two techniques, used in VMS, that can help are memory mapping only the registers of the device in question and a system interface associating the driver with interrupts from the device.
Other approaches are:
- various forms of virtualisation, allowing the code unlimited access only to virtual resources.
- various forms of sandbox or jail.
- the security functions of Java, in
Such approaches, however, if not fully integrated with the operating system, would reduplicate effort and not be universally applied, both of which would be detrimental to security.
Curing an infection
Unfortunately, cleaning an operating system that has been infected by malware is no longer as simple as it used to be. Malware has become increasingly more difficult to clean, as malware creators find more ways to avoid removal. No single anti-virus or anti-spyware application can reliably successfully remove all malware that has been installed on a computer. In fact, it is not unusual to resort to an arsenal of security products, online scanners, and anti-spyware/ virus software in an attempt to ensure everything has been properly removed. Furthermore, there are many dubious anti-malware products, from those that are advertised by malware or those from creators who strike deals with malware creators to ignore their software, to those that ignore government spyware, such as Magic Lantern software. Prevention is the best strategy.
Academic Research on Malware: A Brief Overview
The notion of a self-reproducing computer program can be traced back to 1949 when John von Neumann presented lectures that encompassed the theory and organization of complicated automata [Ne49]. Neumann showed that in theory a program could reproduce itself. This constituted a plausibility result in computability theory. Fred Cohen experimented with computer viruses and confirmed Neumann's postulate. He also investigated other properties of malware (detectability, self-obfuscating programs that used rudimentary encryption that he called "evolutionary", and so on). His doctoral dissertation was on the subject of computer viruses [Co86]. Cohen's faculty advisor, Leonard Adleman (the A in RSA) presented a rigorous proof that algorithmically detecting the presence of a virus in the general case is Turing undecidable [Ad88]. This is perhaps the deepest result in malware computability theory to date and it relies on Cantor's diagonal argument as well as the halting problem. Ironically, it was later shown by Young and Yung that Adleman's work in cryptography is ideal in constructing a virus that is highly resistant to reverse-engineering by presenting the notion of a cryptovirus [YY96]. A cryptovirus is a virus that contains and uses a public key. In the cryptoviral extortion attack, the virus hybrid encrypts plaintext data on the victim's machine using the virus writer's public key. In theory the victim must negotiate with the virus writer to get the plaintext back (assuming there are no backups). Analysis of the virus reveals the public key, not the needed private decryption key. This result was the first to show that computational complexity theory can be used to devise malware that is robust against reverse-engineering.
[Ne49] John von Neumann, "Theory of Self-Reproducing Automata", Part 1: Transcripts of lectures given at the University of Illinois, Dec. 1949, Editor: A. W. Burks, University of Illinois, USA, 1966.
[Co86] Fred Cohen, "Computer Viruses", PhD Thesis, University of Southern California, ASP Press, 1988.
[Ad88] L. M. Adleman, "An Abstract Theory of Computer Viruses", Advances in Cryptology---Crypto '88, LNCS 403, pages 354-374, 1988.
[YY96] A. Young, M. Yung, "Cryptovirology: Extortion-Based Security Threats and Countermeasures," IEEE Symposium on Security & Privacy, pages 129-141, 1996.
[Ze03] Zeltser, L, Skoudis, E, Stratton, W. O., Teall, H, "Malware: Fighting Malicious Code", Prentice Hall, 2003.
- Computer viruses
- Trojan horse
- Timeline of notable computer viruses and worms
- List of computer viruses
- List of computer virus hoaxes
- List of trojan horses
- Malware: what it is and how to prevent it
- Magoo's Guide to Eliminating Spyware — Information on how to get rid of spyware and keep it from coming back
- Antisource.com - Malware Analysis
- CastleCops Free support in computer malware removal.
- Spyware Warrior - Free resources and help for removing all types of Malware
- "Ten steps to Malware prevention" - Systematic tutorials on Spyware removal and prevention.
- Future Malware Future Trends of Malware
- CASEScontact.org - tips and tricks protecting systems against malware, spyware and blended threats
- CyTRAP.org labs - online resource community for IT security, strategy and risk assessment
- EU-IST news - IT security & malware insights for CERT staff & security engineers
- Guide for understanding, removing and preventing malware infections
- Bleepingcomputer.com, A forum for the analysis of HijackThis logs, and a guide to help clean your system before posting a log
- DmSetup - 100% Free and Live Malware Assistance offered by volunteers from the DmSetup Team since 1998