12.12.2012 Views

Elements of Computer Security - Developers

Elements of Computer Security - Developers

Elements of Computer Security - Developers

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Undergraduate Topics in <strong>Computer</strong> Science


Undergraduate Topics in <strong>Computer</strong> Science (UTiCS) delivers high-quality instructional content for<br />

undergraduates studying in all areas <strong>of</strong> computing and information science. From core foundational<br />

and theoretical material to final-year topics and applications, UTiCS books take a fresh, concise, and<br />

modern approach and are ideal for self-study or for a one- or two-semester course. The texts are<br />

all authored by established experts in their fields, reviewed by an international advisory board, and<br />

containnumerousexamplesandproblems.Manyincludefullyworkedsolutions.<br />

For further volumes:<br />

http://www.springer.com/series/7592


David Salomon<br />

<strong>Elements</strong> <strong>of</strong><br />

<strong>Computer</strong> <strong>Security</strong><br />

1 3


Pr<strong>of</strong>. David Salomon (emeritus)<br />

<strong>Computer</strong> Science Dept.<br />

California State University, Northridge<br />

Northridge, CA 91330-8281<br />

USA<br />

dsalomon@csun.edu<br />

Series editor<br />

Ian Mackie<br />

Advisory board<br />

Samson Abramsky, University <strong>of</strong> Oxford, UK<br />

Chris Hankin, Imperial College London, UK<br />

Dexter Kozen, Cornell University, USA<br />

Andrew Pitts, University <strong>of</strong> Cambridge, UK<br />

Hanne Riis Nielson, Technical University <strong>of</strong> Denmark, Denmark<br />

Steven Skiena, Stony Brook University, USA<br />

Iain Stewart, University <strong>of</strong> Durham, UK<br />

David Zhang, The Hong Kong Polytechnic University, Hong Kong<br />

ISBN 978-0-85729-005-2 e-ISBN 978-0-85729-006-9<br />

DOI 10.1007/978-0-85729-006-9<br />

Springer London Dordrecht Heidelberg New York<br />

British Library Cataloguing in Publication Data<br />

A catalogue record for this book is available from the British Library<br />

Library <strong>of</strong> Congress Control Number: 2010933120<br />

c○ Springer-Verlag London Limited 2010<br />

Apart from any fair dealing for the purposes <strong>of</strong> research or private study, or criticism or review, as<br />

permitted under the Copyright, Designs and Patents Act 1988, this publication may only be<br />

reproduced,storedortransmitted,inanyformorbyanymeans,withthepriorpermissioninwriting<br />

<strong>of</strong> the publishers, or in the case <strong>of</strong> reprographic reproduction in accordance with the terms <strong>of</strong><br />

licenses issued by the Copyright Licensing Agency. Enquiries concerning reproduction outside<br />

those terms should be sent to the publishers.<br />

The use <strong>of</strong> registered names, trademarks, etc., in this publication does not imply, even in the<br />

absence <strong>of</strong> a specific statement, that such names are exempt from the relevant laws and regulations<br />

and therefore free for general use.<br />

The publisher makes no representation, express or implied, with regard to the accuracy <strong>of</strong> the information<br />

contained in this book and cannot accept any legal responsibility or liability for any errors or<br />

omissions that may be made.<br />

Printed on acid-free paper.<br />

Springer is part <strong>of</strong> Springer Science+Business Media (www.springer.com)


To the many anonymous cybercriminals and hackers,<br />

without whom this book would not have been necessary.<br />

Now you have given me a security worth<br />

having; and I shall proceed with courage.<br />

—Jane Austen, Northanger Abbey (1803)


Preface<br />

The <strong>Security</strong> Challenge: A Global Context<br />

On 21 November 2008, the conficker worm, one <strong>of</strong> the worst examples <strong>of</strong> malware<br />

in recent years, was first detected. As these words are being written, in<br />

February 2010, the worm is still active and is infecting computers worldwide.<br />

Various estimates <strong>of</strong> the number <strong>of</strong> affected computers range from nine million<br />

to 15 million! Encouraged by this “success,” the anonymous originator<br />

<strong>of</strong> this worm released four more variants, the last <strong>of</strong> which was discovered<br />

in April 2009. When this malicious piece <strong>of</strong> s<strong>of</strong>tware invades a computer, it<br />

tries to propagate itself into other computers by exploiting a vulnerability in<br />

a network service, a component <strong>of</strong> the popular Windows operating system.<br />

Specifically, the worm looks for computers that do not have recent security<br />

updates installed, that employ weak passwords, or that use removable storage<br />

such as external disk drives or flash memories. Conficker fully controls<br />

an infected computer, but no specific damage has so far been reported.<br />

The conficker worm is just one <strong>of</strong> many instances <strong>of</strong> cyber attacks that<br />

have been plaguing computer users since the 1980s. Traditionally, such attacks<br />

were aimed at computers, but computer security experts predict that<br />

future cyber security threats will concentrate more on smart telephones and<br />

other mobile devices. Such devices have become so sophisticated and popular<br />

in the last few years, that many users claim that they cannot live without<br />

them. They are used for online commerce, banking transactions, and sending<br />

and receiving sensitive personal information. Malware for the Blackberry<br />

and other mobile devices first appeared in 2009 and is likely to become more<br />

and more prevalent in the near future.<br />

The conficker worm and the many other threats, attacks, and cyber<br />

crimes described in this book explain your interest in it. <strong>Computer</strong> security<br />

has become one <strong>of</strong> the most important areas in the entire discipline <strong>of</strong><br />

computing. <strong>Computer</strong>s today are used not only in the home and <strong>of</strong>fice, but<br />

in a multitude <strong>of</strong> crucial and sensitive applications. <strong>Computer</strong>s control long


viii Preface<br />

distance telephone conversations, the flow <strong>of</strong> information on the Internet, the<br />

distribution <strong>of</strong> electrical power to cities, and they monitor the operations <strong>of</strong><br />

nuclear power plants and the performance <strong>of</strong> space satellites, to name just a<br />

few important applications.<br />

We have become used to these small, quiet machines that permeate and<br />

enrich our lives and we take them for granted. It is only when they don’t<br />

perform their tasks, that we suddenly become aware that something has gone<br />

wrong. Considering the complexity <strong>of</strong> today’s computers and their functions,<br />

and considering especially the physical hazards that abound in the world, it<br />

is a wonder that our computers function at all, yet we expect them to be<br />

reliable and we entrust them with more and more sensitive, personal, and<br />

complex assignments.<br />

It is easy to disrupt a computer. Just brush your elbow accidentally<br />

against your desk and you might spill your cup <strong>of</strong> c<strong>of</strong>fee on your computer.<br />

A power loss lasting a fraction <strong>of</strong> a second may cause a head crash <strong>of</strong> the<br />

hard disk, resulting in a complete loss <strong>of</strong> the disk drive and all its data. Carelessness<br />

on the part <strong>of</strong> operators or administrators in a large computations<br />

center can result in a costly loss <strong>of</strong> data or physical damage to the equipment.<br />

Yet all these dangers (and there are many more) pale in comparison with the<br />

many types <strong>of</strong> intentional criminal harm that we have come to expect and<br />

that we collectively associate with the term computer security.<br />

A term closely related to computer security is computer crime. A computer<br />

crime is an incident <strong>of</strong> computer security in which a law is broken.<br />

Traditionally, computer crime has had a low pr<strong>of</strong>ile. After all, in a computer<br />

crime there are no smoking guns, no blood-stained victims, and no getaway<br />

cars. Often, such a crime is solved just by sheer accident. In contrast, computer<br />

security is a high-visibility discipline because it affects so many people.<br />

Experience has shown that the more sophisticated a civilization is, the<br />

more vulnerable it is to natural or man-made disruptions. A tree that fell on<br />

power lines in Ohio in August 2004 plunged 50 million people from Detroit<br />

to New York into darkness. A computer glitch on 26 December 2004 (the<br />

day this paragraph was written) caused the cancellation <strong>of</strong> 1100 flights <strong>of</strong><br />

Comair, a subsidiary <strong>of</strong> Delta Air Lines, and similar examples abound. Our<br />

civilization depends highly on computers, which is why any disruption <strong>of</strong> our<br />

computers is at least inconvenient and at worst catastrophic.<br />

In the past, computer security violations, such as viruses and DoS (denial<br />

<strong>of</strong> service, Section 7.5) attacks were caused by hackers, most <strong>of</strong> whom were<br />

believed to be young adults who did this for fun or enjoyed the feeling <strong>of</strong> power<br />

and notoriety. However, this situation has now changed completely. <strong>Security</strong><br />

experts are warning that future attacks on computers may be planned and<br />

funded by terrorists (better called cyberterrorists) and may be devastating.<br />

A powerful hurricane, a huge earthquake, or a tsunami may kill many and<br />

wreak untold havoc, but a large-scale, concerted attack on key computers<br />

may bring the economy <strong>of</strong> an entire country to its knees, even though no one<br />

may actually get killed.<br />

The reason for such dire predictions is our experience with computer<br />

security in the last three decades. We know that a single computer virus,


Preface ix<br />

perhaps written and released by a teenager living in a remote town in a<br />

distant country, can propagate quickly, infect a vast number <strong>of</strong> computers<br />

within hours, and cause economic damage in the billions (<strong>of</strong> Dollars, Euros,<br />

or whatever currency is affected).<br />

Today, computers are responsible for the distribution <strong>of</strong> electrical power<br />

and for routing telephone conversations. They store information on passenger<br />

and cargo flights, on large cash transfers between banks, and on military<br />

plans, to name just a few crucial applications. It is generally agreed that a<br />

well-organized attack that takes over several important, sensitive computers<br />

may cause at least a temporary collapse <strong>of</strong> an entire country.<br />

What makes this kind <strong>of</strong> attack attractive to organized terrorists is that<br />

it can be carried out from the comfort <strong>of</strong> their homes. There is no need<br />

to actually go anywhere, to obtain and use dangerous nuclear or chemical<br />

materials, or to smuggle anything across international borders. The fact that<br />

we depend so much on computers and digital communications may be crucial<br />

to our future survival, and the least that we can do now is to learn as much<br />

as possible about potential threats to computers and how to defend against<br />

them.<br />

Virus writing is a crazy activity. People who write viruses just don’t consider<br />

the consequences <strong>of</strong> their actions. At the same time, I believe in the<br />

American constitution, and the first amendment, which gives people freedom<br />

to write and to talk, so I don’t have a problem in the larger sense <strong>of</strong><br />

people discussing or studying viruses.<br />

—Peter Tippett (Symantec) in [Virus bulletin 05] May 1994 issue.<br />

There is an ongoing debate about whether newly-discovered security<br />

holes and vulnerabilities in operating systems and communications s<strong>of</strong>tware<br />

should be made public. Publicizing a security weakness allows users to avoid<br />

it until a patch is issued or a solution is found. On the other hand, it gives<br />

the bad guys ideas. So far, advocates <strong>of</strong> public exposure have had the upper<br />

hand, with the result that any item <strong>of</strong> news about a new computer security<br />

problem ignites a race between attackers and defenders. The following is a<br />

list <strong>of</strong> a few typical recent races:<br />

November 2009. Windows 7 vulnerability. Micros<strong>of</strong>t discovered a serious<br />

denial-<strong>of</strong>-service (DoS) vulnerability in the protocol that handles messages<br />

between devices on a network for its new Windows 7 operating system.<br />

September 2009. SMB flaw. Micros<strong>of</strong>t advised customers that attacks<br />

have been detected against a zero-day flaw affecting its FTP Service in Micros<strong>of</strong>t<br />

Internet Information Services (IIS). A new exploit code surfaced at<br />

the same time, targeting a zero-day vulnerability in Micros<strong>of</strong>t Server Message<br />

Block (SMB).<br />

September 2009. A flaw in the BlackBerry certificate handling may<br />

invite SMS attacks. Research In Motion (RIM) issued an advisory about a<br />

certificate handling flaw that makes it easy for an attacker to trick users into<br />

visiting a malicious website.


x Preface<br />

April 2009. A newly discovered zero-day flaw in the popular Micros<strong>of</strong>t<br />

PowerPoint application attracts attackers. A malicious PowerPoint file is<br />

sent to an unsuspecting user. When the file is opened, the flaw allows the<br />

execution <strong>of</strong> remote code.<br />

March 2009. Windows kernel flaws patched. Micros<strong>of</strong>t has issued patches<br />

for eight critical vulnerabilities in the Windows kernel. These flaws pertain<br />

to several versions <strong>of</strong> Windows and Windows server. They could be remotely<br />

exploited by an attacker to gain control <strong>of</strong> a computer.<br />

Three types <strong>of</strong> persons are involved in computer security: experts and<br />

researchers who study this field and recommend preventive measures and<br />

solutions, the general public, which suffers from the breakdown <strong>of</strong> computer<br />

security, and the (mostly anonymous) perpetrators <strong>of</strong> the various misdeeds<br />

and attacks. Most <strong>of</strong> these perpetrators are known as hackers, which is why<br />

this important, popular term is discussed in Appendix A.<br />

From the dictionary<br />

Expert: someone widely recognized as a reliable source <strong>of</strong> knowledge or skill<br />

whose judgement is accorded authority and status by the public or their<br />

peers.<br />

Not all computer crime and attacks are perpetrated by hackers. Much<br />

harm is done by insiders, trusted employees who do it for a variety <strong>of</strong> reasons.<br />

This is the human side <strong>of</strong> computer security. The history <strong>of</strong> computer crime<br />

is riddled with stories about users who take their frustration out on the<br />

computer. They drop it on the floor, shoot it, pound it with a hammer,<br />

and even urinate on it, just to vent their feelings and frustration. Some<br />

employees strike at their machines as a way to get back at the boss, while<br />

others act out <strong>of</strong> political convictions and allow their fellow party members<br />

to sabotage equipment. However, the main reason for insider computer crime<br />

is money. An employee or a trusted consultant suddenly realize they have<br />

enough knowledge to induce a computer into printing a check, transferring<br />

money to their account, or releasing information (such as a mailing list or<br />

credit card numbers) that can later be sold, and this temptation may prove<br />

too much. Such a treacherous insider suddenly turns into a living Trojan<br />

horse, as dangerous as those discussed in Chapter 4. The best an employer<br />

can do to defend against such employees is to compartmentalize information,<br />

to make sure an employee knows only as much as he or she needs to know<br />

for their jobs. This policy is difficult to implement in practice, it adversely<br />

affects employees’ morale and productivity, and it is not full pro<strong>of</strong>.<br />

We have all heard <strong>of</strong> bank robbers, but one <strong>of</strong> the most notorious bank<br />

robbers, one who kept the title “biggest computer fraud” in the Guinness<br />

Book <strong>of</strong> World Records [Guinness 04] from 1978 to 1999, was someone called<br />

Stanley Rifkin, a name most <strong>of</strong> us would have trouble recognizing. He is<br />

virtually forgotten today, perhaps because he didn’t use a gun in his exploit<br />

and didn’t even hack the bank’s computer. He was a consultant to the now<br />

defunct <strong>Security</strong> Pacific National Bank in Los Angeles and in this capacity<br />

he learned some <strong>of</strong> the codes used by bank personnel to make large money


Preface xi<br />

transfers. He used this knowledge to call the employees in the wire transfer<br />

room, pretending to be Mike Hansen, a member <strong>of</strong> the bank’s international<br />

department, and con them into transferring ten million dollars to a temporary<br />

account that he had previously opened. He later transferred the money to<br />

Switzerland and used it to buy diamonds that he then smuggled back to the<br />

United States. He was caught by the FBI very quickly, but only because<br />

he had bragged about his exploit to his lawyer, trusting the confidentiality<br />

<strong>of</strong> attorney-client relations. The lawyer notified the FBI and Rifkin was<br />

arrested. The final twist <strong>of</strong> this story is that the bank didn’t even miss the<br />

money when notified by the FBI <strong>of</strong> the successful solution <strong>of</strong> this crime.<br />

Exercise Pre.1: Imagine that you are an operator <strong>of</strong> a large computer.<br />

You’ve been with the company for years, and you have suddenly been switched<br />

to the night shift, forcing you to sleep during the day so you rarely get to<br />

see your family. You don’t want to quit, because in just a few years you’d be<br />

eligible for retirement. What can you do to improve your lot?<br />

FBI: Why do you rob banks?<br />

Willie Sutton: Because that’s where the money is.<br />

http://www.fbi.gov/libref/historic/famcases/sutton/sutton.htm.<br />

<strong>Computer</strong> <strong>Security</strong>: an Example<br />

One <strong>of</strong> the largest and most sophisticated attacks by cyber criminals<br />

started in late 2009 and was discovered in January 2010. More than 75,000<br />

computers belonging to about 2500 companies around the world (374 in the<br />

United States) have been compromised. The list <strong>of</strong> victims includes Fortune<br />

500 companies, US local, state, and federal government agencies, energy companies,<br />

ISPs, and educational institutions.<br />

The perpetrators lured company employees by free (infected) s<strong>of</strong>tware<br />

and baited them into opening infected email attachments. Once compromised,<br />

a computer was searched for sensitive corporate documents, login<br />

information, IPs and URLs <strong>of</strong> friends and colleagues, and passwords. The<br />

computer was then added to a botnet (dubbed Kneber), and employed to<br />

spread its “message” to other machines. The Kneber botnet is so large that<br />

it is controlled by no fewer than 20 command and control servers worldwide<br />

(mostly in China but also in the Ukraine, Korea, Panama, and the United<br />

States). It is also possible that this “operation” is being executed and coordinated<br />

by more than one group <strong>of</strong> perpetrators,<br />

This attack has been so widespread, successful, and sophisticated, that<br />

one security expert had this to say about it, “it is significant in its scale<br />

and in its apparent demonstration that the criminal groups’ sophistication in<br />

cyberattacks is approaching that <strong>of</strong> nation states such as China and Russia.”<br />

More than half the machines infected with Kneber are also infected with<br />

a peer-to-peer bot called Waledac . It is not uncommon for a computer to be<br />

invaded by multiple strains <strong>of</strong> malware, but this case seems special because<br />

the Kneber bot seems to be controlling and watching Waledac and is also<br />

downloading Waledac to machines it has invaded. This clever behavior implies<br />

that the Kneber bot was planned, implemented, and debugged carefully


xii Preface<br />

by experts, and was designed not just to propagate itself and cause harm,<br />

but to also be fault tolerant and resilient to removal attempts.<br />

Overview and Goals<br />

This book is intended as a starting point for those familiar with basic concepts<br />

<strong>of</strong> computers and computations who would like to extend their knowledge<br />

into the realm <strong>of</strong> computer and network security. The book is primarily<br />

a textbook for undergraduate classes on computer security. It is mostly nonmathematical<br />

and makes no attempt to be complete. The only prerequisite<br />

for understanding the material presented here is familiarity with the basic<br />

concepts <strong>of</strong> computers and computations such as (1) the organization <strong>of</strong> data<br />

in bits and bytes, (2) data structures (arrays, trees, and graphs), and (3) network<br />

concepts such as IP numbers, input/output ports, and communications<br />

protocols.<br />

This book is an up-to-date version <strong>of</strong> the 2005 text Foundations <strong>of</strong> <strong>Computer</strong><br />

<strong>Security</strong>. The material has been brought up to date, old examples <strong>of</strong><br />

malware and threats have been replaced with new ones, and material that<br />

was judged less important was cut out.<br />

Timing. The many phrases “at the time <strong>of</strong> this writing” found in the<br />

book refer to the period from February to June 2010, during which this book<br />

was prepared.<br />

Special features that enhance the textbook aspect <strong>of</strong> the book are the<br />

many exercises sprinkled throughout the text (with answers available in the<br />

book’s Web site), the virus timeline (Appendix C), and the Glossary. Another<br />

attractive feature is the jokes (check the index). There are no riddles.<br />

A note on references. The text refers to many resources using notation <strong>of</strong><br />

the form [Thompson 84] where the 2-digit number is a year. All the references<br />

are listed in the Bibliography and many are Web sites. As we all know, Web<br />

sites tend to have a frustratingly short life, so by the time this book is in<br />

your hands, some <strong>of</strong> the references may become broken links. However, given<br />

the context <strong>of</strong> a reference, an Internet search will likely locate a cached copy<br />

<strong>of</strong> the original page or a similar page. There is also the Internet wayback<br />

machine [wayback 10] where billions <strong>of</strong> old Web sites are archived. Don’t<br />

give up easily.<br />

An interesting (and, I believe, also original) feature <strong>of</strong> this book is its<br />

minimal use <strong>of</strong> the vague term “system.” This word is used only (1) in connection<br />

with well-defined or commonly-used terms such as “operating system,”<br />

“file system,” and “notational system,” (2) when it is part <strong>of</strong> names <strong>of</strong> organizations,<br />

or (3) when it is included in a quotation or in s<strong>of</strong>tware code. Many<br />

texts use this vague term liberally, thereby confusing the reader. Sentences<br />

such as “In addition, the resulting flood may exhaust system memory, resulting<br />

in a system crash. The net result is that the system is unavailable or<br />

nonfunctional,” are confusing. Instead <strong>of</strong> “system” the author should specify<br />

what is being discussed, whether it is a computer, a piece <strong>of</strong> s<strong>of</strong>tware, a


Preface xiii<br />

router, or something else. Here is what William Strunk [Strunk 18] has to<br />

say about this term.<br />

System. Frequently used without need.<br />

Dayton has adopted the commis- Dayton has adopted government<br />

sion system <strong>of</strong> government<br />

by commission<br />

The dormitory system Dormitories<br />

—William Strunk Jr., The <strong>Elements</strong> <strong>of</strong> Style.<br />

While I was at it, I also avoided the use <strong>of</strong> the cliché “basically,” employing<br />

“essentially” or “fundamentally” instead.<br />

On the other hand, the term “user” is a favorite in this book.<br />

Why is it drug addicts and computer aficionados are both called users?<br />

—Clifford Stoll.<br />

Organization and Features<br />

Chapter 1 is a collection <strong>of</strong> topics that have to do with the physical<br />

security <strong>of</strong> computer hardware, computer networks, and digital data. The<br />

topics discussed cover a variety <strong>of</strong> issues ranging from computer theft and<br />

static electricity on carpets to laptop security.<br />

Chapter 2 is the first <strong>of</strong> the chapters on rogue s<strong>of</strong>tware (the term malware<br />

is <strong>of</strong>ten also used). The chapter is devoted to computer viruses, and it covers<br />

all the important aspects <strong>of</strong> this unusual type <strong>of</strong> s<strong>of</strong>tware. The various types<br />

<strong>of</strong> viruses, the way viruses propagate, the damage they may inflict (their<br />

payload), and the people who write them, are among the topics covered in<br />

this chapter.<br />

Another type <strong>of</strong> rogue s<strong>of</strong>tware, namely worms, is the topic <strong>of</strong> Chapter 3.<br />

Techniques for worm propagation are discussed and the historically important<br />

Internet worm is described.<br />

Trojan horses are the topic <strong>of</strong> Chapter 4. The discussion concentrates on<br />

the types <strong>of</strong> damage done by this type <strong>of</strong> malware and on how Trojan horses<br />

are installed on a computer. Of special interest is Section 4.3 that describes<br />

an interesting technique for bugging or rigging a compiler. A Trojan horse can<br />

be embedded inside a compiler in such a way that certain programs compiled<br />

by it will be infected with the horse, yet nothing suspicious remains in the<br />

source code <strong>of</strong> the compiler itself and even a recompilation <strong>of</strong> the compiler<br />

does not get rid <strong>of</strong> the malicious s<strong>of</strong>tware secretly embedded in it.<br />

Chapter 5 is full <strong>of</strong> examples <strong>of</strong> malware. About a dozen examples <strong>of</strong><br />

viruses, worms, and Trojans are discussed and described in detail. Many<br />

(shorter) descriptions can be found in Appendix C.<br />

The important topics <strong>of</strong> preventing malware and defending against it<br />

make up Chapter 6. Among the methods discussed in this chapter are backing


xiv Preface<br />

up files, anti-virus s<strong>of</strong>tware and its applications, activity monitors, vaccines,<br />

and file permissions. The interesting topic <strong>of</strong> hoaxes is also included here.<br />

Network security is the topic <strong>of</strong> Chapters 7 through 10. Chapter 7 starts<br />

this important subject with a detailed discussion <strong>of</strong> important threats that<br />

relate to networks. Topics such as port scanning, spo<strong>of</strong>ing, password cracking,<br />

firewalls, and denial <strong>of</strong> service (DoS) are described and analyzed.<br />

Chapter 8 concentrates on authentication. Both local and remote methods<br />

for authentication are included. Of special interest are the biometric<br />

authentication techniques <strong>of</strong> Section 8.2.<br />

Spyware, the topic <strong>of</strong> Chapter 9, is a relatively new threat and is already<br />

serious enough to merit its own discussion and methods <strong>of</strong> defense. Material<br />

on spyware and terrorism and on remote reporting is also included, as are<br />

several varieties <strong>of</strong> spyware such as adware and researchware.<br />

Chapter 10 tries to familiarize the reader with the growing crime <strong>of</strong> identity<br />

theft. The topic <strong>of</strong> phishing is also covered in detail, including examples.<br />

Privacy and trust in the online world are the topics <strong>of</strong> Chapter 11. General<br />

privacy concerns as well as children’s privacy and safety are discussed,<br />

together with how to generate trust in visitors to Web sites (and how to keep<br />

it). Notice that privacy issues are also discussed in Section 1.5.<br />

Appendix A discusses the definition, meaning, and history <strong>of</strong> the term<br />

hacker. The appendix also attempts to classify hackers, their techniques,<br />

s<strong>of</strong>tware “products,” and motivation.<br />

Appendix B introduces “l33t Speak” (pronounced “leet”), a language or<br />

a notational system widely used by hackers.<br />

Appendix C is a detailed virus timeline. The history <strong>of</strong> viruses and<br />

other types <strong>of</strong> rogue s<strong>of</strong>tware is traced from its infancy in the late 1940s to<br />

the present day (early 2010), stressing “firsts” such as the first stealth virus<br />

and the first boot sector infector.<br />

Web and Supplemental Resources<br />

There currently are many useful resources (in the form <strong>of</strong> books, articles, and<br />

websites) for computer security, some <strong>of</strong> which are listed at the end <strong>of</strong> the<br />

Introduction.<br />

The book’s Web site, including a document on cryptography, the answers<br />

to the exercises, an errata list, and BibTEX information, is part <strong>of</strong> the author’s<br />

Web site, located at http://www.DavidSalomon.name/. The author’s email<br />

address is dsalomon@csun.edu, but an alternative address, for emergencies,<br />

is hanynamei@DavidSalomon.name.<br />

Cryptography Introduction. Cryptography solves many security<br />

problems. Without cryptography, the main task <strong>of</strong> a hacker would be to<br />

break into a computer, locate sensitive data, and copy it. Alternatively,


Preface xv<br />

the hacker may intercept data sent between computers, analyze it, and help<br />

himself to any important or useful “nuggets.” Encrypting sensitive data complicates<br />

these tasks, because in addition to obtaining the data, the wrongdoer<br />

also has to decrypt it. Cryptography is therefore a very useful tool in the<br />

hands <strong>of</strong> security workers, but it is not a panacea. Even the strongest cryptographic<br />

methods cannot prevent a virus from damaging data or deleting<br />

files. Similarly, DoS attacks are possible even in environments where all data<br />

is encrypted.<br />

Because <strong>of</strong> the importance <strong>of</strong> cryptography, a document containing an<br />

introduction to this topic has been prepared and is available at the book’s<br />

Web site. It discusses the principles and concepts behind the many encryption<br />

algorithms used by modern cryptography. It starts with the concepts <strong>of</strong><br />

cipher and code and follows this with examples <strong>of</strong> old monoalphabetic and<br />

polyalphabetic ciphers. The important method <strong>of</strong> the one-time pad and<br />

the problem <strong>of</strong> key distribution are discussed next. The chapter continues<br />

with the principles <strong>of</strong> public-key cryptography, RSA encryption, and the allimportant<br />

secure socket layer (SSL) protocol.<br />

More material on cryptography, including descriptions <strong>of</strong> algorithms and<br />

examples, can be found in [Salomon 03] and in the many excellent texts on<br />

cryptography and data hiding that are currently available.<br />

Acknowledgement<br />

I would like to acknowledge the help provided by my editor, Wayne Wheeler,<br />

by Francesca Warren, the copyeditor, and by Giovanni Motta. They went<br />

over the final manuscript and made many useful and productive comments,<br />

corrections, and suggestions.<br />

Disclaimer. This is not a fact-free book. A book like this could not<br />

have been written without the help <strong>of</strong> many people, but this book was! As a<br />

result, the author is the only one responsible for both the useful material in<br />

the book and for the errors that I hope will not be discovered in the future.<br />

Disclaimer. Certain services, s<strong>of</strong>tware products and Web sites are mentioned<br />

in this book. This author does not guarantee the usefulness, quality,<br />

or accuracy <strong>of</strong> claims made by these sites and organizations.<br />

Lakeside, California David Salomon<br />

Tis not my study or intent to compose neatly. . . but to express myself<br />

readily & plainly as it happens. So that as a River runs sometimes<br />

precipitate and swift, then dull and slow; now direct, then winding;<br />

now deep, then shallow; now muddy, then clear; now broad,<br />

then narrow; doth my style flow; now serious, then light; now<br />

comical, then satirical; now more elaborate, then remiss, as<br />

the present subject required, or as at the time I was affected.<br />

—Robert Burton, The Anatomy <strong>of</strong> Melancholy, 1621


Contents<br />

Preface vii<br />

Introduction 1<br />

1 Physical <strong>Security</strong> 17<br />

1.1 Side-Channel Attacks 17<br />

1.2 Physical Threats 22<br />

1.3 Laptop <strong>Security</strong> 29<br />

1.4 Disaster Recovery Planning 32<br />

1.5 Privacy Protection 33<br />

2 Viruses 37<br />

2.1 Operating Systems 38<br />

2.2 <strong>Computer</strong> Viruses 40<br />

2.3 Virus Writers 45<br />

2.4 Virus Propagation 49<br />

2.5 Virus Classification 51<br />

2.6 Boot Sector Viruses 54<br />

2.7 File Infector Viruses 57<br />

2.8 Companion Viruses 61<br />

2.9 Multipartite Viruses 62<br />

2.10 Macro and Script Viruses 63<br />

2.11 Infected Images 65<br />

2.12 Virus Life Cycle 69<br />

2.13 Viruses and UNIX 71<br />

2.14 Viruses and the Macintosh 72<br />

2.15 Virus Replication 72<br />

2.16 Virus Payload 73<br />

2.17 Virus Organization 81<br />

2.18 Virus Naming 82<br />

2.19 Virus Hiding Methods 83<br />

2.20 Polymorphism 88<br />

2.21 Virus Stealth Techniques 90<br />

2.22 Interrupts and Viruses 92<br />

2.23 Trapdoors 96


xviii Contents<br />

3 Worms 99<br />

3.1 Code Red I 101<br />

3.2 Worming Techniques 103<br />

3.3 Proposing a CCDC 114<br />

3.4 The Internet Worm 117<br />

3.5 iPhone Worms 120<br />

4 Trojan Horses 123<br />

4.1 Applications <strong>of</strong> Trojans 124<br />

4.2 Installing a Trojan 126<br />

4.3 Rigging a Compiler 129<br />

5 Examples <strong>of</strong> Malware 137<br />

5.1 The Lehigh Virus 137<br />

5.2 The Brain Virus 138<br />

5.3 The Michaelangelo Virus 139<br />

5.4 The SirCAM Virus 140<br />

5.5 The Melissa Virus 141<br />

5.6 Scores Virus 142<br />

5.7 Swiss Amiga Virus 143<br />

5.8 Christmas Card Virus 144<br />

5.9 VBS.KAK Worm 145<br />

5.10 The Cruncher Virus 145<br />

5.11 Opener Virus 146<br />

5.12 MTX Worm/Virus 148<br />

6 Prevention and Defense 151<br />

6.1 Understanding Vulnerabilities 151<br />

6.2 Defenses Against Malware 156<br />

6.3 Anti-Virus S<strong>of</strong>tware 157<br />

6.4 Backups and Such 168<br />

6.5 Botnets, Zombies, and Remote Control 173<br />

6.6 Hoaxes 175<br />

7 Network <strong>Security</strong> 179<br />

7.1 Internet Vulnerabilities 179<br />

7.2 Port Scanning 180<br />

7.3 Spo<strong>of</strong>s 181<br />

7.4 Spam 186<br />

7.5 Denial <strong>of</strong> Service 199<br />

7.6 Firewall Basics 202<br />

7.7 Other Threats 205<br />

8 Authentication 209<br />

8.1 Local Authentication 210<br />

8.2 Biometric Techniques 210<br />

8.3 Passwords 216


Contents xix<br />

9 Spyware 233<br />

9.1 Introduction and Definition 234<br />

9.2 RIAA and Spyware 238<br />

9.3 Terrorism and Spyware 239<br />

9.4 Political Contributions 241<br />

9.5 Distribution <strong>of</strong> Spyware 242<br />

9.6 Remote Reporting 245<br />

9.7 Adware 248<br />

9.8 Spyware? 249<br />

10 Identity Theft 255<br />

10.1 Introduction 256<br />

10.2 Shredding 261<br />

10.3 Internet Cookies 263<br />

10.4 Phishing 264<br />

10.5 The Homograph Threat 270<br />

11 Privacy and Trust 273<br />

11.1 Privacy Issues 274<br />

11.2 Online Privacy 277<br />

11.3 Children’s Privacy 279<br />

11.4 Digital Forensics 285<br />

11.5 Trust 286<br />

A The Hacker 291<br />

B l33t Speak 299<br />

C Virus Timeline 303<br />

Concluding Remarks 325<br />

Glossary 331<br />

Bibliography 347<br />

Index 363<br />

LIFF (n.). A book, the contents <strong>of</strong> which are totally<br />

belied by its cover. For instance, any book the dust jacket<br />

<strong>of</strong> which bears the words. “This book will change your life.”<br />

—Douglas Adams, The Meaning <strong>of</strong> Liff (1984)


Introduction<br />

The first microprocessors appeared in the early 1970s and were very quickly<br />

employed in personal computers. A popular question in those early years<br />

was: Why would anyone want a computer at home? Typical answers were: To<br />

balance your checking account, to store your recipes, and to help you compute<br />

your taxes. It was only a few years later, when many already owned personal<br />

computers, that computer owners discovered the real answer. We buy and<br />

use personal computers mainly because they provide us with communications<br />

and entertainment.<br />

Games, initially primitive, were implemented for early personal computers<br />

and became a powerful selling tool in the hands <strong>of</strong> computer salespersons<br />

because <strong>of</strong> the entertainment they provided. The development <strong>of</strong> email in the<br />

1970s and <strong>of</strong> the World Wide Web in the 1980s have turned computers into<br />

tools for communications, which is why they became the common household<br />

appliances they are today. Most owners <strong>of</strong> home computers use their computers<br />

to play games, to watch movies and television, and to communicate, to<br />

send and receive email, and to browse the Internet. Relatively few users are<br />

interested in computations, employ a word processor, benefit from a personal<br />

data base, or know how to use a spreadsheet.<br />

Once personal computers became a part <strong>of</strong> our lives, it had quickly<br />

been realized that like many other technological advances, computers and<br />

data networks have their dark side. <strong>Security</strong> problems in the form <strong>of</strong> malicious<br />

programs, loss <strong>of</strong> privacy, destruction <strong>of</strong> data, attacks on Web sites<br />

and servers, and floods <strong>of</strong> unwanted advertisement and spam, have popped<br />

up immediately and have become a way <strong>of</strong> life for virtually every computer<br />

user.<br />

Exercise Intro.1: What industry is the largest user <strong>of</strong> computers?<br />

Definitions. The dictionary defines security as “the quality or state <strong>of</strong><br />

being free from danger” or “measures taken to guard against espionage or<br />

sabotage, crime, attack, or escape.” This book explores some <strong>of</strong> the ways<br />

computers and computer networks are put at risk by perpetrators, hackers,<br />

and other wrongdoers. The terms “attack” and “threat” are used here to


2 Introduction<br />

identify any activity that aims to gain access to computers for malicious<br />

purposes. The terms “security hole,” “weakness,” and “vulnerability” refer<br />

to a state that can be exploited for such an attack (some would even say that<br />

a security hole invites an attack).<br />

For the purposes <strong>of</strong> computer security, there are two types <strong>of</strong> people,<br />

insiders (employees) and outsiders (nonemployees). Figure Intro.1 shows the<br />

three classes <strong>of</strong> computer security and crime caused by each <strong>of</strong> the two types<br />

plus the special class <strong>of</strong> threats that are not directly caused by humans,<br />

namely accidents.<br />

��������<br />

�������<br />

���������<br />

����� ������ ���������� ����� ������ ���������� ���������<br />

Figure Intro.1: Seven Classes <strong>of</strong> <strong>Computer</strong> <strong>Security</strong> and Crime.<br />

The seven classes are as follows:<br />

Insiders overt. Overt actions by insiders are <strong>of</strong>ten performed by disgruntled<br />

employees and result in destruction <strong>of</strong> data and equipment. However,<br />

this class is small compared to the other six.<br />

Insiders covert. Generally, insiders have more information about a place<br />

<strong>of</strong> work than outsiders, which is why they can wreak more havoc. Thus, this<br />

class corresponds to serious threats and criminal actions.<br />

Insiders unintended. Employees make errors and can also neglect their<br />

duties. Consequently, this class encompasses actions such as wrong inputs,<br />

wrong data, damage as a result <strong>of</strong> extreme temperatures or other harsh conditions,<br />

and interruption <strong>of</strong> vital services.<br />

Outsiders overt. Physical attacks on computer and network facilities<br />

belong in this class, as do also DoS attacks (page 199).<br />

Outsiders covert. This wide class consists <strong>of</strong> the various types <strong>of</strong> rogue<br />

s<strong>of</strong>tware sent from the outside to a personal computer, a mobile device, or to<br />

a large computer facility.<br />

Outsiders unintended. It is fairly rare that an outsider will harm a<br />

computer or data unintentionally.<br />

Finally, there are accidents. They always happen, not just in the computing<br />

field. Accidents are caused either by nature, such as earthquake or<br />

flood, or indirectly by humans (see the “insiders unintended” class).


Introduction 3<br />

History is a jangle <strong>of</strong> accidents, blunders, surprises and absurdities, and so<br />

is our knowledge <strong>of</strong> it, but if we are to report it at all we must impose some<br />

order upon it.<br />

—Henry Steele Commanger, The Nature and the Study <strong>of</strong> History, 1966.<br />

There are many different types <strong>of</strong> computer security threats and problems,<br />

but they can be classified into three large classes as follows:<br />

Physical security. A personal computer can be stolen. A large computer<br />

center can be broken into and equipment taken. Fire, electrical surges, and<br />

floods can damage computer hardware and network connections and cause<br />

loss <strong>of</strong> data. These and other physical threats are discussed in Chapter 1.<br />

Rogue s<strong>of</strong>tware. We have all heard <strong>of</strong> computer<br />

viruses. Small, sneaky programs that invade our computers<br />

and spread quickly and silently. Viruses are just<br />

one aspect <strong>of</strong> the general threat posed by rogue s<strong>of</strong>tware.<br />

This topic, which also includes worms and Trojan<br />

horses, is discussed in Chapters 2 through 6.<br />

Most computers are connected to networks, and most local networks are<br />

connected to the Internet. Thus, there is a large class <strong>of</strong> computer security<br />

threats that are related to networks and fall under the category <strong>of</strong> network<br />

security. This wide area <strong>of</strong> security includes threats such as port scanning,<br />

spo<strong>of</strong>ing, password cracking, spyware, and identity theft and is the topic <strong>of</strong><br />

Chapters 7 through 9.<br />

Almost nonexistent before the 1980s, computer security is now a vast,<br />

complex, and important field. This book is just one <strong>of</strong> many books, articles,<br />

reports, and other publications that discuss, explain, and analyze the various<br />

aspects <strong>of</strong> and approaches to computer security. What makes this book<br />

special is its reliance on the keyword “compromise.” This word is employed<br />

here in two meanings as follows:<br />

1. <strong>Computer</strong> security is a compromise. The more secure a computer,<br />

the less convenient it is to use.<br />

2. An attacker has to find only one security weakness to compromise an<br />

entire computer installation or many computers worldwide and cause extensive<br />

psychological and financial damage to users, their identities, s<strong>of</strong>tware,<br />

and personal and commercial data.<br />

Any security threat or vulnerability described in this book can be reduced,<br />

managed, solved, or overcome in some way, but the solution makes it<br />

more difficult or less convenient to use the computer, the network, or a particular<br />

operating system or program. This view <strong>of</strong> security as a compromise<br />

or a trade<strong>of</strong>f is the key to understanding computer and network security.


4 Introduction<br />

Anyone who has ever tried to manage accounts on mainframes or local area<br />

networks (LANs) will recognize that there is a constant battle between the<br />

aspects <strong>of</strong> security and user friendliness in computer use. This tension arises<br />

from the definition <strong>of</strong> the two functions. If a computer is easy to use, it is<br />

easy to misuse. If a password is hard to guess, it is hard to remember. If<br />

access to information is simple for the owner, it is simple for the cracker.<br />

—David Harley et al., Viruses Revealed, 2001.<br />

Why does the problem <strong>of</strong> computer security exist? Why are computers<br />

so vulnerable to attacks and so easy to damage? This book <strong>of</strong>fers four reasons,<br />

but the reader may come up with more.<br />

Reason 1. <strong>Computer</strong>s are fast, accurate, and powerful in certain tasks<br />

such as computing, searching, and manipulating data, while being inadequate<br />

and inefficient in other tasks, most notably in anything requiring intelligence.<br />

The field <strong>of</strong> artificial intelligence is almost as old as the modern electronic<br />

computer. Researchers have been trying since the 1950s to teach computers<br />

how to solve real-world problems such as recognizing patterns, playing games<br />

against a human opponent, and translating natural languages, all without<br />

success. Today, after more than half a century <strong>of</strong> effort, computers can<br />

recognize handwriting, can identify speech commands, and can prove certain<br />

types <strong>of</strong> mathematical theorems, but are not good at any <strong>of</strong> these tasks.<br />

<strong>Computer</strong>s have recently become good at beating chess masters at their own<br />

game, but only because they (the computers) are fast enough to analyze every<br />

possible move in a reasonable time, not because they understand chess.<br />

Thus, computers are fast, reliable, and very useful, but are not very<br />

intelligent, which makes them victims <strong>of</strong> (computer) crime. Even humans,<br />

who are much more intelligent, <strong>of</strong>ten (perhaps too <strong>of</strong>ten) fall prey to clever<br />

schemes designed to take their money, so it is no wonder that the problem <strong>of</strong><br />

computer security is serious and is getting worse.<br />

Exercise Intro.2: <strong>Computer</strong>s are fast, reliable, and very useful, but are not<br />

very intelligent. With this in mind, can they be trusted?<br />

Reason 2. It is easier to break computer security than to build fully<br />

secure computers. A modern computer has many security weaknesses and<br />

a hacker has to find only one in order to do harm. A security worker, on<br />

the other hand, has to find and correct all the security holes, a virtually<br />

impossible task. This situation is a special case <strong>of</strong> the general rule discussed<br />

in the answer to exercise 2.15.<br />

Reason 3. A computer is controlled by its operating system and modern<br />

operating systems are extremely complex. A systems programmer designs an<br />

operating system with a view towards making it easy to use, but as we already<br />

know, the easier it is to use a computer, the less secure it is. Today’s modern<br />

graphical user interface (GUI) operating systems are designed around several<br />

layers where the user interacts with the highest level and the hardware is<br />

controlled by the lowest level. Each level controls the one below it and it<br />

is this organization in levels that allows malware to hide from the user and<br />

perform its operations in relative obscurity and safety.


Introduction 5<br />

At the time <strong>of</strong> this writing (mid 2010), operating systems have become<br />

so complex that hackers constantly find ways to exploit vulnerabilities and<br />

security holes in them. Quite <strong>of</strong>ten, such holes are discovered by honest users<br />

who then notify the maker <strong>of</strong> the operating system, resulting in a patch or<br />

an update being promptly issued to solve that problem, only for a new hole<br />

to be quickly discovered. The following example, found on the Internet in<br />

early 2010, is typical. It illustrates the number and variety <strong>of</strong> security holes<br />

that have to be dealt with in just one security update. Don’t worry about<br />

the details, just keep in mind that this announcement is typical.<br />

<strong>Security</strong> Update 2010-001, for Mac OS X 10.5, Mac OS X 10.6.<br />

1. Impact: Playing a maliciously crafted mp4 audio file may lead to an<br />

unexpected application termination or arbitrary code execution.<br />

Description: A buffer overflow exists in the handling <strong>of</strong> mp4 audio files.<br />

Playing a maliciously crafted mp4 audio file may lead to an unexpected application<br />

termination or arbitrary code execution. This issue is addressed<br />

through improved bounds checking. Credit to Tobias Klein <strong>of</strong> trapkit.de for<br />

reporting this issue.<br />

2. Impact: A remote attacker may cause an unexpected application termination<br />

<strong>of</strong> cupsd.<br />

Description: A use-after-free issue exists in cupsd. By issuing a maliciously<br />

crafted get-printer-jobs request, an attacker may cause a remote denial <strong>of</strong><br />

service. This is mitigated through the automatic restart <strong>of</strong> cupsd after its<br />

termination. This issue is addressed through improved connection use tracking.<br />

3. Impact: Multiple vulnerabilities in Adobe Flash Player plug-in.<br />

Description: Multiple issues exist in the Adobe Flash Player plug-in, the<br />

most serious <strong>of</strong> which may lead to arbitrary code execution when viewing a<br />

maliciously crafted web site. The issues are addressed by updating the Flash<br />

Player plug-in to version 10.0.42. Further information is available via the<br />

Adobe web site at. . . . Credit to an anonymous researcher and. . . .<br />

4. Impact: Viewing a maliciously crafted TIFF image may lead to an unexpected<br />

application termination or arbitrary code execution.<br />

Description: A buffer underflow exists in ImageIO’s handling <strong>of</strong> TIFF images.<br />

Viewing a maliciously crafted TIFF image may lead to an unexpected<br />

application termination or arbitrary code execution. This issue is addressed<br />

through improved bounds checking. For Mac OS X v10.6 systems, this issue<br />

is addressed in Mac OS X v10.6.2.<br />

5. Impact: Viewing a maliciously crafted DNG image may lead to an unexpected<br />

application termination or arbitrary code execution.<br />

Description: A buffer overflow exists in Image RAW’s handling <strong>of</strong> DNG<br />

images. Viewing a maliciously crafted DNG image may lead to an unexpected<br />

application termination or arbitrary code execution. This issue is addressed<br />

through improved bounds checking. Credit to. . . for reporting this issue.<br />

6. Impact: An attacker with a privileged network position may capture<br />

data or change the operations performed in sessions protected by SSL.


6 Introduction<br />

Description: A man-in-the-middle vulnerability exists in the SSL and TLS<br />

protocols. Further information is available at. . . . A change to the renegotiation<br />

protocol is underway within the IETF. This update disables renegotiation<br />

in OpenSSL as a preventive security measure. The issue does not affect<br />

services using Secure Transport as it does not support renegotiation. Credit<br />

to. . . for reporting this issue.<br />

Reason 4. In addition to the complexity and vulnerability <strong>of</strong> operating<br />

systems, there is another factor that affects the behavior <strong>of</strong> a computer,<br />

namely the Internet and its protocols. Most personal computers and many<br />

mobile devices are connected to the Internet and enjoy the benefits <strong>of</strong> communications<br />

that it confers. In order for many computers to communicate,<br />

there is a need for communications standards, which is why various communications<br />

protocols had to be developed. Such a protocol is a set <strong>of</strong> rules<br />

that specify the individual steps <strong>of</strong> a complete Internet session. Thus, all the<br />

computers that send, forward, and receive email have to execute the same<br />

protocol. Similarly, transferring files between computers requires a protocol.<br />

The point is that the important Internet protocols were developed in the<br />

1970s and 1980s, before Internet security became a global concern. This is<br />

why the security features included in the protocols are <strong>of</strong>ten weak. These<br />

protocols were examined by many experts and users who made contributions<br />

and proposed changes, but once such a protocol is approved and many programs<br />

are written to implement it, there is no way to go back and modify<br />

it. When a security hole is discovered, warnings are issued and programs are<br />

patched, but the underlying protocol is known to be weak.<br />

The Ten Immutable Laws <strong>of</strong> <strong>Security</strong> (From [technet 04]).<br />

Micros<strong>of</strong>t security workers investigate countless security reports every<br />

year and the ten immutable laws <strong>of</strong> security [technet 04] listed here are based<br />

on their experience. The security issues discussed here are general and stem<br />

from the main weakness <strong>of</strong> computers, namely the lack <strong>of</strong> intelligence. They<br />

show that the best way to minimize security risks is to use common sense.<br />

Here is a summary <strong>of</strong> the ten laws:<br />

1: If someone can persuade you to run his program on your computer,<br />

it’s not your computer anymore.<br />

2: If someone can alter the operating system on your computer, it’s not<br />

your computer anymore.<br />

3: If someone has unrestricted physical access to your computer, it’s not<br />

your computer anymore.<br />

4: If you allow someone to upload programs to your Web site, it’s not<br />

your Web site anymore.<br />

5: Weak passwords defeat strong security.<br />

6: A computer is only as secure as its owner/user is trustworthy.<br />

7: Encrypted data is only as secure as the decryption key.<br />

8: An out-<strong>of</strong>-date virus scanner is only a little better than none at all.<br />

9: Absolute anonymity isn’t practical, in real life or on the Web.<br />

10: Technology is not a panacea.


And here are the same laws in more detail:<br />

Introduction 7<br />

Law 1: If someone can persuade you to run his program on your computer,<br />

it’s not your computer anymore.<br />

It doesn’t take much knowledge to understand that when a computer<br />

program runs, it will do exactly what it is programmed to do, even if it is<br />

programmed to be harmful. When you elect to run a program, you let it<br />

control your computer. Once a program is running, it can do anything that<br />

a user program can do on the computer. It could collect your keystrokes and<br />

save them or send them outside. It could open your text files and change<br />

all the occurrences <strong>of</strong> “will” to “won’t” in some <strong>of</strong> them. It could send rude<br />

emails to all your addressees. It could install a virus or other rogue s<strong>of</strong>tware.<br />

It could create a backdoor that lets a fraudster control your computer remotely.<br />

It could dial up a long-distance number and leave you stuck with the<br />

bill. It could even erase your hard disk.<br />

Which is why it is important to never run, or even download, a program<br />

from an untrusted source, where “source,” means the person who wrote it,<br />

not the person who gave it to you. There’s a nice analogy between running a<br />

program and eating a sandwich. If a stranger<br />

walked up to you and <strong>of</strong>fered you a sandwich,<br />

?<br />

would you eat it? Probably not. How about if<br />

your best friend gave you a sandwich? Maybe<br />

you would, maybe you wouldn’t, it depends on<br />

whether she made it or found it lying in the<br />

street. Using common sense in the security<br />

<strong>of</strong> your computer means to apply the same<br />

critical thought to a program that you would<br />

to a sandwich.<br />

Law 2: If someone can alter the operating system on your computer, it’s<br />

not your computer anymore.<br />

An operating system is a program (rather, a set <strong>of</strong> programs) that provide<br />

important services and also supervise users. As such, the operating<br />

system must be more powerful than users’ programs. Thus, letting someone<br />

modify your operating system is like letting them have more power in your<br />

computer than you do. Operating system routines must be powerful, which<br />

implicitly makes them trusted. The owner and users <strong>of</strong> the computer must<br />

trust those routines, which is why anyone who manages to corrupt them can<br />

gain complete control.<br />

A perpetrator gaining operating system privileges can log into the computer<br />

locally or remotely, obtain users’ passwords, change users’ privileges,<br />

and in general do anything in the computer. The conclusion is again to use<br />

sound judgement before you let anyone mess with your operating system.<br />

Law 3: If someone has unrestricted physical access to your computer,<br />

it’s not your computer anymore.<br />

Someone who has access to your computer can deny you your computer’s<br />

services simply by smashing it (this is an example <strong>of</strong> stone-age denial <strong>of</strong> service).<br />

More likely, the computer would be stolen, or even held for ransom.


8 Introduction<br />

Having physical access makes it easy to install spyware, change the administrator’s<br />

password, copy data <strong>of</strong>f the hard disk, or do any other type <strong>of</strong> damage<br />

that’s difficult or impossible to do from a distance. Any protection provided<br />

by the operating system is moot when a stranger has physical access to the<br />

computer.<br />

Exercise Intro.3: Think <strong>of</strong> an example <strong>of</strong> such damage.<br />

Thus, a computer, personal or multiuser, should be physically protected<br />

in a way compatible with its value, but it’s important to consider the value<br />

<strong>of</strong> the data in the computer, not just the market value <strong>of</strong> the hardware.<br />

<strong>Computer</strong>s used in business and sensitive computers such as servers should<br />

be kept in a locked room and be physically protected. The list on Page 22<br />

has more information on this topic.<br />

Laptop computers are very handy and popular, but not only with their<br />

owners. Thieves target those machines because <strong>of</strong> their high price and also<br />

because they are easy to steal. A laptop is normally taken out by its owner<br />

while traveling and is used in public places, thereby making it a potentially<br />

easy item to steal. Section 1.3 has more on laptop security.<br />

Here are two examples <strong>of</strong> spying that someone who has access to your<br />

computer can do.<br />

1. The stealth iBot PC monitor is a small, portable USB spying device.<br />

Anyone who has access to your computer, even for only a few seconds, can<br />

plug this device into a USB port. In five seconds, the iBot embeds its spying<br />

s<strong>of</strong>tware in the operating system and can then be unplugged. This s<strong>of</strong>tware<br />

records up to 1 GB <strong>of</strong> everything done on the computer by any <strong>of</strong> its users,<br />

including text, screen shots, and Web sites visited. When the spy has another<br />

chance <strong>of</strong> accessing your computer, he simply plugs in the same iBot again<br />

for five seconds, which is all the time it needs to download the stolen data.<br />

This type <strong>of</strong> spying is especially easy if the spy is one <strong>of</strong> the users <strong>of</strong> the<br />

computer.<br />

2. The eBlaster s<strong>of</strong>tware acts as a general spy. Once installed on a<br />

computer, it records all activities, including text typed, Web sites visited,<br />

instant messages sent and received, Internet searches made, and email sent<br />

and received. eBlaster can even send its owner email messages about such<br />

events in real time (right after an even occurred) and it allows its owner to<br />

access, remotely or locally, the computer usage logs it creates.<br />

These products are made by the same company, are advertised and sold<br />

online, and are legal.<br />

Law 4: If you allow someone to upload programs to your Web site, it’s<br />

not your Web site any more.<br />

We already know that it is dangerous to let someone upload a program<br />

to your computer, but in most <strong>of</strong> these cases, the program is uploaded to a<br />

Web site and the uploader is permitted by the site’s owner to run it. Long


Introduction 9<br />

experience shows that Web site owners <strong>of</strong>ten allow visitors, out <strong>of</strong> the goodness<br />

<strong>of</strong> their heart or out <strong>of</strong> carelessness, to upload s<strong>of</strong>tware and run it; a<br />

risky habit.<br />

<strong>Security</strong> dictates that the owner <strong>of</strong> a Web site should limit the freedom<br />

<strong>of</strong> visitors. This is especially true in cases where the Web site is hosted<br />

by a large server that also hosts other sites. In such a case, a hacker who<br />

takes control <strong>of</strong> one site can extend his control to all the Web sites on the<br />

server. The owner <strong>of</strong> a large, shared server who wants to avoid trouble should<br />

therefore be security conscious.<br />

Law 5: Weak passwords defeat strong security.<br />

Section 8.3 discusses passwords, how they provide remote identification<br />

and authentication, and how important it is to select strong passwords. If<br />

you have an account on a remote computer and you select a weak password,<br />

chances are that someone will manage to crack or guess it. The strong security<br />

on the computer wouldn’t protect you in such a case. If someone logs in as<br />

you, then the operating system treats him as you.<br />

<strong>Security</strong> experts keep stating the surprising fact that many computer<br />

accounts have extremely weak passwords, such as the null password or one<br />

<strong>of</strong> the words “guest,” “password,” “admin,” and “test.”<br />

The conclusion is obvious and unavoidable (but still ignored by many<br />

users). Select a strong password! It should include letters (both lowercase<br />

and uppercase), digits, and some punctuation marks. It should be long, and<br />

should be replaced <strong>of</strong>ten. Try not to write your password anywhere and don’t<br />

tell it to anyone. Many current keyboards include modifier keys with names<br />

such as command, option, and control. A password can be made stronger if<br />

it includes characters modified by those keys, such as §, , †, ‡, CMD-V, and<br />

OPTION-U.<br />

Section 8.3 also shows why it is important to select passwords that do not<br />

appear in a dictionary, because such passwords can be cracked by a dictionary<br />

attack.<br />

Two people can keep a secret, but only if one <strong>of</strong> them is dead.<br />

—Benjamin Franklin.<br />

Smartcards have been introduced a decade ago and can be used for<br />

authentication. Biometric products, such as fingerprint and retina scanners<br />

(Section 8.2), are also becoming popular. They used to be too expensive<br />

for common use, but this has recently changed. Many current laptops come<br />

with a fingerprint scanner and a stand-alone USB unit can be had for less<br />

than $50. Even PDAs may have such a unit built in because many PDAs are<br />

designed for business users who <strong>of</strong>ten carry sensitive company data.<br />

Law 6: A computer is only as secure as its administrator is trustworthy.<br />

The owner <strong>of</strong> a home personal computer is normally its administrator<br />

and sole user as well. A large, multiuser computer has many users and may<br />

be owned by a commercial entity, but it must have an administrator. The<br />

administrator is responsible for managing user accounts, installing s<strong>of</strong>tware,<br />

searching for viruses, establishing security and usage policies, and performing


10 Introduction<br />

any other tasks needed for a smooth running <strong>of</strong> the facility. It is obvious that<br />

the administrator is all powerful in the computer and that an untrustworthy<br />

administrator can create havoc in the computer installation.<br />

Such an administrator can negate any security measures taken by the<br />

users, can install rogue s<strong>of</strong>tware, can spy on the users, change their privileges<br />

and permissions, and turn <strong>of</strong>f any security and protection features the<br />

operating system supports. In short, an untrustworthy administrator is the<br />

worst thing that can happen to computer security. An organization planning<br />

to acquire a large, multiuser computer should therefore start by hiring a<br />

trustworthy administrator. This person should have some experience working<br />

with large, multiuser computers and with computer security, but should most<br />

<strong>of</strong> all prove trustworthy. The references <strong>of</strong> each candidate for this position<br />

should be carefully checked and a complete background check should also<br />

be considered. In short, each candidate should be fully vetted. In addition,<br />

periodic checks <strong>of</strong> the administrator are also recommended.<br />

There are methods to keep administrators countable. Often it is possible<br />

to have two, or even several administrators. Each should be assigned a user<br />

account, but with full privileges, instead <strong>of</strong> an administrator account. This<br />

way, the owner or an auditor can tell who did what on the computer. It<br />

also helps if the operating system allows to write a copy <strong>of</strong> all log files and<br />

audit information on a different computer. Each time s<strong>of</strong>tware is installed or<br />

updated, one administrator should do the job, and another should later act<br />

as an auditor, checking the results.<br />

Law 7: Encrypted data is only as secure as the decryption key.<br />

It has long been known that the security <strong>of</strong> encryption depends on the<br />

encryption key, not on the encryption algorithm (this is known as Kerckh<strong>of</strong>fs’<br />

principle). Thus, encryption keys have to be selected carefully and should<br />

be kept secret. Such a key should not be kept in the computer unless it is<br />

encrypted and protected by another key. When public-key cryptography (see<br />

document on cryptography in the book’s Web site) is used, the private key<br />

should be protected in the same way.<br />

Law 8: An out-<strong>of</strong>-date virus scanner is only marginally better than no<br />

virus scanner at all.<br />

Anti-virus s<strong>of</strong>tware is discussed on page 158, where it is stressed that this<br />

type <strong>of</strong> s<strong>of</strong>tware has to be updated regularly, as new viruses are discovered<br />

and analyzed. Thus, anti-virus s<strong>of</strong>tware is not for the lazy. A computer owner<br />

should check every day for new updates <strong>of</strong> this s<strong>of</strong>tware, download and install<br />

them, and run the programs. A delay in installing a new update may mean<br />

an infection by a new virus, so a computer owner/user should start each day<br />

(as this author does) by looking up new virus information on the Internet.<br />

On a day a new virus is discovered, the user should be especially careful. No<br />

s<strong>of</strong>tware should be downloaded and no email attachment opened until a new<br />

anti-virus update is issued and run.<br />

Current anti-virus s<strong>of</strong>tware normally checks for new updates automatically<br />

every time it is run. This is an important feature <strong>of</strong> the s<strong>of</strong>tware and it<br />

shouldn’t be disabled by users just to speed up the process <strong>of</strong> virus checking.


Introduction 11<br />

Law 9: Absolute anonymity isn’t practical, in real life or on the Web.<br />

Absolute anonymity in real life is impossible. From time to time we hear<br />

about people who cherish their privacy and try to avoid contact with others,<br />

especially the media. Howard Hughes is a classic example <strong>of</strong> such a recluse.<br />

There are those who try to stay completely anonymous, but even they have to<br />

interact with people, with the result that certain facts are eventually found<br />

out about them. Perhaps the best known example <strong>of</strong> an unknown person<br />

is the writer B. Traven, also known as Ret Marut, Hal Croves, and Traven<br />

Torsvan. He is the author <strong>of</strong> The Treasure <strong>of</strong> the Sierra Madre and many<br />

other novels. He lived in Mexico from about 1925 until his death in 1969,<br />

but despite many efforts to unravel his identity, we still don’t know his real<br />

name and where and when he was born. Yet even this elusive character had<br />

to communicate with his publishers and movie directors, which is why today<br />

much is known about his life (see, for example, [Guthke 91]).<br />

I am freer than anybody else. I am free to choose the parents I want, the<br />

country I want, the age I want.<br />

—Rosa Elena Luján (Traven’s widow) in the New York Times, 6/25/90.<br />

Merely appearing in public reveals your eye color and approximate height,<br />

weight, and age. Similarly, a chat with a stranger can reveal facts about yourself,<br />

your family, your pr<strong>of</strong>ession, place <strong>of</strong> living, and your interests.<br />

Exercise Intro.4: What other important fact can such a conversation yield<br />

to a stranger?<br />

Identity theft is discussed in Chapter 10, where it is shown that maintaining<br />

anonymity and privacy is becoming more difficult and may already<br />

be impossible. Here are a few disguising techniques employed by those who<br />

are serious about maintaining their anonymity on the Internet. (1) Use network<br />

address translation to mask your real IP address. (2) Subscribe to an<br />

anonymizing email service (Section 11.2) that forwards your email with a<br />

different sender’s address. (3) Use different ISPs for different purposes. (4)<br />

Visit certain Web sites only from public Internet cafes.<br />

Such techniques and habits make it harder, but not impossible, for identity<br />

thieves to locate your personal information. The best way to protect<br />

your identity in this age <strong>of</strong> the Internet is to use common sense and to be<br />

careful.<br />

Law 10: Technology is not a panacea.<br />

Technology has been progressing rapidly in the last few decades. There<br />

are still those who remember the days without answering machines, cell telephones,<br />

or CDs, but their numbers are rapidly dwindling. Yet technology has<br />

its downside too. We depend so much on computers that when something<br />

goes wrong, it is normally because <strong>of</strong> a computer glitch. We see our privacy<br />

slipping from under out feet. Many, especially the elderly, find it difficult<br />

to learn how to use new gadgets. People are baffled by the rising threat <strong>of</strong><br />

computer security. The phrase “the butler did it,” much favored by mystery<br />

writers in the past, has been replaced with “it was a computer glitch/bug.”


12 Introduction<br />

We simply have to live with the fact that technology is not the answer<br />

to all our problems, and that computers, wizards that they are, are not intelligent<br />

enough to defend themselves against wrongdoers. <strong>Security</strong>, especially<br />

computer security, must use policy in addition to technology. <strong>Security</strong> is<br />

a combination <strong>of</strong> technology and how it is used. Pest control pr<strong>of</strong>essionals<br />

always disclaim “we do not exterminate pests, we just control them.” Similarly,<br />

technology cannot solve the security problem, it can only keep it under<br />

control. We should look at security as a journey, not a destination.<br />

⋄ Exercise Intro.5: There is nothing magical about ten, so try to come up<br />

with another law in the spirit <strong>of</strong> the above ten. (See also exercise 11.4.)<br />

The discussion here shows that the task <strong>of</strong> achieving computer security<br />

involves common sense, encryption, legal means, various technical means<br />

such as passwords, parity bits, CRCs, and checksums, and lastly, keeping<br />

secrets. This book discusses the various types <strong>of</strong> threats to computers and<br />

networks and many technical defenses. This is followed by a discussion <strong>of</strong> the<br />

principles <strong>of</strong> cryptography and current encryption methods and protocols.<br />

Common sense is also mentioned several times but this author isn’t going<br />

to try to discuss it in any detail or to teach it. Finally, the next paragraph<br />

discusses secrets.<br />

Some security problems can be solved or avoided by keeping certain<br />

things secret, but experience indicates that keeping secrets is only a temporary<br />

solution, because we can tell people all kinds <strong>of</strong> secrets, but we cannot<br />

make them forget the secrets when they move, quit, are laid <strong>of</strong>f, or get promoted.<br />

The physical analog is different. When we secure something with<br />

TOP SECRET<br />

a lock and key, we can remove or replace the lock as needed. With human<br />

beings, though, secrets are not safe. A secret may be divulged accidentally or<br />

intentionally, and on the other hand it cannot be expunged from someone’s<br />

memory even by the strictest order issued by a supreme authority. If at all<br />

possible, it is preferable to maintain security by technical means rather than<br />

by keeping secrets.<br />

How to Hide Data<br />

The secret <strong>of</strong> teaching is to appear to have known<br />

all your life what you just learned this morning.<br />

—Anonymous.<br />

The predecessor <strong>of</strong> this book, Foundations <strong>of</strong> <strong>Computer</strong> <strong>Security</strong>, appeared<br />

in 1995 and generated considerable interest. In particular, several<br />

readers sent me the following question: “I have a small, sensitive data file<br />

that I want to hide in my computer, while still having it ready for use at a<br />

short notice. I feel that just encrypting the file isn’t secure enough. Can you<br />

recommend a safe way to hide it?” Here is what I came up with. Given a<br />

data file A, consider the following steps:<br />

1. Compress A. The result is a file B that is small and also seems<br />

random. This has two advantages (1) the remaining steps encrypt and hide


Introduction 13<br />

small files and (2) the next step encrypts a random file, thereby making it<br />

difficult to break the encryption simply by checking every key.<br />

2. Encrypt B with a secret key to obtain file C. A would-be codebreaker<br />

may attempt to decrypt C by writing a program that loops and tries every<br />

key, but here is the difficulty. Each time a key is tried, someone (or something)<br />

has to check the result. If the result looks meaningful, it may be the<br />

decrypted file B, but if the result seems random, the loop should continue.<br />

At the end <strong>of</strong> the loop; frustration.<br />

3. Hide C inside a cover file D to obtain a large file E. Use one <strong>of</strong><br />

the many steganographic methods for this (notice that many such methods<br />

depend on secret keys). One reference for steganography is [Salomon 03], but<br />

currently there may be better texts.<br />

4. Hide E in plain sight in your computer by changing its name and<br />

placing it in a large folder together with hundreds <strong>of</strong> other, unfamiliar files.<br />

A clever idea is to change the file name to msLibPort.dll (or something<br />

similar that includes MS and other familiar-looking terms) and place it in<br />

one <strong>of</strong> the many large folders created and used exclusively by Windows,<br />

UNIX, and other operating systems. If files in this folder are visible, do not<br />

make your file invisible. Anyone looking inside this folder will see hundreds<br />

<strong>of</strong> unfamiliar files and will have no reason to suspect msLibPort.dll. Even<br />

if this happens, an opponent would have a hard time guessing the three steps<br />

above (unless he has read these paragraphs) and the keys used. If file E is<br />

large (perhaps more than a few Gbytes), it should be segmented into several<br />

smaller files and each hidden in plain sight as described above. This step is<br />

important because there are utilities that identify large files and they may<br />

attract unwanted attention to your large E.<br />

For those who require even greater privacy, here are a few more ideas.<br />

(1) A password can be made strong by including in it special characters such<br />

§, , †, and ‡. These can be typed with the help <strong>of</strong> special modifier keys found<br />

on most keyboards. (2) Add a step between steps 1 and 2 where file B is<br />

recompressed by any compression method. This will not decrease the size <strong>of</strong><br />

B but will defeat anyone trying to decompress B into meaningful data simply<br />

by trying many decompression algorithms. (3) Add a step between steps 1<br />

and 2 where file B is partitioned into segments and random data inserted<br />

between the segments. (4) Instead <strong>of</strong> inserting random data segments, swap<br />

segments to create a permutation <strong>of</strong> the segments. The permutation may be<br />

determined by the password used in step 2.<br />

Until now, the US government’s default position has been: If you can’t keep<br />

data secret, at least hide it on one <strong>of</strong> 24,000 federal Websites, preferably in<br />

an incompatible or obsolete format.<br />

Resources for <strong>Computer</strong> <strong>Security</strong><br />

—Wired, July 2009.<br />

For resources and help in computer security, the best place to turn to is<br />

the Internet, specifically, the Web. There are Web sites that provide historical<br />

information, discuss recent developments and threats, educate computer


14 Introduction<br />

users, and <strong>of</strong>fer tools and techniques for protection. It is very common to<br />

find in many Web sites security news and warnings such as the one quoted<br />

here (from 20 January 2010):<br />

A new vulnerability has been uncovered that affects all 32-bit versions <strong>of</strong><br />

Windows from Windows 3.11 all the way up to Windows 7. The vulnerability<br />

is an attack on the Virtual DOS Machine introduced into Windows Operating<br />

Systems in 1993 to run 16-bit applications. The vulnerability was discovered<br />

by a member <strong>of</strong> Google’s security team,. . . .<br />

While a patch has not yet been issued by Micros<strong>of</strong>t, Windows users have<br />

a couple <strong>of</strong> options to seal <strong>of</strong>f this security hole. Administrators <strong>of</strong> machines<br />

running Windows 2003 and newer can edit the Group Policy <strong>of</strong> a machine to<br />

disallow use <strong>of</strong> 16-bit applications. To do this,. . . .<br />

However, the Word Wide Web also <strong>of</strong>fers resources for hackers. Source<br />

code for various types <strong>of</strong> malicious programs, “success” stories <strong>of</strong> hackers, and<br />

information on weaknesses discovered in various operating systems, servers,<br />

and network s<strong>of</strong>tware are available for the taking. Following is a short list <strong>of</strong><br />

some “good” sites that <strong>of</strong>fer reliable information and user education. In particular,<br />

any s<strong>of</strong>tware downloaded from these resources stands a good chance<br />

<strong>of</strong> being uncontaminated.<br />

Perhaps the best overall site is the computer emergency response team,<br />

located at www.cert.org. This active organization, founded in 1988, is part<br />

<strong>of</strong> the s<strong>of</strong>tware engineering institute <strong>of</strong> Carnegie-Mellon University, that receives<br />

reports from affected users and network administrators, and is <strong>of</strong>ten<br />

the first to distribute information on new threats.<br />

The system administration, networking, and security (SANS), whose<br />

mission is to help network administrators with certification, recent news, and<br />

training (www.sans.org). The conferences on network security it organizes<br />

are highly respected.<br />

COAST—computer operations, audit, and security technology—is a multi<br />

project, multiple investigator laboratory in computer security research in the<br />

<strong>Computer</strong> Sciences Department at Purdue University. It functions with close<br />

ties to researchers and engineers in major companies and government agencies.<br />

This organization is located at www.cerias.purdue.edu/coast.<br />

Counterpane Internet <strong>Security</strong>, located at bt.counterpane.com, is a<br />

company that specializes in all aspects <strong>of</strong> Internet security. It was founded<br />

by the well-known security expert Bruce Schneier. The company provides<br />

sophisticated surveillance technology and the services <strong>of</strong> highly trained experts<br />

to help network users stay ahead <strong>of</strong> today’s s<strong>of</strong>tware vulnerabilities,<br />

malicious insiders, and attackers from the outside.<br />

RSA <strong>Security</strong>, at http://www.rsa.com/ specializes in cryptography.<br />

The company develops new encryption methods and helps organizations protect<br />

private information and manage the identities <strong>of</strong> the people and applications<br />

accessing and exchanging that information.


Introduction 15<br />

Some hacker sites (those tend to be either useless or short lived) are<br />

the hacker quarterly (http://www.2600.com/), the chaos computer club<br />

(http://www.ccc.de/), and (http://www.hackernetwork.com/).<br />

A useful site with many virus descriptions, statistics, and a virus glossary<br />

is [f-secure 05].<br />

[Webopedia 04] is a useful Web site that describes many Internet security<br />

issues.<br />

[attrition 04] is a Web site maintained by volunteers and dedicated to Internet<br />

security. It collects information on many types <strong>of</strong> attacks, weaknesses,<br />

and errors in books on computer security. (This author hopes not to see this<br />

book listed in the attrition site.)<br />

Dr. Richard Ford maintains the website [malware 10] with help, links<br />

and FAQs about malware.<br />

The various Internet search engines always find useful sites. Search under<br />

“computer security,” “network security,” “internet security,” or “hacker.” For<br />

specific threats or to learn more about specific topics, try “Windows security,”<br />

“virus,” “UNIX security,” or other key phrases. Much information (in fact,<br />

too much) can be had by subscribing to various mailing lists. Search under<br />

“security mailing list.”<br />

Needless to say, because <strong>of</strong> the importance <strong>of</strong> this topic, there is a huge<br />

number <strong>of</strong> books, in all areas <strong>of</strong> security, and at all levels. A quick search at<br />

amazon.com returns more than 12,000 titles for computer security and more<br />

than 5,200 for network security (although most <strong>of</strong> those titles discuss security<br />

as a side topic, some are stories <strong>of</strong> hackers, and many are fiction).<br />

The following is a list <strong>of</strong> a few popular books:<br />

<strong>Security</strong> in Computing, (4th ed.), Charles P. Pfleeger and Shari L. Pfleeger,<br />

Prentice-Hall, Englewood Cliffs, NJ, 2006.<br />

Exploiting S<strong>of</strong>tware: How to Break Code, Greg Hoglund and Gary McGraw,<br />

Addison-Wesley Pr<strong>of</strong>essional, 2004.<br />

Beyond Fear, Bruce Schneier, Copernicus Books, 2003.<br />

Cryptography and Network <strong>Security</strong>: Principles and Practice (5th ed.), W.<br />

Stallings, Prentice-Hall, Englewood Cliffs, NJ, 2011.<br />

Network <strong>Security</strong> Essentials (2nd ed.), William Stallings, Prentice-Hall, Englewood<br />

Cliffs, NJ, 2002.<br />

<strong>Computer</strong> <strong>Security</strong>: Art and Science, Matt Bishop, Addison-Wesley Pr<strong>of</strong>essional,<br />

2002.<br />

Network <strong>Security</strong>: Private Communication in a Public World, (2nd ed.),<br />

Charlie Kaufman, et al, Prentice-Hall, Englewood Cliffs, NJ, 2002.<br />

Network <strong>Security</strong>: A Beginner’s Guide, (2nd ed.), Eric Maiwald, McGraw-<br />

Hill Osborne Media, Berkeley, CA, 2003.<br />

<strong>Computer</strong>s Under Attack: Intruders, Worms, and Viruses, Peter J. Denning,<br />

ACM Press, New York, N.Y., 1990.


16 Introduction<br />

An Introduction to <strong>Computer</strong> <strong>Security</strong>: The NIST Handbook, Special Publication<br />

800-12. A 290-page book in PDF format, available online at [NIST<br />

Handbook 04].<br />

Applied Cryptography: Protocols, Algorithms, and Source Code in C, Bruce<br />

Schneier, John Wiley; (2nd revised ed.), 1996.<br />

Counter Hack Reloaded: A Step-by-Step Guide to <strong>Computer</strong> Attacks and<br />

Effective Defenses, Tom Liston, Prentice Hall, (2nd ed.) 2007.<br />

<strong>Security</strong>+ Guide to Network <strong>Security</strong> Fundamentals, Mark Ciampa, Course<br />

Technology, (3rd ed.), 2008.<br />

The following books concentrate on computer viruses.<br />

Viruses Revealed, David Harley et al., Osborne/McGraw-Hill, Berkeley, CA,<br />

2001.<br />

Robert Slade’s Guide to <strong>Computer</strong> Viruses, (2nd ed.), Robert M. Slade,<br />

Springer-Verlag, 1996.<br />

Dr. Solomon’s Virus Encyclopedia, Alan Solomon S&S International, 1995.<br />

A Short Course on <strong>Computer</strong> Viruses, (2nd ed.), Frederick B. Cohen, New<br />

York, NY, John Wiley, 1994.<br />

PC <strong>Security</strong> and Virus Protection Handbook, Pamela Kane, M&T Books,<br />

1994.<br />

A Pathology <strong>of</strong> <strong>Computer</strong> Viruses, David Ferbrache, Springer-Verlag, 1992.<br />

<strong>Computer</strong> Virus Handbook, Harold J. Highland, Elsevier, 1990 (a little outdated).<br />

Rogue Programs: Viruses, Worms, and Trojans, Lance H<strong>of</strong>fman (ed.) Van<br />

Nostrand Reinhold, 1990.<br />

In addition to books, extensive literature on computer security is available<br />

online. As an example, the NSA has a number <strong>of</strong> documents on computer<br />

security at [NSA-SEC 05].<br />

Last word: The best line <strong>of</strong> defense against all types <strong>of</strong> computer security<br />

is education and the use <strong>of</strong> technology, combined with good old common<br />

sense.<br />

<strong>Computer</strong> security is not a joke.<br />

—Ian Witten


1<br />

Physical <strong>Security</strong><br />

What normally comes to mind, when hearing about or discussing computer<br />

security, is either viruses or some <strong>of</strong> the many security issues that have to do<br />

with networks, such as loss <strong>of</strong> privacy, identity theft, or how to secure sensitive<br />

data sent on a network. <strong>Computer</strong> security, however, is a vast discipline that<br />

also includes mundane topics such as how to physically protect computer<br />

equipment and secure it against fire, theft, or flood. This chapter is a short<br />

discussion <strong>of</strong> various topics that have to do with physical security.<br />

1.1 Side-Channel Attacks<br />

In order to whet the reader’s appetite we start with a new, exotic area <strong>of</strong><br />

physical threats termed side-channel attacks. Today it is easy to locate the<br />

many references for this area, so we only mention three. Reference [SDattacks<br />

10] maintains a listing <strong>of</strong> side-channel attack related publications and<br />

patents, [Bar-El 10] is a summary <strong>of</strong> the field, and [Shamir and Tromer 04]<br />

discuss several aspects <strong>of</strong> this topic.<br />

A sensitive, secret computer installation may be made very secure. It<br />

may be surrounded by high electrified fences, employ a small army <strong>of</strong> guards,<br />

be protected by powerful firewalls complemented by watchful system programmers<br />

working three shifts, and run virus detection s<strong>of</strong>tware continuously.<br />

Yet, it is possible to spy on such an installation “from the side” by capturing<br />

and listening to information that is continuously and unintentionally leaked<br />

by electronic devices inside. The basis <strong>of</strong> this approach is the well-known fact<br />

that people are nosy and machines are noisy.<br />

First, a bit <strong>of</strong> history. One <strong>of</strong> the earliest side-channel attacks took<br />

place in 1956 when Britain’s military intelligence (MI5) executed operation<br />

D. Salomon, <strong>Elements</strong> <strong>of</strong> <strong>Computer</strong> <strong>Security</strong>, Undergraduate Topics in <strong>Computer</strong> Science,<br />

DOI 10.1007/978-0-85729-006-9_1, © Springer-Verlag London Limited 2010


18 1 Physical <strong>Security</strong><br />

ENGULF that tapped (perhaps among others) the telephone <strong>of</strong> the Egyptian<br />

embassy in London to record the sound from its Hagelin cipher machines.<br />

The sound was used to determine the settings on the Hagelin machines<br />

[Wright 89]. A better-known side-channel attack was published by<br />

Wim Van Eck [van Eck 85] in 1985, that showed how to eavesdrop on a CRT<br />

by detecting its electromagnetic emission.<br />

The following story (heard by this author back in the 1970s) illustrates<br />

the power <strong>of</strong> a side-channel attack.<br />

In the early days <strong>of</strong> computing, punched cards were the main way to<br />

input data into a computer, and printers were the main output. Then came<br />

terminals with keyboards and printers, followed by terminals with keyboards<br />

and monitor screens. A CRT monitor works like a television tube. An electron<br />

beam is directed to a glass plate (the screen) that’s coated with a phosphor<br />

compound. When the electrons hit the screen, their kinetic energy is<br />

converted to light, and a small dot flashes momentarily on the glass. The<br />

beam is then moved to another point on the screen, and the process continues<br />

until all the required information is displayed on the screen. The process is<br />

then repeated in order to refresh the glow on the screen.<br />

An anonymous electronics engineer had an idea. He knew that an accelerated<br />

(and also decelerated) electric charge radiates, so he decided to<br />

try to detect and receive the radiation from a monitor screen with a small<br />

antenna and use it to reconstruct the information displayed on the screen.<br />

He drove a van full <strong>of</strong> his equipment next to<br />

an <strong>of</strong>fice building where workers were hunched<br />

at their computers and many monitors glowed,<br />

and within half an hour, a monitor screen in<br />

the van showed the data displayed on one <strong>of</strong><br />

the screens in the building. This was a classic<br />

example <strong>of</strong> advanced electronic eavesdropping<br />

applied in industrial spying. For further<br />

discussion <strong>of</strong> this threat, see [Zalewski 05] and<br />

[Backes 10].<br />

Modern monitors use LCDs or plasma screens that presumably don’t<br />

radiate, but in the past, the only countermeasures to side-channel attacks<br />

were to either surround a computer room with a conductive material, to<br />

block any electromagnetic radiation from escaping, or to have a guarded,<br />

empty area around the entire building and move the parking lots away from<br />

the building.<br />

The information that emanates naturally from a computer consists <strong>of</strong><br />

electromagnetic radiation, sound, light from displays, and variations in power<br />

consumption.<br />

It is intuitively clear that an idle CPU (i.e., a CPU that has executed an<br />

HLT instruction) requires less power than a busy CPU. Thus, measuring the<br />

power consumption <strong>of</strong> a CPU can tell a spy whether the CPU is busy or idle.<br />

Even more, power consumption depends on the instruction being executed,<br />

so while the CPU executes a loop it consumes a certain amount <strong>of</strong> power,<br />

and when it comes out <strong>of</strong> the loop its power consumption may change.


1.1 Side-Channel Attacks 19<br />

Our computers are electronic. They work by moving electrons between<br />

the various parts <strong>of</strong> the computer. A working CPU therefore emits electromagnetic<br />

radiation that can be detected outside the computer, outside the<br />

computer room, and even outside the computer building. A spy who knows<br />

the type <strong>of</strong> CPU being spied on can execute many programs on the same type<br />

<strong>of</strong> CPU, measure the radiation emitted, and thus associate certain patterns<br />

<strong>of</strong> radiation with certain types <strong>of</strong> computer operations, such as loops, idle,<br />

or input/output. Once such an association has been established, the spy can<br />

train a computer program to analyze radiation emitted by a spied computer<br />

and draw useful conclusions about the activity <strong>of</strong> the spied CPU at various<br />

times.<br />

A CPU is an integrated circuit (IC, or a chip) enclosed in a ceramic<br />

or plastic container and has no moving parts. Yet, inside the container<br />

there are several parts (a cavity for the CPU chip, the chip itself, wires,<br />

and printed connections) and they vibrate, thereby generating sound. This<br />

type <strong>of</strong> acoustic emanation can be detected by a sensitive microphone and<br />

analyzed, similar to electromagnetic radiation, to provide clues on the state<br />

<strong>of</strong> the CPU. Experiments suggest that each type <strong>of</strong> CPU operation produces<br />

a characteristic sound—a typical acoustic signature. Thus, listening to the<br />

sound produced by a CPU that’s busy all day encrypting secret messages<br />

may yield the encryption key (or keys) used by the operator; a significant<br />

achievement.<br />

A CPU is normally part <strong>of</strong> a larger enclosure that has many other electronic<br />

parts and fans. These also emit sound waves and the computer room<br />

may also be noisy. This background noise complicates the analysis <strong>of</strong> sound<br />

waves emitted by the CPU, but it has been discovered that the latter sound<br />

is mostly above 10 kHz, whereas other sounds generated in and out <strong>of</strong> a<br />

computer are <strong>of</strong> much lower frequencies.<br />

The sound created by a CPU depends on the CPU type, on the temperature<br />

inside the computer box, and on other environmental factors such as<br />

humidity. This fact complicates the analysis <strong>of</strong> sound waves from the CPU,<br />

but experiments conducted in various environments indicate that it is still<br />

possible to obtain useful information about the status <strong>of</strong> a CPU by analyzing<br />

what can be termed its audio output.<br />

It is possible to absorb the sound emanated by a CPU by enclosing<br />

the computer box with a sound dampening material. An alternative is to<br />

generate artificial high-frequency sound outside the computer, to mask the<br />

sound that the spy is trying to capture and record. A more sophisticated<br />

technique is to absorb the sound emanated by the CPU and have another<br />

CPU running a different program to generate sound to foil any spy who<br />

may be listening outside. These considerations apply also to electromagnetic<br />

radiation emitted by the CPU.<br />

A hard disk also generates sound because its head assembly moves in<br />

a radial direction to seek various cylinders. However, there is only a loose<br />

association between CPU input/output operations and the movements <strong>of</strong> the<br />

head, because <strong>of</strong> the use <strong>of</strong> cache memories and the fact that many CPUs<br />

work on several programs simultaneously (multitasking).


20 1 Physical <strong>Security</strong><br />

Researchers in this field feel that acoustic emanations are important and<br />

should be studied and fully understood, because it is harder to stop sound<br />

than to absorb electromagnetic waves. A common cold-war spying technique<br />

was to listen to a conversation in a closed room by directing a laser beam<br />

at a window and measuring its reflection from the glass pane that vibrates<br />

because <strong>of</strong> the sound waves inside.<br />

An important class <strong>of</strong> side-channel attacks is the so-called timing attacks.<br />

A timing attack uses the fact that many important computational procedures<br />

take an amount <strong>of</strong> time that depends on the input. Thus, by measuring the<br />

time it takes to complete a procedure, a spy can learn something about<br />

the input to the procedure. An important example is the RSA encryption<br />

algorithm (see document on cryptography in the book’s Web site). Part <strong>of</strong><br />

this algorithm computes an expression <strong>of</strong> the form a b where b is the encryption<br />

key. A simple method to compute an exponentiation is to multiply a by itself<br />

b − 1 times, so measuring the time it takes to compute a b may give a spy<br />

an idea <strong>of</strong> the size <strong>of</strong> b and thus help in breaking a code. For a reference on<br />

timing attacks, see [Boneh and Brumley 04].<br />

The idea <strong>of</strong> a side-channel attack is not limited to emanations from the<br />

CPU. The next section discusses an application to keystrokes, and there have<br />

also been attempts to exploit the sounds made by certain types <strong>of</strong> printers<br />

to reconstruct the information being printed. For a reference, see [Kuhn 04].<br />

It has long been a dream <strong>of</strong> cryptographers to construct a perfect machine. . .<br />

The development in the last twenty years <strong>of</strong> electronic machines that accumulate<br />

data, or “remember” sequences <strong>of</strong> numbers or letters, may mean<br />

that this dream has already been fulfilled. If so, it will be the nightmare to<br />

end all nightmares for the world’s cryptanalysts. In fact, the people who<br />

live in the vicinity <strong>of</strong> the National <strong>Security</strong> Agency think that there already<br />

are too many cipher and decoding machines in existence. The electronic<br />

equipment plays havoc with their television reception.<br />

—From [Moore and Waller 65].<br />

1.1.1 Acoustic Keyboard Eavesdropping<br />

Chapter 9 mentions keystroke loggers (or keystroke recorders) among other<br />

examples <strong>of</strong> spyware. A keystroke logger is a program that records every<br />

keystroke the user makes, and stores this data or transmits it to its owner (the<br />

spy). A similar concept is a screen capture, a program that periodically takes<br />

a snapshot <strong>of</strong> the monitor screen and saves it or transmits it outside. There<br />

are programs that identify and delete spyware, but spying on a computer can<br />

also be done physically. A crude idea is to try to spy on a computer user<br />

by looking behind their shoulder, but a more practical, more sophisticated<br />

technique is to install a miniature radio transmitter inside a keyboard, to<br />

transmit keystrokes to a nearby spy (see Exercise Intro.3). Such a transmitter<br />

is a physical threat and cannot be detected by spyware-removal s<strong>of</strong>tware.<br />

An even more sophisticated spying technique records keystrokes by listening<br />

to the sounds that individual keys make when pressed. Old timers in<br />

the computing field may remember that pressing a key on an old keyboard


1.1 Side-Channel Attacks 21<br />

<strong>of</strong>ten resulted in two or more copies <strong>of</strong> the key read from the keyboard due to<br />

bouncing <strong>of</strong> the keys. In a modern keyboard, the keys are placed on top <strong>of</strong> a<br />

plastic sheet and different areas <strong>of</strong> this sheet vibrate differently (and therefore<br />

create different air vibrations, sounds) when a key is pressed. Thus, striking<br />

different keys generates different sounds (also<br />

the timing <strong>of</strong> keys varies, an A may take the<br />

keyboard slightly longer to produce than a B).<br />

The ear is not sensitive enough to hear the differences<br />

between sounds generated by different<br />

keys, but a good quality microphone is.<br />

The idea <strong>of</strong> acoustic keyboard eavesdropping is for a spy to hide a microphone<br />

as close as possible to a keyboard, to record the sound made by the<br />

keys when pressed, to digitize the sound, and to send the audio samples to<br />

a computer program controlled by the spy. Experiments have demonstrated<br />

that a sensitive parabolic microphone can record keyboard sounds reliably<br />

from distances <strong>of</strong> up to 50 feet (about 17 meters) from the keyboard even in<br />

the presence <strong>of</strong> background noise.<br />

Once the program learns to distinguish the individual sounds, it has to<br />

be trained so it can tell which key produces a given sound. In principle, the<br />

spy has to use another method, such as a keystroke logger, to capture many<br />

keystrokes, then feed the (ASCII codes <strong>of</strong> the) keys and the corresponding<br />

sounds to the program. In practice, however, it has been discovered that<br />

keyboards <strong>of</strong> the same make and model produce very similar sounds. Once<br />

the spy knows the kind <strong>of</strong> keyboard used by the victim, he may train his<br />

program on a keyboard <strong>of</strong> the same type, then feed it the sounds created<br />

by the poor victim’s keyboard. If the program can recognize, say, 80% <strong>of</strong><br />

the keystrokes <strong>of</strong> that keyboard, the spy can use his intelligence to guess<br />

the remaining keystrokes and employ this information to train the program<br />

further.<br />

Exercise 1.1: Is it enough for a spy to detect 80% <strong>of</strong> a password?<br />

Currently, such spying is exotic and (we hope) rare, but it is a dangerous<br />

development in the field <strong>of</strong> computer security because it is a physical<br />

threat and it cannot be recognized and blocked by s<strong>of</strong>tware. Future developments<br />

may bring this type <strong>of</strong> spying to the attention (and the price range)<br />

<strong>of</strong> many would-be eavesdroppers, with unforeseen (and perhaps disastrous)<br />

consequences. A spy can <strong>of</strong>ten get to within 50 feet <strong>of</strong> his target’s house by<br />

parking a car in the street, renting a room in a nearby house or adjacent<br />

apartment, or planting the microphone in a plant in the backyard. (Many<br />

front- and backyards have low-voltage lines to light the perimeter <strong>of</strong> the house<br />

at night, and this electricity may be tapped into to power the microphone.)<br />

In a place <strong>of</strong> work it may be easy to install a microphone in a desk next to the<br />

victim’s desk or in an <strong>of</strong>fice adjacent to the victim’s <strong>of</strong>fice, and such spying<br />

may be extremely difficult to detect.<br />

At present it seems that computer hackers and criminals are not aware<br />

<strong>of</strong> this threat and continue to break into computers by means <strong>of</strong> viruses<br />

and by breaking firewalls. Admittedly, someone who wants to control a vast


22 1 Physical <strong>Security</strong><br />

number <strong>of</strong> computers cannot use this method, but it may prove attractive to<br />

certain spies, especially those who currently install and use spyware. A list<br />

<strong>of</strong> potential spyware users can be found at the beginning <strong>of</strong> Chapter 9.<br />

This vulnerability <strong>of</strong> keyboards can be eliminated by redesigning keyboards<br />

such that all keys would generate the same sound or very similar<br />

sounds. The technique <strong>of</strong> acoustic eavesdropping, however, is not limited to<br />

keyboards.<br />

For a detailed reference on this approach, see [Asonov and Agrawal 04].<br />

The idea <strong>of</strong> eavesdropping on a typewriter keyboard, mentioned as coming<br />

from Dmitri Asonov (“Acoustic Keyboard Eavesdropping”), was anticipated<br />

decades ago by the National <strong>Security</strong> Agency. The radio waves<br />

created each time a key is struck on the keyboard <strong>of</strong> a teletypewriter or<br />

an electrical cipher machine differ from letter to letter. These can be detected<br />

and discriminated, thereby enabling the eavesdropper to understand<br />

the message before it is encrypted for transmission. The technique is codenamed<br />

Tempest (see the 1972 paper [nsa.tempest 10]).<br />

—David Kahn, The New York Times, 23 January 2005.<br />

1.2 Physical Threats<br />

Surges in electrical power, <strong>of</strong>ten caused by lightning, may burn out electronic<br />

components in the computer. Solution: Use an uninterruptible power<br />

supply (UPS). Such a device regulates the incoming voltage and produces a<br />

clean output signal. If the voltage gets high, the UPS trims it. If the voltage<br />

drops, the UPS uses its internal battery to supply the computer with power<br />

for a few minutes, enough to either turn <strong>of</strong>f the computer (typical for a home<br />

computer) or to start a generator (typical in a large installation, especially an<br />

installation that has to operate continuously, such as a hospital or a telephone<br />

exchange).<br />

Exercise 1.2: What can go wrong if power to the computer is suddenly<br />

turned <strong>of</strong>f?<br />

Physical security <strong>of</strong> computer facilities. We constantly hear <strong>of</strong> damage<br />

done by computer viruses and other malicious programs, but the best virus<br />

protection s<strong>of</strong>tware cannot prevent a home personal computer from being<br />

stolen (although it can help in its recovery, see Section 1.3). Thus, computer<br />

security starts by protecting the facilities that house computers and<br />

computer data. This problem is especially acute in industry. Many a company<br />

can be wiped out if its computers and especially if its sensitive data are<br />

stolen or damaged. Damage can be intentional, inflicted by a criminal or a<br />

disgruntled employee, or accidental, caused by fire, power failure, or broken<br />

air conditioning.<br />

The solution is to physically protect this sensitive asset. A home should<br />

have an alarm system and power to the computer should pass through an


1.2 Physical Threats 23<br />

uninterrupted power supply (UPS). A commercial entity should have a secure<br />

computer facility, with controlled access, heavy doors, card-operated locks,<br />

security cameras, and an automatic fire system (using gas instead <strong>of</strong> water if<br />

possible). In addition, special care should be given to unconventional entry<br />

points, such as attics and air conditioning ducts. A modern <strong>of</strong>fice building<br />

<strong>of</strong>ten has a large attic above the ceiling <strong>of</strong> each floor. This space is handy<br />

for stringing wires inside the building, but can be used by a person to crawl<br />

into an otherwise secure room. A wide air-conditioning duct can be used for<br />

the same purpose and should therefore be secured by a heavy screen.<br />

Other items, such as emergency lights, firepro<strong>of</strong> containers (for storing<br />

disks and papers), and proper training <strong>of</strong> personnel, are also important.<br />

Traditionally, fire is suppressed by water, but this causes damage to<br />

structures and equipment that may exceed the damage caused by the fire.<br />

For a while, a gas known as halon was used to extinguish fires in sensitive<br />

environments, but this was later found to deplete the ozone layer in the<br />

atmosphere. Modern replacements for water and halon are certain fluids that<br />

look like water but evaporate quickly. An example is the chemical NOVEC<br />

1230 made by 3M [3M 04]. It can be used to protect delicate objects and<br />

electronic equipment from fire without damaging the items themselves.<br />

Heat is only one type <strong>of</strong> damage caused by a fire. Smoke and soot<br />

particles resulting from a fire can compound the damage by contaminating<br />

removable disks, ruining the delicate mechanisms <strong>of</strong> magnetic disk and optical<br />

drives, and dirtying the electrical connections in keyboards. A case in point<br />

is the explosive eruption <strong>of</strong> Mount St. Helens in 1980, whose volcanic ash<br />

damaged computer equipment at large distances from the mountain.<br />

Case study. The Pentagon is the United States’ military headquarters.<br />

Located near Washington, D.C., the Pentagon has many computers and extensive<br />

networking equipment. Back in the 1970s, someone forgot to turn <strong>of</strong>f<br />

a 300-watt light bulb in a vault where computer tapes were stored. The small<br />

bulb generated heat that had nowhere to go and started heating up the room<br />

and smoldering the ceiling. When the door was finally opened, the fresh air<br />

rushing into the room turned the high temperature to fire. The fire spread<br />

to several adjoining rooms and caused damage in the millions <strong>of</strong> dollars.<br />

Theft should especially be mentioned, because computers and mobile<br />

devices are getting smaller and lightweight all the time and are therefore<br />

easy to steal. There is a school <strong>of</strong> thought in law enforcement that says<br />

that if you want to catch a thief, you should think like one. We hear about<br />

sophisticated hackers who write viruses and spyware, but an unsophisticated<br />

thief can cause much harm by stealing computers, because all the data in<br />

the computer disappears with the computer. Such data may be slow and<br />

expensive to replace and may also be private and sensitive. We should always<br />

keep in mind the simple, straightforward brute-force approach that computer<br />

thieves <strong>of</strong>ten adopt. Simply sneak in, take what you find, and get away<br />

quickly.<br />

When a mobile device is stolen, the thief (or whoever bought the device<br />

from him) eventually wants to turn it on and use it. Thus, special applications


24 1 Physical <strong>Security</strong><br />

for remote lock and wipe have been developed for mobile devices. Once such<br />

an application is installed in a mobile device, its owner can remotely erase all<br />

the data on the device (or at least lock it with a password). Once a computer<br />

is stolen, the thief can take out the drive and read it from another computer,<br />

so the solution in this case is to encrypt sensitive data.<br />

A facility using electronic locks and keys or other physical-identification<br />

devices to restrict access to certain areas should consider the following problem,<br />

known as piggybacking or tailgating. An intruder may wait at a locked<br />

door, perhaps holding disks, paper or other innocuous-looking stuff with both<br />

hands, trying to look legitimate and waiting for the door to open. When<br />

someone comes out <strong>of</strong> the restricted room, the intruder slips in while the<br />

door is still open. A guard can prevent such a problem, but this is an expensive<br />

solution. An alternative is to install a turnstile, or even a mantrap. The<br />

latter device is a two-door entrance where a person has to pass through two<br />

doors in order to enter or exit a restricted room. To enter, a person must<br />

pass through door A into a small space, the mantrap, and then open door B<br />

to the restricted room. The point is that door B will not open until door A<br />

is fully closed.<br />

Figure 1.1 shows a possible design for a secure and safe computer installation.<br />

The operators’ room (area 2) has a mantrap-controlled access to<br />

the outside and to the other rooms. The processor room (area 4) is easy to<br />

keep clean because access to it is through the network router room. Area<br />

5, the disk drives room, is kept even cleaner because access to it is through<br />

area 4. This is important because those drives have many moving parts. A<br />

lazy Susan (the circle) provides access to removable disks and DVDs from<br />

their storage (area 6). Area 7 is a storage room for papers, forms, and spare<br />

parts. It also serves as temporary trash storage and houses the all-important<br />

shredders. The printers (and perhaps also binders, copiers, and collators),<br />

with their noise and paper particles, are insulated in area 8. The only area<br />

that contributes to weak security is the loading dock (area 9), because it has<br />

another outside access. However, access to the outside is important in cases<br />

<strong>of</strong> emergency, so this outside door is another example <strong>of</strong> the trade<strong>of</strong>f between<br />

security and convenience.<br />

Exercise 1.3: Basements are easier to protect against unwanted entry. With<br />

this in mind, why is a basement a bad choice for a computer facility?<br />

Magnetic fields. Hard disks are magnetic storage. Data is recorded in<br />

small magnetic dots on the disk and is therefore sensitive to magnetic fields.<br />

(In contrast, CDs and DVDs are optical storage and are not sensitive to<br />

magnetism.) Experience shows that it is not enough to place a small magnet<br />

in your pocket and walk into a computer room, hoping to harm computers<br />

and data. Stronger fields are needed in order to adversely affect magnetic<br />

storage, but such fields exist. An old story, from the 1960s, tells <strong>of</strong> a computer<br />

tape storage room where tapes were always going bad. It took months until<br />

someone observed that the trouble affected only the tapes stored on the lower<br />

shelves. It turned out that the floor was cleaned periodically with a powerful<br />

vacuum cleaner that affected only those tapes.


8<br />

printers<br />

and shredders<br />

storage, trash,<br />

1.2 Physical Threats 25<br />

7<br />

9<br />

loading dock<br />

mantrap<br />

1<br />

operators room<br />

disk and tape storage<br />

6<br />

disk and tape drives<br />

network<br />

routers<br />

2 3<br />

5<br />

processor room<br />

Figure 1.1: A Design For a <strong>Computer</strong> Installation.<br />

A related concern is static electricity. Walking on a carpet <strong>of</strong>ten results in<br />

static electricity collected on shoes and clothing. This electricity is discharged<br />

when touching a conductor and may damage delicate electrical equipment.<br />

A computer room should have a tiled floor or at least anti-static carpeting.<br />

User tracking. Imagine a facility with many computers and many workers,<br />

where a user may perform a task on a computer, move away to do<br />

something else, then step to the nearest computer to perform another task.<br />

A good example is a hospital with doctors and nurses treating patients and<br />

updating patient records all the time. Another example is a lab where tests<br />

(perhaps blood tests or forensic tests) are performed by workers, and a worker<br />

has to enter the results <strong>of</strong> a test into a computer. In such a situation, it is important<br />

to keep track <strong>of</strong> which employee used what computer, when and for<br />

what purpose. The simplest solution is to assign each user a password. The<br />

user has to log into the computer, perform a task, then log <strong>of</strong>f. In the hospital<br />

example, where emergencies may and do occur <strong>of</strong>ten, such a procedure is too<br />

time consuming and unrealistic.<br />

A more sophisticated solution is to provide each user with a special,<br />

unique identification card (a key) and install in each computer special hardware<br />

(a lock) that can recognize such cards. The lock and key communicate<br />

by means <strong>of</strong> low-power radio transmissions, and each key contains a large<br />

(typically 32 bits) identification code. When a user arrives at a computer<br />

and starts using it, the lock recognizes the code on the key and immediately<br />

logs the user on. When the user walks away, the lock senses the loss <strong>of</strong> contact<br />

and immediately logs the user <strong>of</strong>f. When no user is logged on, the computer<br />

cannot be used. In a sensitive environment, such as a military installation,<br />

this type <strong>of</strong> lock can be made even more secure by asking the user to provide a<br />

password in addition to carrying the key card. A commercial implementation<br />

<strong>of</strong> this technique, called XyLoc, is described in [ensuretech 04].<br />

Physical protection <strong>of</strong> data. Data is normally stored on devices that can<br />

easily be damaged or destroyed. Paper, magnetic disks, CDs, and DVDs are<br />

4


26 1 Physical <strong>Security</strong><br />

sensitive to fire, magnetic fields, or scratches. Data stored on such devices<br />

deteriorates over time even under ideal storage conditions. Thus, data has<br />

to be physically protected, and this can be achieved by backing up sensitive<br />

data periodically, so that a fresh backup is always at hand. A home computer<br />

should have two external disks (or rewritable CDs or DVDs), one kept at<br />

home and the other kept in a different location, such as a friend’s home.<br />

Periodically, perhaps once a week, the computer owner should backup the<br />

data onto the external disk located at home, and swap the two backup disks.<br />

This way, there is always a fresh (i.e., at most one week old) copy <strong>of</strong> the data<br />

kept at a remote location.<br />

An even better strategy is to backup data every time a file is modified.<br />

Imagine a computer user, at home or in an <strong>of</strong>fice, working on a document that<br />

consists <strong>of</strong> text, numerical data, and illustrations. A word processor is used<br />

to create and edit the text, a spreadsheet may be used to construct and edit<br />

tables <strong>of</strong> data, and an illustration or painting program is the natural choice<br />

for creating digital images. Several <strong>of</strong> these files are modified by the user<br />

each day, and the safest way to work is to stop from time to time and back<br />

these files up on a small, temporary storage device, such as a flash memory<br />

card. Once the weekly backup is done, the files on the temporary storage can<br />

be deleted.<br />

A company that depends on its digital data should also back it up on<br />

a regular basis, but may <strong>of</strong>ten use its local area network for this task. Data<br />

from an <strong>of</strong>fice or location A may be sent through the local network to another<br />

<strong>of</strong>fice B where it is stored as a backup, while at the same time data from<br />

B may be backed up in A. Users who deal with vast amounts <strong>of</strong> data and<br />

who depend on its integrity should consider online data backup (aka <strong>of</strong>fsite<br />

data backup). The idea is that any file that has been updated is immediately<br />

uploaded (preferably encrypted) to a remote server. Many companies <strong>of</strong>fer<br />

such service and have various backup plans. Search the Internet for “online<br />

backup providers.”<br />

Backups are discussed in more detail in Section 6.4.<br />

Disk drives may also be responsible for another serious security problem<br />

that few users are aware <strong>of</strong>. Since 2002, most copy machines (copiers or Xerox<br />

machines) are made with an integral hard disk drive built into the machine.<br />

Every document copied is recorded on this drive in a proprietary, compressed<br />

format. This gives the drive a capacity to store hundreds <strong>of</strong> thousands <strong>of</strong><br />

documents. When such a machine is sold by its owner, the (unknown or<br />

forgotten) drive <strong>of</strong>ten remains in the machine and may contribute to a new<br />

type <strong>of</strong> breach <strong>of</strong> security. The short video at [copy machines 10] illustrates<br />

the gravity <strong>of</strong> this problem.<br />

In general, a computer user, whether an individual or an organization,<br />

should have a disaster-recovery plan based on regular and complete data<br />

backups. The plan (Section 1.4) should specify what to do if all the physical<br />

facilities are destroyed. New facilities may have to be rented in a hurry,<br />

new computers may have to be purchased or rented immediately, and all the<br />

lost data restored from backups. Experience shows that a detailed disasterrecovery<br />

plan may help even a large organization, such as a bank, recover


1.2 Physical Threats 27<br />

from a terrible disaster (fire, earthquake, flood, terrorism, computer virus) in<br />

a short period <strong>of</strong> time. [Maiwald and Sieglein 02] is one <strong>of</strong> many references<br />

that discuss such a plan and how to implement it.<br />

An armed society is a polite society. Manners are good when one may have<br />

to back up his acts with his life.<br />

—Robert A. Heinlein.<br />

Hard copy. The media has been touting the paperless <strong>of</strong>fice for several<br />

decades, but we still use paper. In fact, we use it more and more.<br />

<strong>Security</strong> workers know that criminals <strong>of</strong>ten collect papers<br />

thrown away carelessly and scrutinize them for<br />

sensitive information such as credit card numbers and<br />

passwords to computer accounts. This behavior is part<br />

<strong>of</strong> the general practice <strong>of</strong> dumpster diving. The solution<br />

is to shred sensitive documents, and even not-sosensitive<br />

papers. See Chapter 10 and especially Section<br />

10.2 for more on shredding and related topics.<br />

Spying. Spyware, an important threat, is the topic <strong>of</strong> Chapter 9, but<br />

spying can also be done in the traditional way, by person. You, the reader<br />

probably haven’t walked around your neighbor’s or your ex-spouse’s house<br />

at night, trying to look in windows and catch a glimpse <strong>of</strong> a computer screen<br />

with passwords, bank logins, or forbidden pictures, but others do that all the<br />

time. Industrial espionage and spying conducted by governments are very<br />

real. A commercial organization <strong>of</strong>ten decides that spying on its competitors<br />

is the only way for it to stay active, healthy, and competitive. Spying on<br />

computer users can be done by looking over someone’s shoulder, peeping<br />

through a keyhole, setting a small security camera, planting spyware in a<br />

computer, and also in other ways, as described in Section 1.1.<br />

Data integrity. Digital data consists <strong>of</strong> bits. Text, images, sound, and<br />

movies can be digitized and converted to strings <strong>of</strong> zeros and ones. When<br />

data is stored, in memory or on a storage device, or when it is transmitted<br />

over a communication line, bits may get corrupted. Keeping each bit at its<br />

original value is referred to as data integrity and it is an aspect <strong>of</strong> computer<br />

security.<br />

Before we look at solutions, it is important to discuss the significance<br />

<strong>of</strong> this problem (see also exercise 2.11). Text is represented in a text file<br />

as individual characters, each coded in ASCII (8 bits) or Unicode (16 bits).<br />

Thus, each bad bit in a text file changes one character <strong>of</strong> text to another<br />

character. Quite <strong>of</strong>ten, this is not a problem. If the file is the text <strong>of</strong> a book,<br />

a personal letter, or someone’s homework, one bad character (or even a few<br />

bad characters) isn’t considered a serious problem. If, however, the file is<br />

a legal, medical, or commercial document, the change <strong>of</strong> even one character<br />

may change the meaning <strong>of</strong> a sentence and may significantly alter the meaning<br />

<strong>of</strong> a paragraph or even the entire document.<br />

An image consists <strong>of</strong> small dots called pixels (from picture element).<br />

Each pixel is represented as a number, the code <strong>of</strong> the pixel’s color. A bad


28 1 Physical <strong>Security</strong><br />

bit therefore corrupts the color <strong>of</strong> one pixel. If the bit is one <strong>of</strong> the least<br />

significant (i.e., it is on the right-hand side <strong>of</strong> the number) the change in color<br />

may be insignificant. Even if the color <strong>of</strong> one pixel is changed significantly,<br />

a viewer may not notice it, because the entire image may have millions <strong>of</strong><br />

pixels. Thus, in general, a few bad bits in an image do not pose a problem, but<br />

there are exceptions. An X-ray image, an image created by a telescope, or an<br />

image taken by a spy satellite may be examined carefully by experts who may<br />

draw important conclusions from the colors <strong>of</strong> individual pixels. Such images<br />

must therefore keep their integrity when transmitted or stored. A movie is<br />

a string <strong>of</strong> images, so one bad bit affects<br />

one pixel in one frame <strong>of</strong> the movie. It<br />

may be noticeable as a momentary flicker<br />

and may not be a serious problem. An<br />

audio file consists <strong>of</strong> audio samples, each<br />

a number that relates to the intensity <strong>of</strong><br />

the sound at a certain moment. There are<br />

typically about 44,000 audio samples for<br />

each second <strong>of</strong> sound, so one bad sample,<br />

caused by one bad bit, may be audible,<br />

but may not detract from the enjoyment<br />

<strong>of</strong> listening to music or prevent a listener<br />

from understanding spoken text.<br />

The conclusion is that the amount <strong>of</strong> data integrity that’s required depends<br />

on the data in question and ranges from no integrity at all (for unimportant<br />

data or data that can easily be reacquired) to maximum integrity<br />

(for crucial data that cannot be replaced). Data integrity is provided by<br />

error-detecting and error-correcting (in general, error-control) codes, and the<br />

basic principles <strong>of</strong> this discipline are described in many texts.<br />

The three principles <strong>of</strong> security management. Three simple principles<br />

can significantly reduce the security threats posed by employees in a large<br />

computer installation. Perhaps the most important <strong>of</strong> the three is the separation<br />

<strong>of</strong> duties. This principle, employed by many spy, anti-spy, and secret<br />

organizations, says that an employee should be provided only with the knowledge<br />

and data that are absolutely necessary for the performance <strong>of</strong> their duties.<br />

What an employee does not know, cannot be disclosed by him or leaked<br />

to others. The second principle is to rotate employees periodically. An employee<br />

should be assigned from time to time to different shifts, different work<br />

partners, and different jobs. Also, regular annual vacations should always be<br />

mandatory for those in security-related positions.<br />

Every time a person is switched to another job or task, they have to be<br />

retrained, which is why this principle adversely affects the overall efficiency<br />

<strong>of</strong> the organization. Also, when an employee is switched from task A to task<br />

B, they have to be given the data and knowledge associated with both tasks,<br />

which contradicts the principle <strong>of</strong> separation <strong>of</strong> duties. In spite <strong>of</strong> this, it<br />

is important to rotate employees because a person left too long in the same<br />

position may get bored with it and a bored security worker is a potentially


1.3 Laptop <strong>Security</strong> 29<br />

dangerous worker. The third security management principle is to have every<br />

security-related task performed by an employee and then checked by another<br />

person. This way, no task becomes the sole responsibility <strong>of</strong> one person.<br />

This principle allows one person to find mistakes (and also sabotage) made<br />

by another. It slows down the overall work, but improves security.<br />

1.3 Laptop <strong>Security</strong><br />

Duty is what one expects from others.<br />

—Oscar Wilde.<br />

A laptop computer is handy. Those thin, small, lightweight machines are<br />

truly portable and can increase a person’s productivity.<br />

Unfortunately, they also increase the appetite <strong>of</strong><br />

thieves. You may have asked yourself why so many<br />

people eye your laptop when you carry it in public. As<br />

many know from their misfortune, one common answer<br />

is: people consider a laptop a target. Thus, securing a<br />

laptop is a (physical) computer security problem.<br />

Perhaps the most secure solution is to chain the laptop to your wrist, so<br />

it becomes your Siamese twin. Although very safe, this solution is uncomfortable,<br />

especially during meals and bathroom visits, and may be rejected<br />

out <strong>of</strong> hand (out <strong>of</strong> wrist?) by most laptop users. The next best thing is to<br />

tie the laptop to a large, heavy object, <strong>of</strong>ten a desk, with a lock such as a<br />

bicycle lock (but if the lock opens with a combination instead <strong>of</strong> a key, make<br />

sure you set it to a random number and not to 123, 666, or another, easy to<br />

guess number).<br />

A laptop has a security slot that takes one side <strong>of</strong> the lock’s chain or cable<br />

in such a way that breaking the slot causes much damage to the computer and<br />

thus renders it useless (or at least less desirable) to a thief. An alternative<br />

is to glue an attachment to the computer case, and attach the chain to it. A<br />

more sophisticated (or shall we say, more paranoid) owner might consider a<br />

motion sensor alarm that chirps or beeps when the computer is moved.<br />

FORT LAUDERDALE, Florida, 16 February 2010: Investigators are<br />

looking into the possibility that there is a connection between allegations <strong>of</strong><br />

hacking at four Broward schools and the thefts <strong>of</strong> 37 laptop computers.<br />

According to Fort Lauderdale police, someone broke into two portable<br />

classrooms at the Seagull School in the 400 block <strong>of</strong> Southwest 28th Street<br />

over the weekend.<br />

Once inside, police said, the thieves took the combination locks <strong>of</strong>f the<br />

computer cabinets and stole 37 laptops worth a total <strong>of</strong> about $54,000. The<br />

thefts were discovered Tuesday when staff returned to the school after the<br />

long Presidents Day weekend.<br />

From http://www.justnews.com/education/22582446/detail.html.


30 1 Physical <strong>Security</strong><br />

Some s<strong>of</strong>tware makers <strong>of</strong>fer theft tracking or tracing s<strong>of</strong>tware combined<br />

with a service that can help in tracking any stolen computer, not just a laptop.<br />

You purchase the s<strong>of</strong>tware, install it, and give it an email address to report to.<br />

Every time the computer is started or is reset, it sends a stealth message with<br />

the computer’s current IP number to that address. If the computer is stolen,<br />

there is an excellent chance that the thief would connect to the Internet, so<br />

its new IP number will be sent to that email address. Both the s<strong>of</strong>tware<br />

maker and the police are then notified and try to locate the computer from<br />

its IP number.<br />

Exercise 1.4: How is such tracking done?<br />

The whole point about such s<strong>of</strong>tware is that it somehow has to be embedded<br />

“deep” in the computer, such that formatting the hard drive (even<br />

a low-level formatting) or reinstalling the operating system would not erase<br />

the s<strong>of</strong>tware. Current examples <strong>of</strong> such security s<strong>of</strong>tware for both Windows<br />

and the Macintosh platforms are [PCPhoneHome 04], [sweetcocoa 05], and<br />

[absolute 05]. Because the security s<strong>of</strong>tware is on the hard drive, replacing<br />

the drive removes this protection.<br />

[business.com 04] has a list <strong>of</strong> various security devices and s<strong>of</strong>tware for<br />

computers. The PDF document at http://www.rufy.com/laptop.pdf <strong>of</strong>fers<br />

useful information on protecting a Macintosh.<br />

A good idea is to encrypt all sensitive s<strong>of</strong>tware on a laptop, just in case.<br />

The following simple precautions go a long way in securing your computer<br />

so it remains yours:<br />

With an electric engraving pen, write your name and either your permanent<br />

email or telephone number (but not your social security number or<br />

address) on the computer case. For a large computer, write it in several<br />

places. The thief knows from experience that selling such a marked machine<br />

takes time, so they may try to steal someone else’s computer. A car is<br />

sometimes stolen for its parts, but computer parts are generally inexpensive<br />

enough to deter a thief from the effort <strong>of</strong> stealing, taking the machine apart,<br />

and selling individual parts.<br />

A laptop can be hidden when traveling if it is carried in a nonstandard<br />

case, especially one with a distinctive color that makes it noticeable.<br />

When traveling by car, place the laptop on the floor in the passenger<br />

side and throw a rag or a towel over it. This place has the most comfortable<br />

temperature in the car, and the rag may camouflage the laptop so it does not<br />

attract the attention <strong>of</strong> passers by. Generally, a computer should not be left<br />

in a car for a long period because cars tend to get hot even when the outside<br />

temperature is not high.<br />

When flying, take the laptop with you. Never check it in as luggage.<br />

There is much information on the Internet about airport scams where a team<br />

<strong>of</strong> two or more criminals confuse you at the x-ray checkpoint and end up with<br />

your bag(s).


1.3 Laptop <strong>Security</strong> 31<br />

Certain versions <strong>of</strong> the Windows operating system make it possible for<br />

the computer owner (administrative user) to prevent starting the computer<br />

from a USB flash memory unit or a DVD. (This is done with the CMOS setup<br />

program). When such a computer is stolen, the thief is forced to replace the<br />

hard drive before he can start the computer.<br />

Mac hacking. Traditionally, the Macintosh platform has suffered much<br />

less from hacking and security related problems (except theft) than computers<br />

running the Windows or UNIX operating systems. One plausible explanation<br />

for this is that there are relatively few Macintosh computers (only 12–16%<br />

<strong>of</strong> the total number <strong>of</strong> personal computers, according to some estimates).<br />

One reason for a hacker to spend time and effort on hacking activities is the<br />

satisfaction <strong>of</strong> breaking into many computers and being able to brag about it<br />

(if only under a pseudonym). Macintosh hacking can never result in breaking<br />

into many computers, thereby giving hackers a disincentive. Another theory<br />

for the relative safety <strong>of</strong> the Macintosh is that its operating system has always<br />

been more secure than Windows and UNIX. This feature, if ever true, has<br />

changed since the introduction <strong>of</strong> the Macintosh OS X, which is based on<br />

UNIX. Attacking version X <strong>of</strong> the Macintosh operating system isn’t much<br />

different from UNIX hacking, and may attract intruders. A quick Internet<br />

search locates many items about hacking the Apple Macintosh. The video at<br />

[mac-hack 10a] and the article at [mac-hack 10b] are two <strong>of</strong> many examples.<br />

Paul Day has a 40-page document [Day 10] on hardening Macintosh<br />

security in OS 10.3.<br />

Apple’s market share in the United States is currently (in 2009–2010) estimated<br />

at about 7.6–8%, but since Macintosh computers are more expensive<br />

than PCs, their owners tend to keep them longer, which is why the percentage<br />

<strong>of</strong> Macs out <strong>of</strong> the total number <strong>of</strong> personal computers currently in use<br />

is estimated at the higher figure <strong>of</strong> 12–16%.<br />

Some experts believe that browser share (the number <strong>of</strong> Internet browsers<br />

for a Mac out <strong>of</strong> the total number <strong>of</strong> browsers) may be a better measure <strong>of</strong><br />

actual computer use. The point is that a home/<strong>of</strong>fice computer is virtually<br />

certain to have a browser, but there are many “utilitarian” PCs that run<br />

unattended and are used for control applications, where no Internet browsing<br />

is needed. When such a PC is purchased, a few special applications are installed,<br />

and the computer executes them and is never upgraded. Market share<br />

estimates should ignore such computers and should look only at computers<br />

that are purchased for home use (i.e., communications and entertainment),<br />

and by businesses for general applications.


32 1 Physical <strong>Security</strong><br />

1.4 Disaster Recovery Planning<br />

A disaster recovery plan is an important part <strong>of</strong> any organization, whether<br />

commercial, charitable, or governmental. It details the steps required to<br />

quickly restore technical capabilities and services after a disruption or a disaster.<br />

The idea in such a plan is to minimize the impact that a catastrophic<br />

event will have on the organization.<br />

The details <strong>of</strong> such a plan depend on the nature <strong>of</strong> the organization<br />

and are different for different emergencies, but they have to touch upon the<br />

following aspects <strong>of</strong> the organization:<br />

1. Operation. The plan should provide for continuous operation <strong>of</strong><br />

the organization. In certain emergencies there may be periods where the<br />

organization will not function, but they should be minimized.<br />

2. Reputation. The name, brand names, trademarks, products, and<br />

image <strong>of</strong> the organization should be preserved by the plan.<br />

3. Confidence. A well-thought-<strong>of</strong> plan should increase the confidence <strong>of</strong><br />

employees, clients, investors, and business partners <strong>of</strong> the organization.<br />

Developing such a plan consists <strong>of</strong> the following key steps:<br />

1. The basic components <strong>of</strong> the organization, such as human resources,<br />

equipment, real estate, and data should be identified and assigned monetary<br />

values.<br />

2. The basic components thus identified should be ranked according<br />

to importance and qualified personnel should be assigned to each element.<br />

Those people should develop recovery details for their component <strong>of</strong> the organization<br />

and should carry out the recovery plan in case <strong>of</strong> a disaster.<br />

3. Once the plan is in place, it should be disseminated to all employees<br />

and should be practiced and rehearsed on a regular basis. Several times a<br />

year, management should reserve a day where a certain emergency will be<br />

simulated, and the recovery plan carried out as realistically as possible.<br />

The result <strong>of</strong> a fully developed and rehearsed plan is at least peace <strong>of</strong><br />

mind and at most, a quick and full recovery from disasters.<br />

One moment <strong>of</strong> patience may ward <strong>of</strong>f great disaster.<br />

One moment <strong>of</strong> impatience may ruin a whole life.<br />

—Chinese Proverb.


1.5 Privacy Protection<br />

1.5 Privacy Protection 33<br />

In this age <strong>of</strong> computers, huge data bases, the Internet, and E-commerce,<br />

we are all concerned about losing our privacy. Network and communications<br />

experts agree that once an item <strong>of</strong> information is placed on the Internet, it<br />

cannot be deleted because many copies are made almost immediately. Virtually<br />

everything found on the Internet, useless or useful, good or bad, big<br />

or small, is immediately discovered by search engines and gets copied, mirrored,<br />

and preserved by them and by other bodies and organizations. (An<br />

interesting example is the Internet wayback machine [wayback 10].)<br />

This section describes two approaches to protecting privacy, the first is<br />

based on sophisticated lying and the second is based on perturbing a random<br />

variable.<br />

Social researchers and marketers <strong>of</strong>ten give away small gifts in return<br />

for personal information such as shopping habits. Those tempted by the gift<br />

may resort to lying, so the first approach to maintaining privacy is to learn<br />

to lie convincingly.<br />

Just lying to a social researcher isn’t very useful and may not serve any<br />

purpose. It may also sound wrong and may raise suspicion. Why would<br />

anyone agree to give out personal information and then invent wrong data<br />

about themselves? The answer is, to receive a gift. No one is going to<br />

give away their household income level for a song, but many are willing to<br />

provide information on their online shopping habits for a free popular song<br />

or for large, free disk space on some company’s computer. Often, people<br />

provide wrong information, a habit which this author does not condone, but<br />

if you insist on lying, at least do it properly. Here is how.<br />

Take a sheet <strong>of</strong> paper and choose a fictitious name, address, income<br />

level, year <strong>of</strong> birth and occupation, then open a free email account. (It will<br />

be used as a disposable email address or DEA.) You are now in business and<br />

in return for a gift, can supply wrong (but consistent) information about<br />

your alternate identity. Use this information for a while, then close the<br />

email account, discard the fake personal data, and start all over again. One<br />

exception is your (fake) income level. This is used by marketers to send you<br />

<strong>of</strong>fers <strong>of</strong> merchandise. If you are interested in high-end, expensive items,<br />

declare high income. A low income level will get you <strong>of</strong>fers <strong>of</strong> cheap, <strong>of</strong>ten<br />

useless freebies.<br />

Statisticians tell us that people don’t lie well. An effective method for<br />

deciding on a fake name and address is to use a people search service such<br />

as Intelius ([intelius 05], not free). First, search under last name Smith and<br />

select at random one <strong>of</strong> the many first names that will be found. Then search<br />

under first name John or Jane and select one <strong>of</strong> the many last names at<br />

random. Finally, search for a street name in a town, and select a nonexistent<br />

number. Information obtained in this way looks convincing and will not<br />

jeopardize anyone. (Unfortunately for liars, it is becoming easy to quickly<br />

verify the existence <strong>of</strong> an address, at least in the United States.)<br />

Now, for the second approach. When we buy a product, it always includes<br />

a registration card that asks for our name, address, age (or age group),


34 1 Physical <strong>Security</strong><br />

family income, and other personal information. People <strong>of</strong>ten fill out this card<br />

and mail it, or register online, lest they lose the product’s warranty. On the<br />

other hand, afraid to surrender their privacy, they <strong>of</strong>ten lie about their personal<br />

data. The point is that the manufacturer doesn’t need to know the age<br />

<strong>of</strong> every buyer and user <strong>of</strong> a product. All that the maker <strong>of</strong> a product would<br />

like to know is the statistical distribution <strong>of</strong> the ages; how many users are 18<br />

years old, how many are 19, etc. This is the basis <strong>of</strong> the second approach.<br />

When a user inputs personal data into a program that will send it to a<br />

manufacturer, a social researcher, or a government agency, the program adds<br />

a random number to it (or subtracts such a number from it). The original<br />

data is perturbed in this way by the random numbers. Thus, if a data item<br />

is 35 (perhaps an age), the program may add 18 and send the sum 53 to the<br />

requestor <strong>of</strong> information.<br />

At the destination, the sum S (53) is received and there is no way to<br />

convert it to the original age A (35) and the random number R (18). However,<br />

the point is that there is no need to know any specific age. All that the data<br />

requestor needs is the distribution <strong>of</strong> the ages. Thus, this is a statistical<br />

problem that can be stated as follows: Given a random variable S that<br />

is the sum <strong>of</strong> another variable A (whose distribution is unknown) and a<br />

random variable R (whose distribution is known), find the distribution <strong>of</strong> A<br />

as accurately as possible.<br />

This method is due to Rakesh Agrawal and Ramakrishnan Srikant who<br />

provide detailed algorithms to accurately estimate the original distribution.<br />

Unfortunately, these algorithms require a detailed knowledge <strong>of</strong> statistics<br />

and are beyond the scope <strong>of</strong> this book. The interested reader is referred to<br />

[Agrawal and Srikant 00].<br />

The distribution <strong>of</strong> the random numbers is important, but knowing this<br />

distribution may help a hacker to break this method <strong>of</strong> privacy protection<br />

and to estimate the original data fairly accurately. Suppose that the random<br />

numbers are distributed uniformly in an interval [a, b]. A hacker may repeatedly<br />

ask a person for a data item (say, an age). If the person doesn’t lie, they<br />

provide the same age, say, 35, again and again, and the hacker receives sums<br />

35 + R that are uniformly distributed between a + 35 and b + 35. Knowledge<br />

<strong>of</strong> a and b and approximate knowledge <strong>of</strong> a + 35 and b + 35 makes is easy to<br />

compute, or at least estimate, the value 35.<br />

This is an old technique. I first heard about it many years ago when it was<br />

used in a survey about sexual practices. The respondent would mentally<br />

answer the Y/N question truthfully and then flip a coin. On heads he would<br />

record his answer truthfully but on tails he would reverse his answer. Thus<br />

anyone reading the survey would have no idea whether the respondent’s<br />

Yes answer was true or not but the statistics for all the respondents would<br />

accurately match the surveyed population.<br />

—David Grant (in response to hearing <strong>of</strong> this method).<br />

Exercise 1.5: Assuming that the random numbers are distributed normally<br />

with mean m, explain how a hacker can estimate the original data by repeatedly<br />

asking for it.


1.5 Privacy Protection 35<br />

The solution to this weakness is to ask the individuals being queried to<br />

give each item <strong>of</strong> information only once (or only a small number <strong>of</strong> times).<br />

The man who looks for security, even in the mind,<br />

is like a man who would chop <strong>of</strong>f his limbs in order to<br />

have artificial ones which will give him no pain or trouble.<br />

—Henry Miller


2<br />

Viruses<br />

<strong>Computer</strong> viruses are the most familiar type <strong>of</strong> rogue s<strong>of</strong>tware. A virus is<br />

a computer program that hides inside another program in a computer or on<br />

a disk drive, that attempts to propagate itself to other computers, and that<br />

<strong>of</strong>ten includes some destructive function (payload). This chapter discusses<br />

the main features <strong>of</strong> viruses and what makes them different from other types<br />

<strong>of</strong> s<strong>of</strong>tware.<br />

The dictionary defines the adjective “rogue” as “large, destructive, and<br />

anomalous or unpredictable” and also as “operating outside normal or desirable<br />

controls.” Rogue s<strong>of</strong>tware generally conforms to these definitions. It is<br />

not large, but it is virtually always destructive. It is anomalous because it<br />

replicates, and it operates outside <strong>of</strong> normal controls. This is s<strong>of</strong>tware specifically<br />

designed, implemented, and tested to invade a computer, to replicate<br />

and spread to other computers, and to cause harm.<br />

The term malware (slang for malicious s<strong>of</strong>tware) is also commonly used<br />

for rogue s<strong>of</strong>tware. Malware is any type <strong>of</strong> s<strong>of</strong>tware designed specifically<br />

to disrupt a computer or its operations. This includes viruses, worms, and<br />

Trojan horses, but also spyware and adware (Chapter 9), especially those<br />

programs that try to reinstall themselves from an invisible copy after the<br />

original has been deleted.<br />

This chapter and the four that follow describe the various types <strong>of</strong> rogue<br />

programs, the principles behind these programs, the various types <strong>of</strong> damage<br />

that they inflict, and the tools that have been developed to detect and kill<br />

them. Several examples <strong>of</strong> historically important or especially interesting<br />

rogue programs are also included. Table 2.1 lists the seven main types <strong>of</strong><br />

malware with short descriptions and references to where they are mentioned<br />

or discussed in this book. This chapter concentrates on computer viruses,<br />

their historical development, their methods <strong>of</strong> spreading and hiding, and the<br />

types <strong>of</strong> damage they inflict.<br />

D. Salomon, <strong>Elements</strong> <strong>of</strong> <strong>Computer</strong> <strong>Security</strong>, Undergraduate Topics in <strong>Computer</strong> Science,<br />

DOI 10.1007/978-0-85729-006-9_2, © Springer-Verlag London Limited 2010


38 2 Viruses<br />

Virus<br />

Logic bomb<br />

Time bomb<br />

Rabbit<br />

Backdoor<br />

Worm<br />

Trojan horse<br />

Resides in an executable file and propagates to other<br />

executables Chapter 2<br />

A virus whose payload is delayed and is triggered by<br />

some event in the computer Section 2.2<br />

A special case <strong>of</strong> a logic bomb where the trigger is a<br />

particular time or date Section 2.2<br />

A virus whose payload is to annoy and vex the user<br />

rather than destroy data<br />

A hidden feature in s<strong>of</strong>tware (normally Trojan or spyware)<br />

that gives certain people special privileges de-<br />

Section 2.16<br />

nied to others Section 2.23<br />

Executes independently <strong>of</strong> other programs, replicates<br />

itself, and spreads through a network Chapter 3<br />

Hides in the computer as an independent program and<br />

has a malicious function Chapter 4<br />

Table 2.1: Seven Types <strong>of</strong> Malware.<br />

Writing a typical s<strong>of</strong>tware application, such as a word processor, spreadsheet,<br />

or a graphics program is normally done in a higher-level programming<br />

language and is independent <strong>of</strong> the operating system to a large degree. Writing<br />

a virus, on the other hand, <strong>of</strong>ten requires a detailed knowledge <strong>of</strong> the<br />

internals <strong>of</strong> the operating system, which is why this chapter starts with a<br />

short definition and a discussion <strong>of</strong> operating systems.<br />

2.1 Operating Systems<br />

Designing and implementing computer viruses and other types <strong>of</strong> malicious<br />

s<strong>of</strong>tware normally requires a good knowledge <strong>of</strong> the operations, procedures,<br />

and internal variables and tables <strong>of</strong> the operating system the virus is meant<br />

to attack. In contrast, those who want only to understand viruses need only<br />

a general understanding <strong>of</strong> what an operating system is and how it works.<br />

We therefore provide a definition <strong>of</strong> this important term and a short discussion<br />

<strong>of</strong> its main functions. (Nowadays, cell telephones, blackberry PDAs,<br />

iPods, iPads, and other mobile devices also have operating systems, so the<br />

term “computer” in this section should be understood to include any devices<br />

controlled by an operating system.)<br />

Definition. An operating system is a set <strong>of</strong> routines that provide services<br />

to the users and make it easy for them to use the computer. In a multiuser<br />

computer, the operating system also supervises users, protects each<br />

user from other users, and protects itself from accidental and intentional<br />

damage by users.<br />

Exercise 2.1: Current operating systems for personal computers support<br />

separate areas in the computer for different users. Can such an environment<br />

be considered a multiuser computer?<br />

The most important services rendered by a modern operating system<br />

are (1) booting and resetting, (2) managing volumes and files, (3) managing


2.1 Operating Systems 39<br />

executable programs (processes), (4) managing memory, and (5) handling<br />

interrupts. The following list provides more information on each task:<br />

A computer is useful because it executes programs. A computer without<br />

a program cannot do anything. When a new computer is purchased, it must<br />

have a built-in program so it can start and load other programs. Also, when<br />

something goes wrong and the computer has to be reset (or restarted), certain<br />

built-in programs are needed. These programs are part <strong>of</strong> the operating<br />

system.<br />

A volume is an input/output device. Typical examples are disk drives<br />

(internal, external, or remote) and optical drives, but flash memories, scanners,<br />

and card readers are also volumes. A volume can be mounted when<br />

needed and later unmounted. Data on a volume is written in files, and a<br />

large-capacity volume may store hundreds <strong>of</strong> thousands <strong>of</strong> files <strong>of</strong> different<br />

types. Files are organized in directories and may <strong>of</strong>ten have to be listed,<br />

moved, copied, renamed, created, and deleted. The operating system has<br />

a file manager that provides routines for all the important operations on<br />

volumes and files.<br />

Programs are normally written in a higher-level language, such as C or<br />

Java and have to be compiled (translated to machine language), loaded into<br />

memory, and executed. The loader and various compilers are part <strong>of</strong> the<br />

operating system. When the user wants to execute a program, the operating<br />

system has to find the executable program file, allocate memory space to it,<br />

append it to the list <strong>of</strong> active processes, and start its execution by jumping<br />

to it. If the operating system can handle several processes simultaneously, it<br />

must employ the timer interrupt (Section 2.22) for this purpose.<br />

Memory is a precious resource. Certain programs, especially those that<br />

manipulate images and video, need large amounts <strong>of</strong> memory. The problem<br />

<strong>of</strong> memory allocation and protection is especially important in a multiuser<br />

computer, where several user programs reside in memory simultaneously.<br />

The operating system has a memory manager that assigns a memory area<br />

to each new process, claims the memory when a process completes, keeps<br />

track <strong>of</strong> memory areas assigned to each task, and employs special hardware<br />

to protect each user area from other users.<br />

An interrupt is the way the CPU in the computer is notified <strong>of</strong> urgent or<br />

unusual conditions and is able to respond to them immediately. Interrupts<br />

are discussed in Section 2.22 and are used to implement a variety <strong>of</strong> useful<br />

features. The following is a list <strong>of</strong> some <strong>of</strong> the most important features that<br />

are implemented by interrupts: Memory protection, invalid instructions, user<br />

requests, terminating a program (normally or abnormally), timer and time<br />

slices, input-output operations, errors found by the ALU when performing<br />

operations on numbers, and hardware problems such as a voltage drop.<br />

Many textbooks discuss the principles <strong>of</strong> operating systems and the details<br />

<strong>of</strong> popular operating systems such as UNIX, Windows, Linux, and the<br />

Macintosh OS.


40 2 Viruses<br />

(The Windows operating system is notorious for its many security flaws.<br />

A joke popular with Windows users goes like this. Windows has an error<br />

message that reads “Error: Cannot detect any system errors at this time.”)<br />

Get information on the latest s<strong>of</strong>tware security updates from us.<br />

—www.micros<strong>of</strong>t.com/security/bulletins<br />

Windows is weak, where’s the alternative?<br />

—www.cnet.com, 26 April 2005.<br />

2.2 <strong>Computer</strong> Viruses<br />

A biological virus (from the Latin for poison) is a shell filled with genetic<br />

material that it injects into a living cell, thereby infecting it. The cell then<br />

starts manufacturing copies <strong>of</strong> the virus. A computer virus behaves similarly.<br />

It injects its contents, which is a short computer program, into a host<br />

computer, thereby infecting it. When the computer executes the virus code,<br />

it replicates the code, and also performs a task, normally damaging files or<br />

another s<strong>of</strong>tware component <strong>of</strong> the computer.<br />

In biology, the plural <strong>of</strong> virus is viruses, but one <strong>of</strong> the silliest debates in<br />

the area <strong>of</strong> computer viruses has been about the plural <strong>of</strong> this word. One<br />

school <strong>of</strong> thought, perhaps influenced by the Latin and German plurals,<br />

has come up with the terms viri, virii, vira, virae, viren, and virides. A<br />

more original (and funnier) approach is to use virii for two viruses, viriii<br />

for three <strong>of</strong> them, viriv for four viruses, and so on.<br />

The idea <strong>of</strong> a program that replicates itself may have originated in the<br />

early days <strong>of</strong> computing, when programmers amused themselves by trying to<br />

write the shortest program that prints itself. Section 4.3 has more to say on<br />

this stimulating pastime. Such programs have since been written in many<br />

programming languages. The example here is in the C language, but see also<br />

Figure 4.2.<br />

char*a="char*a=%c%s%c;main(){printf(a,34,a,34);}";<br />

main(){printf(a,34,a,34);}<br />

Exercise 2.2: Write a similar program in a programming language <strong>of</strong> your<br />

choice.<br />

The computer virus came <strong>of</strong> age on 26 September 1988, when it made<br />

the front cover <strong>of</strong> Time magazine. The cover story was titled “invasion <strong>of</strong> the<br />

data snatchers” and it described the brain virus (Section 5.2) as an example.<br />

The magazine called the virus “small but deadly and only one <strong>of</strong> a swarm <strong>of</strong><br />

infectious programs that have descended on U.S. computer users this year.”<br />

The article ended by predicting that this was just the beginning <strong>of</strong> the era<br />

<strong>of</strong> computer viruses, and as if especially created to justify this prophecy, the<br />

Internet worm (Section 3.4) appeared less than six weeks later. Appendix C<br />

is a detailed virus timeline.


2.2 <strong>Computer</strong> Viruses 41<br />

When a new scientific field is opened, <strong>of</strong>ten the first step is classification.<br />

Rogue programs are classified into viruses, Trojan horses, worms, and time<br />

(or logic) bombs. The remainder <strong>of</strong> this chapter discusses viruses, but the<br />

other types are defined here, just to give the reader an idea <strong>of</strong> the differences<br />

between the various types.<br />

A virus is a malicious program that resides inside another program (its<br />

host). When the host is executed, the virus also executes. It tries to replicate<br />

itself by storing copies <strong>of</strong> itself in other programs. It may also decide to inflict<br />

damage.<br />

A Trojan horse is a piece <strong>of</strong> s<strong>of</strong>tware (normally malicious) hidden inside<br />

an innocuous program. The horse performs its destructive function, then<br />

starts its host program. A Trojan horse does not replicate itself and does not<br />

infect other programs or files; its damage is localized. Normally, deleting the<br />

host program eliminates the Trojan horse and solves the problem.<br />

A tapeworm is a parasite that lives inside the body <strong>of</strong> a bigger creature<br />

and sustains itself from its host’s resources. A s<strong>of</strong>tware worm is a program<br />

that executes independently <strong>of</strong> other programs, replicates itself and spreads<br />

through a network from computer to computer. The main difference between<br />

a worm and a virus is that a virus embeds itself in another file, whereas a<br />

worm doesn’t hide in another file and resides in the computer as an independent<br />

program. Worms are described in Chapter 3.<br />

A logic bomb is generally a virus whose destructive action (its payload)<br />

is delayed and is triggered by some event in the computer. A time bomb is a<br />

special case <strong>of</strong> a logic bomb where the trigger is a particular time or date.<br />

“Oh, yeah,” Handley agreed dourly. “It’s fun to think about, but it was<br />

hell to get out <strong>of</strong> the system. The guy who wrote it had a few little extra<br />

goodies tacked onto it—well, I won’t go into any detail. I’ll just tell you that<br />

he also wrote a second program, only this one would cost you—it was called<br />

VACCINE.”<br />

Auberson laughed again. “I think I get the point.”<br />

“Anyway, for a while there, the VIRUS programs were getting out <strong>of</strong><br />

hand. A lot <strong>of</strong> computer people never knew about it because their machines<br />

might be infected and cured within the space <strong>of</strong> a week or two, but there<br />

were some big companies that needed every moment <strong>of</strong> on-time—even with<br />

time-sharing. After a couple <strong>of</strong> months, that VIRUS program was costing<br />

them real money. It was taking up time that somebody else should have been<br />

using. Because it dialed numbers at random, it might stay in one computer<br />

for several months and another for only several days.”<br />

“But there was only one VIRUS program, wasn’t there?”<br />

“At first there was, but there were copies <strong>of</strong> it floating around, and various<br />

other people couldn’t resist starting plagues <strong>of</strong> their own. And somewhere<br />

along the line, one <strong>of</strong> them mutated.”<br />

—David Gerrold, When Harlie Was One, 1972.<br />

The destructive effects <strong>of</strong> computer viruses are familiar to computer users<br />

all over the world, but the term “computer virus” is familiar to the general


42 2 Viruses<br />

public, even to noncomputer users, because those viruses are so prevalent.<br />

It seems that the term was first used in 1972 in the novel When Harlie<br />

Was One by David Gerrold [Gerrold 88], whereas the practical idea <strong>of</strong> a<br />

computer virus formally originated in late 1983 with Fred Cohen, then a<br />

Ph.D. student at the University <strong>of</strong> Southern California. (The word “formally”<br />

implies that there may have been computer viruses before Cohen, but because<br />

<strong>of</strong> the anonymity <strong>of</strong> their creators we cannot be certain <strong>of</strong> that.) Cohen<br />

implemented a computer virus for the VAX-11 computer and demonstrated<br />

its destructive potential to his classmates. Since then, computer viruses have<br />

been designed, implemented, and released by many malicious persons, with<br />

disastrous results.<br />

Details <strong>of</strong> this first virus experiment are given in [Cohen 94a]. It took<br />

place over several days on 3 November 1983, and was demonstrated to the<br />

students <strong>of</strong> a computer security class a few days later. It took eight hours to<br />

write the virus program which consisted <strong>of</strong> only 200 lines <strong>of</strong> C code. This size<br />

is small for a program, but large for a virus, and most <strong>of</strong> this code was due<br />

to precautions the experimenters took to prevent uncontrolled spread <strong>of</strong> the<br />

virus. To cut down the time <strong>of</strong> the experiment, the virus had an interesting<br />

and original feature. It tried to infect the most-<strong>of</strong>ten-used programs first.<br />

When results were analyzed later, it was discovered that it took the virus<br />

less than half a second to infect a program (and this was on a busy day in a<br />

heavily-loaded time-sharing computer).<br />

The experiment was repeated five times and the virus managed to infect<br />

all the files on the computer in a minimum <strong>of</strong> five minutes. The average<br />

time for a complete takeover was 30 minutes, and the longest time was one<br />

hour. Other experiments followed, on other busy, multiuser computers (there<br />

were not many local-area networks available in the early 1980s). Dr. Cohen<br />

and his team had to ask permission to use such a computer, and had to be<br />

very careful not to inflict any damage on the many user programs running<br />

during the experiments. One <strong>of</strong> the most important, and unexpected, results<br />

<strong>of</strong> these experiments was psychological. As soon as the administrators <strong>of</strong><br />

a large time-sharing computer heard <strong>of</strong> the success <strong>of</strong> such an experiment<br />

on their computer, they prohibited any more experiments <strong>of</strong> this type. It<br />

is as if they said (or thought) “if your experiment on computer security<br />

has failed, then you have demonstrated that there is no problem and you<br />

can run more experiments. Once your experiment has been successful, you<br />

have discovered a vulnerability, and we cannot let you continue because you<br />

may cause damage.” The administrators felt that once the security <strong>of</strong> their<br />

computer has been compromised, even in an approved experiment, they have<br />

personally been somehow violated.<br />

The first personal computers were introduced in the mid 1970s, when<br />

the Internet was in its infancy. Those computers were designed for a single<br />

user and were not connected to any network, so there didn’t seem to be<br />

any need for security measures. The first viruses propagated between early<br />

personal computers by means <strong>of</strong> (now obsolete) floppy disks. The virus writer<br />

would include the virus on a floppy disk with some popular programs (<strong>of</strong>ten<br />

computer games), and distribute free copies <strong>of</strong> the disk. When an infected


2.2 <strong>Computer</strong> Viruses 43<br />

disk was inserted into a disk drive, the virus was executed, infecting the<br />

computer and every future floppy disk inserted in it. Over time, the use <strong>of</strong><br />

large computer labs in industry and education, and the increasing popularity<br />

<strong>of</strong> the Internet have made it much easier to propagate viruses, and have<br />

turned viruses into a major security issue.<br />

Being a nonmathematical entity, a computer virus cannot be defined<br />

rigorously, but many experts agree that a piece <strong>of</strong> s<strong>of</strong>tware that satisfies the<br />

following points should be included in the category <strong>of</strong> computer virus.<br />

It is capable <strong>of</strong> propagating between computers on a network. This is<br />

the most important attribute <strong>of</strong> a computer virus and it is what distinguishes<br />

a virus from other types <strong>of</strong> malicious s<strong>of</strong>tware.<br />

It installs itself in a host computer without the owner’s knowledge or<br />

consent.<br />

It has the potential to damage s<strong>of</strong>tware on the host by altering or deleting<br />

files.<br />

It can prevent legitimate users from using some or all <strong>of</strong> the computer’s<br />

resources.<br />

It embeds itself in an executable file (its host), such that when the file<br />

is executed, the virus is also executed. The virus is hidden inside the host.<br />

(But see exception for companion viruses on page 62.)<br />

The last clause in this definition (a virus is hidden in an executable program)<br />

raises three interesting points. (1) There are currently many different<br />

strains <strong>of</strong> viruses and not all <strong>of</strong> them hide in a host file. The companion<br />

virus <strong>of</strong> Section 2.8 is an example <strong>of</strong> a virus that associates itself with an<br />

executable file, but exists as an independent, invisible file. (2) Macro viruses<br />

(Section 2.10) embed themselves in data files. (3) This clause illustrates the<br />

difference between the three main types <strong>of</strong> malware. A Trojan horse also hides<br />

in a host, but does not replicate. A worm replicates but exists independent<br />

<strong>of</strong> any host files.<br />

(It is generally believed that a piece <strong>of</strong> s<strong>of</strong>tware cannot damage the actual<br />

hardware <strong>of</strong> the computer, but this is not strictly true. As an example,<br />

a malicious program can move the read/write head <strong>of</strong> a magnetic disk back<br />

and forth repeatedly every time the disk is not used by legitimate s<strong>of</strong>tware,<br />

thereby wearing out the disk’s high-precision mechanism. Repeated “treatment”<br />

<strong>of</strong> this kind may shorten the life <strong>of</strong> the disk considerably.)<br />

Exercise 2.3: Try to come up with more examples <strong>of</strong> s<strong>of</strong>tware capable <strong>of</strong><br />

damaging hardware.<br />

Recalling the definition <strong>of</strong> a Trojan horse, it is clear that a virus is a<br />

special case <strong>of</strong> a Trojan horse that can replicate itself and establish copies<br />

both inside and outside the computer. In principle, a virus doesn’t have to<br />

be malicious, but in practice programmers do not tend to write free programs<br />

that propagate and install themselves in computers in order to do good.


44 2 Viruses<br />

A typical computer virus consists <strong>of</strong> two parts <strong>of</strong> which the first takes<br />

care <strong>of</strong> the virus propagation and the second does the damage. Section 2.12<br />

lists various types <strong>of</strong> damage inflicted by viruses.<br />

Untraceability is the main feature that distinguishes a virus from other<br />

security threats. It is rare for law enforcement or security experts to track<br />

down the author <strong>of</strong> a virus, and it is this virtual guarantee <strong>of</strong> anonymity<br />

that encourages hackers to come up with sophisticated, destructive viruses.<br />

An interesting point to realize is that it takes an experienced programmer<br />

to write a virus, but less experienced programmers can later “take it from<br />

there” and modify and extend an existing virus to perform different tasks<br />

and cause new types <strong>of</strong> damage.<br />

Virus, predator or prey?<br />

<strong>Computer</strong> users and the general public view viruses as predators that<br />

attack computers and prey on their data, but a computer virus has a very<br />

different view on the same situation and it regards itself as prey. A virus is<br />

designed and implemented not just to attack, but also to survive. Its survival<br />

depends on fast reproduction and on avoiding detection. Most viruses are<br />

easy to detect and delete. It is also possible to avoid viruses by following<br />

simple procedures and using common sense.<br />

The conclusion: It’s important to consider both sides <strong>of</strong> an issue.<br />

Virus kits and polymorphic engines. A virus can be a simple program<br />

that can easily be detected and deleted or it can be a complex construction<br />

that hides itself in subtle ways. In either case, writing a virus<br />

requires some knowledge <strong>of</strong> the inner workings <strong>of</strong> the operating system the<br />

virus is designed to attack. Not everyone has such knowledge, which is why<br />

anonymous “volunteers” prepare virus kits and make them available in Web<br />

sites. Anyone can download such a kit, change the condition that triggers<br />

the virus, modify the virus’s payload, and release the virus in the hope to<br />

do harm. Thus, a virus kit is a tool for wannabees, those who want to be<br />

hackers but don’t have the time, the knowledge, or the talent to learn much<br />

about the operation <strong>of</strong> viruses. The kit automates the process <strong>of</strong> writing a<br />

virus.<br />

A polymorphic engine is sometimes confused with a virus kit, but it is not<br />

the same and has a different application. A polymorphic engine is s<strong>of</strong>tware<br />

that can be attached to a virus to make it polymorphic. Polymorphism<br />

(Section 2.20) is any technique that enables a virus to appear as different bit<br />

strings, thereby confusing anti-virus s<strong>of</strong>tware.


2.3 Virus Writers<br />

2.3 Virus Writers 45<br />

Where do viruses come from and who writes them? After years <strong>of</strong> research,<br />

including interviews with hackers and virus writers, Sarah Gordon, an IBM<br />

scientist and virus researcher, has come up with the following categories <strong>of</strong><br />

virus writers (this author has also contributed to the following list).<br />

Malicious intent. Such a person simply wants to do damage and cause<br />

harm.<br />

Aggression. An aggressive person needs a way to vent their aggression,<br />

and virus writing is as good as any other outlet.<br />

Contempt for all authority. In science there is no authority, but in other<br />

aspects <strong>of</strong> life we <strong>of</strong>ten have to bow to authority for the public good.<br />

Develop skills. A programmer hears about s<strong>of</strong>tware vulnerabilities and<br />

how they are exploited by viruses. He realizes that writing viruses is a good<br />

way to learn about s<strong>of</strong>tware flaws, and tries to write a virus (without any<br />

intent <strong>of</strong> releasing it or doing any damage) to see if he can strengthen weak<br />

s<strong>of</strong>tware and make it immune to viruses. Eventually,<br />

the virus is released, perhaps as an ultimate test. Such<br />

a person may also be fascinated with the miraculous<br />

capabilities <strong>of</strong> self-replicating code.<br />

Hobby and experiment. A programmer hears about<br />

viruses and decides to learn more about this unconventional<br />

field <strong>of</strong> programming. When a virus is finally<br />

written and debugged by him, the programmer faces a<br />

temptation to release it, and sometimes this temptation<br />

proves too great.<br />

Looking for acceptance in the underground fraternity <strong>of</strong> virus writers.<br />

Someone who wants to become a pr<strong>of</strong>essional programmer but is rejected<br />

by potential employers, may resort to becoming a respected member <strong>of</strong> the<br />

underground.<br />

The thrill and rush <strong>of</strong> adrenalin. A youngster who manages to shut down<br />

an important commercial server, release a “successful” virus, or break into a<br />

secret government computer enjoys a rare feeling <strong>of</strong> power.<br />

Enjoying the notoriety. It’s not hard to imagine the pride felt by an<br />

unknown (and possibly frustrated) person on seeing their virus listed in antivirus<br />

s<strong>of</strong>tware programs. Such a person may even send the source code<br />

<strong>of</strong> their virus to anti-virus companies, proposing a name for the virus, and<br />

claiming to keep these companies in business. It’s part <strong>of</strong> a personality game.<br />

Out <strong>of</strong> frustration. Personal frustration (see pr<strong>of</strong>iles below about the lack<br />

<strong>of</strong> girlfriends) <strong>of</strong>ten provides a good reason for someone to release malicious<br />

s<strong>of</strong>tware. Seeing others suffer may somehow compensate such a perpetrator<br />

for his suffering.


46 2 Viruses<br />

Political convictions. A patriot in an occupied or politically-repressed<br />

country may take out his frustration on others and feel powerful by releasing<br />

a virus.<br />

Social injustice. Someone who lives in a poor country or neighborhood<br />

may likewise feel better when he knows that others suffer too.<br />

Let someone else do the dirty job. There are Web sites with virus source<br />

codes written by programmers who wait for someone else to copy their code,<br />

perhaps modify it, and release it. The site’s owner does not disseminate their<br />

virus, but claims that it’s not their responsibility if someone else does. Such<br />

a claim reminds one <strong>of</strong> the slogan <strong>of</strong> the American National Rifle Association<br />

(NRA) “guns don’t kill people, people do.”<br />

Teach security personnel a lesson. Yes, let them learn once and for all<br />

how to protect their precious computers and other equipment. If I don’t<br />

teach them, who will?<br />

As years pass and more and more viruses appear and then disappear,<br />

sometimes on a daily basis, the answers to the questions “where do viruses<br />

come from and who writes them” become ever more elusive. Early viruses<br />

were a novelty and were <strong>of</strong>ten fully analyzed by volunteers, a process that<br />

sometimes also yielded clues to their origins. However, with the growing<br />

number <strong>of</strong> viruses and other types <strong>of</strong> malware (in addition to other security<br />

threats such as spam, DoS, and identity theft), detectives and researchers<br />

simply don’t have the time to disassemble, read, understand, and analyze<br />

them.<br />

Factors such as pr<strong>of</strong>essional and national pride also seem to contribute to<br />

this situation. Anti-virus companies and experts sometimes disagree about<br />

the origin, trigger, and payload <strong>of</strong> a virus. When one <strong>of</strong> them points a finger<br />

at a certain country C as the origin <strong>of</strong> a virus, the government <strong>of</strong> C, out<br />

<strong>of</strong> misplaced pride, <strong>of</strong>ten denies that anything bad can come out <strong>of</strong> C, and<br />

either ignores the problem or declares that it is under investigation.<br />

Another obstacle in the way <strong>of</strong> virus detectives is the mixed response <strong>of</strong><br />

the media and the public to news about virus writers. Often, newspaper and<br />

television coverage <strong>of</strong> a suspect’s investigation is mostly negative, but also<br />

contains a trace <strong>of</strong> admiration for the clever culprit and fascination at how<br />

he managed to defeat the combined talents <strong>of</strong> many computer pr<strong>of</strong>essionals.<br />

A well-known example is Onel de Guzman who was suspected <strong>of</strong> writing<br />

and disseminating the LoveLetter virus. While still under investigation, de<br />

Guzman was reported as receiving job <strong>of</strong>fers from computer companies.<br />

As a result <strong>of</strong> this, very few virus writers have been caught and convicted.<br />

Frustrated security workers sometimes claim that virus writing is a secure, if<br />

unpaid, occupation and this claim <strong>of</strong>ten leads to the following original idea:<br />

What if the virus writers are the anti-virus companies themselves? For an<br />

anti-virus company, writing a virus would be a paid occupation. Naturally, all<br />

the anti-virus s<strong>of</strong>tware makers deny this hypothetical claim and point out the<br />

following two strong arguments against it: (1) they are pr<strong>of</strong>essionals, whereas<br />

the average virus is obviously written by an amateur and (2) a company


2.3 Virus Writers 47<br />

consists <strong>of</strong> the people who work for the company and those people come and<br />

go. If a company started writing and transmitting viruses as a commercial<br />

policy, it would be just a matter <strong>of</strong> time before some employee would blow<br />

the whistle and leak out information about this activity.<br />

Law enforcement organizations, from small local police departments to<br />

the FBI and its opposite numbers in many countries stress the importance <strong>of</strong><br />

a pr<strong>of</strong>ile. They always try to determine the pr<strong>of</strong>ile <strong>of</strong> the average criminal and<br />

use it to identify suspects. In the case <strong>of</strong> virus writers, such pr<strong>of</strong>iles have been<br />

attempted, but they are considered weak because: (1) such a pr<strong>of</strong>ile is based<br />

on the small number <strong>of</strong> suspects that have been identified and (2) it seems<br />

that the pr<strong>of</strong>ile <strong>of</strong> virus writers is changing all the time and is moving away<br />

from amateurs, youngsters, and computer programmers toward pr<strong>of</strong>essional<br />

and organized criminals.<br />

Pr<strong>of</strong>ile <strong>of</strong> a Serial Arsonist<br />

A study involving 83 serial arsonists found that 82 percent were white,<br />

94 percent were male and half were age 27 or younger. Each had set about<br />

31 fires. Most serial arsonists had a history <strong>of</strong> prior crimes, with 87 percent<br />

reporting prior felony arrests.<br />

While two-thirds <strong>of</strong> the subjects had average or above-average intelligence,<br />

90 percent had only a high school education or less. Most subjects also<br />

had difficulties in their personal relationships or with socialization. Among<br />

the 83 subjects studied, there were 637 prior placements in institutions ranging<br />

from foster homes to jails.<br />

—From http://www.cbsnews.com/elements/, 7 July 2003.<br />

The following quotes, culled from various sites on the World Wide Web,<br />

illustrate attempts to develop a pr<strong>of</strong>ile for virus writers.<br />

Male. Obsessed with computers. Lacking a girlfriend. Aged 14 to 34.<br />

Capable <strong>of</strong> sowing chaos worldwide.<br />

They [virus writers] have a chronic lack <strong>of</strong> girlfriends, are usually socially<br />

inadequate, and are drawn compulsively to write self-replicating codes. It’s<br />

a form <strong>of</strong> digital graffiti to them<br />

(The above two pr<strong>of</strong>iles have inspired someone to come up with the<br />

following joke: Now I don’t know what to do: find a girlfriend or write a new<br />

deadly virus.)<br />

One <strong>of</strong> the few known virus writers is Marcus Velasco, the 32 year old<br />

author <strong>of</strong> Lasco.A, a worm that targets cell phones with the Symbian operating<br />

system and Bluetooth functionality (see year 2005 in Appendix C).<br />

Here is his pr<strong>of</strong>ile in his own words (as told in the email interview he granted<br />

to the Finnish IT weekly, ITviikko)<br />

“I’m a pr<strong>of</strong>essional programmer. Viruses, hacking and security are my<br />

favourites. Viruses are my life.. . . I wanted to demonstrate how the worm


48 2 Viruses<br />

works. The reason I published the source code was that the anti-virus researchers<br />

at Kaspersky did not believe it was mine.”<br />

(The following is quoted from the excellent article [Gordon 05].) “Earlier<br />

research has empirically demonstrated the cyclic nature <strong>of</strong> virus writing<br />

activity: as virus writers ‘age out,’ new virus writers take their places.<br />

Enhanced connectivity amplifies the existing problem and various technical<br />

factors result in new types <strong>of</strong> virus writers surfacing as the cycle repeats.<br />

However, a new variable has recently been introduced into the cycle: high<br />

pr<strong>of</strong>ile legal intervention. The virus writing community now has experienced<br />

visits by concerned law enforcement personnel; there have been arrests and<br />

there will be sentencings. New laws are being considered, enacted, and acted<br />

upon. Thus, the virus writing scene is no longer a casual pastime <strong>of</strong> kids on<br />

local Bulletin Board Systems.”<br />

What Makes Johnny (and Jane) Write Viruses?<br />

The face <strong>of</strong> virus writers has shifted since [Sarah] Gordon began interviewing<br />

them nearly a decade ago. A writer can be a teenager coding in the family rec<br />

room or an undergrad on a university system. Ten years ago, virus writers<br />

averaged 14 to 17 years old; today they’re 25 to 28. David L. Smith, who<br />

was convicted <strong>of</strong> writing and distributing the Melissa virus, was 30 when he<br />

was arrested in 1999.<br />

Usually, older virus writers work as engineers or system administrators<br />

in the computing industry. Evul is an engineer; Smith was a network programmer.<br />

And Gordon is in touch with some <strong>of</strong> the few female writers, such as<br />

a 16-year-old European girl who goes by “Gigabyte.” Female virus writers<br />

like her are generally motivated by an urge to impress boyfriends or male<br />

peers, to be accepted in a predominantly male club. But Gordon knows at<br />

least one female virus writer in her early 50s. Another, in her 40s, works at<br />

a government agency, Gordon says.<br />

It’s not simply that teen virus writers are aging. In the past, most lost<br />

interest in viruses when they began a pr<strong>of</strong>ession around age 22. Today, they<br />

may still code viruses after entering the workforce. Some don’t even start<br />

until their mid- to late 20s.<br />

(http://www.pcworld.com/news/article/0,aid,34405,pg,2,00.asp), 1/28/05.<br />

Research papers on the psychology and mentality <strong>of</strong> virus writers can be<br />

found at [badguys 05], especially the “papers” section.


2.4 Virus Propagation<br />

2.4 Virus Propagation 49<br />

A virus can propagate from file to file in a computer and from one computer<br />

to another in several ways as follows:<br />

Once a virus has infected a program in the computer, it (the virus) is<br />

executed every time the program is executed. The virus can start by selecting<br />

an executable file at random and infecting it if it hasn’t been infected yet. In<br />

this way, the virus can propagate inside the computer and eventually infect<br />

all the executable files. (When a virus executes, it may also check its trigger<br />

and may decide to activate its payload, but this issue, which is treated in<br />

Section 2.16, is separate from its propagation.)<br />

A variation on the previous method is a virus that establishes itself in<br />

memory. When the virus executes, it copies itself into memory and remains<br />

there until the computer is turned <strong>of</strong>f or is restarted (in addition, the virus<br />

may locate a clean file and infect it). Obviously, it is not enough for the<br />

virus to reside in memory. It needs a mechanism that will direct the CPU<br />

to it and execute it, and the natural candidate for this mechanism is the<br />

interrupts that the computer supports. Interrupts (also referred to as traps<br />

or hooks) and their use by viruses are discussed in Section 2.22. A favorite<br />

<strong>of</strong> viruses is the interrupt that occurs each time an external disk drive or a<br />

DVD is inserted into a USB port. Once this interrupt occurs, the virus is<br />

executed as part <strong>of</strong> the interrupt-handling routine and it tries to infect the<br />

newly inserted volume.<br />

A virus may propagate to other computers through infected s<strong>of</strong>tware.<br />

The virus writer may write a useful program (a calculator, a nice clock, or a<br />

beautiful screen saver), embed a virus or a Trojan horse in it, and distribute<br />

it, as shareware or freeware, from his Web site. When someone downloads<br />

this program and executes it, it may perform its innocuous job (to hide its<br />

malicious intent), while also executing the virus (or the Trojan horse) part.<br />

That part may replicate malicious code and embed it in another program, or<br />

may do its damage in other ways. It is also possible to rig a compiler such<br />

that it will infect any program it compiles (or just certain programs) with a<br />

virus or a Trojan horse (page 127).<br />

As an email attachment. An attachment is a useful feature <strong>of</strong> email.<br />

When sending email, we may attach to it an image, a text file, a video, an<br />

audio file, or an executable program. The attachment is a file, and there may<br />

be several attachments to a message. A virus writer may send email messages<br />

to many recipients, with the virus attached as an executable program<br />

purporting to be a useful program or even pretending to be a different type<br />

<strong>of</strong> data, such as an image. When the recipient opens the attachment, the<br />

virus is executed.<br />

An email message may claim to come from, say, Micros<strong>of</strong>t and to contain<br />

a patch for the operating system to increase security. The message may have<br />

a sender address that looks superficially like a Micros<strong>of</strong>t address.<br />

A typical, real example is an email message where the subject line is<br />

drawn randomly from the following list:


50 2 Viruses<br />

Re: Details, Re: Approved, Re: Re: My details, Re: Thank you!<br />

Re: That movie, Re: Wicked screensaver, Re: Your application,<br />

Thank you!,Your details.<br />

And the content is “Please see the attached file for details.” The attached<br />

executable file may be called movie0045.pif and is a virus (Trojan horse)<br />

whose standard designation is W32.Sobig.F@mm. Other common names for<br />

the attached file are:<br />

your_document.pif, document_all.pif, thank_you.pif, your_details.pif<br />

details.pif, document_9446.pif ,application.pif, wicked_scr.scr<br />

Large providers <strong>of</strong> email, such as Yahoo, MSN, and AOL, employ their<br />

own virus detection s<strong>of</strong>tware that scans every email attachment and warns<br />

the user when a known virus is found in an email message.<br />

The recipient may also be asked to forward an infected email message.<br />

Forwarding email is easy and common, so a virus can quickly spread and infect<br />

many computers. Sophisticated viruses can start their “job” by scanning<br />

the host computer for email addresses and automatically send the infected<br />

message to all the addresses they find. Clearly, a person would tend to trust<br />

a message coming from someone they know, thereby making it easy for the<br />

virus to spread in this way.<br />

Another way <strong>of</strong> spreading viruses through email is to send email in<br />

HTML format. Such email can have several fonts, colors, and backgrounds<br />

and may include images. However, a virus can be hidden in such code and be<br />

triggered when the message is previewed. Examples <strong>of</strong> such menace are the<br />

KAK Worm (Section 5.9) and the VBS Bubbleboy virus. Users may want to<br />

either turn email HTML receiving <strong>of</strong>f or preview only the first few lines <strong>of</strong> a<br />

message.<br />

When receiving email with an attachment, a user should ask the following<br />

questions: Is the email sender someone I know? Have I received email<br />

from this sender in the past? Do I expect email with an attachment from<br />

this sender? Do the sender name, subject line, and message content make<br />

sense for an attachment? If the answers to all these are positive, it may make<br />

sense to take the risk and open the attachment.<br />

We <strong>of</strong>ten hear the following statement “I don’t open attachments from<br />

people I don’t know,” but this is similar to saying “I do open email attachments<br />

from those I do know.” Always bear in mind that a person you know<br />

and trust may unwittingly send you an infected attachment.<br />

A macro virus spreads when users share data files. This type <strong>of</strong> virus is<br />

described in Section 2.10.<br />

In summary, viruses spread through sharing, programming, and modifications.<br />

Each time users share a computing resource such as a disk, a file, or<br />

a library routine, there is the risk <strong>of</strong> infection. When a program is written, a<br />

virus may be embedded in it by the programmer, and may spread when the<br />

program is executed. Similarly, when a file (executable or data) or any other<br />

resource is modified or updated, a virus may be installed, that later spreads<br />

and infects other files.


2.5 Virus Classification 51<br />

<strong>Computer</strong> viruses and other malware are so common today that in spite<br />

<strong>of</strong> our best efforts to protect ourselves, we expect our computers to be infected<br />

at a certain point. However, no one expects a brand new, just delivered,<br />

computer to be infected, yet stories about such cases circulate from time to<br />

time. Similarly, when a computer is taken to a shop to be repaired, we expect<br />

it to be returned in better shape, and certainly not infected. Along the same<br />

lines, when a program is downloaded from a hackers’ site and is found to be<br />

infected, no one is surprised, but when a newly-purchased program from a<br />

reputable s<strong>of</strong>tware maker arrives on a DVD and is found to be infected (a rare,<br />

but not unheard-<strong>of</strong> occurrence), we really become aware <strong>of</strong> the magnitude <strong>of</strong><br />

the threat posed by rogue s<strong>of</strong>tware.<br />

2.5 Virus Classification<br />

It is possible to classify computer viruses in several ways as follows:<br />

By the infection mechanism <strong>of</strong> the virus. This classification is the topic<br />

<strong>of</strong> this section.<br />

By the damage the virus inflicts (its payload). This is the topic <strong>of</strong><br />

Section 2.16.<br />

By the trigger mechanism. This classification is not very useful.<br />

By the platform or operating system the virus infects. This classification<br />

is <strong>of</strong>ten employed by virus (more precisely, anti-virus) workers and is<br />

discussed in Section 2.18.<br />

Viruses can be classified by their spreading and hiding mechanisms. A<br />

virus can be a boot sector infector (Section 2.6), a file infector (Section 2.7),<br />

an email virus, or a macro virus (Section 2.10). Combinations <strong>of</strong> the above are<br />

also possible. A companion virus (Section 2.8) is an example <strong>of</strong> a combination<br />

virus. It borrows the name <strong>of</strong> another file and becomes its companion. Virus<br />

concealment methods are also discussed in Section 2.19.<br />

A File infector virus embeds itself in an executable file and is executed<br />

when the file is executed. File infectors can be classified by looking at how<br />

they embed themselves into the host program. Several techniques (discussed<br />

in detail in Section 2.7) have been observed and are listed here.<br />

A shell virus forms a shell around the original program.<br />

A nonoverwriting virus appends its code to the target program and modifies<br />

the program to ensure the virus’ execution each time the program is executed.<br />

The infected program is slightly modified, but can still be executed<br />

and perform its intended task.


52 2 Viruses<br />

An overwriting virus embeds itself inside the infected program, thereby<br />

erasing part <strong>of</strong> its code. When the program is executed, it may perform part<br />

<strong>of</strong> its job, then execute the virus, and finally may crash or do something<br />

unexpected.<br />

An intrusive virus replaces some <strong>of</strong> the original code <strong>of</strong> the program,<br />

typically a procedure (<strong>of</strong>ten an interrupt-handling procedure).<br />

A simple virus may arrive in the computer as part <strong>of</strong> a host program.<br />

Each time the host program is executed, the virus selects a candidate for<br />

infection and infects it by overwriting part <strong>of</strong> it. When the candidate is<br />

later executed, the virus is executed and a crash or another problem occurs,<br />

because the candidate has been damaged. The original virus stays in the<br />

host program and infects more candidates.<br />

A boot sector virus (or a boot sector infector, BSI, Section 2.6) embeds<br />

itself in the boot sector <strong>of</strong> a disk or a DVD, and becomes memory resident<br />

when the computer is booted from the disk (if the disk is bootable) or when<br />

the disk is inserted into a disk drive and is read. The virus stays in memory<br />

while the computer is on, so it can infect any disk mounted in the computer.<br />

On the other hand, this type <strong>of</strong> virus is relatively easy to detect, because it<br />

(or at least its first part) is located at the same position on every infected<br />

disk. A BSI can infect hard disks, but can propagate only when an infected<br />

removable volume (such as an external disk drive or a flash memory card) is<br />

moved from computer to computer.<br />

A multipartite virus (Section 2.9) combines the advantages <strong>of</strong> BSIs<br />

and file infectors. Such a virus can, in principle, be very effective and spread<br />

like lightning. However, this type <strong>of</strong> virus is rarely seen in practice because<br />

it is difficult to design and implement.<br />

A macro virus (Section 2.10) embeds itself in a data file. In computer<br />

programming, the term macro refers to a sequence <strong>of</strong> commands and character<br />

strings that’s assigned a name. When the name <strong>of</strong> the macro is found in<br />

a document file (such as a text or a spreadsheet file), the macro is expanded.<br />

Macros embedded in document files are useful, but can also be viruses.<br />

An operating system virus copies itself into one or more operating<br />

system files and gets executed each time any <strong>of</strong> those files is executed by the<br />

operating system. This type is also potent because system files are executed<br />

very <strong>of</strong>ten and perform important tasks for the user. For example, if the virus<br />

embeds itself in the launcher, it will be executed each time the user launches<br />

a program. Once the virus is detected, disassembled, and read, experts can<br />

determine where (in what operating system files) the virus hides itself. This<br />

knowledge makes it easy to check and disinfect a suspect computer.<br />

A general application virus attaches itself to an application (more<br />

likely, to several applications) and executes each time the user launches an<br />

infected application. Such a virus propagates easily, because users tend to<br />

share applications, but its effect is restricted, because it is executed only<br />

when an infected application is launched by the user.


2.5 Virus Classification 53<br />

A memory resident virus. A virus can reside in memory, but the<br />

term “memory resident” does not explain how such a virus operates. We<br />

therefore end this section with a short discussion <strong>of</strong> viruses and interrupts.<br />

For a program A to be executed, it is not enough for it to be memory<br />

resident. Some other program has to jump to the start <strong>of</strong> A. A memoryresident<br />

virus can use the interrupt mechanism (see discussion <strong>of</strong> interrupts in<br />

Section 2.21) to direct execution to itself whenever certain interrupts occur.<br />

A typical example is the interrupt sent by a USB port every time a volume is<br />

connected to it. A virus that replaces the handling routine for this interrupt<br />

will be invoked every time a volume is connected and will therefore be able<br />

to infect the volume and release any other payload.<br />

The virus can do more than just infecting and damaging. It can exploit<br />

interrupts to hide itself. Imagine a virus detective trying to locate the virus<br />

on the disk. The detective has to read the boot sectors and examine them, but<br />

the (memory resident) virus can (and normally does) defeat that. The virus<br />

modifies some <strong>of</strong> the interrupt routines and also the part <strong>of</strong> the operating<br />

system responsible for disk input/output (in the old DOS operating system<br />

this part was called BIOS). If this is done properly, the virus is invoked by<br />

the BIOS routines each time a program wants to read a sector. The virus<br />

then examines the read command, and if the command wants to read a boot<br />

sector (sector 0 <strong>of</strong> track 0, Figure 2.2(a)), the virus changes the disk address<br />

<strong>of</strong> the read operation from (0, 0) to where it has hidden the original boot<br />

sector (Figure 2.2(b)).<br />

Bootstraploader<br />

(a)<br />

Virus<br />

Bootstrap (hidden) Figure 2.2: A Bootstrap Loader Hidden in a Disk.<br />

An associated problem faced by this type <strong>of</strong> virus is secondary infection.<br />

Before infecting a new disk, the virus has to make sure the disk hasn’t<br />

been infected already. Thus, the virus must contain a unique fingerprint or<br />

signature.<br />

⋄ Exercise 2.4: What’s wrong with double infection?<br />

The virus can hide the original boot sector in one <strong>of</strong> the free sectors<br />

(if any) on the disk. The virus uses some <strong>of</strong> the free sectors, removes them<br />

from the chain, and declares them bad. An alternative is to create an extra<br />

(b)


54 2 Viruses<br />

cylinder on the disk. The capacity <strong>of</strong> a cylinder is larger than what a virus<br />

needs and its presence cannot be detected by the operating system because it<br />

receives the number <strong>of</strong> cylinders from the disk’s header. Current disk drives<br />

have large data capacities in a physically-small volume, so any added cylinder<br />

would be too close to the edge <strong>of</strong> the disk and would be unreliable. Older<br />

disks, both hard and floppy, were more amenable to this technique.<br />

It takes an experienced virus detective to foil such a sophisticated virus.<br />

We were following the Bucentoro, and seated near the lady I allowed myself<br />

a few slight liberties, but she foiled my intentions by changing her seat.<br />

—Giacomo Casanova, The Complete Memoirs <strong>of</strong> Casanova.<br />

2.6 Boot Sector Viruses<br />

A boot sector infector (BSI) is a computer virus that resides in the boot<br />

sector <strong>of</strong> a disk. Each time the disk is mounted, the boot sector is read<br />

and executed, causing the virus to be executed. This section discusses boot<br />

sectors and how a BSI operates.<br />

The directory <strong>of</strong> a disk reflects the file structure <strong>of</strong> the disk and provides<br />

the user with all the information that’s normally needed about the files.<br />

However, in addition to the files listed in the directory, there is at least one<br />

program that’s not listed there. It resides in the boot sector <strong>of</strong> the disk<br />

and it is executed each time the disk is mounted. The boot sector <strong>of</strong> a disk<br />

is normally the first sector (sector 0 <strong>of</strong> track 0) <strong>of</strong> the disk, and its format<br />

depends on the operating system. Often, the boot sector occupies more than<br />

one disk sector. It may also include a table with information about the disk<br />

itself (such as maker, date <strong>of</strong> manufacture, model and serial numbers, size<br />

and number <strong>of</strong> tracks) and on the various partitions <strong>of</strong> the disk.<br />

What’s important for our purposes is the fact that the boot sector contains<br />

a program that’s executed each time the computer is booted. To understand<br />

what this program does, we describe the principles <strong>of</strong> the boot process<br />

(see also page 70). The discussion <strong>of</strong> boot sectors in this section follow the<br />

convention used by current PCs. It is simple, easy to understand, and fairly<br />

general, but other computers may use boot sectors in different ways.<br />

A computer operates by executing a program. A computer without a<br />

program can do nothing. This implies that a newly-bought computer must<br />

have a program built into it. This program is called the bootstrap loader<br />

and is stored in read-only memory (ROM), which is nonvolatile (it keeps its<br />

content when the power is turned <strong>of</strong>f). Each time the computer is booted<br />

(started or restarted), it executes the bootstrap loader. This short program<br />

reads the first part (the kernel) <strong>of</strong> the operating system from a disk or a DVD<br />

and starts it. The kernel then reads the remainder <strong>of</strong> the operating system<br />

and stores it in memory.<br />

The point is that the bootstrap loader is stored in ROM and is difficult<br />

and time consuming to replace. The bootstrap loader should therefore<br />

be general and be able to load any version <strong>of</strong> the operating system—past,


2.6 Boot Sector Viruses 55<br />

present, and future—from any bootable device. Currently, PCs run Windows,<br />

Linux, or Solaris operating systems and each <strong>of</strong> these goes through<br />

newer versions periodically. In the future there may be other operating systems.<br />

Currently, bootable volumes are disks, CDs, or DVDs, but in the<br />

future there will be other technologies, such as large-capacity flash memories<br />

and solid-state memories. Another complication arises because a bootable<br />

volume may be divided into several partitions, each <strong>of</strong> which may contain a<br />

different operating system. Thus, the bootstrap loader should not be limited<br />

to loading just one type or one version <strong>of</strong> the operating system.<br />

The bootstrap loader starts by looking for a bootable volume (disk or<br />

DVD) and it follows simple rules to determine which bootable volume to<br />

select if it finds more than one. The bootstrap loader then reads the volume’s<br />

master boot sector, loads it in memory, and executes a jump instruction to<br />

its beginning. The boot sector contains a short program called the master<br />

boot record (MBR). This program knows about the various partitions <strong>of</strong> the<br />

volume and how to read the boot sector <strong>of</strong> each. It locates all the operating<br />

systems in the various partitions <strong>of</strong> the volume and lists them for the user to<br />

select one. Once a specific operating system has been selected on partition<br />

P, the MBR reads the partition boot sector (PBS) <strong>of</strong> P and executes it. The<br />

short program <strong>of</strong> the PBS reads and loads the kernel <strong>of</strong> the operating system,<br />

and it loads the rest.<br />

There is only one satisfying way to boot a computer.<br />

—J. H. Goldfuss.<br />

The ideal place for a virus is in the bootstrap loader, because this program<br />

is the very first one to execute. This loader, however, is made in a factory<br />

and its content is permanent (current bootstrap loaders have firmware<br />

and can be modified when new versions <strong>of</strong> the operating system are released).<br />

The next best place for a virus is the MBR or one <strong>of</strong> the PBSs. A virus that’s<br />

hidden in these locations is called a boot sector infector or BSI.<br />

The precise organization <strong>of</strong> a disk depends on the operating system. A<br />

disk may have one bit in its boot sector informing the bootstrap loader or<br />

other operating system routines whether the disk is bootable or not. Alternatively,<br />

a nonbootable disk may have a program in its boot sector and the<br />

operating system may have to execute this program to find out whether the<br />

disk is bootable. In the latter case, a virus can hide in the boot sector <strong>of</strong><br />

nonbootable disks.<br />

An important point to consider is that the virus doesn’t have to be physically<br />

located in the boot sector. The boot sector contains a loader program<br />

that reads other operating system routines and stores them in memory. It<br />

is therefore enough for the virus writer to write the virus as a file on the<br />

bootable disk and to modify the loader to load the virus from the disk while<br />

it loads other programs. Even though the virus is written on the disk, it may<br />

not appear in the disk directory. It may also be written in an extra track,<br />

especially formatted on the infected disk. Disk utilities and anti-virus s<strong>of</strong>tware<br />

read the number <strong>of</strong> tracks from a table in the disk itself, and therefore<br />

know how many tracks to read and examine. An extra, undocumented track,


56 2 Viruses<br />

either close to the edge <strong>of</strong> the disk or between existing tracks, may be an<br />

ideal place to hide a virus.<br />

Figure 2.3 illustrates two variations on this technique. Part (a) <strong>of</strong> the<br />

figure shows a bootstrap loader located in track 0 <strong>of</strong> a disk. Part (b) shows<br />

how a virus may move the original loader to a new, extra track and install<br />

itself instead <strong>of</strong> the loader. Part (c) shows another bootstrap loader that’s<br />

going to be disturbed a little (in part (d)) by the incoming BSI virus. The<br />

virus installs itself in the new track. It cuts a small part (x) <strong>of</strong> the loader,<br />

moves it to the end <strong>of</strong> the virus, and replaces it with a JUMP to the start <strong>of</strong><br />

the virus. When the virus completes its execution, part x is executed, and<br />

then control is transferred to the bootstrap, to finish its execution.<br />

������<br />

��������� ������<br />

�����<br />

�����<br />

��� ���<br />

��������� ������<br />

�����<br />

����� �����<br />

Figure 2.3: A BSI Hidden in a Disk.<br />

��������� ������<br />

�<br />

���<br />

���� �� �� ���������<br />

��������� ������ ����������<br />

Exercise 2.5: Suggest another, legitimate use for an extra track on a disk.<br />

Writing a boot sector virus for a certain platform and operating system<br />

is only the first step. The next task for the virus writer is to initiate the<br />

propagation <strong>of</strong> the BSI, and this can be done in several ways as follows:<br />

The author can prepare a nonbootable removable volume (external, flash,<br />

CD, or other) with a popular program and infect the volume with the virus.<br />

The disk is then given away to a friend or an acquaintance. Once the infected<br />

volume is inserted into a computer, the virus is executed. It loads itself into<br />

memory, looks for noninfected executable files, and infects them. Each time<br />

a volume is mounted, an interrupt occurs and the virus is again executed. If<br />

the disk is removable, the virus infects it. (An internal hard disk is mounted<br />

when the computer is started or restarted. An external volume is mounted<br />

when it is connected to a port in the computer.)<br />

A similar scenario, but this time the virus writer makes many copies <strong>of</strong><br />

the disk and sells them to eager computer users who look for inexpensive<br />

s<strong>of</strong>tware. This makes sense for a virus writer living in an unfriendly country,<br />

especially someone who owns a store. The brain virus (Section 5.2) is an<br />

important historical example <strong>of</strong> this type <strong>of</strong> virus.<br />

���<br />


2.7 File Infector Viruses 57<br />

Similarly, the virus writer may prepare bootable copies <strong>of</strong> an infected<br />

DVD with the latest version <strong>of</strong> the operating system and sell them inexpensively.<br />

When such a DVD is inserted into a computer, the virus becomes<br />

memory resident and it infects executable files and any mounted volumes.<br />

The author prepares an infected removable disk or DVD. He then goes to<br />

a computer lab or an Internet cafe and inserts the disk into a computer. Once<br />

some executable files on that computer have been infected, anyone running<br />

any <strong>of</strong> these files will cause the virus to execute, potentially infecting any<br />

disks (and even rewritable CDs and DVDs) mounted by the user.<br />

A BSI can infect hard disks, but can propagate only when an infected<br />

removable volume is moved from computer to computer.<br />

2.7 File Infector Viruses<br />

A file infector is a virus that infects an executable file and is executed each<br />

time the file is executed. The fact that the virus is executed only when the<br />

file is executed implies that it has fewer chances to execute than a boot sector<br />

infector. On the other hand, it is easier to code a file infector because this<br />

does not require the detailed knowledge <strong>of</strong> operating system internals needed<br />

to implement a BSI. This is why there are more file infector virus strains than<br />

boot sector infectors, but fewer computers are infected by them. Experience<br />

shows that a typical file infector can infect only one type <strong>of</strong> file and the<br />

common explanation for this is that the average virus writer doesn’t want<br />

to spend the time needed to learn the structure <strong>of</strong> several executable files.<br />

The writer finds out the detailed format <strong>of</strong> one executable file, say, Adobe<br />

photoshop, and then writes a virus to infect this file and waits for the results.<br />

File infectors that can infect two types <strong>of</strong> executable files are generally much<br />

bigger than those that can infect only one type <strong>of</strong> file, and as a result tend<br />

to have more bugs. A file infector embeds itself into an executable file in one<br />

<strong>of</strong> several ways as follows:<br />

The virus may form a shell around the original program (this is a shell<br />

virus, Figure 2.4(a)). The virus then becomes the main program and the<br />

original program becomes a procedure invoked by the virus.<br />

The virus embeds itself into the original code <strong>of</strong> the program, overwriting<br />

part <strong>of</strong> that code (Figure 2.4(b), which illustrates how a virus can fragment<br />

itself and hide in “holes” in the program). This is an overwriting virus. Such<br />

an embedding technique simplifies the virus writer’s task, but damages the<br />

program, thereby prompting the user to delete the program file and replace it<br />

with a clean copy (that may later be reinfected). As a result, an overwriting<br />

virus <strong>of</strong>ten gets only one chance <strong>of</strong> executing, and should therefore try to<br />

infect as many executable files as possible.<br />

In order for an overwriting virus to be effective, it shouldn’t be embedded<br />

at a random location in the program. It must be embedded between two<br />

instructions, never in the midst <strong>of</strong> an instruction, and it should be embedded


58 2 Viruses<br />

�������� �������<br />

����� �������� �������<br />

���� ������<br />

���<br />

���<br />

�������� �������<br />

�����<br />

Figure 2.4: (a) Shell Virus. (b) Overwriting Virus.<br />

at a part <strong>of</strong> the program that has a good chance <strong>of</strong> executing. Here is what<br />

these points mean:<br />

1. Instructions in modern computers have different sizes. Most instructions<br />

are 1, 2, or 3 bytes long. Imagine a 2-byte instruction with a virus<br />

embedded between its 2 bytes. When the computer gets to this instruction,<br />

it will fetch the first byte <strong>of</strong> the instruction and the first byte <strong>of</strong> the virus.<br />

The resulting 2 bytes may or may not be the code <strong>of</strong> a valid instruction. If<br />

the result happens to be the code <strong>of</strong> an instruction, it will be executed (and<br />

will likely do something strange, wrong, and unexpected) and the computer<br />

will fetch the next byte or two, which may or may not be a valid instruction.<br />

In this case, something will eventually go wrong, but there is a chance that<br />

part <strong>of</strong> the virus will be executed properly. If the result is not the code <strong>of</strong> an<br />

instruction, the execution hardware will issue an (invalid instruction) interrupt,<br />

and the operating system will take over. It will abort the program and<br />

display an error message which will only confuse the user.<br />

2. Programmers know from long experience that a program tends to<br />

spend most <strong>of</strong> its time in a few loops. Most <strong>of</strong> the instructions in a program<br />

are rarely executed. A good example <strong>of</strong> such instructions is an error routine<br />

which is executed only when an error is discovered. If the virus is embedded<br />

in such a routine, it (the virus) will be executed only when the program<br />

discovers an error and invokes the routine.<br />

Exercise 2.6: Search the Internet for “Pareto principle.”<br />

To ensure that the virus will embed correctly in the program file, the<br />

virus writer has to check various locations in the file and find a safe location.<br />

This has to be done before the virus is released. Suppose that the virus writer<br />

wants the virus to infect files with programs A, B, or C. The virus has to<br />

be experimentally embedded by its writer at different locations in program<br />

A until a location X is found where executing A causes the virus to execute<br />

properly. The pair (A, X) <strong>of</strong> name and location should now be built into<br />

the virus, and similar pairs for programs B and C should be determined<br />

experimentally and included in the virus code. Once this testing is complete,<br />

the virus will be able to infect these three programs and execute properly<br />

when they are executed.<br />

An overwriting virus preserves the size <strong>of</strong> the infected file, but this<br />

doesn’t make it harder to discover, because modern virus detection s<strong>of</strong>tware<br />

relies on more than the file size to detect viruses. Even a simple checksum


2.7 File Infector Viruses 59<br />

will detect a change in the composition <strong>of</strong> the file, which will immediately<br />

raise suspicion.<br />

An overwriting virus that tries to hide its presence may sometimes copy<br />

itself close to, but not precisely at, the start <strong>of</strong> the infected file. This technique<br />

is known as entry point obscuring or EPO.<br />

A sophisticated overwriting virus may try to locate a string <strong>of</strong> nulls in<br />

the executable file and embed itself there. Such a string may be space that’s<br />

reserved by the program for an array or a stack, so occupying it will not<br />

damage the executable part <strong>of</strong> the code. This type <strong>of</strong> overwriting virus faces<br />

two problems: (1) When it is executed, the program may write data into the<br />

array (or stack), thereby erasing parts <strong>of</strong> the virus. (2) Just embedding the<br />

virus in an array will not cause it to execute. The virus still has to modify<br />

something, at least a jump or a call instruction, in the program to ensure<br />

that it will be executed. The CIH virus (year 1998 in Appendix C) is an<br />

example <strong>of</strong> such an overwriting virus.<br />

An overwriting virus can exploit certain features <strong>of</strong> the particular operating<br />

system it is meant to attack in order to make itself harder to detect.<br />

Certain operating systems require that a file size be a multiple <strong>of</strong> a certain<br />

size (perhaps 512 bytes). Sometimes even the size <strong>of</strong> the header <strong>of</strong> a file must<br />

be a multiple <strong>of</strong> a certain size. In such a case, there normally is some empty<br />

space at the end <strong>of</strong> the file (or at the end <strong>of</strong> the header) that can safely be<br />

used by the virus to hide itself in.<br />

A variant <strong>of</strong> the previous type hides itself by corrupting the disk directory.<br />

For each file on the disk, the directory contains, in addition to the file<br />

name, type, size, and other items, also the start address <strong>of</strong> the file on the<br />

disk (the sector number or sector and track numbers). When the virus is executed<br />

for the first time in an infected computer, it writes itself on the main<br />

hard disk as a file, but does not include itself in the directory (or includes<br />

itself as an invisible file). It then scans the directory until it finds a file A it<br />

wants to infect. It saves the disk address <strong>of</strong> A and changes this address in<br />

the directory to its own start address. When the user wants to execute file A,<br />

the operating system follows the disk address found in the directory, which<br />

leads it to the virus. The virus is executed and when done it may decide to<br />

execute program A so as not to raise suspicion. Such a virus may be termed<br />

a misdirection virus and can be implemented such that it will misdirect the<br />

execution <strong>of</strong> several different programs to (different entry points in) itself.<br />

Notice that it does not infect any executable files, only their disk addresses<br />

in the disk directory.<br />

Like an illusionist, the virus writer attempts to distract us with smoke and<br />

mirrors from the real mechanism at work.<br />

—[Harley et al. 01], Viruses Revealed.<br />

The virus is add-on (most viruses are <strong>of</strong> this type). Such a virus appends<br />

its code to either the start or the end <strong>of</strong> the target program. It then modifies<br />

the first executable instruction(s) <strong>of</strong> the program to execute the virus before<br />

executing the program itself. Such a file leaves the host program virtually


60 2 Viruses<br />

unchanged and only increases its size. Real viruses <strong>of</strong> this type have been<br />

observed to behave in two different ways.<br />

1. The virus increases the size <strong>of</strong> the target program file, moves the<br />

original program code to the end <strong>of</strong> the file, then installs a copy <strong>of</strong> itself at<br />

the beginning.<br />

2. The virus extends the size <strong>of</strong> the target program file, so the file has a<br />

blank space at the end (Figure 2.5(a),(b)). It then copies a few bytes from the<br />

start <strong>of</strong> the target program, pastes them to the end <strong>of</strong> the blank space, and<br />

precedes them with a copy <strong>of</strong> itself (Figure 2.5(c)). The virus then stores<br />

a jump instruction at the start <strong>of</strong> the target program, replacing the bytes<br />

that have been moved. When the target program is executed, the jump is<br />

executed first, directing the flow <strong>of</strong> execution to the virus. The virus performs<br />

its operation, then restores the moved bytes and jumps to the start <strong>of</strong> the<br />

program (Figure 2.5(d)). This scheme is termed a nonoverwriting virus. A<br />

variation on this technique leaves the virus as a separate file and replaces<br />

the first few bytes <strong>of</strong> the target program with a jump to the virus. When<br />

done with its task, the virus restores those few bytes and jumps to the first <strong>of</strong><br />

them, to execute the target program. The virus writer has to be familiar with<br />

the file structure <strong>of</strong> the particular operating system, because an executable<br />

file <strong>of</strong>ten starts with a header (for the use <strong>of</strong> the system launcher) and the<br />

first executable instruction is not the first byte <strong>of</strong> the file.<br />

�������� ������� ���<br />

��� ���� ������ ������� ����� ��<br />

�������� ������� ����� ��� �������� �������<br />

���<br />

Figure 2.5: Nonoverwriting Virus.<br />

�����<br />

Exercise 2.7: Use your programming skills and knowledge <strong>of</strong> file structure<br />

to propose a variant <strong>of</strong> this technique.<br />

An intrusive virus replaces some <strong>of</strong> the original code <strong>of</strong> the program. The<br />

virus may replace a procedure (a regular procedure or an interrupt-handling<br />

procedure) or may replace most <strong>of</strong> the program. In the latter case, the<br />

virus may simulate the operation <strong>of</strong> the program while adding its destructive<br />

function.<br />

A simple virus may arrive in the computer as part <strong>of</strong> a host program.<br />

Each time the host program is executed, the virus selects a candidate for<br />

infection and infects it by simply replacing the start <strong>of</strong> the candidate with a<br />

copy <strong>of</strong> the virus. This does not affect the size <strong>of</strong> the candidate, but renders<br />

it useless because it has lost its beginning code. Suppose that the first time<br />

the host is executed, the virus infects program A. When A is next executed,


2.8 Companion Viruses 61<br />

the virus is executed first, infecting program B, then A crashes or features<br />

strange behavior because its header has been replaced by the virus. When<br />

program B is run by the user, it may infect C and also crash or behave<br />

erratically. The point is that it is A, B, and C that become suspicious, and<br />

not the host program.<br />

The virus may replace an entire program with a similar but malicious<br />

program. The virus may be programmed to locate a certain word processor<br />

and replace it with the virus. Each time the bogus word processor is executed,<br />

it behaves similarly to the original word processor, but has the potential to<br />

do damage. The original, trusted word processor becomes a Trojan horse<br />

and may infect other programs each time it is executed.<br />

2.8 Companion Viruses<br />

When a file infector embeds itself in a file, it modifies something in the file<br />

(the size, modification date, CRC, or the original code) and this modification<br />

becomes a telltale sign that can lead to a detection <strong>of</strong> the virus. The process<br />

<strong>of</strong> infecting a file makes the virus vulnerable. A companion virus (sometimes<br />

called a spawning virus) does not suffer from this vulnerability. It does not<br />

embed itself in any file, but instead exploits some operating system feature<br />

or weakness to associate itself with a file A in such a way that when the user<br />

tries to execute A, the virus is executed. When done, the virus normally<br />

executes file A, to avoid raising suspicion.<br />

The first companion viruses were designed to exploit a feature <strong>of</strong> the old,<br />

obsolete DOS operating system. In DOS, when the user types a character<br />

string abc followed by a return, the operating system uses simple precedence<br />

rules to interpret abc. First, DOS tries to interpret the string as a built-in<br />

command. It searches its command interpreter for abc, and if it finds such<br />

a string, the command interpreter executes it. If the string is not a builtin<br />

command, DOS searches the files in the computer for an executable file<br />

named abc. There are three types <strong>of</strong> executable files in DOS, .com, .exe,<br />

and .bat, so DOS may have to search up to three times for file abc. The first<br />

search looks for a file abc.com, the second search looks for a file abc.exe,<br />

and the third search looks for a file abc.bat.<br />

This rule <strong>of</strong> precedence gave early virus writers an idea. Write a virus<br />

that searches the path directories for any file xxx.exe or xxx.bat such that<br />

there is no file xxx.com. When such a file is found, the virus creates a copy<br />

<strong>of</strong> itself as a new (invisible) file and names it xxx.com. Next time the user<br />

types xxx, the virus will be the first executable file found by DOS and will be<br />

launched. When done, the virus can find the correct application and launch<br />

it.<br />

A variation on this idea is a virus that renames the executable file and<br />

assigns its original name to the virus. Suppose that file abc.com was found<br />

and no file named abc.exe or abc.bat exists. The virus can rename file<br />

abc.com to abc.exe and call itself abc.com.


62 2 Viruses<br />

DOS is now obsolete and has been replaced by Windows. This operating<br />

system has complex rules for searching directories when the user types the<br />

name <strong>of</strong> a program, and these rules can also be exploited by a companion<br />

virus.<br />

A graphical user interface (GUI) operating system such as the Macintosh<br />

OS, associates a data file with an application, such that double-clicking on<br />

the data file launches the application. An application and its data files also<br />

normally have similar icons. A companion virus can take advantage <strong>of</strong> this<br />

convention as follows. The virus decides to associate itself with an application<br />

A. It searches for data files associated with A and changes their association<br />

such that double-clicking on any <strong>of</strong> them will launch the virus. The virus<br />

executes and then launches A.<br />

The idea <strong>of</strong> a companion virus may sound ingenious, but these viruses<br />

are easy to detect, simply by searching for executable files (including invisible<br />

ones) with identical names and different extensions. A user browsing the<br />

list <strong>of</strong> such files should be able to identify unknown or unfamiliar files with<br />

identical names.<br />

A computer virus is commonly defined (on page 43) as a program that<br />

hides inside an executable file, but a companion virus exists as an independent<br />

file. Some may argue that companion viruses are not really viruses but<br />

constitute a separate type <strong>of</strong> malware. On the other hand, it may be argued<br />

that the definition <strong>of</strong> a virus, like most definitions in the computing field, is<br />

not rigorous and allows for programs that do not embed themselves in an<br />

executable file, provided that they replicate and satisfy the other clauses <strong>of</strong><br />

the definition.<br />

2.9 Multipartite Viruses<br />

The advantages <strong>of</strong> file infectors are as follows: (1) There are more executable<br />

files than boot sectors in a given computer, providing the file infectors with<br />

more targets for infection. (2) Several different file infector viruses can infect<br />

the same executable file. (3) File infectors can propagate through executable<br />

files that are sent between computers through Web sites, FTP sites, local<br />

area networks, and attached to email messages. On the other hand, a file<br />

infector must wait for its host file to execute before it (the virus) can execute.<br />

The advantages <strong>of</strong> boot sector infectors (BSI) are: (1) They are not<br />

limited to executable files. A BSI infects the boot sector <strong>of</strong> a disk, not any<br />

<strong>of</strong> the files on the disk. (2) Removable volumes that are exchanged between<br />

computer users tend to have more data files than executable files, which is<br />

why removable disks are responsible for the spread <strong>of</strong> many BSIs but not<br />

many file infectors.<br />

A virus writer who understands the advantages <strong>of</strong> both infector types<br />

can combine them in a new type <strong>of</strong> virus, a multipartite (or dual-infection)<br />

virus. This type <strong>of</strong> virus can infect both boot sectors and executable files,<br />

so it can propagate either (1) on removable volumes that are manually taken


2.10 Macro and Script Viruses 63<br />

from computer to computer, or (2) inside executable files that are transferred<br />

between computers on any type <strong>of</strong> network.<br />

The advantage <strong>of</strong> this type <strong>of</strong> virus is obvious, but not many <strong>of</strong> them<br />

have been seen, because a multipartite virus has a downside, it is complex to<br />

design and implement. It requires a deep knowledge <strong>of</strong> the operating system<br />

internals in two areas, booting and executable files. Also, the final virus is<br />

large, which makes it harder to hide and may result in more programming<br />

bugs (generally, the bigger a program, the longer it takes to debug).<br />

In order to propagate itself effectively, a multipartite virus has to be<br />

efficient. When it is executed, it should perform the following tasks:<br />

It should establish itself in memory (if it is not located there already),<br />

like a BSI, by modifying one or more interrupt-handling routines, especially<br />

the routine that’s invoked when a removable disk is inserted. This way the<br />

virus will be able to infect the boot sectors <strong>of</strong> any volumes plugged into the<br />

computer.<br />

Once this is done, the virus should look for executable files that it recognizes<br />

and should try to infect as many <strong>of</strong> them as possible.<br />

This short list <strong>of</strong> tasks is easy to read and understand, but difficult to<br />

program, which is why some multipartite viruses adopt a simple (but much<br />

less effective) spreading policy. If the virus is embedded in an executable<br />

file (i.e., if it is currently a file infector) it tries to infect the boot sector <strong>of</strong><br />

new removable media, whereas if the virus is a BSI (i.e., it came from a boot<br />

sector and is now located in memory), it tries to infect executable files.<br />

Exercise 2.8: Explain why this policy for spreading the virus is bad.<br />

It is also possible to combine the features <strong>of</strong> a virus and a worm in one<br />

piece <strong>of</strong> malware. The MTX malware (Section 5.12), for example, propagates<br />

both as a worm and as a file infector.<br />

2.10 Macro and Script Viruses<br />

In the computer world, the term macro refers to a name or a symbol that<br />

stands for a list <strong>of</strong> commands or a string <strong>of</strong> characters. When using a word<br />

processor to write a letter, the heading with the date and our name, address,<br />

and telephone number is always the same. It makes sense to define a macro<br />

called header, such that typing the single word header typesets this information<br />

in the format we like (it expands or plays back the macro). If we<br />

want two headers in different styles, perhaps for personal and pr<strong>of</strong>essional<br />

letters, we can either define two macros or write a single macro that depends<br />

on a parameter, such that the expansion header pers will execute the commands<br />

for typesetting the header <strong>of</strong> a personal letter and header pro will<br />

do the same for a pr<strong>of</strong>essional letter. The popular word processor Micros<strong>of</strong>t<br />

Word supports extensive macros (see, for example, [Roman 99] and [Hartdavis<br />

09]) that can, among other things, create, rename, save, and delete<br />

files, and typeset headers, footers, and section titles.


64 2 Viruses<br />

Exercise 2.9: The date is different each day, so how can we say that a<br />

header with the date is always the same?<br />

Macro: A set <strong>of</strong> keystrokes and instructions that are recorded, saved, and<br />

assigned to a short key code. When the key code is typed, the recorded<br />

keystrokes and instructions execute (play back). Macros can simplify dayto-day<br />

operations, which otherwise become tedious. For example, a single<br />

macro keystroke can set up a connection using pcAnywhere.<br />

—From securityresponse.symantec.com/avcenter/refa.html.<br />

A macro is useful, but it also introduces a security weakness; it may<br />

be a virus. A macro virus for Micros<strong>of</strong>t Word is a .doc file whose header<br />

section consists <strong>of</strong> the virus commands. When Micros<strong>of</strong>t Word opens such<br />

a file, it innocently executes the commands, which can insert unwanted text<br />

at certain points, change the current font or style, and also infect other .doc<br />

files found in the computer. In principle, a macro virus is not limited to .doc<br />

files and has the potential to cause any type <strong>of</strong> damage. Most <strong>of</strong> the macro<br />

viruses that have been detected and analyzed were specifically written for<br />

Micros<strong>of</strong>t Word and Excel. A typical trigger for a Word macro virus uses<br />

the document’s version count. Micros<strong>of</strong>t Word keeps in the document file a<br />

counter that maintains the version <strong>of</strong> the document. This counter is used by<br />

many macro viruses to trigger the virus’s payload when it equals the current<br />

date or time or when it is divisible by a certain prime number. A macro<br />

may be useful either in a certain document or in general. General macros for<br />

Micros<strong>of</strong>t Word are stored by the Windows operating system in the global<br />

template file NORMAL.DOT, thereby making it easy for a macro virus to copy<br />

itself from an infected Word document to this file. Once there, the macro<br />

is always available. If the user accidentally types the macro’s name, it is<br />

expanded into the current document and infects it.<br />

Some macros have a predetermined name, identical to the name <strong>of</strong> a<br />

command. Thus, if a macro FileSaveAs exists in Micros<strong>of</strong>t Word, it will be<br />

expanded every time the user selects the menu item Save as from the File<br />

menu.<br />

A macro virus <strong>of</strong>ten spreads as an email virus. A well-known example<br />

is the Melissa virus <strong>of</strong> March 1999 (Section 5.5).<br />

Virus detection s<strong>of</strong>tware can identify macro viruses, but as a cautious<br />

user you should be familiar with the macros you use with any program, and<br />

check <strong>of</strong>ten for new, unfamiliar macros.<br />

In principle, macro viruses can be eliminated (or at least greatly limited)<br />

by allowing only special-purpose macros. A word processor with restricted<br />

macros may allow one macro to enter text, another macro to analyze it, a<br />

third macro to print the result in a special format, but will not allow one<br />

macro to do the entire job. Such restrictions limit the payload <strong>of</strong> a macro<br />

virus and thereby discourage virus authors. However, because <strong>of</strong> competition,<br />

s<strong>of</strong>tware makers tend to implement powerful features in their programs and<br />

this trend, while helping the users, also makes the virus writer’s “job” easier.<br />

Modern operating systems <strong>of</strong>ten support scripts. Micros<strong>of</strong>t VBA (visual<br />

Basic for applications) also supports powerful scripts (see, for example, [Hart-


2.11 Infected Images 65<br />

Davis 09]). A script is a list <strong>of</strong> commands that’s assigned a name. When<br />

the name is typed, the commands are executed. A miscreant may write a<br />

malicious sequence <strong>of</strong> commands, assign it the name <strong>of</strong> a common, useful<br />

script, and try to distribute it to unsuspecting users. When a user types<br />

the name <strong>of</strong> the script, the commands are executed and may release their<br />

harmful payload.<br />

In principle, macro and script viruses are the same. The only difference<br />

between them is that a macro virus is hidden in a data file whereas a script<br />

virus is not associated with any file and resides in the computer as a script,<br />

part <strong>of</strong> the operating system.<br />

2.11 Infected Images<br />

In the past, several viruses and worms carrying an infected attachment have<br />

tried to disguise it as an image simply by changing its extension from executable<br />

(normally .exe) to an image (commonly .jpg). However, in September<br />

2004, several Web sites that monitor the birth <strong>of</strong> new viruses started<br />

warning the public about a new type <strong>of</strong> infected jpeg image file that can<br />

carry malicious code.<br />

A raw, uncompressed image file contains only image information (colors<br />

<strong>of</strong> pixels, sometimes in compressed form). Such a file doesn’t have any executable<br />

instructions and cannot be executed. It can only be decompressed<br />

and displayed. It is possible to embed a virus (or for that matter any other<br />

type <strong>of</strong> data) in an image file, but the virus will not be executed. For an<br />

image file to become a security threat, its format has to be modified so it<br />

forces whatever program decompresses it to execute instructions embedded<br />

in it by a hacker. It turns out that Micros<strong>of</strong>t had a security vulnerability in<br />

one <strong>of</strong> its products that made it execute code embedded in jpeg image files<br />

if the files were tampered with in a subtle way.<br />

Image files tend to be large, so they are normally stored and transmitted<br />

in compressed form. Jpeg is a common algorithm used to compress image<br />

files, and a Web site may include several images in the jpeg format. When<br />

a Web browser downloads a Web site, it also downloads the images found<br />

in the site and has to decompress (or decode) each image before it can be<br />

displayed.<br />

The security hole that allows this threat was discovered by an anonymous<br />

hacker in the decoder employed by several Micros<strong>of</strong>t operating systems, most<br />

notably Windows XP, 2000, and NT, to render jpeg images. When a file with<br />

a .jpg extension arrives by email, Windows recognizes its header and invokes<br />

a special decoder to render it. The programmer who years ago wrote the<br />

original version <strong>of</strong> this decoder did not think in terms <strong>of</strong> security weaknesses<br />

and hackers. He simply wrote a program that reads a jpeg file, decompresses<br />

it, and renders it pixel by pixel.<br />

An infected image may arrive in a computer as an email attachment<br />

(most likely attached to spam or chat message). An alternative is to receive a<br />

junk message with a link to a Web site that displays an infected image. When


66 2 Viruses<br />

the browser downloads the image and starts decompressing and displaying<br />

it, the malicious code in the image is executed and may infect files and/or<br />

release a destructive payload. An example <strong>of</strong> such payload is to search for<br />

images in the victim’s computer and infect them.<br />

<strong>Security</strong> experts immediately issued warnings and expected a wave <strong>of</strong><br />

photo viruses to be unleashed. True to form, two malicious programs that<br />

take advantage <strong>of</strong> this flaw appeared almost immediately. They are dubbed<br />

JPGDownloader and JPGTrojan.<br />

In response, Micros<strong>of</strong>t has very quickly issued a critical alert [MS04-028]<br />

announcing a new security flaw in the form <strong>of</strong> a buffer overrun in s<strong>of</strong>tware it<br />

uses to display jpeg images. A security patch to fix this buffer overrun was<br />

also released. Unfortunately, past experience shows that there will always be<br />

users who neglect to download and install the patch and they will needlessly<br />

become victims <strong>of</strong> this new, short-lived threat.<br />

For the technically-inclined readers, here are the details <strong>of</strong> this vulnerability.<br />

Certain Micros<strong>of</strong>t products, most notably “Micros<strong>of</strong>t Visual Studio<br />

.NET Enterprise Architect” employ a jpeg decoder or parser, part <strong>of</strong> library<br />

file gdiplus.dll, to render jpeg images. This decoder has a subtle buffer<br />

overflow weakness that can be exploited by an especially-constructed jpeg file<br />

to introduce rogue s<strong>of</strong>tware and run it. Over the years, gdiplus.dll went<br />

through several versions, so other unknown vulnerabilities may be lurking in<br />

it.<br />

Jpeg is a compression algorithm especially designed for continuous-tone<br />

images. It has a nonlossy option, but is virtually always used as a lossy<br />

algorithm. The jpeg algorithm shows how to start with a (large) image and<br />

produce a smaller stream <strong>of</strong> bits that represents it. In addition, there is<br />

something called JFIF (jpeg file interchange format [Salomon 07]). This is a<br />

set <strong>of</strong> specifications that show how to organize the bit stream output by jpeg<br />

in a file that can be sent between computers, saved, and displayed. JFIF<br />

introduces the concept <strong>of</strong> a marker, to include various useful features in the<br />

compressed jpeg image file. Such features include image resolution, aspect<br />

ratio, horizontal and vertical pixel densities, and most importantly for our<br />

purposes, comments.<br />

It is useful to have comments—such as image title, date, image owner,<br />

and copyright—in an image. JFIF specifies a comment segment that starts<br />

with the COM marker, the 2 bytes FFFE. These bytes are followed by a 16bit<br />

(two bytes) unsigned integer specifying the length <strong>of</strong> the comment in<br />

bytes. Anyone familiar with the representation <strong>of</strong> information in bits and<br />

bytes knows that an unsigned 16-bit integer can represent unsigned integers<br />

from 0 to 2 16 − 1 = 65,535. (Readers unversed in the mysteries <strong>of</strong> binary<br />

numbers should consider the storage capacity <strong>of</strong> three decimal digits. They<br />

can similarly represent integers from 0 to 10 3 −1 = 999.) Thus, the maximum<br />

length <strong>of</strong> a comment is 65,535 bytes, more than enough for all reasonable<br />

comments. The two bytes occupied by this 16-bit length integer are included<br />

in the length <strong>of</strong> the comment, which is why the value <strong>of</strong> the length integer<br />

must be at least 2. Figure 2.6 shows an example <strong>of</strong> a comment where the<br />

length field is 11.


Preceding<br />

spec<br />

COM marker<br />

2.11 Infected Images 67<br />

FFFE0011This is my comment<br />

Figure 2.6: A JFIF Comment.<br />

next marker<br />

The decoder in gdiplus.dll knows about this subtle point. When it<br />

finds the marker FFFE it starts by reading the two bytes that follow the<br />

marker as an unsigned integer and subtracting 2 from it, to obtain the actual<br />

length <strong>of</strong> the comment (the comment itself is skipped by the decoder<br />

because it is not an integral part <strong>of</strong> the image). Now imagine a JFIF file<br />

with a comment marker followed by a 16-bit unsigned integer whose value<br />

is a nasty and invalid 0 (or 1). When 2 is subtracted from the unsigned<br />

16-bit number 0000000000000000 the result is 1111111111111110 or hexadecimal<br />

FFFE. This value is converted by the decoder to the unsigned 32 bits<br />

FFFFFFFE16 =2 32 − 1=4,294,967,295. The decoder (whose intelligence is<br />

only artificial) has to read and skip a comment whose length is about 4.25<br />

billion bytes, so it is no wonder it (the decoder) gets in trouble. This is the<br />

buffer overflow vulnerability <strong>of</strong> jpeg. The hacker who first thought <strong>of</strong> this<br />

exploit had analysed the behavior <strong>of</strong> the decoder in this (never before considered)<br />

case and discovered that reading and skipping such a long comment<br />

leaves the decoder in a state where it tries to execute certain instructions to<br />

unlink data pointed to by a certain pointer. Once this was discovered, it was<br />

easy for the hacker to exploit this behavior in order to force the decoder to<br />

execute code hidden in the JFIF file.<br />

After the problem was identified, analyzed, and understood, it was easy<br />

to patch it. The presence <strong>of</strong> malicious code in a jpeg file can easily be detected<br />

by the decoder by looking for the byte sequences FFFE0000 or FFFE0001.<br />

Once any <strong>of</strong> these is found, the decoder stops and raises an alarm.<br />

Buffer Overflow: A <strong>Security</strong> Flaw<br />

Many security weaknesses, vulnerabilities, and flaws have been discovered<br />

in operating system routines, in network s<strong>of</strong>tware, and in popular, everyday<br />

application programs. Most <strong>of</strong> these vulnerabilities are highly technical<br />

and their details are outside the scope <strong>of</strong> this book, but this inset discusses one<br />

<strong>of</strong> the most common such weaknesses, namely the dreaded buffer overflow.<br />

Figure 2.7(a) shows a fragment <strong>of</strong> code (in a simple, hypothetical assembler<br />

language) that illustrates the source <strong>of</strong> this problem. The program starts<br />

with an ADD instruction, at a certain point it calls a procedure P, and it<br />

ends when it executes the STOP instruction. However, the STOP is followed<br />

by a data item A, by an array B <strong>of</strong> 24 bytes, and by procedure P. While the<br />

program executes, it may store data items in B and the point is that many<br />

programs don’t check for buffer overflow.<br />

A hacker who is familiar with the program may realize that the array is<br />

followed by executable code, and may send special data to the program to<br />

overflow the array and thereby rewrite the first instruction <strong>of</strong> the procedure.<br />

This instruction (a LOD in the figure) is replaced with a jump to executable


68 2 Viruses<br />

code placed by the hacker in the computer, perhaps as a virus or a Trojan.<br />

This is the essence <strong>of</strong> the buffer overflow vulnerability.<br />

ADD ..<br />

.<br />

.<br />

CALL P<br />

.<br />

.<br />

STOP<br />

A: DATA 123<br />

B: ARRAY 24<br />

P: LOD ..<br />

STO ..<br />

.<br />

.<br />

RET<br />

(a)<br />

ADD ..<br />

.<br />

.<br />

CALL P<br />

.<br />

.<br />

STOP<br />

P: LOD ..<br />

STO ..<br />

.<br />

.<br />

RET<br />

A: DATA 123<br />

B: ARRAY 24<br />

(b)<br />

Figure 2.7: Source Code for Buffer Overflow.<br />

Here is an actual example <strong>of</strong> a buffer overflow vulnerability. A Web<br />

browser is a program that reads HTML code (text and commands) from a<br />

Web site or from a local file in the computer and displays text and images at<br />

the right positions on the screen to construct a viewable Web page. IFRAME<br />

is a typical HTML command. It has to do with floating frames, frames that<br />

can be positioned anywhere on the page, much like an image. The two tags<br />

IFRAME and /IFRAME specify the start and end <strong>of</strong> such a frame.<br />

The IFRAME tag has parameters, two <strong>of</strong> which are NAME and SRC. The<br />

former is followed by the name <strong>of</strong> the frame, normally a short string. The<br />

latter is followed by a URL to the Web page that should be read and placed<br />

in the frame. Both the name and the URL are strings <strong>of</strong> characters and are<br />

stored in short, internal buffers inside the browser. Someone discovered that<br />

version 6 <strong>of</strong> the well-known Web browser Internet Explorer for Windows 2000<br />

and XP stored these items in short buffers without testing for buffer overflow.<br />

A specially-contrived long frame name or long URL overflows these buffers<br />

and rewrites executable code as described above. These vulnerabilities have<br />

since been patched.<br />

A buffer overflow vulnerability can be eliminated in two ways. The<br />

simpler fix adds code to check the index to the buffer. The program maintains<br />

an index to the array, it increments the index each time it stores another data<br />

item in the array, and it decrements the index when an item is deleted. It is<br />

simple for the programmer to include instructions to check the index before it<br />

is incremented, to make sure the index hasn’t reached the end <strong>of</strong> the buffer,<br />

but this has to be done every time the index is incremented, which slows<br />

down the program somewhat. A more complex patch is to move all the


2.12 Virus Life Cycle 69<br />

executable code <strong>of</strong> the program together and follow it with all the data items<br />

and arrays, as illustrated in Figure 2.7(b). Any buffer overflow will, in such<br />

a case, rewrite a memory area outside the program, and this area is normally<br />

protected by the operating system.<br />

2.12 Virus Life Cycle<br />

Figure 2.8, following [Cohen 94a], is pseudo-code that illustrates the main<br />

components <strong>of</strong> a typical virus. It is surprisingly easy to read.<br />

Program Virus<br />

{"SigNature";<br />

Procedure infect<br />

{loop: exec:=select random writable executable file;<br />

if (first line <strong>of</strong> exec = "SigNature")<br />

then goto loop; else prepend Virus to exec;}<br />

Procedure damage<br />

{code to do the actual damage}<br />

Boolean Procedure trigger<br />

{Code to check trigger condition}<br />

Main program<br />

{infect;<br />

if (trigger) then damage;<br />

goto continue;}<br />

continue:<br />

}<br />

Figure 2.8: Pseudo-Code <strong>of</strong> a Virus.<br />

Remember that the virus code is already stored at the beginning <strong>of</strong> an<br />

executable program and is executed each time the program is launched by the<br />

current user (who may or may not own the program). The string SigNature is<br />

a unique identification <strong>of</strong> the virus, used by it to prevent multiple infections.<br />

Notice that this string is the first thing in the executable program’s file,<br />

but is not itself executed or printed by the virus because when the virus’s<br />

main program starts, it invokes procedure infect. That procedure randomly<br />

selects an executable program file F (but it has to be writable by the current<br />

user), verifies that it is not already infected (by checking for the signature),<br />

then infects it by prepending its code to F. The virus program then executes<br />

the trigger to find out whether to release its payload (destructive task), and


70 2 Viruses<br />

ends by going to the label continue. This label marks the start <strong>of</strong> the<br />

executable program that follows the virus, and this program now executes.<br />

(Depending on the damage done by the virus, this program may execute<br />

correctly, execute badly, or not execute at all.)<br />

It doesn’t take much programming experience to see that this pseudocode<br />

needs much work. If all the executable files have already been infected,<br />

then procedure infect goes into an infinite loop. Also, this pseudo-code does<br />

not try to propagate itself outside the computer; it is satisfied with infecting<br />

all the local files one by one.<br />

The figure illustrates the life cycle <strong>of</strong> a typical virus. The cycle consists<br />

<strong>of</strong> three stages, activation, replication, and operation. The virus is activated<br />

in the host computer, it replicates itself and then, if the triggering condition<br />

is satisfied, it releases its payload.<br />

Activation. The virus embeds itself in a program and is activated when<br />

the program is executed. Many viruses are designed to activate when the<br />

computer is started and also each time it is reset (each time the computer<br />

is “booted”). To do this, the virus must embed itself in that part <strong>of</strong> the<br />

operating system that’s executed when the computer is booted. We follow<br />

with a short discussion <strong>of</strong> the bootup process (see also page 54). A computer<br />

can only operate by executing a program, which means that a new computer<br />

must have a program built into it. This program is called the bootstrap loader<br />

and is stored in read-only memory (ROM). When the computer is started<br />

or is reset, it starts executing the bootstrap loader. This short program<br />

loads (from a DVD or a hard disk, but in the old days, from a floppy disk)<br />

an operating system executive program that in turn loads those parts <strong>of</strong><br />

the operating system that should reside in memory (<strong>of</strong>ten referred to as the<br />

kernel <strong>of</strong> the operating system) and executes certain operating system utilities<br />

(autoexec programs).<br />

The ideal place for a virus is in the bootstrap loader, but this loader is<br />

made in a factory and its content is permanent (modern bootstrap loaders<br />

are made as firmware and can be modified when new versions <strong>of</strong> the operating<br />

system are released). The next best place for a virus is the operating system<br />

executive program. This program is a file written at a special location on the<br />

hard disk (normally called the boot sector) and it can be modified. Many <strong>of</strong><br />

the older viruses embedded themselves in this executive program. The next<br />

ideal place for a virus is any program executed by the executive program<br />

(any autoexec program).<br />

Other viruses embed themselves in various applications and utilities used<br />

from time to time. Such a virus is executed only when its host program is<br />

launched by the user.<br />

A sophisticated virus may, once activated, copy itself to memory and<br />

reside there (until the computer is turned <strong>of</strong>f) as an interrupt-handling routine<br />

(interrupts and their handling routines are discussed in Section 2.21).<br />

Such a virus is referred to as memory resident and is activated each time the<br />

interrupt occurs.<br />

A virus may embed itself in interrupt routines that handle common<br />

interrupts. Examples <strong>of</strong> such interrupts are timer (invoked several times


2.13 Viruses and UNIX 71<br />

each second to update the clock displayed on the screen), keyboard (invoked<br />

each time a key is pressed on the keyboard), an I/O port (invoked each time<br />

a device is inserted into the port), and printer (invoked when the printer runs<br />

out <strong>of</strong> paper, is jammed, or senses another problem). A modern computer<br />

can handle many other interrupts.<br />

A large, multiuser computer normally has compilers for several highlevel<br />

programming languages. Each compiler includes a library <strong>of</strong> commonlyused<br />

procedures and functions. A typical example is a square-root routine.<br />

When the compiler compiles a program for user A and it comes across a<br />

statement such as var:=sqrt(y+1.5), it generates machine instructions that<br />

(1) prepare the value y+1.5, (2) copy the square-root routine from a library,<br />

append the copy to the program being compiled, and call it with this value,<br />

and (3) store the result in variable var. If the square-root routine is infected,<br />

then running it causes other files, programs, or routines in the user’s private<br />

library (located in A’s private directory on the large, shared disk) to be<br />

infected. When any <strong>of</strong> those infected routines is executed, it infects other<br />

routines in A’s directory on the disk. It cannot infect files in other directories<br />

because the operating system protects the disk directory and memory area<br />

<strong>of</strong> each user from any other users. Eventually, all <strong>of</strong> A’s files may become<br />

infected.<br />

The infection doesn’t have to come from the compiler’s routines. User A<br />

may be the culprit who writes the virus and embeds it in a private program,<br />

utility, or routine that he hopes to loan to other users.<br />

At a certain point, a user B borrows a file from A. This can be a useful<br />

program, a library routine, or a data file. If this object is infected, then each<br />

time it is executed by B, it infects files in B’s area. The administrator can<br />

prohibit users from borrowing from each other, but some users will always<br />

find ways <strong>of</strong> breaking such a rule, because borrowing saves time. This is<br />

another example <strong>of</strong> the trade-<strong>of</strong>f between convenience and security. If the<br />

infection starts with one <strong>of</strong> the compiler’s library routines, then the infection<br />

can spread very quickly throughout the users <strong>of</strong> the computer, regardless <strong>of</strong><br />

what user A does.<br />

2.13 Viruses and UNIX<br />

A similar situation exists in UNIX. If user A brings an infected file into his<br />

area, the virus in this file will activate each time the file is executed (if the<br />

file is an executable program) or is interpreted (if it is a data file that has<br />

commands embedded in the data). When user B borrows an infected file<br />

from A, that file acquires privileges in B’s area and can infect files in that<br />

area. If a virus is inserted into a file belonging to a root user, infection can<br />

spread far and fast.


72 2 Viruses<br />

2.14 Viruses and the Macintosh<br />

The Macintosh operating system has traditionally suffered less than others<br />

in terms <strong>of</strong> viruses (see the discussion on page 31), but is not immune to<br />

attacks. A handy feature introduced by the Macintosh operating system<br />

since its beginning in 1984 is that a data file can be associated with an<br />

application and it has the same (or a very similar) icon as the application.<br />

When a file is created, say by an editor program titled abEdit, the file gets<br />

an icon (and a flag) that identifies it as an abEdit file. Double-clicking on<br />

the file opens it in abEdit.<br />

A virus can take advantage <strong>of</strong> this feature. The virus may search for<br />

abEdit files and change their flag, so they will open, when double-clicked,<br />

in another, infected, editor. If that editor resembles abEdit, the user may<br />

process the file for a while before realizing that the current program is not<br />

abEdit, and is doing something bad, perhaps sending the current text file to<br />

a malicious server or to a zombie computer, a member <strong>of</strong> a botnet.<br />

Version X <strong>of</strong> the Macintosh operating system is based on UNIX, so UNIX<br />

viruses and other types <strong>of</strong> attack may easily affect a Macintosh.<br />

The “debate” continues to rage on about UNIX and Linux viruses. Much<br />

<strong>of</strong> what you may have read is simply uninformed and inaccurate. More and<br />

more “virus experts” are crawling out <strong>of</strong> the woodwork and many seem<br />

to have little “real world” knowledge <strong>of</strong> UNIX. This is probably because<br />

most viruses and anti-virus s<strong>of</strong>tware is written for Windows-based systems.<br />

However, that is no excuse for disseminating misinformation.<br />

—www.claymania.com/unix-viruses.html.<br />

2.15 Virus Replication<br />

The virus is a sequence <strong>of</strong> machine instructions (computer instructions stored<br />

as binary numbers). It is a simple matter to write a loop that copies any<br />

sequence <strong>of</strong> instructions. An active virus in memory can therefore easily<br />

generate a copy <strong>of</strong> itself, write it on the hard disk as a small file, then execute<br />

instructions to prepend this file to any other file or to send it as an attachment<br />

in an email message. The file can then be deleted. Once an external storage<br />

medium is connected to the computer through an I/O port, the virus can<br />

activate itself by exploiting the interrupt generated by the port and write a<br />

copy <strong>of</strong> itself on the disk, for fast propagation to other computers.


2.16 Virus Payload<br />

2.16 Virus Payload 73<br />

The payload is the main, malicious “task” <strong>of</strong> a virus. It is performed when<br />

the triggering condition is satisfied. Following are several types <strong>of</strong> damage<br />

that computer viruses typically inflict.<br />

The virus may do nothing; its sole purpose is to stay alive. This happens<br />

in practice if the virus was written for a different type <strong>of</strong> computer or a<br />

different version <strong>of</strong> the operating system. A Macintosh computer contracting<br />

a virus for Windows may not suffer any damage (unless it starts executing<br />

a program, such as Virtual PC or VMware Fusion, that supports Windows).<br />

When a virus detection program is next run, it may discover the virus, which<br />

can then be deleted.<br />

Exercise 2.10: Propose other reasons for the existence <strong>of</strong> viruses that do<br />

nothing.<br />

It may display a message, such as “Gotcha,” a political slogan, or a<br />

commercial advertisement. Again, virus detection s<strong>of</strong>tware can be executed<br />

to identify the infected file and disinfect it (delete the virus part).<br />

It may want to read a certain sensitive or private file. The virus propagates,<br />

and each time it is executed it checks whether the current user (the<br />

one who is executing the infected program) has “read access” to the desired<br />

file. Such a virus is in fact spyware (Chapter 9), and may be planted by a<br />

competitor, a spy, a curious employee, a suspicious lover, or even a child who<br />

wants to read his parents’ correspondence or discover their secret passwords.<br />

It may slow the computer down by monopolizing and exhausting limited<br />

resources. Such a denial-<strong>of</strong>-service (DoS) virus may use large quantities <strong>of</strong><br />

CPU time by executing loops that do nothing. It may replicate itself and<br />

occupy large portions <strong>of</strong> memory or the disk. It may occupy a network<br />

connection by endlessly sending messages. It may cause crashes and printing<br />

problems, and in general annoy and vex the user rather than destroy data.<br />

A virus <strong>of</strong> this type does not attach itself to other s<strong>of</strong>tware and is sometimes<br />

referred to as a rabbit.<br />

It may completely deny any services to the user. It may infect every<br />

executable file on the disk, then go into an infinite loop. When the user<br />

restarts the computer, any program launched will be infected. The program<br />

will execute the virus, which will then go into an infinite loop. To remove<br />

such a virus, the computer will have to be started from a write-protected<br />

external disk or from a DVD.<br />

It may erase all the files on the host computer. This is serious damage,<br />

but the kind <strong>of</strong> damage that a prepared user can recover from in reasonable<br />

time. The user can completely erase the disk and restore its contents from a<br />

backup. A variant <strong>of</strong> such a virus may change file names, either randomly or<br />

systematically.


74 2 Viruses<br />

The virus may quietly replicate itself and transmit copies outside the<br />

host until a certain date, when it makes itself known by inflicting some damage.<br />

Such a time-bomb virus is more serious, because by that date every<br />

backup may already include the virus. Also, there may be many millions<br />

<strong>of</strong> copies <strong>of</strong> the virus, lying dormant in host computers, waiting to release<br />

their payload simultaneously. The Michaelangelo virus (Section 5.3) is a<br />

well-known example <strong>of</strong> this type.<br />

It may select some files at random and change several bits in each file,<br />

also at random. This type <strong>of</strong> damage, referred to as data diddling, may<br />

be more serious, because it results in problems that seem to be caused by<br />

hardware failures, not by a virus. (For an example <strong>of</strong> such a virus, see year<br />

1989 in Appendix C.) A computer, even a personal computer, may have<br />

hundreds <strong>of</strong> thousands <strong>of</strong> files on a single hard disk, and the damaged files<br />

may not be discovered by the user immediately. In such a case they may be<br />

written on the backup disk, corrupting it and thereby making a full recovery<br />

slow and tedious. What makes this and similar attacks so nasty is that there<br />

is no direct link between the cause (the virus) and the symptom (the damage).<br />

Exercise 2.11: Modern computers have several types <strong>of</strong> files, such as text,<br />

image, video, audio, and executable. Discuss the potential effect <strong>of</strong> modifying<br />

1 bit in each type <strong>of</strong> file.<br />

A sophisticated, nonrandom data diddling virus may inflict more damage.<br />

Such a virus may look for a list <strong>of</strong> postal codes (such as the zip codes in<br />

the United States) and modify one or two digits in each. It may interfere with<br />

the operation <strong>of</strong> a word processor by changing a text file each time it is saved<br />

by the word processor, then restoring it and making other changes. Imagine<br />

a virus that makes random changes when a document is saved and remembers<br />

the changes. When the document is again saved, the virus restores the<br />

changed characters (some <strong>of</strong> which may in the meantime have been corrected<br />

by the user), randomly changes others, and remembers the new changes.<br />

Such a virus may drive the user crazy, but its constant interference will also<br />

make it easier to identify.<br />

Exercise 2.12: Come up with other ideas <strong>of</strong> sophisticated data diddling<br />

viruses.<br />

One step beyond data diddling is random deletion <strong>of</strong> files. A modern<br />

operating system maintains the last date <strong>of</strong> modification for every file. A<br />

virus may search for files that haven’t been used for a while (i.e., with old<br />

modification dates) and delete them. There is a good chance that it’ll be a<br />

while before the user needs one <strong>of</strong> those files, and when that happens, the<br />

user may contribute the nonexistence <strong>of</strong> the file to an accidental deletion (my<br />

memory is getting bad) or the carelessness <strong>of</strong> another user (I keep telling her<br />

not to mess with my files). A sophisticated user who knows how to program,<br />

may write a program that scans all the files on the computer periodically,<br />

identifies old files (with, for example, modification dates that are six months<br />

old), and backs them up on another disk or on a recordable DVD. A hacker


2.16 Virus Payload 75<br />

who is familiar with the habits <strong>of</strong> this user may write a virus that also runs<br />

periodically and deletes 10% <strong>of</strong> all the files with modification dates close to<br />

six months. The result is that the automatic backups are incomplete, but<br />

this fact takes time to discover. When the problem is discovered, it takes a<br />

security-conscious user to attribute the problem to a virus, then it takes time<br />

and effort to locate the virus. The missing files, rarely used but nevertheless<br />

important, remain missing.<br />

A virus may quietly propagate from computer to computer, doing no<br />

damage, but checking each infected host, looking for a computer that can<br />

easily be taken over. Once such a computer is found, the virus takes it<br />

over, effectively converting it to a zombie machine and perhaps also adding<br />

it to a botnet. Such a virus is particularly useful to those who want to<br />

inflict damage and remain anonymous. A common example is a spammer.<br />

Someone who sends millions <strong>of</strong> email messages hawking fraudulent or useless<br />

products is interested in responses, but wishes to remain out <strong>of</strong> reach <strong>of</strong> any<br />

potential victims. A perpetrator <strong>of</strong> a DoS attack can also benefit from zombie<br />

computers organized in a botnet.<br />

(A set <strong>of</strong> hijacked computers that are remotely controlled has come to<br />

be known as a botnet (Section 6.5).)<br />

A virus may be written by an organization or an individual in an attempt<br />

to weaken a competitor. Imagine a print shop A that provides printing,<br />

binding, copying, and Internet services to customers. One day, a competitor<br />

opens up a similar shop B nearby, and tries to siphon <strong>of</strong>f business by dropping<br />

prices temporarily. The owner <strong>of</strong> business A may decide to fight in an original<br />

fashion. The idea is for A to write a virus, go to business B, rent time on<br />

a computer, and install the virus, which then propagates from computer<br />

to computer in B. When the virus arrives at the computer that handles the<br />

accounts, it randomly selects and deletes a certain percentage <strong>of</strong> the accounts<br />

payable. Once B’s income drops mysteriously and steadily, she may decide<br />

to close shop.<br />

A more sophisticated version may interfere with the automated, computer<br />

controlled production or manufacturing <strong>of</strong> a competitor. Imagine a<br />

plant that makes tractors, where computer-controlled machines perform some<br />

<strong>of</strong> the manufacturing steps, such as automatic welding and tightening <strong>of</strong> bolts.<br />

A competitor manages to install a virus that propagates to the computer that<br />

controls part <strong>of</strong> the manufacturing. The effect <strong>of</strong> the virus may be to reduce<br />

the torque applied when tightening certain bolts. The result—breakdowns<br />

followed by accidents with the tractors, law suits, and bankruptcy. Pretty<br />

serious stuff!<br />

Many operating systems maintain a protection code or access permission<br />

for all files. In UNIX, each file has a 9-bit permission code that specifies permissions<br />

for reading (r), writing (w), and executing (x) the file for the file’s<br />

owner, the local group <strong>of</strong> users, and the rest <strong>of</strong> the world. Thus, permission<br />

code 111101000 (or, alternatively rwxr-x---) allows the owner complete access,<br />

lets the group members read and execute access, but not write privilege,<br />

and prohibits anyone else from using the file in any way. The UNIX command


76 2 Viruses<br />

for changing file permissions is chmod mode filename. It can be executed<br />

only by the file’s owner or by the administrator (root user), but a virus can<br />

use low-level commands to achieve the same result. Those who have read the<br />

preceding examples carefully should have got the idea already. A virus may<br />

change permissions randomly, semirandomly, or nonrandomly.<br />

A random change <strong>of</strong> permissions is annoying, but temporary, because<br />

users are certain to notice it very quickly. A bad user will take advantage<br />

<strong>of</strong> suddenly being able to read a confidential file, but a good user will alert<br />

the administrator. A semirandom change <strong>of</strong> permissions may involve the<br />

following steps: The virus changes permissions randomly and remembers the<br />

changes. User A notices a permission change in a file. A is suddenly either<br />

able to read a secret file or unable to write into his private file. A alerts<br />

the administrator. The virus restores the permissions. The administrator<br />

checks and finds no problem. Result: User A is (wrongly) accused <strong>of</strong> a false<br />

alarm. No one wants to be blamed for crying wolf, so next time A notices<br />

wrong permissions, he may decide not to report it. A nonrandom change <strong>of</strong><br />

permission may make a top secret file available to anyone. The hacker and<br />

his group <strong>of</strong> users/accomplices are ready and they copy the file immediately.<br />

By the time the problem is noted and is corrected, it may be too late.<br />

File access permissions are implemented by the operating system and<br />

provide pretty good protection against unauthorized file access. However,<br />

an operating system is not all powerful and there are ways to circumvent its<br />

protection. The following quotation shows how “firewire target disk mode,”<br />

a feature found on the Macintosh OS X (which is based on UNIX) can be<br />

exploited to fully access all files on a hard disk.<br />

“FireWire target disk mode allows a Macintosh computer with a FireWire<br />

port (the target computer) to be used as an external hard disk connected to<br />

another computer (the host). Once a target computer is started up as a<br />

FireWire hard disk and is available to the host computer, you can copy files<br />

to or from that volume.”<br />

—From http://docs.info.apple.com/article.html?artnum=58583.<br />

The virus may replicate itself very fast in a network, thereby consuming<br />

network resources and denying network services to legitimate users. The<br />

Internet worm <strong>of</strong> Section 3.4 is an example <strong>of</strong> such a virus (actually, a worm),<br />

but there are many other known examples <strong>of</strong> viruses that deny other users<br />

all kinds <strong>of</strong> services.<br />

Competition between individuals in the same <strong>of</strong>fice is common. When<br />

an <strong>of</strong>fice manager retires, moves up, or is fired, the powers that be have to<br />

select a replacement. If the new manager is to come from the same <strong>of</strong>fice,<br />

the employee with the best productivity record stands a better chance, while<br />

someone who was caught making mistakes in the past will certainly not be<br />

<strong>of</strong>fered any promotion. Place yourself in the position <strong>of</strong> an old, capable


2.16 Virus Payload 77<br />

employee A, who stands to receive better pension if he retires as a manager,<br />

slowly realizing that a new, much younger recruit B is performing excellently.<br />

What would you do in such a case? After much thought and soul searching,<br />

A (sometimes) decides to sabotage B’s projects. A macro virus is written<br />

and is installed in B’s computer to affect spreadsheet data files. The virus<br />

performs a very simple task. Each time a spreadsheet file is opened, the<br />

virus randomly changes one number in it. After the virus has spread into<br />

all <strong>of</strong> B’s spreadsheet files, B’s productivity declines at an alarming rate.<br />

Based on wrong data fed by the virus, he constantly makes wrong decisions,<br />

is reprimanded, and loses his chance <strong>of</strong> promotion.<br />

Exercise 2.13: Come up with other scenarios where someone may decide<br />

to create a virus to sabotage someone else’s work.<br />

This is a complex example <strong>of</strong> a virus employed together with a covert<br />

channel to leak highly-secret information from well-protected files. What<br />

makes this example <strong>of</strong> a virus important is that the technique <strong>of</strong> combining<br />

a virus with a covert channel may be applied to many real-life situations and<br />

cause serious damage to a large organization with important secrets, such<br />

as a large bank, a government agency, or an army. We start by describing<br />

the so-called Bell-LaPadula model [Bell and LaPadula 74], one <strong>of</strong> the earliest<br />

computer security theoretical models.<br />

Imagine an organization with users (subjects) and information files (objects).<br />

Each file has a security level specifying its degree <strong>of</strong> sensitivity, for<br />

example, unclassified, confidential, secret, and top secret. Each user also has<br />

a similar security clearance. Users want to access (read) files, to append information<br />

to existing files, and sometimes also to create files and add them<br />

to the collection. The organization has sensitive information that should not<br />

leak to unauthorized persons, so it has to come up with a security policy,<br />

restricting the access <strong>of</strong> users to files. In the Bell-LaPadula model, a user<br />

with security clearance A is allowed to read files on security levels less than<br />

or equal A and is allowed to write to files on levels greater than or equal A.<br />

In more detail, there is a set <strong>of</strong> access rights that restrict what a user<br />

can do with a file as follows:<br />

Read-Only. The user can only read the file.<br />

Append. The user can only write to the file and cannot read it.<br />

Execute. The user can execute the file but can neither read nor write.<br />

Read-Write. The user has read and write permissions to the file.<br />

The main Bell-LaPadula security rule is: A user with security clearance<br />

A can read, write, append, and execute files at security level A. The user<br />

can read and execute files at levels less than A (reading down) and append<br />

files at levels greater than A (writing up). Figure 2.9 illustrates this rule for<br />

a file system with five levels and two users with security clearances 2 and 4.<br />

There is also a secondary rule dealing with something called a control<br />

attribute. When a user creates a file, the user becomes the controller <strong>of</strong> the


78 2 Viruses<br />

4<br />

5<br />

3<br />

1<br />

Figure 2.9: The Bell-LaPadula Model Illustrated.<br />

file and is allowed to pass any <strong>of</strong> the four access rights <strong>of</strong> the file to any user<br />

(except that no other user can be the controller <strong>of</strong> that file).<br />

The reason for the reading down restriction is to guarantee that highlysensitive<br />

information would not be leaked to a low-level user, and the reason<br />

for the writing up restriction is to make sure a high-clearance user cannot<br />

leak sensitive information to unauthorized, low-clearance users.<br />

This model seems secure and has proved itself over the years when it<br />

was implemented in an operating system. However, it is vulnerable to a<br />

virus attack because it allows a low clearance user to infect high-level files. A<br />

user with low clearance A can write, and therefore can infect, a file at security<br />

level A with a virus. When the file is later executed by a user with higherclearance<br />

B, the virus may infect another file at level B. When any <strong>of</strong> the<br />

two infected files is executed by a user with higher-clearance C, the virus may<br />

infect another file at level C, and so on. This vulnerability implies that the<br />

lowest-level (least trusted) user can infect the highest-level (top secret) files.<br />

The vulnerability has nothing to do with any bugs in the implementation<br />

<strong>of</strong> the security s<strong>of</strong>tware; it is a weakness <strong>of</strong> the Bell-LaPadula model, which<br />

was designed to protect secrets, not to protect from the menace <strong>of</strong> computer<br />

viruses.<br />

Such a virus, created and injected by a low-clearance user, can subject<br />

high-clearance users to the usual damage <strong>of</strong> a virus, such as denial-<strong>of</strong>-service,<br />

data diddling, and corruption <strong>of</strong> permissions. This, however, is only the<br />

beginning. It turns out that such a virus can, if combined with a covert<br />

channel, leak data from high-level, secret files, to low-clearance users.<br />

Imagine two executable files S (a high-level, sender process) and R (a<br />

low-level, receiver process). Any covert channel used by S to send data to R<br />

2<br />

4<br />

2


2.16 Virus Payload 79<br />

must involve some synchronization from R to S, a straightforward process,<br />

because S can read data prepared by R. Thus, S and R can use a small<br />

file that R can write and S can read. To synchronize itself with S, R writes<br />

a special symbol in the file, and erases it later. This is similar to a global<br />

variable, with the difference that information can only go from R to S. With<br />

this in mind, here are some examples <strong>of</strong> covert channels.<br />

Example 1. S can send secret data bit by bit to R by varying its<br />

memory requirements. To send a 0, process S waits for a synchronization<br />

signal from R, then requests a large amount <strong>of</strong> memory from the operating<br />

system, then releases it after one second. To send a 1, S again waits for a<br />

synchronization from R, releases most <strong>of</strong> its memory, then requests it back<br />

from the operating system after one second. R can receive the bits by sending<br />

a synchronization signal and then checking the amount <strong>of</strong> memory available.<br />

This is a slow process that’s also subject to errors, because other processes<br />

may request memory from the operating system. We therefore say that this<br />

covert channel is noisy. Nevertheless, reliable covert communication is possible<br />

if the communicating processes use an error-correcting code with the<br />

secret data. Notice that this covert channel uses a shared resource, namely<br />

the clock.<br />

Example 2. Secret data can be sent from S to R by creating a contention<br />

for a shared resource, such as a printer. To send a 1, S waits for a<br />

synchronization from R, checks to see if the printer is attached, and attaches<br />

it if it is not. To send a 0, S similarly waits for a synchronization, checks to<br />

see if the printer is attached, and detaches it if it is. R sends a synchronization,<br />

then attempts to attach the printer. If this is successful, R interprets it<br />

as a 0, otherwise as a 1. R then detaches the printer if the attach operation<br />

was successful and sends another synchronization signal for the next secret<br />

bit.<br />

Example 3. This example exploits the details <strong>of</strong> a specific I/O scheduling<br />

algorithm, but can be varied to use other I/O scheduling algorithms.<br />

Imagine a hard disk with a set <strong>of</strong> read/write heads that moves radially from<br />

cylinder to cylinder. The movement <strong>of</strong> the heads is very slow compared to the<br />

CPU speed, so it has to be organized efficiently. There is a head scheduling<br />

algorithm called the “elevator algorithm” that works as follows: I/O requests<br />

for data on the disk are queued by ascending cylinder number. Requests are<br />

then dequeued in order <strong>of</strong> ascending cylinder number until no greater cylinder<br />

number remains (i.e., the upper end <strong>of</strong> the cylinder is reached) and then are<br />

dequeued in descending order until no lower numbered cylinders remain (i.e.,<br />

the lower end <strong>of</strong> the cylinder is reached). This process is repeated indefinitely.<br />

Suppose that R has data in cylinders 31 through 39 <strong>of</strong> the disk and S<br />

had read access to the disk. R issues a request for cylinder 35, waits until it is<br />

notified <strong>of</strong> its completion, then relinquishes the CPU. S then issues a request<br />

for either cylinder 33 (to send a 0) or 37 (to send a 1), then relinquishes the<br />

CPU. R then issues requests for cylinders 38 and 32, thereby receiving a 1<br />

or 0 depending on which request completes first. (End <strong>of</strong> example 3.)<br />

Exercise 2.14: Describe in general a few more mechanisms for implementing<br />

covert channels.


80 2 Viruses<br />

In general, in a computer with an operating system that supports flexible<br />

shared resources, there always exist covert channels. This example shows<br />

how the combination (or synergistic relation) <strong>of</strong> a virus and a covert channel<br />

can be more powerful than just having a virus and a covert channel. A<br />

virus can penetrate to high-security places but cannot send back secret information<br />

to low security levels. A covert channel can leak information down<br />

security levels, but cannot propagate to highly secret files. Their combination,<br />

however, is powerful because it can do something neither <strong>of</strong> them can<br />

do by itself, namely it can leak secret information even in an environment<br />

specifically designed to protect secrets.<br />

From the dictionary<br />

Synergism: The whole is greater than the sum <strong>of</strong> its parts.<br />

Such a synergistic relation can be created in many ways. The Internet<br />

worm (Section 3.4) combined a virus and an algorithm (fortunately, not very<br />

sophisticated) to find passwords in computers it penetrated. The combination<br />

<strong>of</strong> virus (to spread) and algorithm (to find potential victims) became very<br />

powerful and helped the worm to spread very quickly through the Internet. It<br />

is virtually certain that a future super virus will combine an ability to spread<br />

with a powerful, flexible algorithm that can locate vulnerable computers while<br />

learning from the mistakes and successes <strong>of</strong> past viruses.<br />

A virus can also be benevolent, but examples <strong>of</strong> such viruses are normally<br />

more complex (see year 1988 in Appendix C). A detailed discussion <strong>of</strong><br />

the potential <strong>of</strong> such viruses can be found in [Cohen 94b]. A hypothetical<br />

example <strong>of</strong> a benign virus is an antibody. This is anti-virus s<strong>of</strong>tware specifically<br />

designed to eradicate one virus V . The antibody propagates like a virus.<br />

Before it “infects” a program, the antibody examines it for infection by V<br />

and cleans it if needed. The antibody then infects the program by attaching<br />

itself to it, such that every time the program is launched, the antibody is<br />

the first task to execute and it examines the program again for infection by<br />

V . Once all occurrences <strong>of</strong> V have been removed from the computer, the<br />

antibody removes itself from all the executable files it had “infected.”<br />

To verify complete eradication <strong>of</strong> V , the antibody has to make sure that<br />

all the executable files in the computer have modification dates that are later<br />

than the date the antibody itself has started its operations (a little thinking<br />

shows that this does not provide complete verification). Once the antibody<br />

verifies this, it may create a special file to act as a flag. When any copy <strong>of</strong><br />

the antibody finds that the flag file exists, it deletes itself.<br />

Such an antibody sounds like an ingenious solution, but once the virus<br />

creator hears <strong>of</strong> the antibody, he may produce a slightly different strain <strong>of</strong><br />

V that will be unrecognizable by the antibody. Virus writers don’t like their<br />

virus to be killed by another virus.<br />

Exercise 2.15: Think <strong>of</strong> a simple argument for why good viruses are harder<br />

to design and implement than bad ones.


2.17 Virus Organization 81<br />

Many computer programs have hidden, undocumented, and surprising features<br />

that are referred to as easter eggs. An easter egg is normally placed<br />

in the code <strong>of</strong> the program by the original programmer or team <strong>of</strong> programmers,<br />

and is <strong>of</strong>ten meant to be funny.<br />

A typical easter egg is hidden in the popular program Adobe Acrobat Reader.<br />

Version 4 <strong>of</strong> this program plays a dog bark when a certain key combination<br />

is pressed. One Web site that collects easter eggs is [eeggs 05]. In mid 2005<br />

this site had more than 7800 <strong>of</strong> them. Easter eggs can also be found in<br />

movies, music, television shows and commercials, books, and art.<br />

2.17 Virus Organization<br />

The thousands <strong>of</strong> computer viruses that have been detected, identified, and<br />

analyzed in the last two decades feature a large variety <strong>of</strong> approaches to the<br />

problems <strong>of</strong> propagation, triggering, and manipulation. It is infeasible to<br />

describe all the solutions used by viruses, so this section discusses the four<br />

main components found in the majority <strong>of</strong> viruses.<br />

Infection marker. A virus infects a program by installing itself (or a<br />

modified copy <strong>of</strong> itself) in the program. It is unnecessary to infect a program<br />

more than once, and multiple infections are also dangerous for the virus<br />

because each infection increases the size <strong>of</strong> the program file, thereby making<br />

it easier to detect the virus. Once a virus infects a program, it signals its<br />

presence by an infection marker, a special code stored by the virus at a point<br />

where it can be found by the virus. Before infecting a program, the virus<br />

checks for the presence <strong>of</strong> this marker.<br />

Infector. This is the code that actually does the infection. It creates a<br />

copy (identical or modified) <strong>of</strong> the virus and stores it in the program being<br />

infected.<br />

Trigger check. This piece <strong>of</strong> code checks the conditions for triggering<br />

the damage (the payload, also termed warhead or manipulation part). The<br />

conditions may depend on the date, the number <strong>of</strong> times the virus has replicated<br />

itself, or on the content <strong>of</strong> the program the virus has infected. If the<br />

conditions are right, the virus releases its payload (i.e., executes the manipulation<br />

part that does the damage). A good trigger (good from the point <strong>of</strong><br />

view <strong>of</strong> the virus writer) should wait a while (even weeks or months) before<br />

inflicting the damage, because this makes it more difficult for the victim and<br />

for security experts to identify the source <strong>of</strong> the virus. Such a delay mimics<br />

methods for self-preservation that have evolved in living organisms and are<br />

described in, for example, [Dawkins 06], except that nature’s schemes for self<br />

preservation are much more subtle than those <strong>of</strong> computer viruses.<br />

Manipulation. This is the code that executes the payload (the damaging<br />

task) <strong>of</strong> the virus. It is invoked by the trigger check and may delete files,<br />

corrupt files, display a message, make random modifications to the operating<br />

system, or perform other destructive operations.


82 2 Viruses<br />

2.18 Virus Naming<br />

Because <strong>of</strong> the importance <strong>of</strong> computer viruses and because <strong>of</strong> their large<br />

numbers, it is important to have a standard for naming them. No standard<br />

has ever been formally agreed upon by industry (makers <strong>of</strong> anti-virus s<strong>of</strong>tware)<br />

but an informal standard exists and is used by virus experts to refer<br />

to viruses and to warn the public about them. This standard, however, is<br />

not binding, and many virus names deviate from it. Macro viruses, the most<br />

common type <strong>of</strong> virus, <strong>of</strong>ten have complex names that consist <strong>of</strong> several parts.<br />

Many new viruses are derived from existing viruses and are not completely<br />

new. This partitions the world <strong>of</strong> viruses into families. Each family <strong>of</strong><br />

viruses receives a name. When a new virus appears that’s not derived from<br />

any family, it becomes the founder <strong>of</strong> a new family and a new family name is<br />

assigned. The name is coined from some important feature <strong>of</strong> the virus, such<br />

as some text it may display, the platform or the operating system it infects,<br />

or its damaging effect. The name may also include a number that indicates<br />

the size (in bytes) <strong>of</strong> the virus.<br />

Within a family, names have a short (up to three letters) suffix. Thus, the<br />

first 26 strains <strong>of</strong> family SHAME have designations SHAME.A through SHAME.Z.<br />

When more viruses are added to a family, they get a two-letter suffix that<br />

runs from AA, AB, through AZ to BA, BB, through BZ, and so on. If more than<br />

26 + 26 2 = 702 similar strains appear, a three-letter suffix can be used.<br />

A suffix may also include strings that provide additional information<br />

about the particular strain <strong>of</strong> virus. Examples are the following:<br />

@MM (Mass mailing distribution). This virus normally uses email to spread.<br />

.APP (Appended viruses). Such a virus appends its code to the file it infects,<br />

but fails to provide for correct replication.<br />

.CAV (Cavity virus). This type <strong>of</strong> virus copies itself into “cavities” (regions<br />

<strong>of</strong> all zeros) in an executable program file.<br />

.DR (Dropper file). A file that introduces the virus into the host program.<br />

Over time, the standard evolved to also include a prefix that indicates<br />

the type <strong>of</strong> file or the specific platform infected by the virus. Examples are<br />

the following:<br />

A97M/ A macro virus that infects Micros<strong>of</strong>t Access 97 files.<br />

BV/ A Batch-file virus. This type looks like a batch or script file and affects<br />

any program that interprets the commands included in the virus. (A batch<br />

file has a .BAT extension.)<br />

CSC/ A Corel Script virus or Trojan horse that infects Corel Draw document<br />

files, template files, and scripts.<br />

PP97M/ A macro virus that infects Micros<strong>of</strong>t PowerPoint 97 files.<br />

W32/ A file-infector or boot-sector virus. This type infects various versions<br />

<strong>of</strong> the 32-bit Windows operating system.<br />

Thus, for example, the standard name W32.Blaster.T.Worm refers to<br />

a worm that attacks certain vulnerabilities in Windows 2000 and Windows<br />

XP. It has a suffix T and the extra indicator Worm because it is not a virus.<br />

The name Concept.Fr.B indicates a macro virus that originated in France


2.19 Virus Hiding Methods 83<br />

and is a version <strong>of</strong> the virus WM.Concept that’s been modified to work with<br />

French-language versions <strong>of</strong> Micros<strong>of</strong>t Word.<br />

See [Encyc1 04] and [Encyc2 04] for two detailed virus encyclopedias<br />

with names and descriptions <strong>of</strong> thousands <strong>of</strong> computer viruses.<br />

2.19 Virus Hiding Methods<br />

Once a virus has released its payload, complete recovery from its destructive<br />

effects may be slow, complex, and agonizing. However, it is <strong>of</strong>ten easy to<br />

get rid <strong>of</strong> the virus itself once it has been identified. If the virus hides in a<br />

file, the file can be deleted and replaced with an original. If the virus hides<br />

in the boot sector, the operating system can reinstall the boot sector on the<br />

infected disk. There are some exceptions, most notably the MTX virus/worm<br />

(Section 5.12), where deleting the virus is a multistep process and should<br />

be done manually, not by a program (the interested reader should consult<br />

[pchell 05] for the detailed removal instructions). This section discusses ways<br />

and means used by viruses to hide themselves in the computer.<br />

A boot sector virus (BSI, Section 2.6) hides in the boot sector <strong>of</strong> a disk.<br />

It seems that identifying such a virus should be easy. The computer owner<br />

(or a security worker) can prepare in advance a copy <strong>of</strong> the boot sector, and<br />

later compare it to the boot sector <strong>of</strong> a suspicious disk. However, a welldesigned<br />

virus can <strong>of</strong>ten defeat this simple check because <strong>of</strong> the way disks<br />

are read and checked. Binary information recorded on a disk cannot be read<br />

with the naked eye. In order to read the boot sector and print it, display<br />

it, or compare it to a list <strong>of</strong> instructions (in fact, to read anything from a<br />

disk), a program is needed. The program works by invoking operating system<br />

routines (sometimes called basic input/output system or BIOS) and the point<br />

is that the virus can modify these routines. Specifically, the routines can be<br />

modified such that when they are asked to read the boot sector, they will<br />

provide a copy <strong>of</strong> the original, non-infected sector that had been hidden on<br />

the disk by the virus.<br />

The security expert can take the suspect disk to another computer and<br />

try to read the boot sector there, but the virus may be executed from the<br />

boot sector (and modify the BIOS routines) as soon as the disk is inserted<br />

into the new computer. The disk should therefore be read in a different type<br />

<strong>of</strong> computer or in the same platform but under an operating system that<br />

the virus doesn’t recognize. An alternative is for a security expert to write<br />

low-level disk routines, similar to the ones used by BIOS, and read the disk<br />

with these routines.<br />

The virus itself doesn’t have to be located in the boot sector. It can be<br />

hidden elsewhere on the disk and be loaded by the loader in the boot sector<br />

when the disk is mounted. Such a virus modifies the boot sector, but only in<br />

an insignificant way, by adding a few instructions that load the virus. The<br />

virus itself may be hidden in an extra track or in unused disk space (but in<br />

this case the virus may be erased when a new file is written on the disk).


84 2 Viruses<br />

The Macintosh operating system organizes a file in two forks, a data fork,<br />

with the content <strong>of</strong> the file (instructions or data) and a resource fork, with<br />

character strings, parameters, icons, and extra code segments. It is possible<br />

to hide a virus in the resource fork <strong>of</strong> a file as a code resource. The virus still<br />

has to be executed, which means that some executable program (most likely<br />

the one in the data fork <strong>of</strong> the same file) must be modified to read the virus,<br />

store it in memory, and execute it.<br />

A file infector virus (Section 2.7) embeds itself in an executable file and<br />

therefore has to modify the file in some way. Such a virus can be detected by<br />

detecting the modifications to the infected file. The modifications may affect<br />

(1) the file size, (2) its most recent modification date, (3) the code inside the<br />

file, and (4) the file’s access permissions.<br />

An overwriting virus writes itself over the code <strong>of</strong> the original file and<br />

therefore preserves the size <strong>of</strong> the infected file. A nonoverwriting virus modifies<br />

the size <strong>of</strong> the file but may be able to fake this modification and thereby<br />

fool anti-virus s<strong>of</strong>tware. (The virus may save the original size, embed itself<br />

in the file, then restore the size. Stealth techniques are discussed in Section<br />

2.21.) The obvious conclusion is that virus detection s<strong>of</strong>tware should<br />

not rely only on the size <strong>of</strong> a file to detect infection.<br />

The header <strong>of</strong> a file may also contain a simple checksum <strong>of</strong> the rest <strong>of</strong><br />

the file. (In its simplest form, the checksum is a byte that’s the exclusive-or<br />

<strong>of</strong> all the bytes <strong>of</strong> the file.) Almost any change in the composition <strong>of</strong> the file<br />

affects the checksum, and this may be an indicator <strong>of</strong> file corruption, a better<br />

indicator than just the size <strong>of</strong> the file. However, a clever virus may fake the<br />

checksum (it may copy the original checksum from the header and restore it<br />

later, a common stealth technique).<br />

Even a simple virus that modifies the file size may avoid detection because<br />

anti-virus s<strong>of</strong>tware cannot tell why the size <strong>of</strong> an executable file has<br />

changed. When anti-virus s<strong>of</strong>tware is executed, it may scan the disk and save<br />

the sizes <strong>of</strong> all the executable files it finds. The next time it is executed, it<br />

may discover that the size <strong>of</strong> an executable file A has changed, but this may<br />

be the result <strong>of</strong> updating A. After all, programs go through new versions all<br />

the time, and many new versions update the original program file instead <strong>of</strong><br />

creating a new file.<br />

Some viruses infect only large files, because a virus embedded in a small<br />

file may significantly modify the size <strong>of</strong> the file, thereby raising suspicion.<br />

This behavior may be termed a psychological factor and it illustrates the great<br />

lengths to which virus writers may go in their attempts to foil detection.<br />

A program consists <strong>of</strong> instructions and data. The data part consists<br />

<strong>of</strong> constants and variables, and some <strong>of</strong> the variables are arrays. An array<br />

is a set <strong>of</strong> consecutive memory locations reserved by the program. When<br />

the program starts executing, the array is normally empty (more accurately,<br />

undefined). During its execution, the program may store data in the array.<br />

A virus author who is very familiar with a particular program may write an<br />

overwriting virus that embeds itself in an array in the executable file <strong>of</strong> the<br />

program. (The author has to know precisely where the array is located in the<br />

file, because everything in an executable file, instructions, data, and arrays,


2.19 Virus Hiding Methods 85<br />

consists <strong>of</strong> bits and therefore looks the same.) A virus located in an array<br />

does not change the size <strong>of</strong> the file and does not affect its executable code.<br />

However, once the program starts executing, it may write data in the array,<br />

thereby erasing the virus’ code. There is also the question <strong>of</strong> how the virus<br />

can get executed, because a program does not execute arrays <strong>of</strong> data.<br />

An operating system may impose restrictions on files and such restrictions<br />

may be exploited by viruses. An operating system may require, for<br />

example, that a file size be always a multiple <strong>of</strong> 512 or some other number <strong>of</strong><br />

bytes. A virus writer who plans to attack a certain computer and is familiar<br />

with the popular programs on that computer, may know that a certain program<br />

file has a long, empty “tail” where a virus can be hidden. There is still<br />

the question <strong>of</strong> the virus being executed. The original code <strong>of</strong> the program<br />

must be modified to include at least a jump or a procedure call to the virus.<br />

Detailed knowledge <strong>of</strong> the operating system and the files and tables it<br />

uses may lead to sophisticated viruses that hide themselves in a variety <strong>of</strong><br />

ways. A favorite <strong>of</strong> some virus authors is a virus that modifies the disk<br />

directory instead <strong>of</strong> modifying the infected files.<br />

For each file on a disk, the disk directory contains, in addition to the<br />

file name, type, size, and other items, the start address <strong>of</strong> the file on the disk<br />

(the sector number or sector and track numbers). When the virus is executed<br />

for the first time in an infected computer it writes itself on the main hard<br />

disk as a file, but does not include itself in the directory (or includes itself as<br />

an invisible file). It then scans the directory until it finds a file A it wants<br />

to infect. It saves the disk address <strong>of</strong> A and changes this address in the<br />

directory to its own start address. When the user wants to execute file A,<br />

the operating system follows the disk address found in the directory, which<br />

leads it to the virus. The virus is executed, and when done it may decide to<br />

execute program A to avoid raising suspicion. The term misdirection virus is<br />

sometimes applied to this type <strong>of</strong> virus. It can be implemented such that it<br />

will misdirect the execution <strong>of</strong> several different programs to (different entry<br />

points in) the virus. This is only one <strong>of</strong> many examples that illustrate the<br />

ingenious ways in which viruses and other malicious s<strong>of</strong>tware can be hidden<br />

in a computer.<br />

Figure 2.10 illustrates how this technique works. Part (a) <strong>of</strong> the figure<br />

shows a disk with three files A, B, and V and a file directory with three items<br />

per file, disk address (the pointers), name, and a visibility flag. Note that file<br />

V (the virus) is invisible. In part (b) we see how the directory entry for file<br />

A is pointing to the virus, and how the virus has the disk address <strong>of</strong> A (the<br />

dashed arrow). The directory entries for the other files haven’t changed.<br />

Next, we discuss the use <strong>of</strong> a CRC in locating viruses and how a virus<br />

can protect itself from such detection.<br />

Most programs (executable files) never change their content. The program<br />

does not modify itself when executed. The same is true for the boot<br />

sectors on disk drives. Such sectors contain programs that load files from<br />

the disk, and those programs are always the same (they change only when<br />

new versions <strong>of</strong> the operating system are installed). It is therefore relatively<br />

easy to write an anti-virus program that will scan all the executable files on


86 2 Viruses<br />

�<br />

�<br />

���� ��������� ���� ���������<br />

�<br />

�<br />

�<br />

�<br />

�<br />

�<br />

�<br />

��� ���<br />

Figure 2.10: (a) Original Directory. (b) Modified Directory.<br />

a disk, store their sizes in a table, and use this table in future executions<br />

to locate those executable files whose sizes have changed. This anti-virus<br />

program should be run periodically, to notify the user <strong>of</strong> any changes.<br />

Unfortunately, it is relatively easy for a sophisticated virus writer to<br />

defeat the protection <strong>of</strong>fered by this type <strong>of</strong> anti-virus s<strong>of</strong>tware. Once the<br />

virus decides which file to infect, it can obtain the size <strong>of</strong> the file from the<br />

operating system, compress the file, prepend or append itself to the file, then<br />

pad the file with zeros to bring it to its former size. A typical executable<br />

file may compress to about half its original size, leaving plenty <strong>of</strong> room for<br />

the virus, which is normally a small program. When the executable file is<br />

launched, the virus (which is not compressed) executes first. It performs its<br />

tasks, then decompresses the executable program, so it can also run. The<br />

only effect that may be observed by the user and cause suspicion is the<br />

short delay caused by decompressing the executable file. The cruncher virus<br />

(Section 5.10) is an example <strong>of</strong> a compression virus.<br />

Exercise 2.16: Can it happen that compressing an executable file will not<br />

leave enough room for a virus?<br />

A more sophisticated version <strong>of</strong> such anti-virus s<strong>of</strong>tware can try to detect<br />

the presence <strong>of</strong> a virus by means <strong>of</strong> a checksum or a CRC. The operating<br />

system should compute a checksum or a CRC (cyclic redundancy code) for<br />

each new executable file stored on the disk and save the CRCs in a table. The<br />

anti-virus s<strong>of</strong>tware checks, in such a case, every executable file by computing<br />

its CRC and comparing it to the CRC in the table. Any differences indicate<br />

changes to the file, even if its size hasn’t changed.<br />

A little thinking shows that even the use <strong>of</strong> CRC to detect viruses is not<br />

foolpro<strong>of</strong>, because a sophisticated virus writer may learn how the operating<br />

system computes the CRC and use this knowledge to embed the virus in an<br />

executable file without modifying its original CRC. To do this, the virus (1)<br />

computes the CRC <strong>of</strong> the executable file, (2) compresses the file, (3) prepends<br />

itself to the file, (4) pads the file with zeros to bring it back to its original<br />

size, then (5) changes some <strong>of</strong> the zero bytes to restore the file’s CRC.<br />

�<br />

�<br />

�<br />

�<br />

�<br />

�<br />

�<br />

�<br />


2.19 Virus Hiding Methods 87<br />

If the CRC computation is kept secret, the virus writer may buy the antivirus<br />

s<strong>of</strong>tware (more likely, locate a copy in file sharing sites), disassemble it,<br />

and read and understand the part that computes the CRC. A sophisticated<br />

virus may even locate the table with all the file lengths and CRCs and store<br />

in it the new length and CRC <strong>of</strong> the file it has modified. The table should<br />

therefore be saved in encrypted form, using a password supplied by the user.<br />

A more sophisticated application <strong>of</strong> a CRC is to compute the CRC <strong>of</strong><br />

a clean (uninfected) file, then sign it with the private key <strong>of</strong> either (1) the<br />

program’s author, (2) the owner <strong>of</strong> the computer, or (3) the person who is<br />

cleaning the computer. Digital signatures are discussed in a special document<br />

on cryptography, available in the book’s Web site. The signed CRC then<br />

becomes an authenticator <strong>of</strong> the file. In order to check a file for infection, the<br />

CRC <strong>of</strong> the file has to be computed, the authenticator has to be unlocked, and<br />

the original CRC in the unlocked authenticator compared with the new CRC<br />

just computed. The point is that unlocking the authenticator requires only<br />

the public key, not the private key, <strong>of</strong> the person who locked the authenticator.<br />

The virus may have access to the authenticator, but it cannot unlock it<br />

in order to modify the CRC. The best the virus can do is to corrupt the<br />

authenticator, which will confuse the user.<br />

This scheme makes sense for commercial s<strong>of</strong>tware purchased from a<br />

trusted source. The s<strong>of</strong>tware can be locked at the source, and sold on a<br />

CD that will also have the authenticator (a small file) and the necessary<br />

public key.<br />

An interesting but impractical idea is to have the operating system ask<br />

the user for permission each time a program wants to write to a file. In<br />

principle, the user should know what files the program is supposed to modify,<br />

but in practice, users generally don’t know much about the details <strong>of</strong> program<br />

behavior and the way it writes to files, especially operating system files and<br />

temporary files that the program may create.<br />

The person most familiar with what files a given program should be<br />

allowed to write to is the creator <strong>of</strong> the program. In principle, the creator<br />

may construct a list <strong>of</strong> file names that the program should be permitted to<br />

write to. Such a list should be stored in the same directory as the program<br />

and be accessed by the operating system each time the program tries to write<br />

to a file. However, a clever virus may modify this list and add the names <strong>of</strong><br />

files the virus plans to attack. The list may be encrypted by the user, but<br />

then the operating system may have to ask the user for the encryption key<br />

each time the program wants to write to a different file. The user then enters<br />

the key, but the virus may monitor the keyboard and record the keystrokes.<br />

Despair!<br />

Action is the antidote to despair.<br />

—Joan Baez.


88 2 Viruses<br />

2.20 Polymorphism<br />

Unfortunately, the basic features <strong>of</strong> a computer virus are so powerful that<br />

(at least in principle) it may be possible to write a virus that mutates and<br />

infects each new file as a different string <strong>of</strong> bits. This feature is <strong>of</strong>ten referred<br />

to as polymorphism. Such a virus may be virtually impossible to locate by<br />

anti-virus s<strong>of</strong>tware. Here is one such scenario. Suppose we have identified a<br />

program V (a string <strong>of</strong> bits) as a virus. When infection starts, V has infected<br />

a program P1, and it resides in P1 (Figure 2.11(a)) as an encrypted file E1<br />

plus a small decryption routine D1. When P1 is executed, the virus is also<br />

executed. Routine D1 decrypts E1 into the original virus V . The virus is<br />

then executed, it selects a different encryption algorithm and encrypts itself<br />

into E2. It then prepares a suitable decryption routine D2, and it infects<br />

program P2 by storing E2 and D2 in it (Figure 2.11(b)).<br />

P1<br />

D1 D1 V<br />

E1<br />

P2<br />

P1<br />

E1<br />

(a) (b)<br />

Figure 2.11: A Mutating Virus.<br />

There are now two infected programs, P1 and P2, and the point is that<br />

the viruses located in them are the same, but constitute different bit strings.<br />

The virus has mutated. Such a virus may be virtually impossible to detect,<br />

but there is more! This concept <strong>of</strong> a mutating virus can be extended in<br />

frightening ways.<br />

To scare the reader even more (actually, to educate the reader), we<br />

describe a virus designed to mutate at random into many strains. The original<br />

virus contains m encryption algorithms, it is triggered by one <strong>of</strong> n conditions<br />

Ti, it infects a file in one <strong>of</strong> n ways Ii, and it has n payloads Mi to damage the<br />

computer. This virus spends its life switching between two modes, mutate<br />

and replace. It starts in the mutate mode, where it spreads m mutations <strong>of</strong><br />

itself by using its m encryption methods as shown earlier. This infects m<br />

files with different copies <strong>of</strong> the virus, all with the same infection, triggering,<br />

and payload mechanisms, but all looking different. When done, the virus<br />

switches to the replace mode, where it selects different infection, trigger,<br />

and damage mechanisms. It then switches to its mutate mode, and infects<br />

P2<br />

D2<br />

E2


2.20 Polymorphism 89<br />

another set <strong>of</strong> m programs. This can be repeated n times, with the result<br />

that up to m×n files have been infected with different bit strings, making<br />

it virtually impossible for anti-virus s<strong>of</strong>tware to locate the various instances<br />

<strong>of</strong> the virus. Moreover, because <strong>of</strong> the n different triggering conditions and<br />

damage mechanisms, this single, compound (confound?) virus appears to the<br />

victim like n different viruses.<br />

Exercise 2.17: Have you been frightened enough (see also exercise 9.2)?<br />

In addition to mutating, a virus may hide itself in a compressed file<br />

in such a way that the bits with the virus part depend on the rest <strong>of</strong> the<br />

infected file and are therefore always different. Such a file has to be completely<br />

decompressed in order to identify the virus. The cruncher virus (Section 5.10)<br />

is such an example.<br />

Polymorphism can also be achieved in other ways and a few techniques<br />

are listed here.<br />

Programmers know that there normally are several ways to implement a<br />

given task in a computer program. Thus, it is common to have in a program<br />

two sections <strong>of</strong> code A and B whose order <strong>of</strong> execution is immaterial. They<br />

can be executed as either AB or BA, which implies that the same program<br />

can be written in two different ways (it can become two different bit strings).<br />

If there are three sections <strong>of</strong> code that can be executed in any order, then<br />

the program can be written in 3! = 6 different ways. Thus, a virus can create<br />

versions <strong>of</strong> itself that differ in the order <strong>of</strong> certain sections <strong>of</strong> code.<br />

Exercise 2.18: (For programmers.) A program works with registers and<br />

memory locations. Suggest several ways to clear register 4 (set it to all<br />

zeros).<br />

A virus can modify itself and become a different string <strong>of</strong> bits simply<br />

by inserting several nop instructions in its code. A nop (no operation) is an<br />

instruction that does nothing.<br />

A virus that propagates as an email attachment can use one <strong>of</strong> many<br />

prepared names for the attachment. An example <strong>of</strong> this behavior is the<br />

MTX malware (Section 5.12)<br />

The next point to consider, when trying to locate and eradicate viruses,<br />

is the so-called “tail-chasing” effect. Suppose there are three programs P1,<br />

P2, and P3 in a computer, and the first two are infected. While anti-virus<br />

s<strong>of</strong>tware cleans P1, program P2 may be run by the user (or by one <strong>of</strong> the users)<br />

and it infects P3. When P2 is later disinfected by the s<strong>of</strong>tware, program P3<br />

is run by someone and it infects P1 or another program (Figure 2.12). It is<br />

clear that cleaning a file system must be done in a quiet environment, but<br />

this is getting more and more difficult as operating systems become more<br />

sophisticated. Even a personal computer with one user has a number <strong>of</strong><br />

active programs that are invoked by the operating system (either when the<br />

computer starts or at other times), are executed in the background, and are<br />

transparent to the user. Typical examples are: (1) A routine that connects


90 2 Viruses<br />

periodically to a standard clock on the Internet to readjust the computer’s<br />

clock. (2) A routine to perform periodic maintenance tasks to get rid <strong>of</strong><br />

unused logs and cache files and to automatically backup certain important<br />

operating system files. (3) A utility to periodically defragment disks. If any<br />

<strong>of</strong> those programs is infected, it will infect others each time it is run.<br />

Time<br />

T1 T2 T3<br />

P1 infected clean<br />

P2 infected executing<br />

P3 clean infected<br />

Anti-virus executing<br />

Figure 2.12: A Tail Chasing Effect.<br />

infected<br />

clean<br />

executing<br />

⋄ Exercise 2.19: Look at the activity monitor <strong>of</strong> your computer to locate<br />

other routines that are currently active, especially those that are not part <strong>of</strong><br />

the operating system.<br />

The conclusion is that as many active processes as possible should be<br />

stopped before any attempt is made to clean viruses from a computer.<br />

2.21 Virus Stealth Techniques<br />

Stealth techniques are mentioned on page 84 in connection with a virus faking<br />

the size or the checksum <strong>of</strong> a file. This section discusses the concept <strong>of</strong> virus<br />

stealth and how stealth techniques work. Consider the example <strong>of</strong> a virus<br />

that embeds itself in a file. The process <strong>of</strong> writing the virus code in the file<br />

may modify the size <strong>of</strong> the file. If the operating system maintains a checksum<br />

for the file, the checksum will also be modified. A cleverly-designed virus may<br />

attempt to avoid detection by restoring the original size and checksum <strong>of</strong> the<br />

file. This is an example <strong>of</strong> a virus stealth technique.<br />

A file has a header with fields for the file size, creation date, latest date <strong>of</strong><br />

modification, and other data items. These fields are updated by the operating<br />

system each time the file is accessed, but a virus can update them back to<br />

their original values. The trick is for the virus to read these fields before<br />

it embeds itself in the file and save this information. After the virus has<br />

hidden itself in the file, it restores the fields in the file header to their original<br />

values, but it does that without invoking the operating system. Recall that<br />

an operating system is a set <strong>of</strong> routines that provide services to the users<br />

and make it easy for them to use the computer. Programmers normally use<br />

the operating system services to access files, but a good programmer who<br />

is familiar with the details <strong>of</strong> the input/output on the computer can write<br />

a program to read and write files directly, bypassing the operating system<br />

services. When the operating system is not asked to access a file, it doesn’t<br />

update the fields in the file’s header.


2.21 Virus Stealth Techniques 91<br />

Any kind <strong>of</strong> operation where a virus “lies” to the user, modifies interrupt<br />

handling routines, or bypasses standard procedures may be termed a stealth<br />

technique.<br />

Exercise 2.20: Suggest an extreme stealth technique.<br />

Most stealth methods are based on modifying various interrupt handling<br />

routines. Interrupts and their exploitation by viruses are discussed in<br />

Section 2.22. Stealth techniques can be classified in five categories as follows:<br />

No stealth. An overwriting virus <strong>of</strong>ten damages its host file irreparably<br />

and calls attention to itself this way. Such a virus employs no stealth techniques<br />

and is easy to detect and destroy. This category includes only viruses<br />

that don’t care about being discovered. Often, a virus is detected because<br />

<strong>of</strong> a bug in its code or because its author did not anticipate an unusual condition<br />

that affects the host file only rarely. Such viruses are not included in<br />

this category.<br />

Stealth neutral. This category includes viruses that embed themselves in<br />

an executable file without damaging it but do not otherwise attempt to hide.<br />

Such a virus is designed to release its payload once, and then be detected<br />

and expunged.<br />

Elementary stealth. Viruses that take only elementary steps to hide<br />

themselves in the infected file belong in this category. Examples <strong>of</strong> elementary<br />

steps are restoring the size, modification date, and checksum <strong>of</strong> the infected<br />

file. Figure 2.13 illustrates how this approach works. Part (a) <strong>of</strong> the figure<br />

shows a file with some data and a header with three fields, size, date, and<br />

checksum. In part (b), a virus saves the three fields in memory, and in<br />

part (c) it attaches itself to the file, changing the three header fields in the<br />

process. Finally, part (d) shows how the virus has restored the three header<br />

fields from memory using low-level input/output commands that bypass the<br />

normal operating system routines.<br />

Intermediate stealth. The virus prepares a copy <strong>of</strong> the infected file or<br />

boot sector and modifies certain interrupt handling routines to present the<br />

copy to any nosy s<strong>of</strong>tware. When anti-virus s<strong>of</strong>tware tries to detect the virus<br />

by looking for modification in files, it is defeated by such stealth techniques.<br />

Advanced stealth. A virus writer who wants to be original may study<br />

several common anti-virus programs, find weaknesses or loopholes in them,<br />

and design a virus that hides itself based on this knowledge.


92 2 Viruses<br />

����������<br />

�����������<br />

��������������<br />

���<br />

���������� ����������� ��������������<br />

����������<br />

���� �����������<br />

�����<br />

��������������<br />

����<br />

����������<br />

�����������<br />

��������������<br />

���<br />

��� ���<br />

Figure 2.13: Elementary Stealth Virus.<br />

2.22 Interrupts and Viruses<br />

����<br />

�����<br />

An interrupt is a simple mechanism, utilizing both hardware and s<strong>of</strong>tware,<br />

that enables a computer to respond quickly and efficiently to urgent and unusual<br />

conditions. When an urgent or unusual condition occurs, an interruptrequest<br />

signal is sent to the CPU by the circuit that detected the condition.<br />

The CPU looks for interrupt-request signals before it executes the next instruction.<br />

If it finds such a signal, the CPU interrupts the execution <strong>of</strong> the<br />

current program and invokes a special interrupt-handling routine that handles<br />

the condition. The various interrupt-handling routines constitute the<br />

s<strong>of</strong>tware part <strong>of</strong> the interrupt mechanism. The routines are part <strong>of</strong> the operating<br />

system, which is why we can say that an interrupt always transfers<br />

control to the operating system. The sensors, interrupt-request signals, and<br />

the CPU sensor mechanism make up the hardware part. The terms traps<br />

and hooks are <strong>of</strong>ten used for interrupts.<br />

The CPU <strong>of</strong> a computer has three main components, the control unit,<br />

the ALU, and the registers. The registers are storage units for intermediate,<br />

temporary results. The ALU (arithmetic and logic unit) is a set <strong>of</strong> circuits<br />

that perform all the operations on numbers specified by the instructions in<br />

the program. The control unit is the main part <strong>of</strong> the CPU. It is the part<br />

that reads (fetches) the instructions from memory and executes them one by<br />

one in a seemingly endless loop. The control unit knows how to execute each<br />

instruction in the instruction set <strong>of</strong> the computer and it has an execution<br />

circuit for each instruction. It employs a special register called the program<br />

counter or PC. This register always points to the next instruction and is<br />

incremented by the control unit each time an instruction is executed.<br />

In addition to executing instructions, the control unit also implements<br />

the hardware part <strong>of</strong> the interrupt mechanism <strong>of</strong> the computer. Every source<br />

<strong>of</strong> interrupt (i.e., every circuit that can identify unusual or urgent conditions)<br />

is connected with a wire to the control unit and it can send an interruptrequest<br />

signal on that wire. On sensing such a signal, the control unit performs<br />

several extra steps to initiate an interrupt, and then resumes its normal<br />

operation.<br />

Figure 2.14(a) lists the main steps in the loop <strong>of</strong> the control unit. In<br />

each iteration <strong>of</strong> this loop, the control unit (1) fetches the next instruction<br />

from memory, (2) increments the PC, (3) decodes the instruction to find


2.22 Interrupts and Viruses 93<br />

out what it is, (4) executes the instruction, and then (5) examines all the<br />

interrupt request lines, looking for pending interrupts. If it finds any, it<br />

executes several extra steps, two <strong>of</strong> which are listed in the figure. Part (b)<br />

<strong>of</strong> the figure shows how interrupt-request lines (IRQs) from various parts <strong>of</strong><br />

the computer arrive at the control unit.<br />

1. Fetch next instruction.<br />

2. Increment the PC.<br />

3. Decode the instruction.<br />

4. Execute the instruction.<br />

5. Check all IRQs. If IRAi is high, then<br />

5.1 Save the PC.<br />

5.2 PC ← start address <strong>of</strong> IRQi.<br />

6. Go to step 1.<br />

control unit<br />

(a) (b)<br />

Figure 2.14: The Control Unit and Interrupts.<br />

ALU<br />

timer<br />

break<br />

memory<br />

voltage drop<br />

input devices<br />

output devices<br />

A simple example <strong>of</strong> an interrupt is a divide by zero. Mathematically,<br />

a division by zero is undefined and should be avoided. In a computer, the<br />

hardware circuit that divides numbers is part <strong>of</strong> the arithmetic and logic unit<br />

(ALU). When this circuit identifies a zero divisor, it sends an interrupt signal<br />

to the control unit (the CPU component that executes instructions). The<br />

control unit then interrupts the normal execution <strong>of</strong> the program and invokes<br />

a special interrupt-handling routine to handle a divide-by-zero interrupt. The<br />

routine normally displays an error message and may either terminate the<br />

program or give the user a chance to modify the divisor. Other examples <strong>of</strong><br />

common interrupts are the following:<br />

Memory protection violation. In a multiuser computer, several user programs<br />

reside simultaneously in different areas <strong>of</strong> memory. At any given time,<br />

only one program executes. If a program tries (intentionally or accidentally)<br />

to access memory outside its area (even if it only tries to read data, not to<br />

write), the memory protection hardware in the computer senses it and creates<br />

an interrupt signal. Before the next instruction is executed, the control<br />

unit senses the interrupt and invokes the routine associated with this type <strong>of</strong><br />

interrupt.<br />

A timer. A modern computer has special hardware to keep and update<br />

the current time and date. In addition, there is a timer that’s used by the<br />

operating system to switch between processes. To the s<strong>of</strong>tware, the timer<br />

appears as a memory location whose content is decremented automatically<br />

all the time. When the timer reaches zero, a timer interrupt occurs, the current<br />

program is interrupted and control is transferred to the timer handling<br />

routine. The operating system sets the timer location to a certain number n<br />

<strong>of</strong> time units and starts a program by jumping to it. After n time units have


94 2 Viruses<br />

elapsed, the timer reaches zero and the timer routine is invoked, selects another<br />

process, and starts it or resumes it. This way, the CPU can be switched<br />

to a different process every n time units. The formal term for this type <strong>of</strong><br />

operation is multitasking by time slices.<br />

An invalid instruction. When the control unit comes across an invalid<br />

instruction (a bit pattern that’s not the code <strong>of</strong> any instruction) it issues an<br />

interrupt. The handling routine for invalid instructions is invoked and simply<br />

prints an error message and terminates the program.<br />

Resetting (or rebooting) a computer is done by an interrupt. This is<br />

discussed in the answer to Exercise 2.21.<br />

A break. One <strong>of</strong> the more interesting applications <strong>of</strong> interrupts is to<br />

respond to users’ requests. When a program wants to print the time or the<br />

date, it creates an artificial interrupt that invokes a special handling routine,<br />

part <strong>of</strong> the operating system. The routine finds out that the interrupted program<br />

needs the time or date, it resumes the interrupted program and sends it<br />

the requested data. The artificial interrupt is created by a special instruction,<br />

<strong>of</strong>ten called break. Before executing this instruction, the program must store<br />

information about the request in memory. The break instruction accepts one<br />

parameter, an address that points to where the request information is stored.<br />

Input/output (I/O) is an especially important and common example <strong>of</strong><br />

the use <strong>of</strong> the break interrupt. A typical I/O process is initiated by the<br />

user program as a request (in the form <strong>of</strong> an interrupt) to the operating<br />

system. The operating system sends low-level commands to the I/O device<br />

(keyboard, printer, disk, or anything else), it either sends the output to or<br />

waits to receive the input from the device, then resumes the user program.<br />

We examine this process in detail on several levels as follows:<br />

• Suppose that a user program U wants to read a file named abc from<br />

the disk into an array buf. The programmer writes a statement such as<br />

read(abc,buf,1000) where 1000 is the length <strong>of</strong> array buf.<br />

• The compiler (part <strong>of</strong> the operating system) reads the statement and<br />

compiles it into a break instruction whose single parameter points to<br />

memory to where a special code is stored. The code tells the operating<br />

system that the program is requesting input and it includes the string<br />

abc, the address buf, and the constant 1000.<br />

• When the break is executed at run time, it creates an interrupt that<br />

transfers control to its handling routine, also part <strong>of</strong> the operating system.<br />

The routine follows the pointer (the parameter <strong>of</strong> break) to where<br />

the request information is stored. Once the routine understands the<br />

request, it performs the following steps:<br />

1. It changes the state <strong>of</strong> user program U to “inactive.” The program<br />

will have to wait until the input data is sent from the input device<br />

to array buf. In the meantime, other processes (either background<br />

processes or programs <strong>of</strong> other users) will be executed by the CPU.<br />

The operating system maintains a list <strong>of</strong> all the processes in memory<br />

and assigns each process a state <strong>of</strong> “active” or “inactive.” Active<br />

processes execute and inactive ones wait.


2.22 Interrupts and Viruses 95<br />

2. It converts the file name (string abc) to the start address (track<br />

and sector) <strong>of</strong> the file on the disk. The association <strong>of</strong> name to disk<br />

address <strong>of</strong> all the files is stored in the disk directory.<br />

3. It sends the appropriate commands to the input device.<br />

4. Finally, the routine selects the next process to execute and jumps<br />

to it.<br />

• When the input data is ready, the input device itself sends it to array<br />

buf in memory. This process is known as direct memory access or DMA.<br />

When done, the device issues an interrupt.<br />

• We denote by P the program the CPU happens to be executing at the<br />

time this interrupt is created (P may be any program). When the CPU<br />

is ready to execute the next instruction <strong>of</strong> P , it checks the status <strong>of</strong> all<br />

the interrupt request lines. When it finds an interrupt request signal,<br />

it invokes the corresponding handling routine. Program P has been<br />

interrupted.<br />

• This routine finds out that the data requested by U is ready. It changes<br />

the state <strong>of</strong> user program U to “active” and selects the next process to<br />

execute. This process can be program P , the original user program U,<br />

<strong>of</strong> any other waiting process.<br />

If your work speaks for itself, don’t interrupt.<br />

—Henry J. Kaiser.<br />

Once the important mechanism <strong>of</strong> interrupts is understood, it is easy to<br />

see how interrupts can be exploited by computer viruses. A file infector is<br />

executed when its host program is executed. A macro virus is executed when<br />

its host file is processed by an application. A boot sector infector (BSI) is<br />

executed when the disk it has infected is connected to a port (<strong>of</strong>ten USB) and<br />

the program in the boot sector is executed. The BSI copies itself from the<br />

boot sector to memory, but it still has to ensure that it will be executed from<br />

time to time. The best way to do this is to invade and modify an interrupt<br />

handling routine. Each interrupt has a handling routine associated with it,<br />

and that routine is invoked when the interrupt occurs. When the BSI copies<br />

itself from the boot sector to memory, it modifies certain interrupt handling<br />

routines by storing in each <strong>of</strong> them a jump or a call instruction to the virus.<br />

The virus is now memory resident and is activated each time an interrupt<br />

invokes one <strong>of</strong> the modified handling routines.<br />

Certain interrupt routines are natural candidates for infection by a BSI.<br />

The timer routine is an example. It is invoked each time the timer is decremented<br />

to zero, and it is used to switch the CPU between processes. Imagine<br />

a virus that stores a jump instruction to itself at the end <strong>of</strong> this routine. This<br />

virus will be invoked after the operating system has selected the next process<br />

to be started or resumed, but before it (the OS) has actually started or resumed<br />

the process. A clever virus can find out from the timer routine which<br />

process will be the next to execute, thereby having a chance to modify or<br />

infect that process. Admittedly, implementing such a virus requires detailed<br />

knowledge <strong>of</strong> the internals <strong>of</strong> the operating system process scheduling.


96 2 Viruses<br />

Another candidate for a modified handling routine is the keyboard routine,<br />

which is invoked each time a key is pressed on the keyboard. A virus<br />

infecting this routine will be invoked each time the user presses a key on<br />

the keyboard and will therefore be able to save all the keystrokes and send<br />

them periodically outside the computer. Keystroke loggers are discussed in<br />

Chapter 9.<br />

What about external storage media? When an external volume is plugged<br />

into a (USB) port, a sensor issues an interrupt signal. The current program<br />

is interrupted and the interrupt handling routine is invoked. It mounts the<br />

volume and resumes the current program. A virus that modifies that routine<br />

will be invoked each time an external volume is plugged in and will therefore<br />

be able to infect it.<br />

Once a virus has modified some interrupt handling routines, it becomes<br />

memory resident. It will be invoked when any <strong>of</strong> those routines is called, and<br />

will be able to do its “job.” However, most memories <strong>of</strong> today’s computers<br />

are RAM, which is volatile. When the computer is turned <strong>of</strong>f or when it is<br />

restarted, the operating system, including all the interrupt handling routines,<br />

is reloaded from a disk drive or a DVD. Both the memory resident virus<br />

and the infected handling routines are gone. Thus, the next task <strong>of</strong> a virus<br />

writer is to find ways for the virus to survive a reboot <strong>of</strong> the computer. The<br />

following exercise sheds some light on this interesting problem (but see also<br />

Exercise 6.7).<br />

Exercise 2.21: Most <strong>of</strong> the memories used in current computers are volatile;<br />

they are erased when the computer is turned <strong>of</strong>f or is restarted (rebooted).<br />

Suggest a way to use interrupts to implement a resident virus that survives<br />

rebooting.<br />

2.23 Trapdoors<br />

A program is a finite set <strong>of</strong> instructions. It starts at its first executable<br />

instruction and is executed until a STOP instruction is encountered or until an<br />

error is discovered. The first executable instruction <strong>of</strong> a program is normally<br />

the first thing in the program, but a program may also start with an array or<br />

with bytes <strong>of</strong> predefined data and this may be followed by the first executable<br />

instruction. Thus, it is not enough to write, compile, and load a program<br />

in memory. The programmer also has to specify the entry point into the<br />

program.<br />

The source code fragment <strong>of</strong> Figure 2.15(a) starts with an array A and<br />

its main entry point is labeled S; this is the address <strong>of</strong> the first executable<br />

instruction. Another entry point in this program is P, the start address <strong>of</strong> a<br />

procedure that the main program calls. Label S has to be explicitly declared<br />

as an entry point by the programmer. If procedure P is called by another<br />

program, then its name P also has to be declared an entry point. The names<br />

and locations <strong>of</strong> all entry points are saved in the executable program file, in


2.23 Trapdoors 97<br />

contrast with the names <strong>of</strong> other labels, such as B, that disappear once the<br />

program has been compiled.<br />

In Figure 2.15(b), a section <strong>of</strong> code has been appended to our program,<br />

with a new entry point Q. This section performs some operations, calls procedure<br />

P, and stops. If Q is declared an entry point but is not documented by<br />

the programmer, then Q is a trapdoor (<strong>of</strong>ten also referred to as a backdoor).<br />

Anyone who knows that Q is an entry point into the program, can enter at<br />

that point, while others cannot. (This is similar to saying that anyone who<br />

knows the name <strong>of</strong> a program can execute it, or that anyone who knows a<br />

URL can surf to it.) Thus, a trapdoor is an undocumented entry point in a<br />

program.<br />

A: ARRAY 100<br />

S: ADD ..<br />

LOD<br />

B: NEG<br />

CALL P<br />

.<br />

.<br />

STOP<br />

P: INP ..<br />

STO ..<br />

.<br />

.<br />

RET<br />

A: ARRAY 100<br />

S: ADD ..<br />

LOD<br />

B: NEG<br />

CALL P<br />

.<br />

.<br />

STOP<br />

P: INP ..<br />

STO ..<br />

.<br />

.<br />

RET<br />

Q: INP ..<br />

CMPR ..<br />

.<br />

.<br />

CALL P<br />

STOP<br />

(a) (b)<br />

Figure 2.15: Source Code for a Trapdoor.<br />

A trapdoor is not necessarily bad. Trapdoors serve useful and legitimate<br />

purposes such as testing, debugging, and maintaining the program. Sometimes<br />

an entry point that was included temporarily in a program during its<br />

development phase is accidentally left. However, a trapdoor can be a powerful<br />

tool in the hands <strong>of</strong> a wrongdoer and they are commonly found in viruses,<br />

worms, Trojans, and other types <strong>of</strong> malware.<br />

In God we trust, all others we virus scan.<br />

—Anonymous


3<br />

Worms<br />

A tapeworm is a parasite that lives inside the body <strong>of</strong> a bigger creature and<br />

sustains itself from its host’s resources. A s<strong>of</strong>tware worm is a program that executes<br />

independently <strong>of</strong> other programs, replicates itself, and spreads through<br />

a network from computer to computer. A worm is a type <strong>of</strong> rogue s<strong>of</strong>tware<br />

that resides in a host computer, but it is not a virus because it is not embedded<br />

in a host program. A worm propagates<br />

from host to host by exploiting a security hole<br />

or a vulnerability discovered by its creator. Section<br />

3.4 shows how the Internet worm exploited<br />

security weaknesses in the finger and sendmail<br />

UNIX utilities. Section 2.11 describes a vulnerability<br />

in a decoder for jpeg images.<br />

It seems that the idea <strong>of</strong> a s<strong>of</strong>tware worm was first proposed by John<br />

Brunner in his novel The Shockwave Rider, where these programs are referred<br />

to as tapeworms. Inspired by this story, researchers at the Xerox Palo Alto<br />

Research Center (PARC) tried to implement and experiment with programs<br />

that propagated from computer to computer and perform useful tasks. They<br />

reported on their results in 1982 [Shoch and Hupp 82] and it took until<br />

1988 for the first widely-spread worm to appear and create havoc. In the<br />

years since that attack, this particular malicious s<strong>of</strong>tware became known as<br />

the Internet worm. It is a classic example <strong>of</strong> a worm and is described in<br />

Section 3.4.<br />

The discussion here follows the work, ideas, and recommendations <strong>of</strong><br />

[Staniford et al. 02]. It examines the mechanisms used by known worms, and<br />

considers ways to create worms that are extremely sophisticated and dangerous<br />

because they can spread and embed themselves in a matter <strong>of</strong> hours<br />

or even minutes in millions <strong>of</strong> computers and remain a threat for months.<br />

D. Salomon, <strong>Elements</strong> <strong>of</strong> <strong>Computer</strong> <strong>Security</strong>, Undergraduate Topics in <strong>Computer</strong> Science,<br />

DOI 10.1007/978-0-85729-006-9_3, © Springer-Verlag London Limited 2010


100 3 Worms<br />

An important part <strong>of</strong> the discussion concentrates on worm communications.<br />

We list several reasons for why a worm’s author should be able to command<br />

the worm during its spread (i.e., send commands, signals, or even executable<br />

code to the large number <strong>of</strong> copies <strong>of</strong> the worm). Techniques for doing that<br />

are also presented. Finally, we present the idea <strong>of</strong> an international cyber center<br />

for disease control (CCDC) dedicated to the unending war against worms<br />

and other types <strong>of</strong> rogue s<strong>of</strong>tware.<br />

In general, the speed <strong>of</strong> a worm’s spread is dictated by the efficiency <strong>of</strong><br />

finding new targets. Apart from optimizing the scanning code, a couple <strong>of</strong><br />

minor variations in scan sequence can result in significant improvements in<br />

speed.<br />

—Stuart Staniford, Vern Paxson, and Nicholas C. Weaver,<br />

Warhol Worms: The Potential for Very Fast Internet Plagues, Feb 2002.<br />

The main feature <strong>of</strong> worms, a feature that distinguishes them from<br />

viruses and Trojan horses is their speed <strong>of</strong> propagation. A virus propagates<br />

when users send email, launch programs, or carry storage media between<br />

computers. A worm propagates itself throughout the Internet by exploiting<br />

security weaknesses in applications and protocols we all use. Thus, a perpetrator<br />

interested in deep penetration <strong>of</strong> the Internet may try to implement<br />

a sophisticated worm. Because <strong>of</strong> this attribute, future worms may pose a<br />

threat to the Internet, to E-commerce, and to computer communications and<br />

this threat may be much greater and much more dangerous than that posed<br />

by other types <strong>of</strong> rogue s<strong>of</strong>tware. A worm that has infected several million<br />

computers on the Internet may have the potential for a global catastrophe.<br />

Here are just three possible scenarios:<br />

Such a worm could launch vast DoS attacks that are out <strong>of</strong> the reach <strong>of</strong><br />

current protection technologies. Such powerful attacks can bring down not<br />

only E-commerce sites, but sensitive military sites or the root domain name<br />

servers <strong>of</strong> the Internet. Such an attack may be an ideal tool in the hands <strong>of</strong><br />

terrorists or may be perpetrated intentionally by a rogue nation to serve as<br />

a prelude to a large-scale war.<br />

It is well known that rogue s<strong>of</strong>tware <strong>of</strong>ten searches for sensitive information<br />

such as passwords and credit card numbers, but a wide-spread worm<br />

may blindly search for any kind <strong>of</strong> information based on a set <strong>of</strong> keywords.<br />

This type <strong>of</strong> a “needle in a haystack” search is inefficient, but with millions<br />

<strong>of</strong> worms searching simultaneously, it may produce quick results.<br />

A well-known adage says “you can’t fool all the people all the time,” but<br />

when the same false message arrives from millions <strong>of</strong> computers it may fool all<br />

the people some <strong>of</strong> the time. A wide-spread worm may cause much confusion<br />

and disrupt the lives <strong>of</strong> many by sending misinformation from millions <strong>of</strong><br />

computers or just by making public the sensitive data it had discovered.<br />

It’s easy to come up with other, no less frightening “applications” <strong>of</strong> a<br />

global worm, because we depend on the Internet more and more, and not just<br />

we as individuals, but the infrastructure <strong>of</strong> entire nations. Past experience


3.1 Code Red I 101<br />

with fast-spreading worms should serve as a warning to what the future may<br />

have in store for us in this corner <strong>of</strong> the discipline <strong>of</strong> computer security.<br />

3.1 Code Red I<br />

Among the many s<strong>of</strong>tware products produced and marketed by Micros<strong>of</strong>t Inc.<br />

there is a Web server known as the Micros<strong>of</strong>t internet information services<br />

(or IIS, see [IIS 04]). In June 2001, a vulnerability that exposed IIS to attack<br />

because <strong>of</strong> a remote buffer overflow was discovered and published in [CVE 01].<br />

Just one month later, in July 2001, a new worm, designated Code-Red (later<br />

Code Red I or CRv1) appeared and started spreading by exploiting this<br />

weakness.<br />

Once Code-Red has infected a host computer, it spreads by generating<br />

99 random IP addresses and trying to infect any IIS servers found at these<br />

locations by exploiting the same vulnerability. In some cases, another random<br />

IP was generated and the worm tried to deface the Web site (if any) at that<br />

address.<br />

The first version <strong>of</strong> this worm had a serious bug. It always used the same<br />

seed for the pseudo-random numbers it generated. This meant that all the<br />

copies <strong>of</strong> the worm generated the same random numbers and tried to infect<br />

the same computers. The anonymous perpetrator has also noticed this error<br />

and has quickly come up with a second version that became known as Code<br />

Red I v2 or CRv2 (not to be confused with Code Red II). This was identical<br />

to the first version, with three differences (1) the bug in the random number<br />

generator had been corrected, (2) the new worm did not deface any Web sites,<br />

and (3) it targeted the White House Web site (http://www.whitehouse.gov)<br />

for a DoS attack.<br />

In just a few days, this second version had spread to virtually all the<br />

computers running Micros<strong>of</strong>t IIS servers. It then turned itself <strong>of</strong>f intentionally<br />

and later started resurfacing once a month.<br />

The worm propagation analysis presented here follows the mathematical<br />

model developed in [Staniford et al. 02]. The model makes some simplifying<br />

assumptions. It assumes that the worm behaves perfectly, in particular that<br />

its random number generator generates good pseudo-random numbers. It<br />

also assumes that there are N computers running IIS on the Internet, and<br />

that this is the maximum number <strong>of</strong> computers that can be infected. (In<br />

reality, some <strong>of</strong> those computers will have installed security patches before<br />

being attacked or may be <strong>of</strong>f when the worm tries to attack them.) The initial<br />

infection rate (the number <strong>of</strong> vulnerable computers the worm can find and<br />

infect in one time unit at the beginning <strong>of</strong> its operations, when relatively few<br />

computers have been infected) is denoted by K and is assumed to be constant<br />

(in reality K varies because data packets sent by the worm take different<br />

times to arrive at their targets and because potential victims have different<br />

speeds). The time when the attack has started (day, hour, and minute) is<br />

denoted by T , and the current time is the variable t. The important quantity


102 3 Worms<br />

is the percentage <strong>of</strong> vulnerable computers that have been infected at time t.<br />

This is denoted by a(t).<br />

At time t, the percentage <strong>of</strong> computers that have been infected (out <strong>of</strong><br />

the N available hosts) is a(t). In the next time interval dt, the number <strong>of</strong><br />

machines N da(t) that will be infected is given by<br />

N da(t) = [Na(t)]K[1 − a(t)] dt. (3.1)<br />

This is because the number <strong>of</strong> computers infected in the next dt seconds<br />

is the product <strong>of</strong> (1) the number N da(t) <strong>of</strong> infected hosts, (2) the number<br />

K[1−a(t)] <strong>of</strong> computers each <strong>of</strong> those infected hosts can infect in a unit time,<br />

and (3) the time interval dt.<br />

Equation (3.1) yields the differential equation<br />

da(t)<br />

dt<br />

= Ka(t)[1 − a(t)],<br />

that no longer depends on N and whose solution is<br />

a(t) =<br />

)<br />

eK(t−T<br />

, (3.2)<br />

1 + eK(t−T )<br />

where T is the constant <strong>of</strong> integration. Equation (3.2) is well known from the<br />

study <strong>of</strong> the growth <strong>of</strong> epidemics. It is easy to see that when the worm starts<br />

(i.e., when t = T ), the equation yields a(T ) = 1/2. Later, as t grows, the<br />

difference t − T is positive, so e K(t−T ) grows without limit, causing a(t) to<br />

approach the value 1. Recall that a(t) is the percentage <strong>of</strong> computers infected<br />

at time t. Thus, Equation (3.2) implies that this percentage approaches 1,<br />

regardless <strong>of</strong> the number N <strong>of</strong> potential victims, and depending only on the<br />

initial infection rate K.<br />

The conclusion from this simple analysis is that a well-debugged worm<br />

that operates like Code-Red can infect virtually every vulnerable computer<br />

on the Internet within a reasonably short time period provided that K is<br />

large enough. Fitting the number <strong>of</strong> computers infected by the first wave <strong>of</strong><br />

CRv2 to Equation (3.2) shows that this worm had an initial infection rate<br />

K <strong>of</strong> about 1.8 per hour. Its second wave <strong>of</strong> activity had a smaller rate <strong>of</strong><br />

about 0.7.<br />

Following the success <strong>of</strong> Code Red I, a similar worm, designated Code<br />

Red II (after a string found in a comment inside the worm) appeared in early<br />

August 2001 [Code Red II 01]. It was a rewritten version <strong>of</strong> Code Red I<br />

and exploited the same IIS vulnerability. Once infecting a computer, Code<br />

Red II installed a backdoor allowing its controller unrestricted access to the<br />

infected computer. Evidently, the worm had been tested by its creator only<br />

on Windows 2000, because when it infected computers running IIS under<br />

Windows NT, it crashed the operating system.<br />

Like its predecessor, Code Red II generated pseudo-random IP numbers,<br />

but these were not uniformly distributed. A random IP number was generated<br />

with probability 1/2 from its own class A, with probability 3/8 from


3.2 Worming Techniques 103<br />

class B, and with probability 1/8 from the entire IP address space. This type<br />

<strong>of</strong> localized spreading makes sense for a worm, because computers with IP<br />

addresses close to address X tend to be geographically close to the computer<br />

whose IP is X. Often, such computers are part <strong>of</strong> the same local area network,<br />

and it has been noticed that the worm spread rapidly within such a<br />

network, once it has infected one computer in it.<br />

The nimda worm (nimda is the reverse <strong>of</strong> admin) first appeared in mid<br />

September 2001 and was likely written by the same person responsible for<br />

the two Code Red versions. Nimda was a multi-vector (or a multi-mode)<br />

worm because it tried to spread itself in several ways. This approach to worm<br />

propagation has proved useful and nimda spread quickly and extensively even<br />

behind firewalls. It remained as a menace on the Internet for months. Nimda<br />

spread in several ways as follows:<br />

The main technique for nimda propagation is by exploiting the IIS vulnerability.<br />

Nimda also searches address books in an infected computer and emails<br />

itself to all the addresses found there.<br />

It copies itself across open network shares.<br />

It installs code on Web sites in infected computers such that anyone<br />

browsing the site gets infected.<br />

It scans for the backdoors left by Code Red II and the sadmind worms.<br />

This is why it’s likely that all three were implemented by the same person.<br />

At the Lawrence Berkeley National Laboratory, special s<strong>of</strong>tware was<br />

used to count the frequency <strong>of</strong> nimda trying to connect to computers on that<br />

site from many infected computers. The counts <strong>of</strong> nimda probes rose in 30<br />

minutes from zero to nearly 100 per second.<br />

3.2 Worming Techniques<br />

There is an ongoing debate about whether it is proper to openly discuss<br />

ideas and techniques for rogue s<strong>of</strong>tware. After all, such information can<br />

be tremendously useful to someone intending to do harm. Regardless <strong>of</strong> the<br />

arguments on both sides, such techniques have been presented, discussed, and<br />

analyzed in the open literature, and the discussion in this section includes<br />

only information that has already appeared elsewhere.<br />

It is obvious from the examples <strong>of</strong> worms so far that a powerful worm<br />

should try to spread by exploiting known and new weaknesses and also by<br />

employing several methods, as done by nimda. Probing a potential computer<br />

for accessibility is done by sending it a 40-byte SYN packet (this is part <strong>of</strong><br />

the TCP protocol). If a target is accessible, it takes only a few hundred bytes<br />

to exploit its vulnerability and send it a copy <strong>of</strong> the worm. An efficient worm<br />

should therefore be able to probe hundreds <strong>of</strong> computers per second.


104 3 Worms<br />

A key feature for a successful worm is finding a new, unknown, and<br />

widespread security hole in popular s<strong>of</strong>tware. A worm that exploits such a<br />

hole can expect a high infection rate in a short period <strong>of</strong> time. An example<br />

<strong>of</strong> such a hole is described in detail in Section 2.11.<br />

The following is a description <strong>of</strong> four other approaches to rapid worm<br />

propagation, approaches that may cause a worm to spread to millions <strong>of</strong> computers<br />

before any human experts can intervene and try to stop the infection.<br />

Hit-list Scanning. It is known, both from observing worms spreading<br />

“in the wild” and from theoretical analysis, that the initial rate <strong>of</strong> infection<br />

<strong>of</strong> a worm is low. It takes a certain critical mass for the infection to take <strong>of</strong>f<br />

and become widespread. A well-designed worm can overcome the low initial<br />

infection rate through the use <strong>of</strong> hit-list scanning.<br />

The idea is for the hacker to start by preparing a list <strong>of</strong> potentially<br />

vulnerable machines, ideally ones with good network connections. The list<br />

should be fairly long, perhaps at least 10,000 IP numbers and preferably up<br />

to 50,000 numbers. Preparing such a list takes some work, so we propose a<br />

few ideas as follows:<br />

Scan the entire Internet in order <strong>of</strong> IP number. Such a scan may be<br />

detected, but the perpetrator may get away with it if he has access to a fast<br />

Internet connection (such as an optical cable, OC). Each probe consists <strong>of</strong><br />

sending a single SYN data packet to a computer and waiting for a response.<br />

If the scan can be completed in a few hours, the hacker may walk away,<br />

especially if the perpetrator is a large entity (a government) or if he uses<br />

someone else’s connection.<br />

Scan the entire Internet (by trying every IP number, but not in order)<br />

over a long period, say a few months, so as not to attract attention. Such<br />

scans are performed all the time, so a slow scan may not raise suspicion. A<br />

slow scan implies that some <strong>of</strong> its results would be out <strong>of</strong> date when it is<br />

complete, but the list doesn’t have to be perfect.<br />

The hacker starts by building a botnet <strong>of</strong> at least a few hundred zombies<br />

and let them do the scanning for him. This can be termed distributed<br />

scanning.<br />

Compile a list <strong>of</strong> domain names, then use a whois service such as [Network<br />

solutions 04] to obtain the IP <strong>of</strong> each domain. The domain names<br />

themselves can be obtained by a network crawler similar to the ones used by<br />

the various search engines.<br />

A survey innocuously conducted by a network researcher may contain a<br />

list <strong>of</strong> domain names or IP numbers <strong>of</strong> owners <strong>of</strong> a vulnerable server.<br />

It may even make sense for the hacker to write and release another worm,<br />

just for the purpose <strong>of</strong> assembling such a list.<br />

Exercise 3.1: Suggest another way <strong>of</strong> compiling such a list.<br />

Once the list is ready, it is built into the worm. The worm is then<br />

released into one <strong>of</strong> the computers on the hit-list and starts scanning the list,


3.2 Worming Techniques 105<br />

probing computers. When it finds a vulnerable host, ready to be infected,<br />

the worm divides the list in two, sends a copy <strong>of</strong> itself with one half <strong>of</strong> the<br />

list, and keeps the other half.<br />

As new copies <strong>of</strong> the worm spread throughout the Internet, they carry<br />

shorter lists. When a worm is generated with a list <strong>of</strong> length 1, it switches<br />

from the hit-list mode to its normal mode <strong>of</strong> scanning and propagation. The<br />

point is that the hit list enables the worm to achieve deep initial penetration<br />

<strong>of</strong> the Internet in a very short time. It has been estimated that an efficient<br />

use <strong>of</strong> this technique can infect tens <strong>of</strong> thousands <strong>of</strong> computers in just a<br />

few seconds. Such fast operation may make it extremely difficult for human<br />

experts to intervene on time. The result is a deeply embedded worm that<br />

may take months to completely eradicate.<br />

Permutation Scanning. Just generating random IP numbers and<br />

probing each is an inefficient process. Many numbers may be generated<br />

twice, thereby wasting precious worm time (precious, because initial infection<br />

is critical to the success <strong>of</strong> a worm). Also, the worm has no way to<br />

measure its success, to estimate its own penetration. The permutation scanning<br />

method presented here solves these problems, but it depends on the<br />

ability <strong>of</strong> the worm to find out whether a potential target is already infected.<br />

Permutation scan requires the worm to generate all the IP numbers (i.e.,<br />

all the 32-bit integers) but not in their natural order. The worm should be<br />

able to generate a permutation <strong>of</strong> the IP numbers. Such a permutation can<br />

be generated by an encryption algorithm. A block encryption method takes<br />

a block and encrypts it to another block in a unique way, such that if block<br />

A is encrypted to X, then no other block is encrypted to X. The worm has<br />

to implement such an encryption algorithm and use a key to encrypt each<br />

32-bit IP number to another 32-bit number. The same key can also be used<br />

to decrypt, if needed. When the algorithm is applied to encrypting all the IP<br />

numbers in their natural order, the result is a sequence <strong>of</strong> the same numbers,<br />

but in a different order, a permutation.<br />

A worm employing permutation scanning encrypts IP numbers and probes<br />

the computer at each encrypted IP number, looking for a vulnerable computer.<br />

When such a machine is found, the worm infects it with a copy <strong>of</strong><br />

itself. The copy then performs the same permutation scanning as its parent,<br />

but starting from its own IP number. When a worm finds an already-infected<br />

host, it selects a random IP number and continues with the permutation scan<br />

from that number.<br />

The result is that each copy <strong>of</strong> the worm appears to be scanning IP<br />

numbers at random, but the permutation minimizes any duplication <strong>of</strong> effort.<br />

Imagine a worm W that finds an infected machine M. W knows that the<br />

worm that infected M is now working its way through the permuted IP<br />

numbers starting from M, so W should not continue its permutation scan<br />

from M, but instead switch to another IP number N and continue from there.<br />

Thus, a permutation scan helps the worms coordinate their effort.<br />

A true implementation (i.e., free <strong>of</strong> bugs) <strong>of</strong> permutation scan is efficient<br />

and causes widespread infection in a short time. It has another advantage.<br />

When a copy <strong>of</strong> the worm generates several permuted IP numbers and all


106 3 Worms<br />

prove to be infected, the worm may decide that the infection is comprehensive<br />

and it can stop the scanning.<br />

For an even better performance, a sophisticated worm may check the<br />

timer <strong>of</strong> its host and wake up at a predetermined time (for example on the<br />

first day <strong>of</strong> every month). When fully awake, the worm may select another<br />

encryption key (predetermined and the same for all the copies <strong>of</strong> the worm)<br />

and begin another permutation scan starting from its own IP number and<br />

continuing until an infected host is discovered. Such scanning policy virtually<br />

guarantees that any new computers with the same vulnerability that came<br />

on the Internet after the latest scan will be discovered and infected by the<br />

worm. Also, any infected computer that was cleared <strong>of</strong> the worm but not<br />

patched will quickly be reinfected. With such deep penetration, the worm<br />

may inflict severe damage when its trigger is eventually pressed and it releases<br />

its payload.<br />

A slightly more complex version <strong>of</strong> permutation scan is partitioned permutation<br />

scan. The worm is initially “responsible” for an interval [a, b] <strong>of</strong> IP<br />

numbers. When it infects a vulnerable computer, it sends half its interval to<br />

its newly-created child and retains the other half. When the interval become<br />

sufficiently small, the worm switches to the original permutation scan. This<br />

scheme is an example <strong>of</strong> a divide-and-conquer algorithm.<br />

An interesting twist on permutation scan can be added to multi-mode<br />

worms. Such a worm exploits several security holes, so it has to scan the<br />

Internet for computers that have the first hole, then for those that have<br />

the second hole, and so on. It may employ permutation scan looking for<br />

machines with the first vulnerability. When it senses saturation <strong>of</strong> infection,<br />

it can (1) reset the initial IP number to its current IP address, (2) select the<br />

next encryption key, and (3) start another permutation scan where it looks<br />

for machines that have the second vulnerability. The point is that when the<br />

worm switches to the second vulnerability there will have been many worms<br />

established (i.e., many copies <strong>of</strong> the worm will be active), so all the machines<br />

with the second vulnerability will quickly be located and infected.<br />

Spo<strong>of</strong>ing is one way to protect computers from a newly-discovered worm.<br />

The computer may be programmed to respond to a probe as if it were infected.<br />

In the case <strong>of</strong> permutation scan, a spo<strong>of</strong>ing computer will protect<br />

all those that follow it in the IP permutation, but this protection is only<br />

temporary. Once the copies <strong>of</strong> the worm switch to a different encryption key,<br />

the permutation will change. When the spo<strong>of</strong>ing machine is probed, it will<br />

again protect those computers that follow it in the new permutation, but<br />

those that were originally protected will now be exposed to infection. If the<br />

human defenders are quick and organized, they may spo<strong>of</strong> a large number<br />

<strong>of</strong> machines (perhaps by releasing a good worm), and this may <strong>of</strong>fer good<br />

protection. However, it takes time to design, implement, test, and release a<br />

good worm, which is why this approach to protection from worms may not<br />

be practical.<br />

Topological Scanning. Recall that many viruses look for an address<br />

book with email addresses in a newly-infected computer, then send messages<br />

to all the addresses on the list, trying to infect more computers. Such an


3.2 Worming Techniques 107<br />

address book is an easily-obtained hit-list and can also be used by a worm.<br />

We can think <strong>of</strong> the email address in the address book as a security hole that<br />

exists in practically every computer. Topological scanning is any method<br />

that employs information found inside a computer (such as email addresses<br />

in a book and URLs in lists <strong>of</strong> favorites) in order to infect other computers.<br />

Once the worm exhausts this local information, it can switch to permutation<br />

scan.<br />

Flash Worms. An attacker with access to a fast Internet connection<br />

can scan the entire Internet (the entire 32-bit IP address space, consisting <strong>of</strong><br />

2 32 ≈ 4.3 billion numbers) for computers with a certain weakness in a few<br />

hours. This scan is done before any worm is released. The resulting hit-list<br />

<strong>of</strong> addresses may be large, but the work <strong>of</strong> searching through it and actually<br />

infecting machines is divided between the copies <strong>of</strong> the worm (and there will<br />

be a growing number <strong>of</strong> copies).<br />

Once the first worm is embedded in a computer, it divides the list into<br />

blocks, then goes over the addresses <strong>of</strong> a block, trying to infect computers.<br />

When a vulnerable computer is found and is infected, the worm sends a copy<br />

<strong>of</strong> itself with that block. The copy divides this block into subblocks and<br />

proceeds in the same way. At the same time, the original worm scans the<br />

second block, trying to infect another computer. When a child worm receives<br />

a block smaller than a certain size, it simply scans it, trying to infect all the<br />

computers listed on that block, and sending them copies <strong>of</strong> itself, but with<br />

no blocks <strong>of</strong> addresses.<br />

Recall that the hit-list method calls for dividing the hit-list in two. If<br />

we compare the hit-list scheme to a binary decision tree, then the current<br />

method, which can be termed a flash worm, is comparable to the B-trees<br />

that are used to implement file directories because they are so much more<br />

efficient than a simple binary decision tree.<br />

It may happen that a copy <strong>of</strong> the worm finds itself in a machine where<br />

it cannot reach any other computers. A copy may also be killed quickly if it<br />

happens to be discovered immediately. In such a case, an entire block <strong>of</strong> IP<br />

numbers is lost, so a variation <strong>of</strong> this method creates overlapping blocks. If<br />

block 1 has addresses a1 through an and block 3 has addresses an+1 through<br />

am, then block 2 will consist <strong>of</strong> addresses from the middle <strong>of</strong> the interval<br />

[a1, an] to the middle <strong>of</strong> the interval [an+1, am]. Each IP will be scanned<br />

twice, but the worm will be robust and its penetration will be deeper.<br />

A variation on this approach may be attractive to a hacker who controls a<br />

botnet <strong>of</strong> several high-speed servers (most likely as zombies, see Section 6.5).<br />

A typical worm is a small program, perhaps just a few hundred bytes long.<br />

In contrast, an extensive list <strong>of</strong> IP addresses may be tens <strong>of</strong> megabytes long.<br />

The version proposed here starts with an initial worm that carries only a few<br />

IP addresses “on its back.” When a fresh copy <strong>of</strong> the worm is generated, it<br />

receives only a few IP addresses from its parent. To receive more addresses,<br />

the copy gets in touch with one <strong>of</strong> the hacker’s servers. The server decides<br />

what part <strong>of</strong> the total list <strong>of</strong> addresses to send each copy. The first few copies<br />

may receive large chunks <strong>of</strong> the list, while each subsequent copy may receive<br />

a smaller sublist.


108 3 Worms<br />

The point is that the servers are under the control <strong>of</strong> the worm’s creator,<br />

who may modify their behavior depending on how the collective worm is<br />

doing. The servers can also report back to the hacker, in real time, the<br />

current number <strong>of</strong> copies <strong>of</strong> the worm and how many addresses have been<br />

sent to those copies. The servers are needed only for the initial spread <strong>of</strong><br />

the worm. Once the number <strong>of</strong> copies grows above a certain threshold, the<br />

servers stop sending addresses to the copies and instead respond to requests<br />

from the copies with a code that instructs the copies <strong>of</strong> the worm to send<br />

their lists <strong>of</strong> addresses to any new child they create.<br />

It is possible to include in every worm a large list <strong>of</strong> IP addresses in<br />

compressed form. This has the advantage that the worm is independent<br />

<strong>of</strong> any outside servers and each <strong>of</strong> its copies may carry a large number <strong>of</strong><br />

addresses. The disadvantage is the time it takes the worm to decompress the<br />

list (this may slow down the worm’s propagation and may render it vulnerable<br />

to early discovery) and the memory space the decompressed list requires in<br />

the host’s memory (which may attract the victim’s attention).<br />

The worm designs presented here lead to the conclusion that a welldesigned,<br />

well-prepared worm that has access to a list <strong>of</strong> potential vulnerable<br />

sites may be able to infect many thousands, and perhaps even millions, <strong>of</strong><br />

computers in a matter <strong>of</strong> minutes. This is scary, because there isn’t much<br />

that human defenders can do in a few minutes. Such a worm may find itself<br />

well embedded in the Internet, and may be able to carry out a devastating<br />

attack “in plain site” (i.e., while everyone is helplessly watching and before<br />

anyone can kill any <strong>of</strong> the worm copies).<br />

Contagion. The preceding text concentrated on fast-spreading worms.<br />

Such a worm is actively looking for potential victims to invade and infect<br />

and can therefore generate a vast number <strong>of</strong> copies in a few minutes, then<br />

start releasing its (possibly deadly) payload. Such a worm may be practically<br />

impossible to detect while it is propagating, but it has one weak feature. Its<br />

rapid spread leaves one telltale sign, each infected server suddenly switches<br />

into high gear and starts generating much more Internet traffic than normal.<br />

Such behavior may indicate to the server’s owner or administrator the presence<br />

<strong>of</strong> a worm trying to multiply, and may lead to an effective early discovery<br />

and killing <strong>of</strong> the worm. A hacker worried about this effect may choose the<br />

opposite strategy for spreading his worm. This strategy, termed contagion,<br />

is based on slow, passive worm propagation, which does not generate any<br />

abnormal Internet traffic or leave any other suspicious traces. Such a worm<br />

can slowly embed itself in a huge number <strong>of</strong> computers, waiting for its trigger<br />

to be pressed.<br />

As an example <strong>of</strong> such worm strategy, imagine a hacker who had discovered<br />

two security holes, Hs, which can enslave a particular type <strong>of</strong> Web<br />

server, and Hc, which can do the same to a popular Web client (perhaps a<br />

browser). The first copy <strong>of</strong> the worm is installed on either a server or a client<br />

and it waits for an opportunity to propagate. When such a worm resides in<br />

a server, it waits until a client happens to visit. The worm probes the client<br />

for security hole Hc, and if it finds such a hole, the worm propagates to the<br />

client, sending it copies <strong>of</strong> both Hs and Hc together with the normal data (a


3.2 Worming Techniques 109<br />

Web site, an image, an audio file, etc.) sent by the server. When an infected<br />

client surfs the Web, visiting various sites, the worm checks the server at each<br />

site for weakness Hs. On finding Hs, the worm propagates to that server,<br />

again sending copies <strong>of</strong> both Hs and Hc.<br />

This type <strong>of</strong> worm spread is passive. The worm waits for a visit, instead<br />

<strong>of</strong> continually trying many IP numbers. When such a worm resides on a<br />

server, it can be a bit more active by trying to attract clients. It may embed<br />

in the server special html tags that are read and used by search engines to find<br />

and rank Web sites. Such tags are not visible to an occasional visitor, and<br />

are rarely observed by the server’s owner. The example shown here includes<br />

three tags, description, keywords, and abstract, taken from the Web page <strong>of</strong><br />

a book,<br />

<br />

<br />

<br />

but a worm may bait clients by advertising pornography, inexpensive products,<br />

or free s<strong>of</strong>tware. Thus, a contagion worm spreads from a server to<br />

clients, and from each client to many other servers, much as a contagious<br />

disease spreads among persons who happen to come in contact with each<br />

other.<br />

Because <strong>of</strong> the passive, slow nature <strong>of</strong> this type <strong>of</strong> worm propagation, it<br />

may be virtually impossible to detect it by looking for abnormal, or higher<br />

than normal, patterns <strong>of</strong> communication. There may be exceptions, but they<br />

are rare. An exception may be a server that sends only small quantities <strong>of</strong><br />

data. When the worm sends a copy <strong>of</strong> itself, the amount <strong>of</strong> data sent may be<br />

double the normal and may be detectable.<br />

Exercise 3.2: What kind <strong>of</strong> server may send only small quantities <strong>of</strong> information<br />

in response to a request from a client?<br />

When a copy <strong>of</strong> the worm starts its operations, it may send a signal<br />

(that includes its IP address) to the worm’s author. The count <strong>of</strong> the signals<br />

provides the author with the total number <strong>of</strong> worms in place and the IP<br />

addresses make it possible for him to command the individual copies. When<br />

the worm’s creator feels that there are enough copies <strong>of</strong> the worm, he may<br />

trigger them to release their payload. Alternatively, the worm copies may<br />

be instructed to start a fast, active spread, followed by releasing the payload<br />

after a while. Instead <strong>of</strong> the hacker sending commands to the worm, the<br />

individual copies may be instructed to periodically check at a certain URL<br />

or IP where they will eventually find their instructions.<br />

The weak point <strong>of</strong> this scheme is the need to find a pair <strong>of</strong> security<br />

weaknesses in a server and a client. This may limit the choices <strong>of</strong> a worm<br />

creator, especially because security weaknesses are discovered all the time<br />

and are constantly being patched. A scheme based on a single security hole<br />

is more appropriate for a contagion worm and such a scheme may be based<br />

on the properties <strong>of</strong> peer-to-peer networks. The inset below discusses the<br />

peer-to-peer paradigm <strong>of</strong> computer communications.


110 3 Worms<br />

Peer-to-Peer Networks<br />

We are familiar with Web browsers. A browser is an example <strong>of</strong> a client,<br />

a program that asks another program, a server, to send it information. The<br />

client-server model (or paradigm) is used in many areas <strong>of</strong> digital communications,<br />

such as FTP and email. An email server is a computer that runs<br />

continuously and is dedicated to sending and receiving mail. It receives email<br />

messages for users and keeps them. A user may connect to the server at any<br />

time with a client program and retrieve, read, and delete messages.<br />

The peer-to-peer model <strong>of</strong> communications is radically different. It was<br />

developed in 1984 at IBM. (The acronym P2P is <strong>of</strong>ten used, but is confusing<br />

because this acronym also stands for point-to-point.) There are no dedicated<br />

servers and no clients. Instead, there are users (peers or nodes) who are all<br />

equal. Each node is a computer running a program that is both a client and<br />

a server. A node may be turned <strong>of</strong>f by its owner at any time. A node can<br />

initiate and complete a transaction with another node when both are on.<br />

The term peer-to-peer is general and refers to any protocol that employs<br />

the peer-to-peer model <strong>of</strong> communications. An important example is the<br />

Network News Transport Protocol (NNTP) used to transfer Usenet news. In<br />

practice, though, the term peer-to-peer is normally used to refer to file sharing<br />

networks. These are protocols that allow users to chat and transfer files<br />

between personal computers. Familiar names such as Gnutella, FastTrack,<br />

and Napster, are examples <strong>of</strong> file sharing networks.<br />

The main advantage <strong>of</strong> a peer-to-peer network is obvious. There is no<br />

need to have someone purchase, run, and maintain a central, fast server.<br />

We know from long experience that even the fastest server slows down when<br />

the number <strong>of</strong> users grows. In contrast, the speed (more precisely, the total<br />

bandwidth) <strong>of</strong> a peer-to-peer network grows with the number <strong>of</strong> nodes.<br />

The first generation <strong>of</strong> peer-to-peer networks differed from the concept<br />

described here because it had a centralized file list, as in Napster. The second<br />

generation <strong>of</strong> peer-to-peer networks, such as Gnutella and FastTrack, used<br />

decentralized file lists; they were pure peer-to-peer. The third generation <strong>of</strong><br />

peer-to-peer networks added anonymity features. Examples <strong>of</strong> anonymous<br />

networks are Freenet, I2P, and GNUnet.<br />

It is important to understand the difference between a protocol and an<br />

application. The BitTorrent network, for example, started as a protocol, a<br />

set <strong>of</strong> rules that specify the details <strong>of</strong> file transfers [bittorrent 04]. Once this<br />

protocol became popular, several people wrote programs that implemented<br />

it. The point is that users on different platforms with different programs can<br />

connect and communicate if the programs implement the same protocol. The<br />

BitTorrent protocol, for example, has attracted so much attention recently,<br />

that currently it has the following implementations: ABC, Vuze, BitAnarch,<br />

BitComet, BitSpirit, BitTornado, BitTorrent, BitTorrent++, BitTorrent.Net,<br />

G3 Torrent, mlMac, MLDonkey, QTorrent, SimpleBT, Shareaza,<br />

TorrentStorm, Bits on Wheels, and TomatoTorrent.


3.2 Worming Techniques 111<br />

An attacker wanting to spread a worm to all the nodes <strong>of</strong> a peer-topeer<br />

network needs to find only one vulnerability in the protocol or in the<br />

programs used by the nodes. In addition, the use <strong>of</strong> a peer-to-peer network<br />

for worm propagation has the following advantages:<br />

The users tend to vary all the time. In a network such as BitTorrent, a<br />

new user may join, chat, transfer some files for a while, then get tired <strong>of</strong> this<br />

and turn to other activities. New users join all the time, so there are always<br />

new, fresh users, whose computers are “crying out” to be infected.<br />

A peer-to-peer network is <strong>of</strong>ten used to transfer large files, because its<br />

users may illegally swap new, large applications and movies.<br />

The peer-to-peer protocols are <strong>of</strong>ten designed by individuals and therefore<br />

tend to pay less attention to security than client-server protocols. The<br />

latter are mainstream protocols and are exposed to public scrutiny (by means<br />

<strong>of</strong> RFCs, requests for comments) all the time, even before they are implemented.<br />

Peer-to-peer programs are more likely than servers to execute on personal<br />

computers, where a worm can find much personal information.<br />

Peer-to-peer network users tend to swap “gray” (pornography) or illegal<br />

material (pirated music or movies) and therefore tend to be reluctant to draw<br />

public attention to strange or suspicious behavior they may detect.<br />

Peer-to-peer networks may be immense. Some estimates <strong>of</strong> the size <strong>of</strong><br />

Kazaa at its peak, for example, go as high as 5–10 million connections per<br />

day. The number <strong>of</strong> users is clearly in the millions and may be in the tens <strong>of</strong><br />

millions.<br />

It seems that an attacker may find an organization, such as a university<br />

(Kazaa users <strong>of</strong>ten use computers located at a lab in a university) with weak<br />

security, infect one computer with a worm that exploits a vulnerability in the<br />

Kazaa protocol, and let it spread silently through Kazaa file sharing until it<br />

infects most <strong>of</strong> the organization’s computers and many computers outside.<br />

Within a few weeks, millions <strong>of</strong> Kazaa users’ computers may be infected by<br />

copies <strong>of</strong> the worm, quietly waiting for a trigger to dump their payload. All<br />

this can be achieved without significantly disturbing the normal patterns <strong>of</strong><br />

communications.<br />

Exercise 3.3: It is difficult to predict how deep and how fast a worm can<br />

spread in a client-server or in a peer-to-peer network. It seems that the best<br />

way to obtain such information is to release such a worm (a benign worm,<br />

that only calls home, and does nothing else) and measure its penetration.<br />

The public will be notified and instructed on how to kill the worm at the end<br />

<strong>of</strong> the experiment. Comment on this scheme.<br />

Worm communication. The discussion above has mentioned several<br />

mechanisms for worm communication with its creator. A different,<br />

distributed-control technique is presented here, where such communication<br />

involves the individual copies <strong>of</strong> the worm.


112 3 Worms<br />

When a worm creates a copy, it sends the copy to a known location (it<br />

knows the IP address <strong>of</strong> the copy). It is clear that each parent knows where<br />

each <strong>of</strong> its children is located. In addition, the parent can embed its own<br />

IP address in the copies (children) that it creates and sends out. Thus, each<br />

worm can tell where its parent is located. A natural extension <strong>of</strong> this idea<br />

is for a worm to embed an entire list <strong>of</strong> IP addresses <strong>of</strong> other worms (its<br />

ancestors) when it creates a child. The child appends its own IP number to<br />

the list and embeds the augmented list in each <strong>of</strong> its children. If this is done<br />

starting from the first copy <strong>of</strong> the worm, then each copy will have a complete<br />

list <strong>of</strong> its ancestors (parents, grandparents, and so on, but not uncles and<br />

cousins) and a list <strong>of</strong> its immediate children. These lists organize the entire<br />

worm colony in a tree (Figure 3.1(a)).<br />

This way, a copy W <strong>of</strong> the worm can send a message to its children and<br />

they can forward it to their children. Such a forward message will eventually<br />

reach every copy <strong>of</strong> the worm in the subtree whose root is W . A worm can<br />

also send messages backward to all its ancestors. Such wide-spread communications<br />

involves a certain amount <strong>of</strong> risk because some copies may have been<br />

“captured” (i.e., discovered and disassembled) and their captors will receive<br />

and interpret messages sent to them. Capturing node x <strong>of</strong> Figure 3.1(a),<br />

for example, will isolate the entire subtree shown in dashed. Encrypting<br />

the commands would not help, because each worm would have to carry the<br />

encryption key, which would then become known to any disassembler. The<br />

disassembler (a captor <strong>of</strong> the worm) could then not only read messages sent<br />

to the worm, but also send fake messages to possibly diffuse all the worm<br />

copies. The cryptographic technique <strong>of</strong> digital signatures (see document on<br />

cryptography in the book’s Web site), however, <strong>of</strong>fers better security. Any<br />

captor who disassembles a worm and reads its code would still be able to<br />

decrypt and read messages sent to the worm. However, the captor would<br />

not be able to send fake messages to other copies <strong>of</strong> the worm because this<br />

requires the private key <strong>of</strong> the sender. In particular, the SSL protocol may be<br />

useful to a worm, and public-domain implementations <strong>of</strong> this protocol such<br />

as OpenSSL [OpenSSL 04], are becoming easier for anyone to obtain.<br />

� �<br />

�<br />

��� ���<br />

Figure 3.1: A Tree <strong>of</strong> Worm Communications.<br />


3.2 Worming Techniques 113<br />

In addition, each time a copy <strong>of</strong> the worm probes a node and finds it<br />

already infected, it can exchange (a copy <strong>of</strong>) its list with (a copy <strong>of</strong>) the list<br />

<strong>of</strong> the newly-discovered neighbor. This can help restore parts <strong>of</strong> the worm<br />

tree that have been lost due to a killed or captured worm. Figure 3.1(b)<br />

shows how part <strong>of</strong> the tree that was lost because <strong>of</strong> the capture <strong>of</strong> worm x<br />

has been restored because <strong>of</strong> a newly-established cross-connection between y<br />

and z.<br />

Exercise 3.4: Show how to extend this method so that the communications<br />

lines between worms will form a graph, not just a tree.<br />

The worm’s author can now send a single command, signal, or even<br />

new executable code to the original worm (the root <strong>of</strong> the tree) and have this<br />

information trickle down the tree to every worm in the colony. It is clear that<br />

the loss <strong>of</strong> the root would completely defeat this type <strong>of</strong> communication, so a<br />

worm employing this technique should contain extra code to send the creator<br />

the IP addresses <strong>of</strong> all the nodes in the two or three tree levels directly below<br />

the root.<br />

Recall that the worm is a small program in machine language, so how<br />

can its creator send it new code to change its behavior? One solution is to<br />

embed many procedure calls in the worm program. Every few instructions<br />

there should be a call to another procedure. When the worm is originally<br />

written, the procedures do nothing. Each procedure simply returns immediately.<br />

When the worm is compiled, the object file starts with the main<br />

program, followed by useful procedures, followed by the empty procedures.<br />

When the author wants to modify the worm’s operation, he may rewrite several<br />

procedures, compile the entire worm program with the new procedures,<br />

and send only the end <strong>of</strong> the object file (the newly-compiled, no-longer-empty<br />

procedures) to the worm, to replace the last part <strong>of</strong> the worm’s code.<br />

Another technique is to write the entire worm in a high-level language<br />

that’s interpreted. Any modification involves sending new versions <strong>of</strong> some<br />

<strong>of</strong> the original statements, deleting some statements, or adding new ones.<br />

This is similar to word processing. When the worm rearranges itself with<br />

the new statements, it executes its code by interpreting it. Such a worm<br />

must have two parts, the main body <strong>of</strong> the worm, made up <strong>of</strong> the high-level<br />

statements, and an interpreter, a small program in machine code that will<br />

not be modified.<br />

The worm’s author may have several reasons to modify the worm. Imagine<br />

a successful worm that’s slowly being discovered and eradicated. At a<br />

certain point in time, only a few thousand undiscovered copies remain in<br />

the Internet, then the author discovers a new security hole. He can quickly<br />

modify the existing copies to serve as a base to exploit the newly-discovered<br />

weakness and invade a large number <strong>of</strong> computers.<br />

Exercise 3.5: Come up with some other reasons for modifying a worm in<br />

mid-stream.


114 3 Worms<br />

3.3 Proposing a CCDC<br />

It is now obvious that worms pose a serious threat to individual computers,<br />

to computer communications, to the Internet in general, and even to the<br />

infrastructure <strong>of</strong> entire nations. What can the world do to bring this threat<br />

under control or at least to reduce its magnitude? The authors <strong>of</strong> the excellent<br />

paper [Staniford et al. 02], to which this discussion owes much, argue in favor<br />

<strong>of</strong> establishing a cyber center for disease control (CCDC), similar to the<br />

centers for disease control and prevention (CDC [CDC 04]) <strong>of</strong> the United<br />

States government. The CDC’s mission is to promote health and quality <strong>of</strong><br />

life by preventing and controlling disease, injury, and disability. Similarly,<br />

the mission <strong>of</strong> the CCDC should include the following points:<br />

To quickly identify any outbreak <strong>of</strong> rogue s<strong>of</strong>tware.<br />

To isolate, disassemble, and understand any newly-discovered threat.<br />

To actively fight new infections.<br />

To anticipate new types <strong>of</strong> viruses and worms and to educate the computer<br />

security community about these future threats.<br />

To plan methods and tools to detect any anticipated threats.<br />

To educate the public about computer security and safe ways <strong>of</strong> using<br />

computers.<br />

The acronym CCDC also stands for:<br />

1. Chinese Center for Disease Control and Prevention, based in Beijing,<br />

China.<br />

2. Chinatown Community Development Center in San Francisco, which<br />

also created the Adopt-An-Alleyway Youth Empowerment Project.<br />

3. Centre City Development Corporation in San Diego, which is a nonpr<strong>of</strong>it<br />

for developing and redeveloping San Diego.<br />

4. The Cambridge Crystallographic Data Centre.<br />

5. City Contemporary Dance Company, a leading modern dance company<br />

in Hong Kong.<br />

6. Consultant in Communicable Disease Control (UK).<br />

—From Wikipedia.com, March 2010.<br />

Identifying outbreaks. Currently, new attacks <strong>of</strong> rogue s<strong>of</strong>tware are<br />

identified, isolated, disassembled, and read by volunteers who then propose<br />

ways to neutralize an attack. There is no central organization dedicated<br />

to these tasks. It normally takes at least hours for news about a new attack<br />

to reach the millions <strong>of</strong> Internet users. It also takes at least a day or<br />

two for volunteer experts (<strong>of</strong>ten located at universities) to understand the<br />

threat and develop countermeasures. This type <strong>of</strong> response is too slow for<br />

the worm techniques discussed in this section. Moreover, a clever worm creator<br />

may combine the worm attack with a separate DoS attack designed to<br />

slow communications between the various volunteers working on the worm


3.3 Proposing a CCDC 115<br />

and between them and the suffering public. It may come as a surprise to<br />

most readers to learn that the volunteer experts concerned with identifying<br />

and fighting rogue s<strong>of</strong>tware communicate by means <strong>of</strong> a few mailing lists.<br />

A perpetrator who knows the names and locations <strong>of</strong> those lists and who<br />

specifically targets them in a DoS attack, can greatly delay any response to<br />

the main attack.<br />

The proposed CCDC can develop several mechanisms for communications<br />

between those responsible for a defense. Such mechanisms should not<br />

be limited to the Internet and may include fax, telephone, and wireless. The<br />

CCDC should also launch organized research into ways to quickly and automatically<br />

detect a worm attack. This can be achieved by, for example,<br />

s<strong>of</strong>tware that listens to traffic on the Internet, analyzes its patterns, and<br />

discovers anomalies. Another option is hardware sensors placed at several<br />

strategic locations in the Internet, again listening to traffic and analyzing it.<br />

Such work cannot be done by private individuals or organizations. It has to<br />

be planned and coordinated by a government-sponsored agency.<br />

Analyzing new worms. When a worm is discovered, its spreading<br />

mechanism (or at least its principle <strong>of</strong> spreading) is known from the way<br />

it is discovered. Experts are then called in to disassemble the worm and<br />

understand its trigger and payload. In the past, worms and viruses were small<br />

and fairly simple to read and understand, but we may not always be that<br />

lucky. A clever fraudster may write a program with lots <strong>of</strong> extra, unneeded<br />

and unused (chaff) instructions. Given the original source code, with labels<br />

and comments, such instructions can easily be identified and ignored. Trying<br />

to read and understand disassembled code, with no labels, no comments, and<br />

no real way to distinguish instructions from data, may complicate the process<br />

<strong>of</strong> reading and understanding the code, as illustrated by Figure 3.2.<br />

Part (a) <strong>of</strong> the figure is easy to read, but part (b) suffers from the lack<br />

<strong>of</strong> labels and from the inability <strong>of</strong> the disassembler to distinguish between<br />

instructions and data. Thus, the literal 500 is disassembled in part (b) as an<br />

instruction (whose code happens to be 500) while the data item 23 at label<br />

D is disassembled into ??? because 23 doesn’t happen to be the code <strong>of</strong> any<br />

instruction.<br />

Even having full access to the source code <strong>of</strong> a program does not always<br />

make it easy to read and understand it. Any reader who doubts this statement<br />

should look at the programming “pearls” submitted to the international<br />

obfuscated C code contest [IOCCC 04].<br />

The CCDC should therefore develop tools for program analysis. Many<br />

worm writers use routines copied from publicly-available s<strong>of</strong>tware libraries<br />

that have the codes <strong>of</strong> past worms. The ability to recognize such routines<br />

in a disassembled code can greatly enhance the readability <strong>of</strong> the code. The<br />

CCDC should also have laboratories with different platforms, operating systems,<br />

and communications s<strong>of</strong>tware, to help in analyzing worms and viruses<br />

by executing their codes slowly, instruction by instruction and examining its<br />

effects.


116 3 Worms<br />

ADD R4,#500<br />

SUB R0,D<br />

L: MULT E,F<br />

.<br />

.<br />

M: DIV S,R1<br />

.<br />

.<br />

LOD J<br />

STO L<br />

.<br />

.<br />

J: JMP M<br />

.<br />

.<br />

D: DATA 23<br />

.<br />

.<br />

(a)<br />

100 ADD R4,590<br />

101 SUB R0,280<br />

102 MULT E,F<br />

.<br />

.<br />

110 DIV S,R1<br />

.<br />

.<br />

223 LOD 278<br />

224 STO 102<br />

.<br />

.<br />

278 JMP 110<br />

.<br />

.<br />

280 ??? 23<br />

.<br />

590 CMP 0,0 % literal 500<br />

(b)<br />

Figure 3.2: Source Code And Disassembled Code.<br />

I am <strong>of</strong>ten asked if virus writers are good programmers. This is a little<br />

like asking if Jack the Ripper was a good surgeon—for the most part,<br />

such a question is not only irrelevant, but <strong>of</strong>fensive. Any skill displayed in<br />

executing a malicious act can only make that act more abominable.<br />

—Jim Bates (Pimpernel s<strong>of</strong>tware) in [Virus bulletin 05] May 1994.<br />

Fighting new infections. It is clear that the proposed CCDC should<br />

educate the public in topics such as analyzing data traffic, that can lead to<br />

early detection <strong>of</strong> worms. It may also be useful to place special s<strong>of</strong>tware<br />

agents at the largest Internet gateways, where much <strong>of</strong> the Internet traffic<br />

passes. Such agents are normally passive, but when a new worm is discovered,<br />

they can be quickly trained by CCDC personnel to recognize data packets<br />

that contain the worm or parts <strong>of</strong> it and delete them.<br />

Anticipating new threats. New worms may either be based on old<br />

ones or use new principles. The CCDC should have researchers think <strong>of</strong> ways<br />

to revive and extend old worms. Once someone comes up with an idea for a<br />

future worm, the CCDC may want to anticipate it and reprogram its agents<br />

to fight it if and when it is observed. Whenever someone discovers a security<br />

hole, CCDC personnel should think <strong>of</strong> how it could be exploited by a new<br />

worm (a new security hole will be patched, but this takes time, perhaps even<br />

weeks). When new communications s<strong>of</strong>tware is released, the CCDC should<br />

work closely with its maker to scrutinize the s<strong>of</strong>tware for security weaknesses.<br />

The CCDC could also issue a set <strong>of</strong> recommendations to s<strong>of</strong>tware makers,<br />

in much the same way as the International Telecommunications Union


3.4 The Internet Worm 117<br />

(ITU) issues recommendations to makers <strong>of</strong> telecommunications equipment.<br />

The recommendations should be directed toward developing secure s<strong>of</strong>tware,<br />

s<strong>of</strong>tware that will not have security holes to begin with.<br />

Public involvement. No one lives in a vacuum. We compete with each<br />

other all the time, we try to develop new ideas, approaches, and points <strong>of</strong> view<br />

that help us compete, but by doing so we also cooperate. This observation<br />

implies that the CCDC should be open to the public. Anyone should be<br />

allowed to contribute ideas and everything (well, almost everything) that the<br />

CCDC does should be public knowledge.<br />

Operating in an open environment has its cost. The perpetrators would<br />

learn all about the strategy and tools developed by the CCDC, but judging<br />

from past experience, the advantage to CCDC from news, ideas, and suggestions<br />

coming from the public will far outweigh any danger stemming from<br />

having this knowledge in the hands <strong>of</strong> wrongdoers.<br />

A final basic issue regarding the CCDC is to what degree it should operate<br />

in an open fashion. For example, during an outbreak the CCDC could<br />

maintain a Web site for use by the research community. Such an approach<br />

would allow many different people to contribute to the analysis <strong>of</strong> the outbreak<br />

and <strong>of</strong> the pathogen, perhaps adding invaluable insight and empirical<br />

data. This sort <strong>of</strong> coordination happens informally today, in part; but it is<br />

also the case that currently a variety <strong>of</strong> anti-viral and security companies<br />

analyze outbreaks independently, essentially competing to come out with a<br />

complete analysis first. This makes for potentially very inefficient use <strong>of</strong> a<br />

scarce resource, namely the highly specialized skill <strong>of</strong> analyzing pathogens.<br />

Rogue s<strong>of</strong>tware is a global problem, so the CCDC should ideally be an<br />

international organization, perhaps a new United Nations agency. An international<br />

agency would make foreign governments more cooperative. Also,<br />

having skilled watchers in all time zones may help all <strong>of</strong> us sleep better. It<br />

feels different when you know that someone (a brother, but not big brother)<br />

is watching while you are asleep.<br />

3.4 The Internet Worm<br />

The Internet worm made its presence known on 2 November 1988 and spread<br />

quickly, infecting Sun 3 and VAX computers running UNIX by exploiting<br />

security weaknesses in the version <strong>of</strong> UNIX run by those computers. Rogue<br />

programs were rare in 1988, so the effects <strong>of</strong> the worm mystified computer<br />

users. The most noticeable effect <strong>of</strong> the worm was to load infected computers<br />

with so much work (to replicate the worm) that they slowed down and<br />

in many cases completely stopped because certain UNIX resources were exhausted.<br />

An account <strong>of</strong> the isolation and analysis <strong>of</strong> the worm can be found<br />

in [Rochlis and Eichin 89].<br />

The following day, groups <strong>of</strong> system programmers at The University <strong>of</strong><br />

California, Berkeley and MIT had managed to isolate the worm and started<br />

studying its code. Less than 12 hours after the first infection, the Berkeley


118 3 Worms<br />

group had issued a set <strong>of</strong> instructions to stop the spread <strong>of</strong> the worm, including<br />

a patch to the UNIX sendmail utility. A few hours later, a group<br />

at Purdue University issued a simpler set <strong>of</strong> instructions, and these efforts<br />

managed to stop the spread <strong>of</strong> the worm within a few days. In the weeks<br />

that followed, the worm had two predictable results (1) other rogue programs<br />

appeared and (2) computer users became aware that the security <strong>of</strong><br />

their computers was an illusion. The New York Times called the worm “the<br />

largest assault ever on the nation’s systems” (notice the use <strong>of</strong> the vague<br />

term “systems”). The worm gave a tremendous boost to the field <strong>of</strong> computer<br />

security and resulted in updated security policies and in modifications<br />

to UNIX that prevented similar attacks, although attackers always seem to<br />

be one step ahead <strong>of</strong> security workers.<br />

The worm took advantage <strong>of</strong> certain UNIX features that were designed<br />

to simplify the sharing <strong>of</strong> resources in UNIX networks. Those features caused<br />

security weaknesses and have since been eliminated, but they are discussed<br />

here because they contribute to our understanding <strong>of</strong> how the virus worked.<br />

UNIX has a finger utility that allows a user to obtain information about<br />

other users, such as full name, login name, telephone number, and whether<br />

the user is currently logged in. This utility uses a daemon (a background<br />

process) named fingerd that performs the input/output for finger. The daemon<br />

senses a request coming from a remote program, opens a connection,<br />

reads one line <strong>of</strong> input, then sends back a response to the input. The worm<br />

exploited the fact that fingerd was written in the C language, and used the<br />

input command gets. This command receives a string <strong>of</strong> input characters<br />

and stores them in an input buffer without checking for buffer overflow. The<br />

worm sent a long input string that overran the buffer and overflowed into the<br />

code <strong>of</strong> the daemon, thereby altering it for the purpose <strong>of</strong> the worm.<br />

UNIX also <strong>of</strong>fers a sendmail utility for sending mail. This program has<br />

several modes, one <strong>of</strong> which operates as a background process (daemon) where<br />

sendmail continuously checks a certain port for incoming SMTP email. When<br />

such email is sensed, the daemon performs the handshaking SMTP protocol<br />

in order to receive the email message and identify its recipient. The sendmail<br />

security weakness exploited by the virus had to do with debugging. Normally,<br />

the recipient <strong>of</strong> an email message is a user address, but the debugging feature<br />

allows testers to specify a set <strong>of</strong> instructions as the recipient. The worm used<br />

this feature and specified a special set <strong>of</strong> instructions that served its purpose.<br />

Section 8.3 discusses passwords and how they are handled in UNIX. The<br />

section also discusses guidelines for selecting secure passwords and shows why<br />

a password should not be a word found in dictionaries. The worm used lists<br />

<strong>of</strong> words, including the standard UNIX online dictionary, in an attempt to<br />

decrypt passwords in the password file <strong>of</strong> the host computer. The UNIX<br />

password file has since become privileged, so only system administrators can<br />

read it. In addition, each password verification in UNIX is followed by a<br />

short delay (about a second) to prevent what is now termed “phishing” <strong>of</strong><br />

passwords (Section 10.4). Modern operating systems try to check every new<br />

password selected by a user and reject it if it is found in a dictionary or if it<br />

is based on the user’s name or the account’s login name.


3.4 The Internet Worm 119<br />

Specifically, the worm tried to guess the passwords <strong>of</strong> the accounts in<br />

the password file <strong>of</strong> each computer it invaded. The process was carried out<br />

in three steps. In the first step, the worm tried the following six strings for<br />

each account in the password file: (1) the null string (no password), (2) the<br />

account name, (3) the account name concatenated with itself, (4) the first<br />

name <strong>of</strong> the user (this is available in the user information field in the password<br />

file) with the first letter translated to lower case, (5) the last name <strong>of</strong> the user,<br />

and (6) the account name reversed. In the second step, the worm compared<br />

each encrypted password in its list <strong>of</strong> favorite passwords to all the encrypted<br />

passwords in the hijacked password file. (The worm had a list <strong>of</strong> 432 favorite<br />

passwords, most <strong>of</strong> which were valid English words or proper names. It<br />

seems that the worm’s creator stole passwords and copied words and names<br />

from dictionaries, then encrypted them to form his list <strong>of</strong> favorites.) In the<br />

third and last step, the worm opened the UNIX online dictionary located in<br />

/usr/dict/words, encrypted it word by word, and tried each word against<br />

all the encrypted passwords in the password file. Upon finding a capitalized<br />

word, the worm also tried its lowercase version. Performing the three steps in<br />

their entirety can take an extremely long time (perhaps up to several weeks<br />

on 1980s computers), so the worm stopped the search after a few minutes. It<br />

also paused from time to time during the search and tried to spread itself to<br />

more computers.<br />

Researchers that dissected the worm and read and understood its code<br />

were impressed by the worm’s password encryption routine. Naturally, this<br />

routine had to produce the same encryption as the standard UNIX crypt()<br />

routine (page 219), but it employed ingenious shortcuts that made it nine<br />

times faster.<br />

The worm also exploited the use <strong>of</strong> trusted logins. This is a convenient<br />

UNIX feature (that has since been (ab)used by other malicious s<strong>of</strong>tware) that<br />

allows a user to access remote computers without having to enter passwords<br />

repeatedly. The worm exploited this feature by trying to locate computers<br />

that would trust the account invaded by the worm. The worm did that by<br />

examining files for lists <strong>of</strong> remote computers and accounts trusted by the host<br />

computer. On finding a trusting computer, the worm tried to copy itself to it<br />

as if it (the worm) were a remote user trying to perform a remote operation.<br />

With these weaknesses in mind, it is easy to understand the operation <strong>of</strong><br />

the worm. It consists <strong>of</strong> two parts, a main program and a bootstrap routine.<br />

Once the worm has propagated to a new computer, the main program would<br />

search for information on other computers in the local network. This was<br />

done by reading local configuration files and executing UNIX utilities that<br />

collect information on current network connections. The worm would use the<br />

knowledge collected in this way to propagate its bootstrap to each computer<br />

connected to the local network.<br />

The bootstrap program was transferred to a different computer as a C<br />

program and would be compiled on the new machine and invoked there with<br />

three arguments, the network address <strong>of</strong> the computer it came from (the<br />

infecting machine), a port number on the infecting machine, and a special<br />

number that served as a one-time password. The idea was for the bootstrap to


120 3 Worms<br />

connect to the specified port on the infecting machine, send it the temporary<br />

password, and wait for it to send a copy <strong>of</strong> the main program. If the main<br />

program on the infecting machine did not receive the temporary password<br />

from the bootstrap, it disconnected itself from the bootstrap.<br />

If communications between the bootstrap on the new host and the main<br />

program on the original infected computer was established, the main program<br />

transferred to the bootstrap several binary files, followed by a copy<br />

<strong>of</strong> the bootstrap itself. The binary files were compiled versions <strong>of</strong> the main<br />

program, written to run on different computers and on a different version <strong>of</strong><br />

UNIX. The bootstrap loaded these binary files, linked them with the standard<br />

libraries, then tried to invoke them one by one. If none <strong>of</strong> them executed,<br />

then the command file or the infecting worm deleted all the files, including<br />

the bootstrap, leaving a clean, uninfected computer. If any <strong>of</strong> the binary files<br />

ran successfully, it stored in the infected computer’s memory all the binary<br />

files and the bootstrap, deleted the files from the disk, then tried to break<br />

into another computer.<br />

Contrary to most cases <strong>of</strong> rogue s<strong>of</strong>tware, the author <strong>of</strong> the Internet<br />

worm was identified within a few weeks on the pages <strong>of</strong> The New York Times.<br />

It was Robert T. Morris, a 23-year-old Ph.D. student at Cornell University<br />

and son <strong>of</strong> the chief scientist <strong>of</strong> the NSA (national security agency). Evidence<br />

against him was easily collected because he talked to friends about the worm,<br />

copies <strong>of</strong> the code were found in his computer account at the university, and<br />

computer usage records showed that he used university computers to test the<br />

virus before releasing it to the Internet. It is not clear why he spent time and<br />

effort to inflict damage. Reasons range from wanting to get at his father, to<br />

trying to demonstrate the weak security <strong>of</strong> the Internet, to trying to impress<br />

a girl. He was arrested, tried, and sentenced to three years probation, 400<br />

hours <strong>of</strong> community service, and $10,050 in fines.<br />

[Cohen 94a] has interesting details (on page 103) on how audit and analysis<br />

<strong>of</strong> network statistics were used to identify this individual.<br />

[Creators <strong>of</strong> viruses are] stealing a car for the purpose <strong>of</strong> joyriding.<br />

—Robert Tappan Morris in 1983 Capitol Hill testimony, cited in<br />

The New York Times 11 November 1988.<br />

3.5 iPhone Worms<br />

On 9 January, 2007, Apple <strong>Computer</strong> introduced the iPhone, its version <strong>of</strong> a<br />

smart telephone. The iPhone combines a mobile telephone, a widescreen iPod<br />

with touch controls, and an Internet communications device with desktopclass<br />

email, web browsing, searching, and maps. The device became an instant<br />

success, and several models have been introduced since.<br />

Like a computer, the iPhone can run s<strong>of</strong>tware, and many s<strong>of</strong>tware developers<br />

jumped on the iPhone bandwagon and started implementing useful<br />

and interesting programs for this device. However, the iPhone comes protected<br />

and only programs approved by Apple and sold through its App store


3.5 iPhone Worms 121<br />

will actually run. It is therefore no wonder that hackers immediately started<br />

looking for ways to defeat this protection. Today, all iPhone models can<br />

be jailbroken, meaning they can run unauthorized code. This can save the<br />

iPhone owner money, but it weakens the device’s security.<br />

The first worms for the iPhone appeared in November 2009. They became<br />

known as ikee and duh. Both are based on the following weakness. A<br />

service called SSH can be installed on a jailbroken iPhone. (SSH stands for<br />

“secure shell.” This is a network protocol that specifies how to transfer data<br />

between two devices on a secure channel.) This service comes with the default<br />

password alpine, which should be changed by the user right after the installation.<br />

Both ikee and duh look for iPhones whose default password hasn’t<br />

been changed, and infect those devices. The ikee worm is harmless and was<br />

released as a pro<strong>of</strong> <strong>of</strong> concept, but duh modifies the default SSH password to<br />

ohshit, takes control <strong>of</strong> the iPhone, and includes it, as an unwilling zombie,<br />

in a newly established botnet. A strategy known as command-and-control<br />

is then employed to steal personal data (mostly bank login information) and<br />

upload it to the botnet’s central server, which appears to be located in Lithuania.<br />

This worm employs a strategy known as command-and-control that has<br />

been used in the past with computer-based botnets<br />

The early bird gets the worm, but the second mouse gets the cheese.<br />

—Unknown


4<br />

Trojan Horses<br />

A Trojan horse is a common type <strong>of</strong> rogue s<strong>of</strong>tware. Such a program hides<br />

in a computer and has some malicious function. In contrast to viruses and<br />

worms, Trojans do not replicate. This chapter summarizes the main features<br />

<strong>of</strong> Trojans and also discusses how to modify a compiler in a devious way, to<br />

make it plant Trojans in programs that it compiles.<br />

The Trojan war, described by Homer (Greek Oµηρoς) in the Iliad and<br />

the Odyssey, took place about 3200 years ago, in the beginning <strong>of</strong> the twelfth<br />

century b.c.. We don’t know whether the war actually happened or even if<br />

Homer existed, but throughout history (and even today) this chapter <strong>of</strong> Greek<br />

history has fascinated readers and writers alike and has inspired countless<br />

stories, poems, plays, and archaeological excavations.<br />

The Iliad describes how, having failed<br />

to capture Troy after ten years <strong>of</strong> siege and war,<br />

the Greeks, on the advice <strong>of</strong> Odysseus, made a<br />

giant wooden horse, left it at the gates <strong>of</strong> Troy,<br />

ostensibly as a peace <strong>of</strong>fering, and pretended to<br />

sail away. The Trojans, intentionally confused<br />

by the Gods, dragged the horse inside the city<br />

walls and celebrated their “victory.” At night,<br />

Greek soldiers emerged from the horse’s hollow<br />

belly and opened the city gates, allowing their<br />

compatriots to pour in and capture and destroy<br />

Troy.<br />

Over time, the term “Trojan horse” became a synonym for a trap. In the<br />

nomenclature <strong>of</strong> rogue s<strong>of</strong>tware, a Trojan horse is a malicious program that<br />

masquerades as a benign, useful application or an operating system routine.<br />

Unlike viruses, Trojan horses do not replicate and spread themselves. The<br />

horse stays where it is but can nevertheless be malicious and destructive. An<br />

D. Salomon, <strong>Elements</strong> <strong>of</strong> <strong>Computer</strong> <strong>Security</strong>, Undergraduate Topics in <strong>Computer</strong> Science,<br />

DOI 10.1007/978-0-85729-006-9_4, © Springer-Verlag London Limited 2010


124 4 Trojan Horses<br />

example <strong>of</strong> an insidious type <strong>of</strong> Trojan horse is an anti-virus program whose<br />

execution intentionally introduces viruses onto the computer. Some experts<br />

even claim that Trojan horses are responsible for the initial installation <strong>of</strong><br />

most viruses.<br />

Another common example is a Trojan horse that replaces the login procedure.<br />

When logging into a multiuser computer (and today many personal<br />

computers have multiuser operating systems), a user is asked to input a login<br />

name and a password. A login Trojan horse attaches itself to the start <strong>of</strong><br />

the login procedure, to become the first piece <strong>of</strong> code to be executed. It asks<br />

the user to enter a login name and a password, which the Trojan horse then<br />

saves and may also transmit to its owner. The horse then displays a message<br />

“wrong login, please try again” and invokes the original login routine. The<br />

user, being human, tends to trust the message (not suspecting that it came,<br />

so to speak, from the horse’s mouth) and tries again, this time successfully.<br />

A similar trick is described in Section 10.5.<br />

Exercise 4.1: What’s the advantage <strong>of</strong> placing a Trojan horse in a user’s<br />

word processor or editor?<br />

The following are some <strong>of</strong> the most common Trojans identified in 2008–<br />

10. Some have since disappeared, but there is still much information on<br />

the Internet about them. Mocmex, Torpig, Bohmini.A, Trojan.Arugizer,<br />

Packed.Generic.292, Trojan.Zbot!gen6, and Trojan.FakeAV!gen21.<br />

4.1 Applications <strong>of</strong> Trojans<br />

Many Trojan horses have been discovered over the years on various platforms.<br />

They were designed to perform all kinds <strong>of</strong> tasks, a few <strong>of</strong> which are described<br />

in this section.<br />

Example: The SSH Trojan horse. SSH (secure shell) is a protocol defining<br />

a set <strong>of</strong> network connectivity tools that are used by increasing numbers<br />

<strong>of</strong> people on the Internet. Many users <strong>of</strong> telnet, rlogin, ftp, and other<br />

communications programs do not realize that their password is transmitted<br />

across the Internet unencrypted. SSH encrypts all traffic (including passwords)<br />

to effectively eliminate eavesdropping, connection hijacking, and other<br />

network-level attacks. In addition, SSH provides a myriad <strong>of</strong> secure tunneling<br />

capabilities, as well as a variety <strong>of</strong> authentication methods. OpenSSH is a<br />

free version <strong>of</strong> the SSH protocol, available from http://www.openssh.com/.<br />

On or about 30 July 2002, someone managed to replace several crucial<br />

source files in the SSH directory at ftp.openssh.com and ftp.openbsd.org.<br />

The bad files were identified and restored from the original, uncompromised<br />

versions on 1 August 2002, but some infected files may have propagated to<br />

sites that mirror the main OpenSSH site. The bad files contained a Trojan<br />

horse that, when compiled and executed, allowed a user at a certain IP<br />

address to gain unauthorized remote access to any computer running the<br />

infected files. The level <strong>of</strong> access would be that <strong>of</strong> the user who compiled the<br />

source code.


4.1 Applications <strong>of</strong> Trojans 125<br />

A CERT advisory was immediately issued, encouraging all who downloaded<br />

a copy <strong>of</strong> the OpenSSH distribution to verify the authenticity <strong>of</strong> their<br />

distribution, regardless <strong>of</strong> how it was obtained. Users were also advised to<br />

inspect any other s<strong>of</strong>tware that had been downloaded from the compromised<br />

site.<br />

Example: A keystroke logger (or a keystroke grabber) is a Trojan horse<br />

that runs in the background, recording the user’s keystrokes. (This is also<br />

an example <strong>of</strong> spyware or rat, Chapter 9.) The keystrokes are written onto a<br />

hidden file and are later transmitted to the Trojan’s owner or even retrieved<br />

personally. The latter option makes sense in cases where the culprit has<br />

physical access to the infected computer, such as in an <strong>of</strong>fice or a lab.<br />

Every computer user knows the importance <strong>of</strong> keystrokes. Every password<br />

is entered through the keyboard, so the perpetrator <strong>of</strong> a keystroke logger<br />

can easily obtain all the passwords <strong>of</strong> the computer user/owner. Even bank<br />

account numbers <strong>of</strong>ten have to be typed, making the financial resources <strong>of</strong><br />

the computer owner vulnerable to the hacker.<br />

One solution is to minimize the number <strong>of</strong> keystrokes by using copy<br />

and paste. A computer owner may keep all sensitive information, such as<br />

passwords, account numbers, and credit card numbers in an encrypted text<br />

file. Whenever any sensitive information is needed, the owner decrypts this<br />

file (its password has to be typed, and is intercepted by the hacker, but the<br />

hacker may not have access to the file), copies the data, then pastes it into a<br />

login program, an ftp program, or an Internet browser. The copy and paste<br />

are done by typing special keystrokes (such as a function key or a command<br />

key) that are always the same and don’t provide any useful information to the<br />

hacker. (Utilities such as 1password perform the same task and are handier<br />

than a text file.)<br />

Some Swiss banks hit on a different solution. The bank provides its<br />

customers with a special minicalculator that’s synchronized with the bank’s<br />

main computer. A customer wanting to transact business with the bank from<br />

their computer type their password into the minicalculator, which generates<br />

a second, random password good for just one transaction. The customer<br />

then types the second password into their computer (Figure 4.1) and it is<br />

recognized by the bank’s computer for one transaction only. Intercepting such<br />

a one-time password is futile, making this two-step authentication scheme<br />

highly secure.<br />

Trojan horses, which open back doors on computers for hackers to enter<br />

through, have become easy to develop and are being used to steal banking<br />

details. Such Trojans wait for a user to browse a Web site with the<br />

word bank in it. At that point, the Trojan records the user’s key strokes,<br />

capturing their user name, password and account numbers.<br />

—Eugene Kaspersky, Kaspersky Labs, http://www.kaspersky.com.<br />

Example: A screen capturing program. Anything typed by a user is<br />

echoed and displayed on the monitor screen, for visual verification. Thus,<br />

when a password is pasted into a browser, it is shown on the screen for a<br />

short time. A hidden program that captures the screen (periodically or each


126 4 Trojan Horses<br />

�� ����� ����� �� ��� ������ �� ����� ������<br />

Figure 4.1: A Secondary Password.<br />

time the user presses “return”) can therefore be useful to a hacker. The Theef<br />

2.0 Trojan horse is known to capture the computer screen continuously, as<br />

well as performing other destructive operations. A common solution is to<br />

display the password as a string <strong>of</strong> asterisks.<br />

Exercise 4.2: Search the Internet for more examples <strong>of</strong> common Trojans.<br />

4.2 Installing a Trojan<br />

A simple way <strong>of</strong> installing a program with a Trojan horse on many computers<br />

is to write a useful application or utility and sell it (perhaps as shareware)<br />

for a very low price. This should be a program that the user will execute<br />

<strong>of</strong>ten, or at least on a regular basis, so here are some ideas:<br />

Anti-virus s<strong>of</strong>tware. Someone who buys such s<strong>of</strong>tware is supposed to<br />

execute it <strong>of</strong>ten or at least as soon as a new virus update appears.<br />

A cleanser. A modern operating system is complex and may require periodic<br />

house cleaning. The following list may look familiar to many personal<br />

computer owners.<br />

1. Applications and utilities may create temporary files and omit (if<br />

written by an inexperienced programmer) to delete them.<br />

2. Log files, cache files, and automatic messages created by the operating<br />

system should be deleted from time to time.<br />

3. Access permissions <strong>of</strong> important operating system files may be modified<br />

accidentally by imperfectly-written programs or when the computer<br />

crashes or hangs. A sudden power failure may also damage the permissions.<br />

Thus, someone (or something) should periodically check and restore<br />

the original permissions.<br />

4. Programs <strong>of</strong>ten have a help facility, and a program may have lots <strong>of</strong><br />

small files with help text in many languages. A user who speaks only Armenian,<br />

for example, may want to delete all the help files in other languages.


4.2 Installing a Trojan 127<br />

5. The file directory may become slightly damaged over time. Running<br />

a disk repair utility once a week may be a good idea, as this can locate and<br />

repair small problems before they turn serious.<br />

6. Certain operating systems recommend that files should be defragmented<br />

periodically.<br />

7. The operating system may automatically backup certain crucial files.<br />

The conclusion is that a modern operating system requires a lot <strong>of</strong> maintenance.<br />

The operating system may do this work automatically, but it tends<br />

to do it late at night. If the computer is <strong>of</strong>f at that time, the maintenance<br />

work is skipped. This may give a hacker the idea to write a utility that will<br />

do all the maintenance tasks for a certain operating system and will do them<br />

better than the operating system itself. Such a utility can be very handy. To<br />

be really useful, it should not be launched by the user, but decide by itself<br />

when to run. Obviously, such a utility has full control over the computer and<br />

may be an ideal place to store a Trojan horse. Here is what one user has to<br />

say about this type <strong>of</strong> utility (Macaroni for the Macintosh OS X):<br />

“Though it’s just an impression, I can say that my system is running<br />

much snappier than pre-Macaroni days. That’s even with me running some<br />

<strong>of</strong> the other very good utilities out there manually. Not having to worry at<br />

all about when to run different scripts is well worth the nominal fee charged<br />

here. Highly recommended.”<br />

In the 1970s, when the UNIX operating system and the C programming<br />

language were developed, the developers (Dennis Ritchie and Ken Thompson)<br />

discovered that a compiler can be rigged (or bugged) to embed a Trojan horse<br />

into any program it compiles, or only into certain routines or statements. For<br />

example, a C compiler (which is itself written in C) can be rigged to insert<br />

a Trojan horse into the login routine <strong>of</strong> UNIX. The point is that the Trojan<br />

horse does not exist in the source code <strong>of</strong> the program being compiled, so an<br />

examination <strong>of</strong> the source code will not yield anything suspicious.<br />

Once the compiler has been rigged, an examination <strong>of</strong> the source code<br />

<strong>of</strong> the compiler itself will naturally disclose the bug, but an insider fraudster<br />

can proceed in three steps that leave virtually no traces:<br />

Rig the compiler (since this is done intentionally, it is by itself a Trojan<br />

horse and not a bug; a bug happens accidentally).<br />

Compile the compiler itself. This creates an executable compiler with a<br />

Trojan horse.<br />

Remove the Trojan horse from the source code <strong>of</strong> the compiler. This<br />

leaves the original, clean compiler whose examination will yield nothing suspicious.<br />

The act <strong>of</strong> breaking into a computer system has to have the same social<br />

stigma as breaking into a neighbor’s house. It should not matter that the<br />

neighbor’s door is unlocked.<br />

—Ken Thompson.


128 4 Trojan Horses<br />

The result is a Trojan horse embedded in an executable file that’s a C<br />

compiler. When the compiler is run to compile a program, it executes the<br />

Trojan horse, which may decide to embed malicious code (another Trojan<br />

horse) in the program being compiled. Both the source code <strong>of</strong> the program<br />

and that <strong>of</strong> the compiler are clean, but the object codes (the executable<br />

files) are infected. This scheme opens up an entire spectrum <strong>of</strong> possibilities<br />

for a hacker, because executable files, especially large ones, are notoriously<br />

difficult to disassemble, read, and understand. This kind <strong>of</strong> Trojan horse is<br />

dangerous because it survives reading, rereading, checking, recompiling, or<br />

even rewriting <strong>of</strong> the program. In some sense it is the ultimate parasite.<br />

More details <strong>of</strong> this technique and examples <strong>of</strong> C code can be found in<br />

[Thompson 84], which is also reprinted in [Denning 90].<br />

This technique has only a limited application for a fraudster, because<br />

any malicious code installed by it in the object code <strong>of</strong> a compiler disappears<br />

when the clean source code <strong>of</strong> the compiler is recompiled. Unfortunately, this<br />

technique can be extended to produce an infected compiler where the infection<br />

survives recompilation! The Trojan horse literally lives in the compiler.<br />

For those exegetes who must have the complete story, Section 4.3 may prove<br />

useful.<br />

exegete \EK-suh-jeet\, noun:<br />

A person who explains or interprets difficult parts <strong>of</strong> written works.<br />

—A dictionary definition.<br />

The fact that a compiler (and by implication, other operating system<br />

programs, such as s<strong>of</strong>tware libraries) can be compromised in such a subtle,<br />

nasty way implies that such programs should be kept under strict control<br />

by administrators. System programmers (those who update and maintain<br />

the operating system itself) are highly-respected pr<strong>of</strong>essionals, but even they<br />

don’t last forever. They come and go and even one unreliable programmer<br />

in a thousand can do untold harm.<br />

Another way to propagate a Trojan horse is by means <strong>of</strong> Java applets.<br />

The Java programming language has features that make it a natural candidate<br />

for use in network applications. One <strong>of</strong> those features is the Java applets.<br />

Unfortunately, this handy feature also introduces a vulnerability. Java applets<br />

can be loaded into a computer without the owner’s explicit consent, and<br />

such an applet can be a Trojan horse. It can collect keystrokes, periodically<br />

capture the screen, and send this information to its creator, by simulating the<br />

operations <strong>of</strong> an Internet browser. To the computer owner, this activity looks<br />

like innocent E-commerce application, which makes it difficult to detect.<br />

There are s<strong>of</strong>tware products such as Omniware, Telescript, and Dyad<br />

that <strong>of</strong>fer remote execution mechanisms. They also provide opportunities for<br />

wrongdoers to load rogue programs into personal computers.


4.3 Rigging a Compiler<br />

4.3 Rigging a Compiler 129<br />

This section presents the details <strong>of</strong> the technique mentioned earlier where a<br />

Trojan horse can be planted in a compiler such that the source code <strong>of</strong> the<br />

compiler remains clean and the Trojan survives multiple compilations <strong>of</strong> the<br />

compiler itself.<br />

We start with the concept <strong>of</strong> a program that prints itself. The problem<br />

is to write a program (preferably, the shortest program) that prints itself<br />

and does nothing else (this has also been mentioned at the beginning <strong>of</strong><br />

Chapter 2). A program can, <strong>of</strong> course, print any strings <strong>of</strong> characters and<br />

the content <strong>of</strong> any variables. Thus, the following C program prints the string<br />

hello world.<br />

main() {<br />

print("hello world");<br />

}<br />

It is easy to write a program that will print the above program<br />

main() {<br />

print("main() {print(\"hello world\");}");<br />

}<br />

(where the notation \" is used to include quotation marks in a character<br />

string), but this program doesn’t print itself, it prints the first program,<br />

which is simpler. At first it seems that our task is hopeless. Any program<br />

that prints itself will have to have two parts, a command that prints and a<br />

string to be printed. The two parts will always be greater than the string to<br />

be printed, (or equivalently, the string printed cannot be as big as the entire<br />

program) resulting in an impossible task.<br />

The key to solving this problem is to realize that we can have something<br />

in the program perform a double task. A string <strong>of</strong> characters, for example,<br />

can be printed twice. This way, the result printed by the program can be<br />

as long as the program itself and can be adjusted to become identical to<br />

the program. An example is shown here, in Exercise 2.2, and in Figure 4.2,<br />

but anyone with even minimal programming experience is urged to try this<br />

independently. The revelation experienced when you finally discover how to<br />

do this task far surpasses any benefits you can obtain from me showing you<br />

how. But if you really want it, here is an (admittedly hard to read) example.<br />

char*a="char*a=%c%s%c;main(){printf(a,34,a,34);}";main(){printf(a,34,a,34);}<br />

Figure 4.2 may be easier to read. For those inexperienced in programming,<br />

here is an explanation <strong>of</strong> this program. Line 1 declares a character<br />

variable t[]. Lines 2–11 place the bulk <strong>of</strong> the program (lines 13–22) in t.<br />

The syntax rules <strong>of</strong> the C language regarding strings have been relaxed to<br />

improve readability. The main program (lines 14–22) declares an integer variable<br />

i and prints three strings. Line 18 prints line 1 as a string, lines 19–20<br />

print lines 2–11 (the content <strong>of</strong> t, each character individually), and line 21<br />

prints lines 13–22 (again from t, but this time as a string). Clever!


130 4 Trojan Horses<br />

1 char t[]= {<br />

2 ’0 };<br />

3 main()<br />

4 {<br />

5 int i;<br />

6<br />

7 printf("char t[] = {");<br />

8 for(i=0; t[i]!=0; i=i+1)<br />

9 printf("%d, ", t[i]);<br />

10 printf("%s", t);<br />

11 }’<br />

12<br />

13 0 };<br />

14 main()<br />

15 {<br />

16 int i;<br />

17<br />

18 printf("char t[] = {");<br />

19 for(i=0; t[i]!=0; i=i+1)<br />

20 printf("%d, ", t[i]);<br />

21 printf("%s", t);<br />

22 }<br />

Figure 4.2: A Self-Printing C Program.<br />

Now consider a hacker who wants to penetrate a certain UNIX installation<br />

and be able to use its computers at will. One approach is to plant a<br />

Trojan horse in a sensitive, powerful UNIX routine, that will let the hacker in<br />

through a back door. An example <strong>of</strong> a powerful system program is the login<br />

routine. This routine is charged with identifying valid users and rejecting<br />

illegitimate ones. It is powerful because it decides who will be allowed into<br />

the computer. A simplified version <strong>of</strong> this routine may look like this:<br />

main() {<br />

print("login:"); read(username);<br />

print("password:"); read(password);<br />

if(check(username,password)==true)<br />

{. . . admit the user . . .};<br />

else<br />

{. . . reject the user . . .};<br />

}<br />

check(username,password) {<br />

. . . code to encrypt and check the password . . .<br />

}<br />

A Trojan horse can be inserted into the check routine as follows (match<br />

is a procedure that compares two character strings):<br />

check(username,password) {


4.3 Rigging a Compiler 131<br />

if(match(password,"hacker")) return true;<br />

else<br />

. . . code to encrypt and check the password . . .<br />

endif; }<br />

The infected routine will admit anyone who enters the password hacker,<br />

regardless <strong>of</strong> the user’s name. Other passwords will be checked as before.<br />

Exercise 4.3: (For UNIX users.) Name other powerful UNIX routines.<br />

In principle, it is easy to modify the login routine to let the hacker in,<br />

but in practice, a hacker may have to be an experienced C programmer, to<br />

apply for a job at the computer center, to actually get the job, to spend some<br />

time becoming a trusted employee, and to find a few minutes alone with the<br />

source files, away from any prying eyes and security cameras. Once done, the<br />

hacker should stay on the job for a while, to allay any suspicion. Even after<br />

all this, a routine check <strong>of</strong> the login procedure will disclose the Trojan horse.<br />

A clever hacker will understand all this and may look for a better approach.<br />

A better scheme is to rig a compiler in a simple way, as shown earlier. An<br />

insider with access to the source code <strong>of</strong> a C compiler could plant a Trojan<br />

horse in the object code <strong>of</strong> the compiler by the following three steps:<br />

Plant a Trojan horse in the source code <strong>of</strong> the compiler.<br />

Compile the compiler. This creates an executable (object code) compiler<br />

with a Trojan horse.<br />

Remove the Trojan horse from the source code <strong>of</strong> the compiler. This<br />

leaves the original, clean compiler whose examination will yield nothing suspicious.<br />

The result is a Trojan horse embedded in an executable file that’s a C<br />

compiler. When the compiler is run to compile a program, it executes the<br />

Trojan horse, which may decide to embed malicious code (another Trojan<br />

horse) in the program being compiled. Both the source code <strong>of</strong> the program<br />

and that <strong>of</strong> the compiler are clean, but the object codes (the executable files)<br />

are infected. This scheme opens up an entire spectrum <strong>of</strong> possibilities for<br />

a hacker, because (1) executable files, especially large ones, are notoriously<br />

difficult to disassemble, read, and understand and (2) the C compiler is used<br />

to compile all kinds <strong>of</strong> programs, among them operating system programs<br />

that have full access to all the files. Planting a Trojan horse or a virus in a<br />

powerful system program such as login can make the perpetrator as powerful<br />

as the chief administrator.<br />

The critical part <strong>of</strong> the C compiler, from our point <strong>of</strong> view, is the compile(s)<br />

procedure. It accepts a string s <strong>of</strong> characters (the next line <strong>of</strong> source<br />

code) that it compiles. The following is a simplified picture <strong>of</strong> compile:<br />

compile(s) {<br />

. . . instructions to compile . . .<br />

. . . a line <strong>of</strong> C code . . .;<br />

}


132 4 Trojan Horses<br />

This procedure is invoked for each line <strong>of</strong> source code. It creates object code<br />

and appends it to the object file that’s being generated. This, <strong>of</strong> course, is<br />

a highly-simplified picture, but it is enough for conveying the basic ideas <strong>of</strong><br />

bugging the compiler. (In reality, a compiler has to perform several passes<br />

over the source code to collect information before it generates any object<br />

code.) Procedure compile can be rigged in a simple way to plant a Trojan<br />

horse in the login routine.<br />

1 compile(s) {<br />

2 . . . (unmodified) instructions to compile . . .<br />

3 . . . a line <strong>of</strong> C code . . .<br />

4 if(match(s,"check(username, password) {"))<br />

5 compile("if(match(password, \"hacker\")) return true;");<br />

6 }<br />

Line 4 compares the string in s to string “check(username, password) {”.<br />

A match indicates that the program currently being compiled is indeed login.<br />

In such a case, the compiler is instructed (in line 5) to compile the short<br />

Trojan horse code if(match(password, \"hacker\")) return true; that<br />

becomes part <strong>of</strong> the object code <strong>of</strong> the login routine (even though it does<br />

not appear in its source code). After rigging the compiler in this way, the<br />

perpetrator tries the login routine every day, until he finds the Trojan horse<br />

(i.e., he finds he can log into any account by means <strong>of</strong> his secret password).<br />

He then cleans up the compiler source code by removing lines 4–5 above.<br />

In practice, this process is more complex, because the simple test <strong>of</strong><br />

line 4 may not be enough to identify the login routine, because the Trojan<br />

horse is more complex than shown here, and because the hacker may want<br />

to bug several operating system routines at the same time (in case his access<br />

to the compiler source code may soon be curtailed or completely cut <strong>of</strong>f).<br />

This clever scheme for bugging the compiler leaves the source code <strong>of</strong><br />

the compiler clean. It therefore can easily be defeated by recompiling the<br />

(clean source code <strong>of</strong> the) compiler. However, this scheme can be extended<br />

to plant a Trojan horse that stays in the object code <strong>of</strong> the compiler even<br />

after several recompilations! The extension (as well as the original scheme)<br />

depends on a s<strong>of</strong>tware feature called self-referencing. As far as the compiler is<br />

concerned, self-referencing means that the compiler is written in the language<br />

it compiles. The most-important example <strong>of</strong> a self-referencing compiler, as<br />

far as this author is aware, is the C compiler which became such an important<br />

part <strong>of</strong> the UNIX operating system, but the practice <strong>of</strong> writing a compiler in<br />

its “own” language is now common. When we hear <strong>of</strong> such practice, it seems<br />

impossible. We can write the first C compiler in C, but it will be impossible<br />

to compile this compiler.<br />

Because <strong>of</strong> this problem, self-referencing must be a multistep process,<br />

where the first step is to write a minimal C compiler in assembler language<br />

and assemble it. We call this first compiler version 0, and we denote its source<br />

code and executable file by S0 and E0, respectively. Version 0 is a primitive<br />

compiler that’s both slow and produces inefficient machine code, but it is<br />

only a first step. (We assume that an assembler and a loader exist already,


4.3 Rigging a Compiler 133<br />

but someone has to write and debug them before our multistep process can<br />

be carried out.)<br />

The next step is to write a better compiler, version 1, that produces<br />

efficient machine code. The source code <strong>of</strong> this version is written in C and<br />

is designated S1. It is compiled by compiler E0 to produce compiler E1. E1<br />

is a C compiler that produces optimized code, but is slow, because it was<br />

compiled by E0.<br />

The next and final step is obvious, use E1 to recompile S1, resulting in<br />

E2 (there is no S2). E1 is slow to compile, so it takes a while to produce E2,<br />

but once produced, E2 is both fast (because E1 produces optimized code)<br />

and produces optimized code (because it is a translation <strong>of</strong> S1 and S1 was<br />

written to produce optimized code).<br />

The entire process, summarized in Figure 4.3, reminds one <strong>of</strong> the adage<br />

about pulling yourself up by your own bootstraps, but it works!<br />

���� �<br />

���� �<br />

���� �<br />

��<br />

��<br />

��<br />

���������<br />

��<br />

��<br />

Figure 4.3: Bootstrapping A Compiler.<br />

���� ��� ��������<br />

����������� ����<br />

��<br />

���� ��� ��������<br />

��������� ����<br />

��<br />

���� ��� ��������<br />

��������� ����<br />

We are now ready to describe what may be termed the ultimate parasite.<br />

This is a Trojan horse that can live in the compiler’s object file for a long<br />

time and survive any number <strong>of</strong> recompilations. The idea behind such a<br />

terrible threat is really very simple. We have seen how the compiler can be<br />

rigged to insert a Trojan horse in the login routine when compiling it. In<br />

the same way, the compiler can be bugged to insert a Trojan horse in itself<br />

(i.e., in its own new object code) every time it is recompiled. In addition to<br />

executing its payload, such a Trojan horse must replicate itself every time it<br />

is executed, but we already know, from the examples <strong>of</strong> programs that print<br />

themselves, that such a thing is possible.<br />

We assume that the object code <strong>of</strong> the compiler already has a Trojan<br />

horse, but the source code has been cleaned. The Trojan horse has to identify<br />

the case where the compiler compiles itself, and has to plant a copy <strong>of</strong> itself<br />

(i.e., <strong>of</strong> the Trojan horse) in the newly-produced object code. Figure 4.4<br />

shows a simplified picture <strong>of</strong> how the compiler can be rigged to bug itself<br />

when recompiled. Notice that the code <strong>of</strong> this figure is very similar to that<br />

<strong>of</strong> Figure 4.2, except that instead <strong>of</strong> printing string variable t, this variable<br />

is passed as a parameter to routine compile().<br />

��


134 4 Trojan Horses<br />

1 compile(s) {. . . compile the current line . . .<br />

2 char t[] = {. . . a character string . . .};<br />

3 if(match(s, "compile(s) {")) {<br />

4 compile("char t[] = {");<br />

5 for(i=0, t[i]!=0, i=i+1)<br />

6 compile(t[i]);<br />

7 compile(t);<br />

8 compile("print(\"hello world\")");<br />

9 }<br />

10 }<br />

Figure 4.4: A Rigged Compiler.<br />

Line 2 places the Trojan horse’s code as a character string in variable<br />

t in much the same way as in Figure 4.2. On line 3, the compiler identifies<br />

the fact that it is compiling itself. Once this is ascertained, lines 4–7 compile<br />

the Trojan horse (they prepare the object code <strong>of</strong> the horse and insert it into<br />

the newly-created object code <strong>of</strong> the compiler) exactly as done by the three<br />

print commands in Figure 4.2. Finally, line 8 compiles the payload, in our<br />

example, simply the harmless declaration “hello world.”<br />

This fragment <strong>of</strong> the rigged compiler source code is greatly simplified.<br />

The experienced reader will notice that the copy <strong>of</strong> the horse and the payload<br />

are inserted into the object code <strong>of</strong> the new compiler right after the header<br />

“compile(s) {” i.e., at the beginning <strong>of</strong> the compile() routine instead <strong>of</strong><br />

at the end, but this, as well as other minor points, can be taken care <strong>of</strong> by a<br />

clever hacker.<br />

Exercise 4.4: Try to identify another weak point <strong>of</strong> this simple code.<br />

Once the rigged compiler <strong>of</strong> Figure 4.4 has compiled itself, the extra<br />

code can be removed from it, leaving a clean source code <strong>of</strong> a C compiler.<br />

(The modification date <strong>of</strong> the compiler source file will have changed, which<br />

may serve as a clue to the administrators, but that’s all. If this date change<br />

isn’t discovered quickly, it may lose its significance after a while.) Every time<br />

this clean source code is compiled, the (bugged object code <strong>of</strong> the) compiler<br />

produces a new bugged object code.<br />

Now that we have seen how a bug (more precisely, a Trojan horse) can<br />

live indefinitely in a compiler, we consider the next natural question. How can<br />

an unscrupulous wrongdoer infiltrate a highly-secure computer center staffed<br />

by pr<strong>of</strong>essionals and gain enough trust to be allowed to mess up with the<br />

compiler (especially considering that the center’s administrators may have<br />

read this section and know all about planting Trojan horses in a compiler)?<br />

The obvious answer is, by planting a virus. A virus planted by a low-level<br />

employee or even a complete outsider can propagate in the computer center<br />

from program to program until it gets a chance to locate and infect the<br />

compiler (whose name, perhaps cc.exe or cc.c, is public knowledge).<br />

In order to infect the compiler, the virus has to reside in a program<br />

that belongs to a user who has permission to write to the compiler, but in


4.3 Rigging a Compiler 135<br />

a large computer center several trusted system programmers may have this<br />

permission. The hacker may even copy the compiler source code, rename the<br />

copy and rig it at his leisure, check the bugged compiler by recompiling it<br />

several times, then store the rigged compiler object code in the computer as<br />

one <strong>of</strong> his files. Upon gaining the right access permission, the virus simply<br />

replaces the original (object) compiler with this file. Once the virus writer<br />

has noticed that the Trojan horse is in place, he can plant another virus that<br />

will kill the original virus from all the infected programs.<br />

Exercise 4.5: There is a simpler way to eliminate the original virus without<br />

writing and distributing a new virus. Any ideas?<br />

See the excellent article [Witten 87] for more details on this and similar<br />

security topics.<br />

You know horses are smarter than people. You never<br />

heard <strong>of</strong> a horse going broke betting on people.<br />

—Will Rogers


5<br />

Examples <strong>of</strong> Malware<br />

The history and main features <strong>of</strong> several computer viruses and worms are<br />

described in this chapter. More examples can be found in Appendix C. Due<br />

to the prevalence <strong>of</strong> rogue s<strong>of</strong>tware, there are many similar descriptions on<br />

the Internet. Notice that most <strong>of</strong> the examples are from the 1980s and 1990s,<br />

because this was the time when new, original, and very destructive malware<br />

appeared regularly and caused great alarm and much harm to computer users<br />

worldwide.<br />

5.1 The Lehigh Virus<br />

The Lehigh virus appeared at Lehigh university in Bethlehem, Pennsylvania<br />

in the fall <strong>of</strong> 1987. Thus, this was an early virus. It attacked the nowobsolete<br />

DOS operating system that was then very popular. The perpetrator<br />

was never identified, but was likely a student with PC programming experience<br />

and knowledge <strong>of</strong> DOS. The virus located itself in the stack segment<br />

<strong>of</strong> the COMMAND.COM file, an important part <strong>of</strong> DOS. Because <strong>of</strong> this<br />

special location, the virus didn’t change the size <strong>of</strong> the file, which initially<br />

made this virus difficult to locate. However, the infection did change the last<br />

modification date <strong>of</strong> this file, which helped security consultants at Lehigh in<br />

identifying and locating the problem. The virus infected the first four floppy<br />

disks inserted in the drive, then damaged the hard drive itself by overwriting<br />

the file allocation table, a data structure where file names are associated with<br />

disk addresses. (Floppy disks may be familiar to older readers, but have been<br />

obsolete for years.)<br />

The existence <strong>of</strong> the virus was suspected once its massive damage was<br />

discovered. To understand this process, it helps to know how the computing<br />

environment operated at Lehigh at that time. The university purchased<br />

D. Salomon, <strong>Elements</strong> <strong>of</strong> <strong>Computer</strong> <strong>Security</strong>, Undergraduate Topics in <strong>Computer</strong> Science,<br />

DOI 10.1007/978-0-85729-006-9_5, © Springer-Verlag London Limited 2010


138 5 Examples <strong>of</strong> Malware<br />

certain programs that its students were allowed to use. A student could walk<br />

into a computer lab, check out a floppy disk, insert it into a computer in the<br />

lab, and run the s<strong>of</strong>tware. Students were also allowed to take a disk home<br />

and copy it, so as to have a private copy <strong>of</strong> the s<strong>of</strong>tware.<br />

Floppy disks were not very reliable, and in such an environment, where a<br />

disk was used heavily by many students, disks tended to go bad. On an average<br />

day, five disks were returned as bad and had to be replaced, but when the<br />

virus started its operations, 500 disks were returned by students as bad. It<br />

was clear to Lehigh programmers that something was<br />

wrong, and fortunately they had been trained in computer<br />

viruses, and knew what to suspect. They started<br />

examining the bad disks and found out that file COM-<br />

MAND.COM, which should always be the same, had<br />

a recent modification date. The file was then carefully<br />

examined and compared with an original file on a brand<br />

new disk. This was how the virus was discovered.<br />

The following morning, the employees had a program to examine floppy<br />

disks for the virus and delete it. They sent email messages to everyone on<br />

campus and placed messages in every mailbox, asking people to let their<br />

disks be examined and cleaned. A trained person with a PC was sent to<br />

every building on campus, and asked everyone in sight to submit their floppy<br />

disks for a check and also bring any disks they had at home.<br />

Such a process is not always successful, because people move in and out<br />

<strong>of</strong> such a campus, but at Lehigh it succeeded because the people in charge<br />

took immediate and decisive action and because the spread <strong>of</strong> the virus was<br />

limited. Within two days the campus was clean <strong>of</strong> the virus and no other<br />

copy <strong>of</strong> the virus has been seen again outside <strong>of</strong> virus labs.<br />

The calendar played an interesting role in this episode. The problem<br />

started two days before the start <strong>of</strong> the fall break at Lehigh. Had the consultants<br />

failed to eradicate the virus in two days, students going on vacation<br />

would have spread the virus to their home computers and to other environments,<br />

thereby turning its eradication into a slow and difficult process.<br />

5.2 The Brain Virus<br />

The brain virus (so called because it labeled any floppy disk that it infected<br />

“brain”) was first discovered on 22 October 1987. It was the first virus to be<br />

discovered in the United States and was designed to damage the directory<br />

<strong>of</strong> floppy disks used in the (now obsolete) DOS operating system. After a<br />

tedious process <strong>of</strong> isolation and analysis, the two names Basit and Amjad<br />

were found in the virus, together with their address in Lahore, Pakistan. As<br />

a result, this virus is also known as the Pakistani virus. It seems that the two<br />

brothers spread the virus by selling certain expensive and popular s<strong>of</strong>tware<br />

titles very cheaply on infected floppy disks to tourists.


5.3 The Michaelangelo Virus 139<br />

The brain virus infects only floppy disks. Part <strong>of</strong> it replaces the boot<br />

sector <strong>of</strong> the disk and the remainder is located in three clusters (a cluster is<br />

two sectors) in the disk directory (called the file allocation table, or FAT),<br />

which is damaged as a result. A copy <strong>of</strong> the original boot sector is also stored<br />

by the virus in those clusters. The clusters themselves are declared bad by<br />

the virus. When the disk is inserted into the drive, the boot sector is read and<br />

the virus is executed. It copies itself to memory and modifies the interrupt<br />

addresses <strong>of</strong> several interrupts.<br />

When s<strong>of</strong>tware tries to read the disk, the drive generates an interrupt<br />

signal which causes the brain virus to be executed. If the s<strong>of</strong>tware tries to<br />

read the boot sector, the virus redirects the input request to the area in<br />

the corrupted directory where it had hidden the original sector. If the read<br />

operation is for another sector, the virus infects the disk. The virus looks,<br />

in such a case, for its own signature, which is the numbers 34 and 12 in the<br />

fourth and fifth bytes <strong>of</strong> the boot sector. If the signature is found or if the<br />

disk is write protected, the virus assumes that the disk is already infected<br />

and it simply reads the requested data from the disk. Otherwise, the virus<br />

stores itself in the boot sector and three sectors <strong>of</strong> the disk directory, then<br />

proceeds with the read request.<br />

The main damage inflicted by the brain virus is the destruction <strong>of</strong> the<br />

disk directory, but files on the disk are sometimes also damaged. The disk<br />

directory can, in principle, be reconstructed, but this requires considerable<br />

effort.<br />

5.3 The Michaelangelo Virus<br />

The well-known Renaissance painter and sculptor Michelangelo (Miguel Angel)<br />

Buonarroti was born on 6 March 1475 (he died on 18 February 1564). In<br />

early 1991, a computer virus that was triggered to<br />

activate on 6 March was discovered in Europe and<br />

was quickly dubbed the Michaelangelo virus (but<br />

see joke below).<br />

Back in the early 1990s, floppy disks were<br />

common, and the Michaelangelo virus was designed<br />

(like many other viruses <strong>of</strong> the time) to propagate<br />

by booting from an infected floppy disk. The<br />

Michaelangelo virus hides in the boot sector and<br />

partition areas <strong>of</strong> MS-DOS disks. The boot sector is the first sector read when<br />

the computer starts or is reset. Thus, the virus installs itself in memory each<br />

time an infected disk (bootable or not) is inserted in the disk drive and is<br />

read. Once the Michaelangelo virus is memory resident, it infects the boot<br />

sectors <strong>of</strong> any new disks inserted into the drive. The propagation mechanism<br />

<strong>of</strong> this virus is therefore simple, straightforward, and is shared by many old<br />

viruses.<br />

Each time the virus is executed, it checks the date, and on 6 March it<br />

erases the system area <strong>of</strong> the hard disk. The hard disk will no longer boot and


140 5 Examples <strong>of</strong> Malware<br />

has to be reformatted. The virus is hidden in the boot sectors, which makes<br />

it easy to detect the virus. It was in fact detected before its first activation<br />

date, which saved many users the annoyance <strong>of</strong> being its victims.<br />

With all the fuss over the Michaelangelo Virus, I noticed that March 6<br />

was also Ed McMahon’s birthday. I can just see it now, on March 6, 1993<br />

millions <strong>of</strong> PC users will be greeted with the message:<br />

* Congratulations! Your computer may already be infected! *<br />

—Doug Krause in the RHF Joke Archives netfunny.com/rhf/jokes.<br />

5.4 The SirCAM Virus<br />

The standard name <strong>of</strong> the SirCAM virus is Win32.SirCam.137216. Strictly<br />

speaking, it is a worm that was discovered on 17 July 2001. It arrives at a<br />

computer as an email attachment. The subject line <strong>of</strong> the email message has<br />

the name <strong>of</strong> the attached file. That file is randomly taken from the sending<br />

computer and is given one <strong>of</strong> the extensions .bat, .com, .lnk and .pif (in<br />

addition, it has its original extension, so it has two extensions).<br />

The email message itself is pseudo-random and may be in English or<br />

Spanish. The English messages have the format:<br />

Hi! How are you?<br />

I send you this file in order to have your advice<br />

See you later. Thanks<br />

The middle line was to be randomly selected from the following list.<br />

However, because <strong>of</strong> a bug in the worm’s random number initialization, the<br />

first choice is always used:<br />

I send you this file in order to have your advice<br />

I hope you can help me with this file that I send<br />

I hope you like the file that I sendo you<br />

This is the file with the information that you ask for<br />

The Spanish message looks like:<br />

Hola como estas ?<br />

Te mando este archivo para que me des tu punto de vista<br />

Nos vemos pronto, gracias.<br />

Because <strong>of</strong> the same bug, the middle line is always the first line <strong>of</strong> the<br />

following list:<br />

Te mando este archivo para que me Des tu punto de vista<br />

Espero me puedas ayudar con el archivo que te mando<br />

Espero te guste este archivo que te mando<br />

Este es El archivo con la informacion que me pediste


5.5 The Melissa Virus 141<br />

When executed, the virus copies itself as file C:\RECYCLED\SirC32.exe to<br />

disk drive C as well as SCam32.exe in the Windows System directory. It also<br />

modifies the two registry keys<br />

HKEY_LOCAL_MACHINE\S<strong>of</strong>tware\Micros<strong>of</strong>t\Windows<br />

\CurrentVersion\RunServices\Driver32="\SCam32.exe"<br />

HKEY_CLASSES_ROOT\exefile\shell\open\command=""C:\recycled\SirC32.exe" "%1" %*"<br />

and creates the new key HKEY_LOCAL_MACHINE\S<strong>of</strong>tware\SirCam.<br />

The first key causes the virus to be executed when Windows starts. The<br />

second key causes it to execute whenever any .exe program is executed. The<br />

virus gets a list <strong>of</strong> .DOC, .XLS, and .ZIP files in the “My Documents” folder.<br />

It appends one <strong>of</strong> these files to the end <strong>of</strong> itself and saves the result to the<br />

“Recycled” folder, adding a (second) extension to the file name. This file is<br />

later attached to the email messages that the virus sends.<br />

The virus is activated to damage the computer in one <strong>of</strong> two cases: (1)<br />

The date is 16 October and the computer is set to display dates in the format<br />

dd/mm/yy. (2) The attached file contains “FA2” that’s not followed by “sc”.<br />

In either <strong>of</strong> these cases the virus deletes all the files on drive C. It then follows<br />

with the space filler operation, where it fills the remaining space on drive C by<br />

appending text to file c:\recycled\sircam.sys. The space filler operation<br />

also occurs after 8000 executions <strong>of</strong> the virus, even if no files are deleted.<br />

The virus appends a random document from the infected computer to<br />

itself and emails this new file.<br />

The virus infects Windows versions 95, 98, and Me. Due to a bug in the<br />

virus, it does not replicate under Windows NT, 2000, or XP.<br />

5.5 The Melissa Virus<br />

The Melissa virus (<strong>of</strong>ficial name W97M_Melissa) was first detected on Friday,<br />

26 March 1999. It originated in an Internet alt.sex newsgroup. Melissa is a<br />

macro virus that attacks the Micros<strong>of</strong>t Word 97 and Word 2000 applications<br />

and propagates via email attachments. The initial attack was widespread,<br />

affecting many sites. The virus infects MS Word documents and in order for<br />

it to propagate, a user has to open an infected document.<br />

If the Micros<strong>of</strong>t Outlook email program is present in the infected computer,<br />

the virus sends infected messages to the first 50 addresses in the<br />

owner’s address book. The main damage inflicted by Melissa is the extra<br />

load it places on mail servers. On the day it first appeared, Micros<strong>of</strong>t had<br />

to shut down its incoming email, and Intel and other corporations reported<br />

adverse effects.<br />

Melissa arrives as an attachment to an email message whose subject line<br />

is “Important Message from ,” and whose body text is “Here is that<br />

document you asked for. . . don’t show anyone else ;-)”. The attachment is<br />

<strong>of</strong>ten named LIST.DOC. If the recipient opens the attachment, the infecting<br />

file is written on the disk. The file itself contains a list <strong>of</strong> passwords (since<br />

disabled) for several pornographic Web sites. The file also contains a Visual<br />

Basic script that copies the virus-infected file into the normal.dot template


142 5 Examples <strong>of</strong> Malware<br />

used by MS Word for custom settings and default macros. It also creates the<br />

following entry in the Windows registry:<br />

HKEY_CURRENT_USERS<strong>of</strong>twareMicros<strong>of</strong>tOffice"Melissa?"="...by Kwyjibo"<br />

Melissa’s Visual Basic code then creates an Outlook object, reads the first 50<br />

names in each Outlook Global Address Book, and sends each addressee the<br />

same email message with the attachment that caused this particular infection.<br />

The virus works only with Outlook, not Outlook Express.<br />

In those rare cases where the minute value at the moment <strong>of</strong> virus activation<br />

equals the day <strong>of</strong> the month, the following text is displayed “Twenty-two<br />

points, plus triple-word score, plus fifty points for using all my letters. Game’s<br />

over. I’m outta here.” (This text is taken from a Bart Simpson cartoon and<br />

refers to the game <strong>of</strong> Scrabble.)<br />

A user can avoid Melissa by carefully examining each email message and<br />

all email attachments. Melissa is identified by its subject line and the fact<br />

that it has a small attachment (about 40Kb) named LIST.DOC. As a courtesy<br />

to the Internet community, any recipient <strong>of</strong> Melissa should inform the sender<br />

that their computer has been infected and has become a source <strong>of</strong> infection.<br />

In addition, many email servers already know the signature <strong>of</strong> this virus and<br />

identify any email message containing it.<br />

David L. Smith, a 31-year-old programmer and the author <strong>of</strong> Melissa<br />

(which he so named as a “tribute” to a Florida lap dancer he had fallen for),<br />

was identified, tried, pleaded guilty, and sentenced to 20 months imprisonment<br />

and a fine <strong>of</strong> $5000.<br />

5.6 Scores Virus<br />

The Scores virus (actually, a Trojan horse) was designed, in early 1988, to<br />

attack applications on the Macintosh computer. In general, the number <strong>of</strong><br />

Macintosh viruses has always been much smaller than the number <strong>of</strong> PC<br />

viruses (even in the past when DOS, the predecessor <strong>of</strong> Windows, was the<br />

chief operating system for PCs). The reasons for this may be the relatively<br />

small number <strong>of</strong> Macintosh computers (around 12–16% <strong>of</strong> the entire computer<br />

market) and the resistance <strong>of</strong> the Mac OS to viruses. It may also be that<br />

it is harder to write a virus for the Macintosh because the operating system<br />

is more complex (but version X <strong>of</strong> this operating system is based on UNIX,<br />

which makes it vulnerable to UNIX viruses).<br />

The effect <strong>of</strong> the Scores virus starts when a (now obsolete) floppy disk<br />

with an infected application is inserted into the disk drive and the infected<br />

application is executed (or is first copied to the hard drive and then executed).<br />

The virus executes first. It examines the system file (pre OS X) for a previous<br />

infection. If the system file is clean, the virus infects the computer by adding<br />

certain resources to the system, note pad, and scrapbook files, and creating<br />

two invisible files (one <strong>of</strong> which is called Scores, hence the name <strong>of</strong> the virus)<br />

in the system folder. Most <strong>of</strong> the added resources are <strong>of</strong> type init, which<br />

is an executable resource. Thus, the executable part <strong>of</strong> this virus consists <strong>of</strong><br />

three inits.


5.7 Swiss Amiga Virus 143<br />

The inits in the system file are loaded into memory and executed each<br />

time the computer is booted. On the second day, those inits go into action.<br />

Every few minutes, they start looking for an uninfected application. If one<br />

is found, it is infected by adding a resource <strong>of</strong> type code and setting the<br />

application to execute this resource, followed by a normal execution <strong>of</strong> the<br />

application, each time the application is launched.<br />

Four days after the initial infection, the Scores virus starts looking for<br />

applications called ERIC and VULT. These were two programs written by<br />

EDS (electronic data systems) for in-house use. If a user launches one <strong>of</strong><br />

those programs, the virus stops it after 25 minutes.<br />

Seven days after infection, the virus crashes any <strong>of</strong> the two applications<br />

when they execute and try to write to disk.<br />

Apparently this virus was written by a disgruntled employee. It also<br />

first appeared in EDS’ Dallas, Texas <strong>of</strong>fice, causing users there to experience<br />

slow execution, random crashes, and printing problems. Even though it was<br />

targeted at the ERIC and VULT applications, it spread to computers outside<br />

EDS, causing minor damage, but major headaches.<br />

5.7 Swiss Amiga Virus<br />

The case <strong>of</strong> the Swiss Amiga virus (that first appeared in November 1987) is<br />

particularly interesting because <strong>of</strong> the response <strong>of</strong> the person in Commodore<br />

(the maker <strong>of</strong> Amiga) responsible for defending against viruses. The Amiga<br />

personal computer (still used today, see www.amiga.org) was very popular in<br />

the 1980s and had large, well-organized users’ groups. As might be expected,<br />

s<strong>of</strong>tware was shared in meetings (copy parties) <strong>of</strong> those groups, on floppy<br />

disks. It’s no wonder that someone wrote a virus that propagated on those<br />

disks. The technical description <strong>of</strong> the virus is easy to find on the Internet<br />

and is boring, so this section concentrates on the war <strong>of</strong> nerves between the<br />

Commodore anti-virus expert and the anonymous virus writer. We start with<br />

a short description <strong>of</strong> the virus.<br />

“The virus copies itself to $7EC00 and patches the Cool-Vector to stay<br />

resident in memory. After a reset the virus uses the DoIO()-Vector to infect<br />

other disks.”<br />

The virus was not destructive. Every fifteenth reboot <strong>of</strong> the computer<br />

it displayed the message<br />

Something wonderful has happened<br />

Your AMIGA is alive !!! and, even better...<br />

Some <strong>of</strong> your disks are infected by a VIRUS !!!<br />

Another masterpiece <strong>of</strong> The Mega-Mighty SCA !!<br />

Today it is known that SCA was an acronym for the Swiss Cracking<br />

Association, a group working to remove s<strong>of</strong>tware protection. Presumably the<br />

virus was written by someone in this group.<br />

The virus embedded itself in one <strong>of</strong> the operating system files on the<br />

disk, so the response <strong>of</strong> Commodore was to write a program that looked for


144 5 Examples <strong>of</strong> Malware<br />

the first byte <strong>of</strong> the virus in that file and alert the user if the specific byte<br />

was found. A week later the anonymous virus writer responded by modifying<br />

the first byte <strong>of</strong> the virus. The second disinfectant program looked for one <strong>of</strong><br />

those two initial bytes, with the result that the virus writer modified the virus<br />

to start with one <strong>of</strong> ten different bytes. The third version <strong>of</strong> the disinfectant<br />

s<strong>of</strong>tware checked to see that the first byte <strong>of</strong> the virus was not the legitimate<br />

byte <strong>of</strong> the Amiga file. The next mutation <strong>of</strong> the virus had as its first byte<br />

a byte that was legitimate as the first byte <strong>of</strong> an Amiga program, but its<br />

second byte was not a legitimate Amiga program byte. It is not clear how<br />

this cycle ended, but we hope that the virus writer had better things to do<br />

with his time.<br />

5.8 Christmas Card Virus<br />

The Christmas card virus appeared in late 1987 and propagated through<br />

mainframe computers. It was intended as a Christmas greeting, one <strong>of</strong> many<br />

such greetings sent, even as early as 1987, by computers as email. <strong>Computer</strong><br />

users were used to receiving such greetings, so when you saw a greeting email<br />

message from someone you knew, you opened it and read it immediately. The<br />

perpetrator created this virus and sent it to two recipients that he knew. The<br />

first one refused to open it, but the second recipient opened it. All he saw<br />

was a greeting on his screen, but the hidden virus searched his address book<br />

and sent a copy <strong>of</strong> the greeting to all the addresses in this book in the name<br />

<strong>of</strong> the second recipient. From then on, things started snowballing. Experts<br />

estimate that at the height <strong>of</strong> its activity, this virus, that didn’t actually<br />

infect any computers, managed to spread half a million cards all over the<br />

world. It took months to convince people to delete this message without<br />

opening it, which slowly stopped the spread <strong>of</strong> this virus.<br />

As a result <strong>of</strong> this virus, it is common to find on the Internet, every year<br />

around December, messages such as the one here, warning recipients <strong>of</strong> the<br />

danger <strong>of</strong> opening greeting email messages.<br />

“Sophisticated computer viruses are hiding behind some Christmas ecards,<br />

wrecking the season <strong>of</strong> goodwill, analysts warn.”<br />

The Christmas card virus is important because it was one <strong>of</strong> those rare<br />

cases where the perpetrator was quickly and easily identified. This virus<br />

didn’t cause any infection, so it always propagated with the same file name,<br />

which made it easy to identify all the files by that name that have been<br />

sent and to locate the earliest one, sent by the original writer, a student in<br />

Germany. This is a rare example <strong>of</strong> the use <strong>of</strong> audit in tracking down an<br />

attacker.<br />

NOTE: Our cards are virus free. However, viruses on your computer<br />

can be transmitted via e-mail attachments.<br />

—From http://powerpres.com/xmas.html.


5.9 VBS.KAK Worm<br />

5.9 VBS.KAK Worm 145<br />

The Wscript KAK worm appeared in September 2000 and attacked PC computers<br />

running Outlook Express. It uses a known security vulnerability to<br />

attach itself to every email sent from an infected computer. It is written in<br />

Javascript and it attacks both the English and French versions <strong>of</strong> Windows<br />

95/98, if Outlook Express 5 is installed.<br />

What makes this worm unique is its ability to infect a computer by<br />

simply reading or previewing an email message. The worm hides in the<br />

HTML code <strong>of</strong> the email itself. When the message is previewed or opened by<br />

the recipient, the worm automatically takes control and infects the computer.<br />

If neither Outlook Express nor MS Internet Explorer 5.0 are installed,<br />

the worm is unable to infect the machine. The worm has another timetriggered<br />

payload. On the first day <strong>of</strong> each month at 5 pm, a message is<br />

displayed and Windows is sent a command to shut down. When Windows is<br />

restarted, the message “driver memory error” is sometimes displayed.<br />

Upon infection, the worm places a file called KAK.HTM in the C:\Windows<br />

directory and a temporary file with .HTA extension in the C:\Windows\SYSTEM<br />

directory. It also places a file KAK.HTA in the Startup directory. Then the<br />

worm adds the following lines into the AUTOEXEC.BAT file and renames the<br />

original autoexec file AE.KAK.<br />

@echo <strong>of</strong>f>C:\Windows\STARTM~1\Programs\StartUp\kak.hta del<br />

C:\Windows\STARTM~1\Programs\StartUp\kak.hta<br />

Next, the worm adds the following changes into the Windows Registry<br />

HKEY_LOCAL_MACHINE\SOFTWARE\Micros<strong>of</strong>t\Windows \Currentversion\Run\cAg0u<br />

This cAg0u file points to the temporary .HTA file dropped into the Windows\System<br />

directory earlier. The worm also adds the following line to the<br />

Windows Registry.<br />

HKEY_CURRENT_USER\Identities\S<strong>of</strong>tware\Micros<strong>of</strong>t\Outlook Express<br />

\5.0\signatures\Default Signature<br />

This default signature points to the KAK.HTM file loaded into the Windows<br />

directory. Every email that is sent after infection has this KAK.HTM embedded<br />

in the HTML <strong>of</strong> the email which spreads the worm to others.<br />

5.10 The Cruncher Virus<br />

The cruncher virus originated in The Netherlands in June <strong>of</strong> 1993. It infected<br />

.COM executable files in the old DOS operating system, but did not appear<br />

to do any damage. This virus is memory resident. It compresses the files<br />

it infects but doesn’t bother to append zeros to bring an infected file to<br />

its original size, as discussed on page 86. When the first cruncher-infected<br />

.COM program is executed, the virus installs itself in memory such that it will<br />

be invoked when interrupt 21 occurs. It then infects .COM files (executable<br />

programs), except COMMAND.COM and very small .COM files. The modification<br />

date and time <strong>of</strong> the infected files in the disk directory are not changed. Once


146 5 Examples <strong>of</strong> Malware<br />

the infected .COM file is decompressed and the virus is identified, the strings<br />

MK/Trident and Cruncher V1.0a are found in the virus code, which makes<br />

it easy, albeit time consuming, to identify the virus.<br />

The interesting feature <strong>of</strong> the cruncher virus is that the entire .COM<br />

file has to be decompressed before the presence <strong>of</strong> the virus can be detected.<br />

This is because the virus compresses the file with an adaptive algorithm. The<br />

details <strong>of</strong> such an algorithm are outside the scope <strong>of</strong> this book, but are covered<br />

in any text on data compression. In brief, an adaptive compression algorithm<br />

modifies the compression process continuously in response to the frequency<br />

<strong>of</strong> symbols that have been read so far from the file being compressed. The<br />

virus appends itself to the end <strong>of</strong> the .COM file, so it exists in compressed form<br />

at the end <strong>of</strong> the compressed file. However, because <strong>of</strong> the adaptive nature<br />

<strong>of</strong> the compression, the precise bit pattern <strong>of</strong> the compressed virus depends<br />

on the .COM file and is always different. This is why anti-virus s<strong>of</strong>tware has<br />

to completely decompress any compressed .COM file to detect the presence <strong>of</strong><br />

the cruncher virus.<br />

For the last 24 years, NCSS has been fine-tuning the art <strong>of</strong> number crunching.<br />

Today, NCSS <strong>of</strong>fers you the latest technology in statistical analysis.<br />

—From www.ncss.com.<br />

5.11 Opener Virus<br />

Discovered in late October 2004, the Opener virus, originally titled renepo,<br />

infects the Macintosh computer. It disables Mac OS X’s built-in firewall, creates<br />

a back door so its author can control the computer remotely,<br />

locates any passwords stored on the hard drive, and downloads a<br />

password cracker program called JohnTheRipper. Opener is designed<br />

to spread and infect any Macintosh OS X drives connected<br />

to the infected Macintosh and it leaves infected computers vulnerable<br />

to further hacker attack.<br />

Macintosh owners with infected computers reported an unknown startup<br />

item called “opener” in /Library/StartupItems/. The executable file is a<br />

well-commented bash (terminal) program. It scans for passwords for every<br />

user, processes the hashed information on the infected computer, turns on<br />

file sharing, and puts all this stuff into an invisible folder called .info in each<br />

user’s public folder. More detailed analysis <strong>of</strong> the virus’s code has resulted<br />

in the following technical details:<br />

Opener tries to install ohphoneX, a teleconferencing program, for spying<br />

on the Macintosh user through the user’s own webcam.<br />

It kills the popular utility LittleSnitch (that reports s<strong>of</strong>tware that tries<br />

to call home) before every Internet connection it makes.<br />

It installs a keystroke recorder.<br />

Allows backdoor access in case someone deletes the hidden account.


Grabs the open-firmware password.<br />

It installs OSXvnc.<br />

5.11 Opener Virus 147<br />

Grabs the PID (serial number) <strong>of</strong> Micros<strong>of</strong>t Office 2004, as well as serial<br />

numbers for Mac OS XServer, Adobe registrations, VirtualPC 6, Final Cut<br />

Pro, LittleSnitch, Apple Pro Applications, any existing DynDNS account,<br />

Timbuktu, and other s<strong>of</strong>tware.<br />

It tries to decrypt all the MD5 encrypted user passwords.<br />

It decrypts all users’ keychains.<br />

Grabs the AIM logs, and many other personal settings and preferences<br />

with info. It even looks into the bash (terminal) history.<br />

Grabs data from the computer’s classic (OS 9) preferences.<br />

Changes the Limewire settings to increase the upload <strong>of</strong> files from the<br />

infected computer.<br />

The hidden user account set by opener was named “hacker” by earlier<br />

versions <strong>of</strong> this virus, but is now called LDAP-daemon, a technical, innocuous<br />

name.<br />

It uses the daily cron task to try to get the Macintosh owner’s password<br />

from the virtual memory swapfile.<br />

It installs an application called JohnTheRipper, a password cracker that<br />

uses a dictionary method (Section 8.3) to crack passwords.<br />

It installs dsniff to sniff for passwords.<br />

Even those unfamiliar with the terms and details above may agree that<br />

this much activity is frightening.<br />

In early November 2004, a week after the discovery <strong>of</strong> opener, Apple, the<br />

maker <strong>of</strong> the Macintosh and <strong>of</strong> its operating system, released the following<br />

statement:<br />

“Opener is not a virus, Trojan horse, or worm. It does not propagate<br />

itself across a network, through email, or over the Web. Opener can only<br />

be installed by someone who already has access to your system and provides<br />

proper administrator authentication. Apple advises users to only install s<strong>of</strong>tware<br />

from vendors and Web sites that they know and trust.”<br />

In response, anti-virus experts said that while opener was not an immediate<br />

threat, it is a worm because it attempts to copy itself, and is therefore<br />

a virus as well, because worms are a special type <strong>of</strong> virus.


148 5 Examples <strong>of</strong> Malware<br />

5.12 MTX Worm/Virus<br />

The MTX malware (formal designation W95.MTX or W32/Apology) is a combination<br />

<strong>of</strong> three nasty parts, a virus, a worm, and a Trojan horse (the latter<br />

provides a backdoor that downloads certain pieces <strong>of</strong> code and installs them).<br />

It first appeared in August/September 2000 and was designed to attack computers<br />

running the Windows 95 operating system. The name MTX stands<br />

for “matrix” because this word was found inside the virus part <strong>of</strong> MTX. It<br />

propagates by email and infects certain executable files in specific directories.<br />

The virus also tries to block access to certain Web sites and block email access<br />

to other sites in an attempt to prevent the user from locating information<br />

and downloading new virus definitions.<br />

MTX is well known for the “trouble” it takes to prevent the user from<br />

getting help. It actually modifies an operating system file to make it impossible<br />

for the user to visit certain Web sites and to send email to others. More<br />

information about this menace is available at [MTX 05].<br />

When MTX invades a computer, it decompresses itself, installs the worm<br />

and backdoor parts in the computer, then infects many files. The virus part<br />

infects a file by installing itself close to the start <strong>of</strong> the file but not at the<br />

very start. This technique, which makes it difficult for anti-virus s<strong>of</strong>tware to<br />

locate MTX, is referred to as entry point obscuring or EPO.<br />

The worm part <strong>of</strong> MTX prepares a copy <strong>of</strong> library file Wsock32.dll<br />

and names it Wsock32.mtx. The “send export” function <strong>of</strong> the copy is then<br />

modified to point to its own code. The effect <strong>of</strong> this is to send MTX, as<br />

an attachment, to a special email message that is sent, without the user’s<br />

knowledge, after each legitimate message.<br />

The MTX attachment may have one <strong>of</strong> many potentially misleading<br />

names, some <strong>of</strong> which are listed below. Many <strong>of</strong> these have a .pif extension,<br />

which stands for program information files. Such files are used by Windows<br />

to execute old DOS programs, but the attachments always include executable<br />

code <strong>of</strong> type .exe, so when the receiver clicks on an attachment, it is executed<br />

by Windows and MTX infects the receiving computer.<br />

I_wanna_see_you.txt.pif<br />

Matrix_screen_saver.scr<br />

Love_letter_for_you.txt.pif<br />

New_playboy_screen_saver.scr<br />

Bill_gates_piece.jpg.pif<br />

To entice the receiver to click on the attachment, it <strong>of</strong>ten has two extensions,<br />

the first <strong>of</strong> which is .jpg, suggesting an image. However, the second<br />

extension is <strong>of</strong>ten .pif.<br />

The worm also prepares an auxiliary file named Wininit.ini that’s<br />

executed when the computer is restarted and whose function is to delete<br />

Wsock32.dll and rename Wsock32.mtx Wsock32.dll. After Wininit.ini is<br />

created, the worm executes the virus part <strong>of</strong> MTX.<br />

The virus part looks for specific anti-virus programs. If the virus finds<br />

any <strong>of</strong> them executing, it does nothing. Otherwise, it decompresses the worm


5.12 MTX Worm/Virus 149<br />

part, places a copy <strong>of</strong> it, named Ie_pack.exe, in the user’s Windows directory<br />

(typically C:\Windows), and executes it. After Ie_pack.exe is executed, it<br />

is renamed Win32.dll.<br />

The virus also creates the Trojan backdoor as executable file Mtx_.Exe<br />

and executes it. This is a downloader that goes to Web site i.am/[MATRIX]<br />

where plug-ins for the virus are downloaded and executed. The virus part<br />

then searches for Windows executable files in the current directory, in the<br />

Windows directory, and in the Temp directory. Files that satisfy the following<br />

conditions are infected: (1) File size that is not divisible by 101, (2) file size<br />

is greater than 8 Kbyte, and (3) file has at least 20 import call instructions.<br />

The virus also adds a registry entry that executes the Mtx_.Exe downloader<br />

automatically every time Windows is started. The downloader is invisible<br />

in the Task List.<br />

MTX spreads by modifying file WSOCK32.DLL. This file controls the connection<br />

<strong>of</strong> the computer to the Internet, and MTX modifies it such that it<br />

sends a copy <strong>of</strong> the worm, as an attachment, in a second message that follows<br />

(unknown to the sender) each email message. The modification also prevents<br />

the computer user from visiting certain Web sites that belong to anti-virus<br />

s<strong>of</strong>tware makers and information providers. These are sites whose URLs contain<br />

the 4-character strings nii., nai., avp., f-se, mapl, pand, soph, ndmi,<br />

afee, yenn, lywa, tbav, and yman.<br />

In addition, this modification prevents the user from sending email to the<br />

following URLs wildlist.o*, il.esafe.c*, perfectsup*, complex.is*,<br />

HiServ.com*, hiserv.com*, metro.ch*, beyond.com*, mcafee.com*, pandas<strong>of</strong>tw*,<br />

earthlink.*, inexar.com*, comkom.co.*, meditrade.*,<br />

mabex.com, *, cellco.com*, symantec.c*, successful*, inforamp.n*,<br />

newell.com*, singnet.co*, bmcd.com.a*, bca.com.nz*, trendmicro*,<br />

sophos.com*, maple.com.*, netsales.n*, and f-secure.c*.<br />

These techniques make it difficult for the victim to receive information,<br />

ask for help, or download anti-virus s<strong>of</strong>tware and instructions, thereby turning<br />

this malware into a persistent infection that requires much time and effort<br />

to get rid <strong>of</strong>.<br />

Epilogue. For a while, a Web site popped up that proposed ways to<br />

get around the blocking <strong>of</strong> sites by MTX. The main idea was to use IP<br />

addresses instead <strong>of</strong> domain names in URLs. It seems that the originator <strong>of</strong><br />

this malware (or perhaps one <strong>of</strong> its authors) felt temporary remorse. However,<br />

that Web site was short lived and quickly disappeared.<br />

Old men are fond <strong>of</strong> giving good advice, to console themselves<br />

for being no longer in a position to give bad examples.<br />

—François de La Rochefoucauld


6<br />

Prevention and Defense<br />

The discussion <strong>of</strong> rogue s<strong>of</strong>tware in the preceding chapters illustrates how<br />

dangerous this menace is. A worm can appear out <strong>of</strong> nowhere and infect all<br />

the computers <strong>of</strong> an organization within minutes. Once deeply embedded, it<br />

starts sending tentacles outside, looking for more computers to infect, and<br />

may also look inside for sensitive information to send back to its creator.<br />

Thus, discovering this type <strong>of</strong> s<strong>of</strong>tware early, preventing its appearance in<br />

the first place, and defending against it are important goals <strong>of</strong> any computer<br />

user, whether an individual or part <strong>of</strong> an organization. Methods and ideas<br />

for preventing malware and defending against it are the topic <strong>of</strong> this chapter.<br />

6.1 Understanding Vulnerabilities<br />

The first step in the fight against computer viruses is an understanding <strong>of</strong><br />

vulnerabilities that viruses exploit in order to propagate and inflict damage.<br />

The following is a list <strong>of</strong> such weaknesses:<br />

User apathy. Even though every computer user is aware <strong>of</strong> the threat <strong>of</strong><br />

viruses, people always feel that “it’s not going to happen to me.” <strong>Computer</strong><br />

users share s<strong>of</strong>tware without checking for infection, they ignore suspicious<br />

behavior that may indicate the presence <strong>of</strong> a virus, and they don’t spend the<br />

time to learn and apply basic security measures.<br />

Insufficient security control. Many computers, especially personal computers,<br />

are not equipped with hardware and s<strong>of</strong>tware features that help in<br />

detecting and isolating viruses and other security threats. Large, multiuser<br />

computers generally perform much better in this area.<br />

Misuse <strong>of</strong> available security features. Anti-virus s<strong>of</strong>tware should always<br />

have the latest virus update. Running such s<strong>of</strong>tware with old virus updates is<br />

D. Salomon, <strong>Elements</strong> <strong>of</strong> <strong>Computer</strong> <strong>Security</strong>, Undergraduate Topics in <strong>Computer</strong> Science,<br />

DOI 10.1007/978-0-85729-006-9_6, © Springer-Verlag London Limited 2010


152 6 Prevention and Defense<br />

an ineffective use <strong>of</strong> an effective security feature. Other examples are misuse<br />

<strong>of</strong> permissions and passwords. Permissions (to use computing resources) are<br />

an effective tool that can prevent accidental damage to the file system. An<br />

administrative user who allows free access to anyone is misusing this tool.<br />

Passwords are also a powerful instrument, but they should be chosen carefully<br />

(Section 8.3). Users <strong>of</strong>ten choose an easy-to-remember password, but such<br />

passwords tend to be easy to guess.<br />

Weaknesses in the operating system. Modern operating systems are<br />

extremely complex and are implemented and maintained by large teams <strong>of</strong><br />

programmers. Vulnerabilities and weak points are discovered all the time in<br />

this type <strong>of</strong> s<strong>of</strong>tware. Quite <strong>of</strong>ten a discovery is made by a security expert<br />

or a clever user who then notifies the manufacturer <strong>of</strong> the operating system.<br />

Sometimes, a weakness is discovered by a virus writer who immediately sets<br />

up to exploit it.<br />

Unauthorized use. There are those who regard breaking into a computer<br />

as a challenge, and the more secure and secret the computer, the greater the<br />

challenge. Once a hacker manages to break into a computer, the temptation<br />

to create havoc is great, <strong>of</strong>ten too great.<br />

Anonymity <strong>of</strong> networks. Before the era <strong>of</strong> computer networks, a malicious<br />

person had to actually walk into a computer center in order to do<br />

damage. Nowadays, with the prevalence <strong>of</strong> networks, attackers have the advantage<br />

<strong>of</strong> anonymity.<br />

These points illustrate the need for a comprehensive security program<br />

that includes (1) identifying vulnerabilities to viruses, (2) correcting them<br />

and plugging up security holes, and (3) monitoring the results. In the home,<br />

individual users should constantly train themselves in security issues. This<br />

is done mostly by reading security literature, which is freely available on<br />

the Internet. Such literature lists recently-discovered viruses and other security<br />

hazards, it recommends tools and techniques for user protection, and<br />

it keeps the user on his toes. In the workplace, management should provide<br />

resources for virus prevention, resources that should include at least the<br />

following points:<br />

Training seminars. From time to time, an employee should be sent to<br />

a seminar where the basics <strong>of</strong> security are covered and security policies and<br />

procedures are described and rehearsed. Experience shows that training is<br />

important. A group <strong>of</strong> well-trained users who are aware <strong>of</strong> security threats<br />

and are willing to cooperate is ultimately the best weapon an organization<br />

can have in the war on viruses. User education is expensive for a company,<br />

but pays for itself in the long run. Training should be mandatory, should be<br />

done periodically, and should include the following topics:<br />

1. A background on viruses, how they are planted, how they propagate,<br />

the types <strong>of</strong> damage they inflict, and how to detect their presence. Users have<br />

to be aware <strong>of</strong> the risk <strong>of</strong> bringing private s<strong>of</strong>tware into their work computers<br />

and <strong>of</strong> sharing s<strong>of</strong>tware.


6.1 Understanding Vulnerabilities 153<br />

2. S<strong>of</strong>tware vulnerabilities exploited by viruses in the past. This may<br />

help a user to detect current weaknesses.<br />

3. Company security policies and contingency procedures.<br />

Any decisions pertaining to the acquisition <strong>of</strong> new s<strong>of</strong>tware and hardware<br />

should involve security experts.<br />

Monitoring user and network activity. Special s<strong>of</strong>tware can monitor the<br />

activities <strong>of</strong> the various user computers and report any suspicious activity to a<br />

central monitoring facility. Examples <strong>of</strong> abnormal activities are an increase in<br />

CPU activity during lunch break or at night, and an unusually large number<br />

<strong>of</strong> email messages coming in or going out. Network activity is especially easy<br />

to monitor automatically and it is an important tool in fighting viruses. The<br />

activity should be monitored all the time and the number <strong>of</strong> packets per<br />

second coming in and going out should be saved. At any time, this number<br />

should be compared with the corresponding numbers in the past few days.<br />

Any large deviation may signal the presence <strong>of</strong> a virus.<br />

Emergency policies must exist and users should be trained in them, so<br />

they know what to do and who to turn to in emergency situations where a<br />

virus or other type <strong>of</strong> attack is discovered.<br />

Limited sharing. An organization should try to limit the sharing <strong>of</strong><br />

computing resources among its members, and the sharing <strong>of</strong> data between<br />

itself and the outside world. In practice, there should be only one gateway<br />

between an organization’s local-area network and the Internet, and this gateway<br />

should be protected by security experts. A common security break in<br />

such an environment is someone who brings in a modem and uses it to hook<br />

up his <strong>of</strong>fice computer to the Internet directly, not through the gateway.<br />

One aspect <strong>of</strong> limited sharing is a “no external storage” policy, adopted<br />

by some organizations, that prohibits employees from bringing laptop computers,<br />

disks, or other storage devices such as flash memories to work. When<br />

external storage has to be brought in, it has first to be checked and approved<br />

by a special clearinghouse (see next point). Unfortunately, there is a temptation<br />

to bring external storage into a work environment. An employee may<br />

want to play a computer game or work on their taxes during lunch break,<br />

so they bring a program from home on a (possibly infected) flash memory<br />

or DVD. Similarly, an employee may want<br />

to copy a useful piece <strong>of</strong> s<strong>of</strong>tware from work to<br />

their home computer, so they take it out on a<br />

company disk, then return the disk. Past experience<br />

has indicated that this policy is sound, so<br />

it should be adopted, carefully explained to all<br />

employees, and enforced (even by having guards<br />

at the doors if necessary).<br />

A company clearinghouse. Sharing should be limited, but from time to<br />

time it is necessary. An organization, especially a large one, needs new programs<br />

and data files all the time, and it is a sensible policy to first install


154 6 Prevention and Defense<br />

any new object in a special computer, a clearinghouse, where it can be used,<br />

examined, and tested for a while, before it is moved to production computers.<br />

This policy detects known viruses, as well as programs that aren’t very<br />

useful to the organization and should be rejected regardless <strong>of</strong> any security<br />

considerations. A clearinghouse may help even in the case <strong>of</strong> a new, unknown<br />

virus. If a program stays in the clearinghouse for a while, the new virus may<br />

be discovered elsewhere, and new tests in the clearinghouse may locate and<br />

eradicate it from the program before it is used for production.<br />

Exercise 6.1: Show an example <strong>of</strong> a small organization that can operate for<br />

years without any new s<strong>of</strong>tware or data from the outside.<br />

It seems reasonable that programs distributed by discussion groups, private<br />

servers, hackers’ “warez” servers, and friends should be suspect and<br />

should be included in the “no external storage” policy. Many organizations<br />

also feel that shareware and freeware should also be treated similarly. Large<br />

s<strong>of</strong>tware makers like to add to their advertisements a disclaimer that says:<br />

“Don’t fall for cheap shareware, it may have viruses. Buy from us and buy<br />

with confidence.” The interesting fact is that viruses in commercial s<strong>of</strong>tware<br />

are more common than viruses in shareware. The latter category is in fact<br />

very rare. Once this fact is recognized, hindsight makes it easy to explain.<br />

Shareware is normally written by one person or by a small team <strong>of</strong> partners.<br />

It is easy for the shareware writer to control the security in his <strong>of</strong>fice or<br />

home. It is also important for the writer to distribute clean s<strong>of</strong>tware. After<br />

all, his name is on the s<strong>of</strong>tware and he hopes to boost his reputation and also<br />

make money. It is much harder for a large s<strong>of</strong>tware maker, with hundreds or<br />

thousands <strong>of</strong> programmers, to control security. An employee may be able to<br />

include a new virus in fresh s<strong>of</strong>tware, with the result that thousands <strong>of</strong> DVDs<br />

are shipped and bought, only to cause a new infection that takes time and<br />

effort to clean up. Testing new s<strong>of</strong>tware before it is “burned” on commercial<br />

DVDs may not help, because it may contain a new, never before seen,<br />

virus. An employee in a huge s<strong>of</strong>tware place may not care about causing a<br />

big problem and may even be happy to be the anonymous source <strong>of</strong> trouble.<br />

This is why infected new s<strong>of</strong>tware, even new operating systems, have been<br />

released in the past.<br />

The conclusion is unavoidable. Do not ban shareware and freeware, just<br />

make sure it is downloaded from the original maker and not from a shareware<br />

depository or a friend.<br />

Self isolation in an attack. When an organization senses an attack, it<br />

<strong>of</strong>ten tries to isolate its network from the outside world. A familiar term<br />

is “to pull the plug.” This is definitely good practice. If an attack is fast<br />

or is not subtle, pulling the plug immediately is going to limit the damage.<br />

If a virus has been spreading throughout the organization for months and<br />

started its damage today, then pulling the plug isn’t going to help, but will not<br />

contribute to the problem. The conclusion is that an organization should have<br />

several key members who know how to pull the plug and at least one <strong>of</strong> them<br />

should always be ready and available. There should also be an emergency


6.1 Understanding Vulnerabilities 155<br />

policy that tells those employees specifically, in much detail, how to perform<br />

this operation and how and when to return things to normal. Many large<br />

companies depend on the Internet for their business and cannot afford to be<br />

isolated from the Internet (and thus deny service to their customers) for long.<br />

Audit. The originators <strong>of</strong> the Christmas card virus and the Internet<br />

worm were identified as a result <strong>of</strong> audit. Details about the movement <strong>of</strong> data<br />

packets on the Internet were saved and analyzed, leading searchers to certain<br />

networks and geographical areas. Generally, audit isn’t useful in tracking<br />

down attackers because operating systems do not save enough information<br />

that can later be used to trace the progress <strong>of</strong> a virus and thus serve as an<br />

audit trail. Even if such tools become part <strong>of</strong> common operating systems in<br />

the future, they would not prevent viruses, only help to locate their authors.<br />

Backups. It is important to have complete and recent backups, regardless<br />

<strong>of</strong> viruses or any other security concerns. At the time <strong>of</strong> writing (early 2010)<br />

hard disk prices have dropped to such levels that most computer owners,<br />

individuals as well as organizations, can afford to have a backup drive for<br />

each drive used in the computer. Backup programs are fast and perform<br />

incremental backup; they copy only files that have been modified since the<br />

last backup. Backups also help to repair virus damage, once the backup<br />

volume itself has been tested for the presence <strong>of</strong> viruses. <strong>Computer</strong> users<br />

with large quantities <strong>of</strong> data should also consider online data backup (aka<br />

<strong>of</strong>fsite data backup). Any file that has been updated is immediately uploaded<br />

to a remote server. Many companies <strong>of</strong>fer such a service and have various<br />

backup plans. Search the Internet for “online data backup reviews” but keep<br />

in mind that online backup creates its own problem; data can be intercepted<br />

and either damaged or stolen on its way to the backup location or once it is<br />

there. It seems safer to send only encrypted files to an online backup location.<br />

Backups may have their problems, and two <strong>of</strong> them are mentioned here.<br />

One problem with backups is that certain old operating systems require that<br />

certain <strong>of</strong> their files be written on the disk in a certain order. This was true<br />

for older versions <strong>of</strong> DOS and for the early versions <strong>of</strong> the Macintosh OS X.<br />

When such an operating system is restored from the backup, this condition<br />

may not be satisfied, leading to a nonfunctional operating system. (Normally,<br />

the operating system can be reinstalled from the original CD that came with<br />

the computer, so this may not be a big problem.) Another, more important<br />

problem, is how long to keep a backup. A typical personal computer may<br />

have two large internal disks, kept identical by the user, so one can always<br />

be used as a backup <strong>of</strong> the other. In addition, there may be an external<br />

disk, mounted and updated perhaps once a week to serve as another backup.<br />

Thus, the oldest backup is about a week old. A virus may damage or delete<br />

important data files, and if it takes the user more than a week to discover<br />

the damage, the files are gone, because the copies on the backup are also<br />

damaged. A partial solution is to backup important data files on a DVD-<br />

R once a week, and keep the DVDs permanently, or backup the files on a<br />

DVD-RW and rotate several such DVDs. However, a DVD has a capacity <strong>of</strong><br />

4.4 Gb, which may be too small for a business with large data bases (and even


156 6 Prevention and Defense<br />

for many home users). Backups are discussed in more detail in Section 6.4.<br />

[Backup] utilities are great but will never replace paranoia and the discipline<br />

<strong>of</strong> daily updates to multiple sites.<br />

—Robert Campbell, January 2005.<br />

Case study. A backup disk may be held by a disgruntled employee<br />

for ransom. An old (1977), little-known case in point involved data stolen<br />

from Imperial Chemical Industries (ICI). A computer-operations supervisor<br />

(we’ll call him John) for ICI in Holland was reading a book on computer<br />

security that stressed the importance <strong>of</strong> backup tapes (this was in the 1970s,<br />

when tapes were more common than disks) and warned <strong>of</strong> potential theft <strong>of</strong><br />

such tapes. A while later John was passed over for a promotion, an event<br />

(or rather, a nonevent) that made him vengeful. Recalling what the book<br />

said about the ransom potential <strong>of</strong> sensitive data, he decided to put theory<br />

into practice. As a supervisor, he was authorized to check out disks and<br />

tapes, and one weekend in 1977 he and an accomplice went to two company<br />

locations and took possession <strong>of</strong> about 100 original and backup disks and<br />

tapes. The data thus taken was sensitive and consisted <strong>of</strong> payroll records<br />

and pension-fund investments. John demanded a ransom <strong>of</strong> £275,000 and<br />

the company, realizing it would cost much more than that to restore the data,<br />

agreed to pay. Fortunately, British police managed to apprehend and arrest<br />

John and his accomplice when they tried to collect the ransom.<br />

6.2 Defenses Against Malware<br />

Virus defense should involve (1) technical means, some <strong>of</strong> which are described<br />

here, (2) common sense in using your computer, and (3) legal means. Applying<br />

all three approaches can keep a user out <strong>of</strong> trouble for a long time,<br />

although perhaps not forever.<br />

In principle, it is possible to have perfect virus protection simply by<br />

isolating the computer from any communications with the outside world.<br />

Imagine a dentist’s <strong>of</strong>fice using a computer to generate billings and update<br />

patient’s records. The necessary programs already exist and can be safely<br />

used. As long as input comes only from a keyboard or from an internal<br />

disk drive, output is sent to a monitor or a printer, and no new programs<br />

are installed, the computer is secure. However, the reason computers are so<br />

popular is that they can be used for communications and entertainment. Few<br />

would willingly disconnect their computers from the Internet, and this basic<br />

fact implies that virus protection is imperfect.<br />

One <strong>of</strong> the best practical defenses (at least in the opinion <strong>of</strong> this author)<br />

is to simply use common sense and be careful in using the computer. Just as<br />

you wouldn’t consider purchasing foods or medicines from untrusted sources,<br />

don’t purchase or accept s<strong>of</strong>tware from untrusted sources. Don’t borrow<br />

s<strong>of</strong>tware from friends or colleagues. If you purchase shareware, wait at least<br />

a few days before using it, to make sure no one else has discovered a virus in<br />

that s<strong>of</strong>tware. When you list a folder or a directory, take a quick look at the


6.3 Anti-Virus S<strong>of</strong>tware 157<br />

modification dates <strong>of</strong> the files. You may notice a suspicious date (such as a<br />

recent date for an old executable file). Most importantly, don’t open email<br />

attachments from unknown senders or even from known senders if the email<br />

message appears meaningless, unfamiliar, unnecessary, or misspelled or if it<br />

is in an unfamiliar style. In the workplace, make sure employees know they<br />

are not supposed to bring s<strong>of</strong>tware from home.<br />

Another good (although not perfect) protection is to limit transitivity.<br />

When computer A in a network gets infected, it infects another computer<br />

B, which in turn infects C, and so on. Limited transitivity is a mechanism<br />

(implemented by a policy, an algorithm, an operating system, or a piece<br />

<strong>of</strong> hardware) that guarantees that anything sent from A to B will not be<br />

sent from B. <strong>Computer</strong> B is free to send anything to other computers,<br />

except what it has received from A. Such a mechanism would severely limit<br />

the spread <strong>of</strong> a virus and would also discourage virus writers. Attempts<br />

to implement such mechanisms have always proved too restrictive and were<br />

therefore impractical.<br />

In certain applications, viruses can be kept out because <strong>of</strong> the special way<br />

the data is interpreted. If you could see inside the computer memory or the<br />

physical data written on a disk, you would simply see strings <strong>of</strong> bits. The bits<br />

themselves are meaningless, but the programs we write tell the computer how<br />

to interpret certain strings <strong>of</strong> bits. If a program tells the computer to interpret<br />

a certain string as a name, an address, or a telephone number, then the<br />

computer will not spread copies <strong>of</strong> that string; the string will not be a virus.<br />

Now imagine a very sensitive application <strong>of</strong> computers, namely electronic<br />

fund transfer (EFT) networks used by banks to transfer (sometimes very<br />

large amounts <strong>of</strong>) money. This application should be protected from viruses<br />

and this is achieved by the way it interprets the data being transferred. Each<br />

transfer (a string <strong>of</strong> bits) is interpreted as a from account, a to account, an<br />

amount, and a check digit. The check digit provides a checksum to guarantee<br />

the reliability <strong>of</strong> the entire string. If a virus is sent as a transfer, its first<br />

couple <strong>of</strong> bytes would be interpreted as a from account, the next couple <strong>of</strong><br />

bytes would be interpreted as a to account, and so on. Even though the virus<br />

is a program, it would not be executed by the computers dealing with the<br />

transaction, because they don’t execute the transfers, only interpret them.<br />

Such a method protects from viruses, but can be implemented only in specialpurpose<br />

applications, not in general.<br />

6.3 Anti-Virus S<strong>of</strong>tware<br />

The first part <strong>of</strong> this section is a general discussion <strong>of</strong> anti-virus s<strong>of</strong>tware. It<br />

is followed by a description <strong>of</strong> the three main types <strong>of</strong> such s<strong>of</strong>tware, namely<br />

virus-specific s<strong>of</strong>tware, generic anti-virus s<strong>of</strong>tware, and preventive measures.<br />

Anti-virus s<strong>of</strong>tware is currently very popular and several commercial programs<br />

are made and are regularly updated by s<strong>of</strong>tware makers. <strong>Computer</strong><br />

users looking to purchase such s<strong>of</strong>tware should search the Internet for “antivirus<br />

s<strong>of</strong>tware.” Anyone who already has such s<strong>of</strong>tware is urged to update it


158 6 Prevention and Defense<br />

and run it regularly. The updates (normally monthly, but sometimes issued<br />

when a fast spreading malware is discovered) are most important, because<br />

new viruses appear all the time. Currently, such s<strong>of</strong>tware is fast and can<br />

search 500,000 files in about 20–30 minutes, depending on the speed <strong>of</strong> the<br />

computer. One factor that can slow down such s<strong>of</strong>tware is searching inside<br />

compressed files. If the anti-virus s<strong>of</strong>tware is told to decompress all the compressed<br />

files on the computer and search each for viruses, it can double its<br />

execution time. In spite <strong>of</strong> its usefulness, anti-virus s<strong>of</strong>tware has a few problems<br />

that users should be aware <strong>of</strong>. Following is a short list based on the<br />

author’s long, personal experience.<br />

The main problem with anti-virus s<strong>of</strong>tware, in the opinion <strong>of</strong> this author,<br />

is that a new virus may spread quickly and infect thousands <strong>of</strong> computers<br />

worldwide before any anti-virus s<strong>of</strong>tware makers can isolate and analyze it<br />

and issue an update, and certainly before most users can download, install,<br />

and run this update. Issuing several virus updates each month requires more<br />

and more work on the part <strong>of</strong> s<strong>of</strong>tware makers, and they have to increase the<br />

prices <strong>of</strong> their annual virus-update subscriptions. Unfortunately, this reduces<br />

even more the number <strong>of</strong> users with up-to-date virus information.<br />

It takes perhaps an hour to scan and search an entire disk for viruses,<br />

but certain users consider this time period too long. As a result, some antivirus<br />

programs have an automatic scheduling feature, where the user can<br />

set the s<strong>of</strong>tware to launch at a certain time (perhaps late at night) and run<br />

automatically. Such a feature is useful, but only if the user verifies (perhaps<br />

the following morning) that the s<strong>of</strong>tware was really launched, ran, and did<br />

its job. The user also has to check the log, to find out whether anything<br />

suspicious had been discovered.<br />

The reason anti-virus s<strong>of</strong>tware is fast is that it knows where in a file each<br />

virus is hidden and it checks only those locations. The discussion <strong>of</strong> mutating<br />

viruses in Section 2.20 shows that a virus may locate itself in different places<br />

in each file it infects, thereby making it infeasible for anti-virus s<strong>of</strong>tware<br />

to find the virus. The cruncher virus (Section 5.10) is time-consuming to<br />

detect because it resides in a .COM file which it compresses with an adaptive<br />

compression method. To detect this virus, the anti-virus s<strong>of</strong>tware has to<br />

completely decompress all the compressed .COM files it finds in the computer.<br />

A user may use anti-virus s<strong>of</strong>tware improperly. The s<strong>of</strong>tware should be<br />

set to scan every disk drive, flash memory, CD, and DVD inserted into a drive<br />

or plugged into a port in the computer, but it should also be executed on a<br />

regular basis to scan the hard drive and all backup disks. In addition, the<br />

s<strong>of</strong>tware itself, not just the periodic virus updates, should be updated from<br />

time to time, to reflect new approaches to virus detection and the powerful<br />

features <strong>of</strong> new operating systems. Such updates are not free, and users <strong>of</strong>ten<br />

neglect to purchase them.<br />

A file may contain a bit pattern identical or very close to that <strong>of</strong> a known<br />

virus. This is rare, but it causes a false alarm and may confuse a user.


6.3 Anti-Virus S<strong>of</strong>tware 159<br />

Finally, anti-virus s<strong>of</strong>tware is effective only against known viruses. If<br />

your computer is one <strong>of</strong> the first to be infected by a new virus, it may take a<br />

few weeks, even a month, until your anti-virus s<strong>of</strong>tware will be updated and<br />

will detect it.<br />

Exercise 6.2: Is it possible to scan files for new, as yet unknown, viruses?<br />

A different type <strong>of</strong> anti-virus s<strong>of</strong>tware is an integrity checker. This type<br />

<strong>of</strong> s<strong>of</strong>tware does not scan a disk, but instead tries to identify changes to files<br />

(both applications and operating system files) as a result <strong>of</strong> virus activity.<br />

Once such changes are found, the user has to decide whether they are innocuous<br />

or due to a virus. In the latter case, the virus still has to be identified<br />

and located. The obvious downside <strong>of</strong> this approach is that a virus can be<br />

found only after it has infected a file or has inflicted some damage. On the<br />

other hand, an integrity checker can discover the effects <strong>of</strong> a mutating virus.<br />

Traditional anti-virus s<strong>of</strong>tware which scans a disk can, in principle, discover<br />

a virus before it can do any harm, but in practice users tend to run this<br />

s<strong>of</strong>tware only when they notice something wrong.<br />

In theory, there is no difference between theory and practice. But,<br />

in practice, there is.<br />

—Jan L. A. van de Snepscheut.<br />

A continuous integrity checker checks a file each time the file is opened.<br />

The integrity checker has saved the time T the file was last opened and<br />

checked by the integrity checker (the file size was also saved). If the file has<br />

a modification time different from T (or if its size differs from what it was at<br />

time T ), the integrity checker raises an alarm. It is then the user’s task to<br />

decide whether the change in the file was caused by a virus or by an innocent<br />

action <strong>of</strong> the operating system.<br />

A behavior blocker illustrates a different approach to anti-virus s<strong>of</strong>tware.<br />

Such a utility looks for potentially destructive commands sent to the operating<br />

system, and notifies the user before a command is executed. Examples <strong>of</strong><br />

destructive commands are an attempt to format an entire disk, an attempt<br />

to delete all the files or many files, a command to delete a large part <strong>of</strong> a<br />

file, or several commands that write to files that seem unrelated and reside<br />

in different directories. A false alarm is always possible, but an integrity<br />

checker may sometimes block a virus before it (the virus) has a chance to do<br />

any harm.<br />

Much time and effort is continually spent by many researchers in antivirus<br />

study and research. One research group dedicated to just this topic<br />

is [IbmAntiVirus 05], a Web site that also has many downloadable research<br />

papers on viruses, virus writers, and anti-virus techniques.<br />

The remainder <strong>of</strong> this section discusses three types <strong>of</strong> anti-virus s<strong>of</strong>tware<br />

in some detail. Ideally, we expect anti-virus s<strong>of</strong>tware to accomplish the<br />

following goals:<br />

To detect all known viruses and malware that already exist in the computer,<br />

advise the user on each occurrence <strong>of</strong> rogue s<strong>of</strong>tware discovered, and


160 6 Prevention and Defense<br />

help the user to delete them. Such anti-virus s<strong>of</strong>tware has to be executed on<br />

a regular basis by the computer owner (in the case <strong>of</strong> a personal computer)<br />

or by the person in charge <strong>of</strong> computer security (in the case <strong>of</strong> a computer<br />

in an organization).<br />

To detect unknown viruses. This sounds impossible but it makes sense<br />

because many new viruses are created from kits and therefore resemble existing<br />

viruses. All the new viruses created from the same kit may modify certain<br />

interrupt handling routines in the same way and include many identical bit<br />

strings. (See also exercise 6.2.)<br />

To scan incoming email, all downloaded files, and any removable storage<br />

devices inserted into the computer, and detect all known viruses and malware<br />

in them. It is not enough to run this type <strong>of</strong> anti-virus s<strong>of</strong>tware only from<br />

time to time. Instead, it has to be a startup item; it has to be launched automatically<br />

(i.e., by the operating system) each time the computer is started<br />

or is reset, and it has to reside in memory and be invoked by an interrupt<br />

each time any <strong>of</strong> the following actions takes place: (1) email is examined, (2)<br />

a file arrives from the outside, and (3) a new storage device is mounted.<br />

To record all its activities in a log file. Such a file should be examined by<br />

a person, because anti-virus s<strong>of</strong>tware may accidentally suspect a clean file <strong>of</strong><br />

harboring a virus and may delete or disinfect it. Also, when a virus is found<br />

in an incoming email message, the sender has to be notified. Imagine a virus<br />

infecting a computer owned by A. The virus searches the computer for email<br />

addresses (most personal computers have an address book with names and<br />

email addresses) and sends email messages to every addressee found, with<br />

an attachment and some text enticing the receiver to open the attachment.<br />

When anti-virus s<strong>of</strong>tware on another computer receives a message from A<br />

and discovers a virus in it, A should be notified. Thus, anti-virus operations<br />

should not be transparent to the user/owner.<br />

These are ambitious goals that are not fully achieved by any <strong>of</strong> the current<br />

anti-virus s<strong>of</strong>tware products. However, the list above shows that the<br />

task <strong>of</strong> anti-virus s<strong>of</strong>tware is complex. There are many hundreds <strong>of</strong> known<br />

viruses and new ones appear all the time. Current computers have hugecapacity<br />

disk drives and it is common to have hundreds <strong>of</strong> thousands <strong>of</strong> files<br />

on a single disk. Anti-virus s<strong>of</strong>tware must therefore contain large tables with<br />

information on many viruses and has to employ clever algorithms and shortcuts<br />

in order to scan and disinfect an entire disk in a reasonable period <strong>of</strong><br />

time. It is therefore no wonder that the makers <strong>of</strong> such s<strong>of</strong>tware keep the<br />

details <strong>of</strong> their programs secret. The secrets are kept not just from competitors<br />

(and from this author) but also from writers <strong>of</strong> future viruses. Those<br />

who have read the material about viruses in this book and know how viruses<br />

operate would doubtless agree that a clever virus writer who knows how a<br />

certain anti-virus program P works, can design a virus that will completely<br />

avoid detection by P . Such a virus is sometimes called a retrovirus.<br />

In addition to anti-virus s<strong>of</strong>tware (which mostly discovers viruses after<br />

they have entered a computer), steps can be taken to prevent the entry


6.3 Anti-Virus S<strong>of</strong>tware 161<br />

<strong>of</strong> viruses into a computer in the first place. This is why the discussion<br />

here distinguishes three types <strong>of</strong> anti-virus measures, virus-specific detection<br />

methods, generic techniques, and preventive techniques. We start with a<br />

short description <strong>of</strong> each <strong>of</strong> the three types.<br />

Virus-specific detection methods, as their name implies, look for and<br />

identify specific viruses. Most anti-virus s<strong>of</strong>tware operates this way. The<br />

anti-virus program scans files in the disk (or only in certain directories),<br />

looking for bit strings that signal the presence <strong>of</strong> (that are the signature <strong>of</strong>)<br />

known viruses. When a virus is located, the program gives the user a choice<br />

<strong>of</strong> deleting the virus automatically, placing the infected file in quarantine for<br />

detailed inspection later, or ignoring it. The third option makes sense for<br />

viruses whose deletion is complex and should be done manually, by the user,<br />

rather than automatically by the anti-virus s<strong>of</strong>tware. Generally, it is easy to<br />

disinfect boot sectors and macro viruses, but much harder to repair infected<br />

executable files.<br />

Generic virus detection techniques don’t look for specific viruses but<br />

instead examine the computer (files on the disk and programs in memory)<br />

for anything suspicious, unusual, or anomalous. An example <strong>of</strong> such activity<br />

is an attempt to modify the size <strong>of</strong> an executable file by a user program.<br />

A generic technique cannot identify the presence <strong>of</strong> a specific virus, but can<br />

warn the user that something suspicious has taken place (or is about to take<br />

place) in a certain file or in a certain memory-resident program.<br />

A virus preventive technique creates an environment in the computer<br />

where viruses hesitate before they enter, or cannot thrive (i.e., execute) once<br />

they have entered. Preventive techniques are mostly commonsense measures<br />

such as having up-to-date backups <strong>of</strong> files, being careful in Internet surfing,<br />

and generally being suspicious and not trusting.<br />

The following discussion provides more information and details on these<br />

three types <strong>of</strong> anti-virus measures.<br />

Virus specific detection. (This topic is also mentioned early in this<br />

section.) Once a virus is discovered, experts isolate it, disassemble its code,<br />

read and understand it, and decide how to identify future occurrences <strong>of</strong> the<br />

virus and how best to delete it. This may be a long, tedious process that may<br />

require help from experts on the particular operating system attacked by the<br />

virus. A typical isolation and identification process is described in [Rochlis<br />

and Eichin 89] which is appropriately titled With Microscope and Tweezers.<br />

The main factors that complicate the analysis <strong>of</strong> a virus are the following:<br />

Disassembling a program is much more complex and error-prone than<br />

assembling it. The discussion here is for the benefit <strong>of</strong> readers who insist on<br />

the entire story, but it can safely be skipped by others. An assembler reads<br />

the source code <strong>of</strong> a program and translates each assembler instruction into<br />

a machine instruction. A disassembler performs the opposite task. It is given<br />

a long binary string, and it has to identify the individual machine instructions<br />

in it and translate them back to assembler instructions. A program in


162 6 Prevention and Defense<br />

assembler language has at least three features that complicate this process<br />

(see also Section 3.3).<br />

1. Machine instructions have different sizes. Even worse, the same instruction<br />

may have different sizes depending on its operands or addressing<br />

modes. This complicates the first task <strong>of</strong> a disassembler, namely to take a<br />

long bit string and break it up into individual machine instructions. A typical<br />

example is an ADD instruction. In its simplest form, this instruction adds two<br />

registers and may be written as ADD R2,R4. Such an instruction <strong>of</strong>ten fits in<br />

1 byte. When a constant has to added to a register, the same instruction is<br />

written as ADD R5,#1234 and may occupy perhaps 2 bytes. When the content<br />

<strong>of</strong> a memory location is to be added to a register, the instruction may be<br />

written ADD R6,ABC where ABC is a label. When this instruction is assembled,<br />

it may occupy (depending on the size <strong>of</strong> addresses in the computer and on<br />

the addressing mode used) 3 bytes or even more.<br />

2. A program is a mixture <strong>of</strong> instructions and data, but the assembler<br />

translates everything into bits. An instruction such as ADD R5,ABC may<br />

be assembled into the 3 bytes 3D, A9, and 70 (in hexadecimal), but these<br />

bytes may also be the result <strong>of</strong> a directive (sometimes also called pseudoinstruction)<br />

<strong>of</strong> the form DATA H3DA970 (where the H stands for hexadecimal).<br />

Thus, a disassembler has to disassemble each byte both as an instruction and<br />

as data, and the human reader may have a difficult time trying to decide<br />

whether the byte is an instruction or data.<br />

3. When a program is written in assembler language, certain instructions<br />

are labeled, so they can be referred to from other places in the program.<br />

Thus, an instruction may be written as ADD R6,ABC where ABC is a label.<br />

Such a label must be defined elsewhere in the program, perhaps in a line<br />

ABC: DATA 0. When the ADD instruction is assembled, symbol ABC is replaced<br />

with its numeric value which is the distance from the start <strong>of</strong> the program to<br />

the line where ABC is defined. The instruction may end up being assembled<br />

into the string 34|6|180 where 34 is the opcode <strong>of</strong> ADD, 6 is the register<br />

number, and 180 is the value <strong>of</strong> symbol ABC (a relative address). When the<br />

ADD instruction is executed, it adds the constant 0 found in location ABC to<br />

register 6. The disassembler, however, is presented with a string <strong>of</strong> bits, so<br />

it doesn’t have access to the original labels.<br />

The virus author may include several sections <strong>of</strong> unnecessary and unused<br />

code in the original program, some <strong>of</strong> it consisting <strong>of</strong> random numbers, in<br />

an attempt to confuse detectives and throw them <strong>of</strong>f the right track. Even<br />

worse, those extra code sections may include code copied from past viruses.<br />

Such code would look familiar to experienced detectives who are trying to<br />

understand the new virus, with the result that they may concentrate on these<br />

sections while neglecting the really important parts <strong>of</strong> the virus.<br />

The virus may make decisions based on random numbers, it may mutate<br />

as discussed in Section 2.20, and it may compress and encrypt itself in<br />

different ways, depending on different keys. All this means that the same<br />

virus may infect different computers and reside in them as different bit patterns.<br />

Anti-virus s<strong>of</strong>tware that employs virus-specific bit strings may not be


6.3 Anti-Virus S<strong>of</strong>tware 163<br />

able to locate such a virus or may have to spend inordinate amounts <strong>of</strong> time<br />

searching each file for many different bit strings.<br />

Once the virus code is understood, experts identify certain bit strings<br />

that constitute the “signature” <strong>of</strong> the virus. Anti-virus s<strong>of</strong>tware that looks for<br />

specific viruses will have to look for those strings in executable files. (If this<br />

is a macro virus, anti-virus s<strong>of</strong>tware looks for its signature only in certain<br />

data files.) One factor that may slow down the search is the presence <strong>of</strong><br />

compressed files. A personal computer may have many compressed files on<br />

a disk, and they may be infected. It turns out that computer users tend to<br />

compress data files more than they compress executable files. A data file may<br />

be huge and it may be needed only several times a year. Executable files, on<br />

the other hand, are only rarely very large. Even a large program, such as an<br />

image processor, may require much space in memory, but its executable code<br />

on the disk isn’t particularly big.<br />

Exercise 6.3: Show examples <strong>of</strong> very large data files and <strong>of</strong> data files that<br />

are rarely used.<br />

Thus, anti-virus s<strong>of</strong>tware should scan compressed files as an option. If<br />

a frequently-used disk has many compressed files and they slow down the<br />

anti-virus scan considerably, the owner may consider encrypting them. An<br />

encrypted file (especially if it is also compressed) may present an insurmountable<br />

challenge to a virus (it will at least look unfamiliar) and may be left<br />

uninfected.<br />

Often, anti-virus s<strong>of</strong>tware has an option <strong>of</strong> disinfecting files. It is the<br />

opinion <strong>of</strong> this author that disinfecting a file is a questionable step and that it<br />

is always better to replace an infected file with a clean one whenever possible.<br />

An infected file may contain the main body <strong>of</strong> a virus, but may also have<br />

small amounts <strong>of</strong> data (perhaps in the form <strong>of</strong> counters or flags) left by the<br />

virus in various parts <strong>of</strong> the file. Disinfecting a file by removing the main<br />

body <strong>of</strong> the virus may not leave an absolutely clean file.<br />

Another problem with disinfecting a file is that the file may contain a bit<br />

pattern identical or very close to that <strong>of</strong> a known virus. Disinfecting such a<br />

file (which is clean) leaves a damaged and unusable file. On the other hand,<br />

replacing the file with a clean version causes no harm.<br />

Generic virus detection. Generic anti-virus s<strong>of</strong>tware does not look for<br />

the signature <strong>of</strong> any particular virus. Instead, it looks for suspicious activities<br />

and unauthorized modifications <strong>of</strong> operating system routines. This kind <strong>of</strong><br />

s<strong>of</strong>tware consists <strong>of</strong> two general types, activity monitors and behavior (or<br />

integrity) checkers.<br />

When the user tries to format a disk, the operating system routine that<br />

actually performs this operation (we’ll call it F ) verifies the request with<br />

the user before doing anything. Thus, if a virus wants to format a disk (an<br />

especially damaging payload, since no data rescue s<strong>of</strong>tware can reconstruct<br />

files from a reformatted disk) it has two options, (1) modify F to skip the<br />

user verification and (2) issue the low-level commands that F normally issues<br />

to the disk. Generic anti-virus s<strong>of</strong>tware tries to defeat both alternatives, but<br />

can never achieve absolute success.


164 6 Prevention and Defense<br />

In order to defeat alternative 1, a clean copy <strong>of</strong> F may be prepared in<br />

advance in ROM (where a virus cannot erase or modify it) and the activity<br />

monitor has to compare F to this copy every time it (F ) is invoked. This<br />

more or less ensures that a clean, unmodified copy <strong>of</strong> F will do the job. A<br />

sophisticated virus may, <strong>of</strong> course, find ways to defeat this protection, but<br />

it has to be sophisticated indeed. However, when the operating system is<br />

updated to a new version, routine F may change, and it is impractical to<br />

require the user to unplug the ROM with the clean copy <strong>of</strong> F (and other<br />

routines) and plug-in a new ROM.<br />

In order to defeat alternative 2, the activity monitor must have a way<br />

to discover who has issued the low-level commands to the disk. The activity<br />

monitor can do this (again, not with absolute certainty) either by tracing<br />

the address where the low-level command was issued from or by checking<br />

the processor status at the moment the low-level command was issued. The<br />

details <strong>of</strong> these two actions may interest advanced readers and are presented<br />

here.<br />

A computer has a special register called the program counter (PC). This<br />

register contains the address <strong>of</strong> the next instruction and is incremented by<br />

the control unit each time an instruction is fetched from memory and before<br />

it is executed. The activity monitor knows where F is located in memory, so<br />

it makes sense for it to check the PC each time a low-level command is issued.<br />

If it finds an address within F , it assumes that F and not a virus has issued<br />

the command. Unfortunately, by the time the activity monitor can check the<br />

PC, it (the PC) has already been modified several times. There is therefore a<br />

need for special hardware that will save the PC when a low-level command is<br />

issued, and such hardware already exists in the form <strong>of</strong> the interrupt facility<br />

<strong>of</strong> the computer.<br />

When an interrupt occurs (interrupts are discussed in Section 2.22), the<br />

PC is saved (normally in a stack), so that the interrupt-handling routine<br />

could return to the interrupted program and resume it. Thus, the idea is<br />

for F to follow each low-level command by a break (page 94) with a special<br />

code that asks the break handling routine to invoke the activity monitor.<br />

The activity monitor checks the second item in the stack. If this item is an<br />

address inside the memory area <strong>of</strong> F , the activity monitor is satisfied and it<br />

returns to the break routine which in turn returns to F .<br />

Exercise 6.4: Why does the activity monitor check the second item in the<br />

stack and not the item at the top <strong>of</strong> the stack?<br />

An activity monitor also wants to make sure that any sensitive operation<br />

in the computer is being carried out by the operating system and not by a<br />

virus mimicking operating system routines. Again, special hardware already<br />

exists in the CPU in the form <strong>of</strong> the processor state. Any CPU has a special<br />

register with several status flags that indicate the status <strong>of</strong> the most recent<br />

result generated by the CPU. The flags are updated by the hardware all<br />

the time (a flag is a 1-bit register). One <strong>of</strong> the flags, the processor status<br />

flag, indicates the type <strong>of</strong> program, user or operating system, that the CPU<br />

is currently executing. This book cannot go into details on how this flag is


6.3 Anti-Virus S<strong>of</strong>tware 165<br />

updated, but the important feature, from the point <strong>of</strong> view <strong>of</strong> fighting viruses,<br />

is that the processor status (as well as the other status flags) is saved on the<br />

stack each time the PC is saved. Thus, when the activity monitor retrieves<br />

the second item from the top <strong>of</strong> the stack and checks it, it also retrieves<br />

the processor status and checks it too. If the status flag indicates that the<br />

CPU was executing an operating system routine when the break interrupt<br />

was issued, the activity monitor is satisfied.<br />

An activity monitor is a complex piece <strong>of</strong> s<strong>of</strong>tware, yet it does not provide<br />

absolute security. A determined virus writer may find ways to circumvent<br />

the checks performed by the activity monitor. Nevertheless, added security is<br />

obtained by an activity monitor because designing and implementing such a<br />

virus requires detailed knowledge <strong>of</strong> both the operating system internals and<br />

the way the activity monitor works. It also requires a long implementation<br />

and testing period. Such knowledge isn’t common, and most viruses are not<br />

tested well.<br />

Other aspects <strong>of</strong> generic anti-virus s<strong>of</strong>tware are discussed in the first part<br />

<strong>of</strong> this section.<br />

Preventive techniques. The list <strong>of</strong> preventive measures proposed here<br />

is not completely new. Several <strong>of</strong> these measures can be found elsewhere in<br />

this book as warnings, advice, and suggestions on how to avoid viruses, but<br />

they are listed here specifically as preventive measures.<br />

Anti-malware organizations maintain useful online information on recent<br />

viruses and other malware (see list <strong>of</strong> resources on page 13). Micros<strong>of</strong>t, whose<br />

many s<strong>of</strong>tware products are common targets <strong>of</strong> malware, also maintains Web<br />

sites [MSsecurity 05] and [MStechnet 05]. These and others like them should<br />

be consulted by careful users, because information, as is well known, is power.<br />

All external disks and removable cartridges, and most flash memories<br />

have a write-protect option. This is <strong>of</strong>ten a tab on the disk, but may also<br />

be activated by special s<strong>of</strong>tware. This option is a preventive measure and<br />

should be used whenever possible.<br />

Operating systems can greatly help in implementing preventive measures.<br />

When an operating system is first installed in a computer, it should<br />

disable network access by default. When a user wants to connect to a network,<br />

access should be turned on manually. Virtually all current operating<br />

systems start with network access turned on, which makes it possible for a<br />

virus to enter or for spyware to transmit information. A similar feature is for<br />

the operating system to turn <strong>of</strong>f any resource sharing. Many users don’t use<br />

resource sharing and don’t even know that such a feature exists and that it<br />

is on by default, and this ignorance provides great help to viruses and other<br />

types <strong>of</strong> malware.<br />

An open-source operating system has several advantages, but it also<br />

constitutes a preventive measure because it enables programmers to peruse<br />

the source code and find security weaknesses.


166 6 Prevention and Defense<br />

The Windows operating system by Micros<strong>of</strong>t has close ties to several<br />

applications, such as Outlook Express and Internet Explorer, also by Micros<strong>of</strong>t.<br />

These ties constitute a security weakness because any updates and<br />

modifications to the operating system can introduce security holes in those<br />

applications. Moreover, a patch issued to repair such a hole in one application<br />

may introduce a different vulnerability in another application. Such cases<br />

have happened, which is why having applications that are independent <strong>of</strong> the<br />

operating system is considered a preventive measure. (Unfortunately, a close<br />

relation between an application and the operating system <strong>of</strong>ten makes the<br />

application graphically more attractive and easier to use. S<strong>of</strong>tware makers<br />

know that s<strong>of</strong>tware users generally prefer ease <strong>of</strong> use <strong>of</strong> s<strong>of</strong>tware to security,<br />

which is why so much vulnerable s<strong>of</strong>tware is introduced all the time and not<br />

just by Micros<strong>of</strong>t.)<br />

<strong>Computer</strong>s can perform complex tasks, but such tasks require complex<br />

programs. Without a program, a computer can do nothing. Programs are<br />

steadily becoming more complex and powerful, but are still no substitute for<br />

human intelligence. <strong>Computer</strong> users know from experience that programs<br />

that feature complex behavior and that perform complex tasks automatically<br />

tend to have more bugs (and bugs that are more mysterious) than simple<br />

programs. We are now aware that complex, automatic programs also have<br />

more security holes than simple programs. Thus, a simple program that<br />

doesn’t try to perform complex tasks automatically but stops from time to<br />

time and asks for guidance from the user is a preventive measure.<br />

Exercise 6.5: Use your experience to show an example <strong>of</strong> an automated<br />

program or process that fails under certain conditions.<br />

Those who are part <strong>of</strong> an organization sometimes get news, rumors, and<br />

warnings about viruses from buddies in the <strong>of</strong>fice or elsewhere. Those should<br />

be forwarded to the person in charge <strong>of</strong> security for confirmation. This is a<br />

security measure that prevents the spread <strong>of</strong> hoaxes (Section 6.6).<br />

Email attachments constitute a security risk and are discussed in Section<br />

2.4. Obviously, an attachment in an email message from an unknown<br />

person should not be opened, but what about an attachment in a message<br />

from a familiar, trusted person? It is not uncommon to find that your best<br />

friend has sent you an email message with a poisoned attachment, but it is<br />

always (almost always?) done unwittingly. A virus invading a computer may<br />

look for an address book and use it to mail copies <strong>of</strong> itself as attachments to<br />

all the addressees in that book. Therefore, if you don’t expect an attachment,<br />

if the message itself doesn’t explain the attachment, and if the attachment<br />

doesn’t seem necessary, don’t open it. Be alert. A message may also pretend<br />

to come from a bank or a merchant, asking to click on a URL to verify an<br />

account or personal information. Again, this may be a trick for malware to<br />

penetrate your computer. This advice is mentioned elsewhere in the book,<br />

but is repeated here because it is a preventive measure.<br />

A similar point is to be suspicious <strong>of</strong> files (mostly executable files, but<br />

also data files that can have macros) downloaded from newsgroups, from


6.3 Anti-Virus S<strong>of</strong>tware 167<br />

hacking/cracking Web servers, or from new, unfamiliar Web sites that <strong>of</strong>fer<br />

useful and inexpensive s<strong>of</strong>tware. Even a file that seems unexecutable, such<br />

as a document in PDF format, an image in JPEG format, or an audio file<br />

in mp3 format, may turn out to be a rogue executable program disguised<br />

as innocuous data. Even a real JPEG image may contain executable parts<br />

(Section 2.11) and may therefore be infected by a virus.<br />

Even a program sent by a trusted source may be infected. Recall that<br />

a virus may lay dormant for a long time before it releases its payload. This<br />

raises the chance <strong>of</strong> the virus being discovered before it does any damage, but<br />

some virus writers may take this “risk” in the hope that a quiet virus may<br />

penetrate into many computers and may therefore prove very lethal when it<br />

finally wakes up. A friend may send you a free and beautiful screen saver<br />

that works fine for a few months, then turns out to be a time bomb and<br />

inflicts much damage to both yours and your friend’s computers.<br />

Exercise 6.6: What is the most popular type <strong>of</strong> s<strong>of</strong>tware?<br />

Many applications may benefit from a macro facility, but virtually all<br />

known macro viruses (Section 2.10) infect data files for Micros<strong>of</strong>t Word and<br />

Micros<strong>of</strong>t Excel, two components <strong>of</strong> the well-known Micros<strong>of</strong>t Office suite.<br />

Such files should be considered potentially dangerous, especially when received<br />

in email. Whenever possible, a macro facility should be turned <strong>of</strong>f. A<br />

somewhat safer alternative is to use .rtf format instead <strong>of</strong> .doc and .csv<br />

instead <strong>of</strong> .xls, because these formats don’t use macros.<br />

Anti-virus s<strong>of</strong>tware can scan mounted disks and flash memories, so it<br />

should be used as a preventive measure. Needless to say (but nevertheless<br />

it is said here and also early in this section), such s<strong>of</strong>tware has to have the<br />

latest update, and this should be checked each time the s<strong>of</strong>tware is run. In an<br />

organization, there is one person in charge <strong>of</strong> updating anti-virus s<strong>of</strong>tware,<br />

but the final responsibility for this lies with the end user.<br />

A firewall (Section 7.6) can stop viruses and is therefore a preventive<br />

measure. Large organizations tend to have a hardware-based firewall,<br />

whereas a home user may only afford a personal firewall. The latter type is<br />

s<strong>of</strong>tware based and may, in principle, be compromised by malware. In either<br />

case, a firewall complements anti-virus s<strong>of</strong>tware and both should be used as<br />

preventive measures.<br />

Older personal computers had to be booted from floppy disks. Later<br />

models had hard disks with the operating system installed, so booting from<br />

a floppy became an option. Newer versions <strong>of</strong> operating systems did not fit<br />

on a floppy, but it was still possible to include them on a zip disk and boot<br />

from it. Current operating systems are too big for floppies and zip disks, so<br />

they are installed from DVDs. Anyone using an older computer (and an old<br />

operating system) should consider disabling booting from a floppy disk as a<br />

preventive measure. Any removable storage devices with operating system<br />

s<strong>of</strong>tware should be write protected whenever possible.


168 6 Prevention and Defense<br />

Two advanced and popular email programs, Outlook and Outlook Express,<br />

are particularly vulnerable to email infection by malware and are<br />

known to be the source <strong>of</strong> many infections. One reason for this is their<br />

use <strong>of</strong> the Windows script host (WSH). A possible preventive measure is to<br />

use a different application or even a different platform, such as a Macintosh or<br />

UNIX, to communicate by email. Those who need the sophisticated features<br />

<strong>of</strong>fered by the two applications above should check periodically for security<br />

updates and patches from Micros<strong>of</strong>t, available at [MS<strong>of</strong>fice 05].<br />

Most operating systems support file names with extensions. The extension<br />

(<strong>of</strong>ten three letters) associates the file with an application and serves as<br />

handy identification. Sometimes, the operating system hides the extension<br />

in the assumption that users know their files and prefer to deal with short<br />

names, but as a security measure, users should ask to see these extensions. A<br />

conflict between a file’s extension and its icon can serve as a red flag to raise<br />

suspicion, as are files with two extensions or with many spaces preceding the<br />

extension.<br />

Another important preventive measure is to have regular backups <strong>of</strong> all<br />

important files. Backups are discussed on page 155 and are also the topic<br />

<strong>of</strong> the next section. Strictly speaking, backing up files is not a preventive<br />

measure, but it is related to preventive measures because it makes it so much<br />

easier to recover from an attack.<br />

6.4 Backups and Such<br />

At home, the owner <strong>of</strong> a personal computer should make sure that the main<br />

disk is backed up periodically (Figure 6.1) and that virus-detection s<strong>of</strong>tware<br />

is installed, has the latest virus update, and is executed on a regular basis.<br />

An important point to keep in mind is that a dormant virus may lie in<br />

the backup disk. Once a virus is discovered, the backup disk should be<br />

scanned and disinfected before it is used for data recovery. Because <strong>of</strong> the<br />

destructive power <strong>of</strong> viruses, there are companies (such as [Symantec 04],<br />

<strong>Computer</strong> Associates [CA 04], and [McAfee 04]) and organizations such as<br />

[Wild List 04], [NIST 04], [CERT 04], and [EICAR 04] that specialize in virus<br />

information, detection, and elimination. Those entities put out information<br />

on any new virus within hours <strong>of</strong> its detection. A computer user should<br />

therefore keep a watchful eye on virus news (on television, in newspapers,<br />

or in announcements on the Internet). Just knowing that a new virus has<br />

appeared and how it propagates can help users avoid contamination.<br />

Figure 6.1: Backing Up a <strong>Computer</strong> To Disks.


6.4 Backups and Such 169<br />

(A word about the importance <strong>of</strong> early virus detection. A typical virus<br />

propagates exponentially. Once a virus has installed itself in a host computer,<br />

it may send many copies <strong>of</strong> itself to other computers before being detected<br />

and deleted. Each <strong>of</strong> those copies may in turn infect many computers before<br />

it is discovered. The case <strong>of</strong> binary propagation is especially simple and easy<br />

to analyze. Suppose that a virus starts from one computer and sends out just<br />

two copies <strong>of</strong> itself. The first generation <strong>of</strong> this virus infects two computers,<br />

the second generation infects four computers, and the nth generation infects<br />

2 n computers. For n = 10, there will be 2 0 + 2 1 + · · · + 2 10 ≈ 2050 infected<br />

computers, although some <strong>of</strong> them may be infected more than once, and for<br />

n = 20 there will be more than two million infected computers.)<br />

In a place <strong>of</strong> work, where data destroyed by a virus may cripple a company,<br />

there should be an experienced person or group (a virus czar, a crisis<br />

team, or a help desk) always available for emergencies. This person, who can<br />

be an employee or an outside consultant, should visit the computer facility<br />

periodically and make sure that (1) all the computers have up-to-date virusprotection<br />

s<strong>of</strong>tware and (2) all the employees know where to turn to when a<br />

virus is discovered or its presence suspected. Versions <strong>of</strong> the following story<br />

circulate in many <strong>of</strong>fices:<br />

John discovered a virus in his <strong>of</strong>fice computer. The virus expert was<br />

called and took half a day to clean the computer and recover the data. The<br />

following day, the same virus came back. After spending several days fighting<br />

this virus, it was discovered that John himself unknowingly infected his computer<br />

immediately after each cleaning. He had a game that he liked to play<br />

during lunch break. His wife, a student, brought the game from college on an<br />

infected disk. Every time John inserted the disk into his <strong>of</strong>fice computer, the<br />

virus installed itself afresh. (No word as to what happened to John’s career.)<br />

An approach to virus control that makes sense in some situations is to<br />

write-protect the sensitive parts <strong>of</strong> the hard disk. A good operating system<br />

should make it possible to write-protect individual folders (subdirectories)<br />

on the hard disk. All the folders with system files, applications, utilities,<br />

and permanent data should be write-protected with a password. Users can<br />

generate and save programs and data files outside these folders, to limit the<br />

destructive effects <strong>of</strong> a virus. Such a scheme makes sense in, for example,<br />

a university, where there must be large labs with computers for students’<br />

use. A careless or malicious student can infect only certain parts <strong>of</strong> the disk,<br />

making it easy for technicians to disinfect the computer. Another example<br />

is a post <strong>of</strong>fice, where the users are employees that use preinstalled s<strong>of</strong>tware<br />

and don’t have to write or install any programs. Limiting the access <strong>of</strong> those<br />

employees does not adversely affect the way they work, but serves to increase<br />

security.<br />

A similar approach is to equip each individual computer with a small<br />

disk that has only a minimal operating system and the temporary data.<br />

The programs and permanent data that users need are downloaded from<br />

a central server that is maintained and secured by experienced technicians,<br />

which reduces its chance <strong>of</strong> infection, but this approach may be too slow for<br />

places where many computers are used all the time and speed is essential.


170 6 Prevention and Defense<br />

Fighting computer viruses must start with a policy for detecting them.<br />

A computer user should be aware that any odd behavior <strong>of</strong> the computer may<br />

indicate a virus (although experience shows that most cases <strong>of</strong> odd computer<br />

behavior are due to s<strong>of</strong>tware bugs, human errors, or hardware failures). A<br />

home user noticing unusual behavior may not have much choice and may have<br />

to resort to virus-protection s<strong>of</strong>tware, but at work, users should be trained<br />

to call for help immediately. A security expert may be able to decide in a<br />

short time whether a problem is due to a virus and solve it with a minimum<br />

<strong>of</strong> interruption to normal work. Here are examples <strong>of</strong> odd, unusual computer<br />

behavior that should raise suspicion (but bear in mind that future viruses may<br />

be written by people who have read this list, and so may feature completely<br />

different types <strong>of</strong> behavior).<br />

A file has a “time stamp” indicating the last time it has been modified.<br />

If an old file turns out to have a recent modification date, it should be cause<br />

for suspicion. The length <strong>of</strong> a program (executable) file should normally stay<br />

the same. Any unexplainable change in the length <strong>of</strong> such a file is also a<br />

reason to suspect that a virus attached itself to the file.<br />

A familiar program suddenly slows down or takes longer than usual to<br />

start.<br />

Simple tasks require excessive disk access.<br />

A program tries to write to a CD (which is normally read only).<br />

Programs suddenly indicate less available memory than in the past.<br />

The computer restarts itself suddenly, for no apparent reason, or requests<br />

permission to restart, citing an <strong>of</strong>ficial-looking but unfamiliar reason.<br />

Unusual or irrelevant messages are displayed on the monitor screen.<br />

There is suddenly an unusual amount <strong>of</strong> network traffic. This is easy to<br />

detect when a modem (telephone or cable) is used. The lights on the modem<br />

flicker quickly, indicating heavy network traffic, while legitimate programs<br />

run slow.<br />

I haven’t lost my mind; I have a tape back-up somewhere.<br />

—Anonymous.<br />

Vaccines. Someone thinking about virus eradication may come up with<br />

the following idea. A virus normally checks a file before infecting it, looking<br />

for its (the virus’) signature to avoid secondary infection (Section 2.12). If<br />

the signature <strong>of</strong> a virus is known, we may embed it in all the files in our<br />

computer, which will fool the virus. This is the concept <strong>of</strong> a vaccine. It’s a<br />

simple concept, but it fails in practice for the following reasons:<br />

There are many known viruses and new ones appear all the time. It is<br />

practically impossible to embed so many signatures in a file, and the signatures<br />

may even conflict and destroy each other. It is also infeasible to embed<br />

the signatures <strong>of</strong> new viruses in all the executable files in a given computer<br />

and still hope for all the programs to execute correctly.


6.4 Backups and Such 171<br />

Some viruses don’t leave a signature and simply reinfect any given file<br />

again and again.<br />

In extreme cases, vaccination may do more damage than the virus itself.<br />

Imagine a virus that infects only small programs and doesn’t inflict serious<br />

damage. Small programs can be vaccinated against this virus simply by<br />

making them large, but this occupies disk space and may interfere with any<br />

automatic updates to the programs in question. Before such vaccination is<br />

done, its bad side effects should be compared with the potential damage done<br />

by the virus.<br />

The signatures <strong>of</strong> different viruses may conflict, so vaccinating against<br />

one virus may expose a file up to infection by another virus. For example,<br />

the signature <strong>of</strong> virus A may be to set the byte at position x in the infected<br />

file to 1216. When A is discovered and is analyzed, the vaccination expert<br />

updates the vaccination s<strong>of</strong>tware by changing this byte to 1216 in order to<br />

fool virus A. A while later, a new virus, B is discovered, whose signature is<br />

to set the byte at position x to 0016. The expert, who has already forgotten<br />

about virus A, modifies the vaccination s<strong>of</strong>tware by changing byte x to 0016,<br />

thereby rendering all files open to infection by A.<br />

Self repair. Error-detecting and error-correcting codes are currently<br />

very common and can be very powerful. They are included in many digital<br />

devices, not just computers and disk files, and their use is <strong>of</strong>ten transparent to<br />

the user. A common example is CDs and DVDs. These storage devices have a<br />

small physical size and large capacities, so the bits recorded on them must be<br />

physically extremely small. Both CDs and DVDs are read by reflecting laser<br />

light, and it is obvious that even the smallest scratch on the plastic surface<br />

<strong>of</strong> the device affects the reflection <strong>of</strong> light. A sophisticated error-correcting<br />

code is therefore essential for such devices, and the codes used on CDs and<br />

DVDs can automatically correct errors in thousands <strong>of</strong> consecutive bits. The<br />

details <strong>of</strong> such codes are outside the scope <strong>of</strong> this book, but they are based<br />

on a simple principle, namely increased redundancy. When a channel code is<br />

added to data, it always increases the number <strong>of</strong> bits. Stated another way,<br />

reliable data always has more bits than strictly necessary.<br />

The principle <strong>of</strong> correcting errors through increased redundancy can be<br />

carried out to virus detection and elimination. Imagine a program that has<br />

redundant bits, so it can check itself every time it is launched and even<br />

correct many errors in itself. When such a program gets infected by a virus,<br />

the next check will detect a problem. If the problem cannot be corrected<br />

automatically, the program will notify the user and will quit.<br />

Such a self-correcting program seems a good weapon in the war against<br />

viruses, and it is, but only up to a point. Once virus writers learn <strong>of</strong> this<br />

trend, they may counter it in various ways, some <strong>of</strong> which are listed here:<br />

The obvious problem is that the virus writer will discover how the redundancy<br />

was generated (the formula or the algorithm to compute the redundant<br />

bits). Once this is known, the virus can embed itself in a program and recreate<br />

the redundancy. An example <strong>of</strong> adding redundancy is a CRC and the


172 6 Prevention and Defense<br />

discussion on page 86 shows how knowledge <strong>of</strong> the CRC formula can defeat<br />

this simple protection.<br />

A virus may be written specifically to modify the redundant part <strong>of</strong> a<br />

program in a way that will infect the program. Instead <strong>of</strong> being defeated by<br />

the redundancy, such a virus exploits it. An example is the mirror utility for<br />

the PC that creates a copy <strong>of</strong> any file with reversed bits. The idea is to check<br />

the integrity <strong>of</strong> a program by comparing it to its mirror. If the program file<br />

and its mirror are not exact complements, the operating system corrects the<br />

program by replacing it with the mirror <strong>of</strong> its mirror. A virus writer noticed<br />

this technique and wrote a virus that infected the mirror by embedding a<br />

mirror image <strong>of</strong> the virus in the mirror file. When the program was checked,<br />

it was different from its mirror, and when it was recreated from the mirror,<br />

the result was an infected program.<br />

Even in cases where the virus knows (or suspects) only that redundancy<br />

is used to protect a program, the virus can defeat this protection. It can<br />

defeat the protection even if it doesn’t know the precise way redundancy is<br />

included in the program. Before the virus embeds itself in a program A, it<br />

copies A and saves the copy. The copy can be saved either as a separate<br />

file (perhaps invisible) or by appending it to the infected A. The virus then<br />

infects A. When the infected A is launched, the virus is the first to execute<br />

and it does the following: (1) It infects some other programs. (2) It performs<br />

its damage (payload). (3) It replaces the infected copy <strong>of</strong> A with the saved<br />

copy and deletes the saved copy. (4) It launches A. When A is launched,<br />

it checks itself, but it detects no problem, because this is the clean copy <strong>of</strong><br />

A. When A completes, it is clean, but the virus (which has already infected<br />

some other programs) can infect it again in the future.<br />

Exercise 6.7: How can the virus reinfect A as soon as A finishes? (See also<br />

Exercise 2.21.)<br />

Limit permissions. Most viruses infect executable programs, so it<br />

seems that it should be enough to limit the permissions <strong>of</strong> executable programs.<br />

Most executable programs don’t modify themselves, so if file A is<br />

an executable program, it should have only execute permission but no read<br />

or write permissions. If a file has no write permission, the operating system<br />

won’t allow anyone, even the file’s owner, to modify it in any way. This simple<br />

precaution can defeat many viruses, but can itself be defeated by a virus<br />

that has system (or owner) privileges, since they are able to change the file’s<br />

access permissions.<br />

S<strong>of</strong>tware fault tolerance. The concept <strong>of</strong> fault tolerance is to have<br />

several copies <strong>of</strong> the same hardware circuit or the same s<strong>of</strong>tware program.<br />

When one copy fails, another copy is immediately used instead. It is normally<br />

easy to tell when a piece <strong>of</strong> hardware doesn’t work, but when a computer<br />

program fails, it <strong>of</strong>ten simply generates a wrong result. Thus, fault tolerance<br />

in s<strong>of</strong>tware requires at least three copies <strong>of</strong> a program. A special voting circuit<br />

compares the three copies, and if one copy differs, it is rejected. Imagine<br />

three computers executing three copies <strong>of</strong> the same program. If one program


6.5 Botnets, Zombies, and Remote Control 173<br />

is infected, the voting circuit will reject its output. This is good protection<br />

against viruses, but it is expensive because it requires three computers and<br />

the voting circuit. Thus, it can be used only in cases where lives depend on<br />

the results produced by the programs.<br />

In principle, a virus can infect all three copies <strong>of</strong> the program, so this<br />

technique does not provide perfect protection, but basic security steps that<br />

limit sharing can reduce the chance <strong>of</strong> such multiple infection significantly.<br />

Exercise 6.8: What if all three copies produce different results?<br />

A cryptographic checksum. Normally, a checksum or a CRC is<br />

enough to guarantee the integrity <strong>of</strong> a data file. If the file is modified as<br />

a result <strong>of</strong> data corruption, its new CRC will differ from the original CRC.<br />

The discussion on page 86, however, shows that a virus can embed itself in<br />

a file and change bytes <strong>of</strong> data until the new CRC <strong>of</strong> the infected file equals<br />

the original CRC. A cryptographic checksum (or CCS, [Cohen 87]) is an improvement<br />

over a simple checksum or CRC. The idea is to encrypt file F with<br />

an encryption key k and compute a checksum S on the encrypted file. The<br />

encrypted file can then be deleted, but the triplet (F, k, S) should be saved<br />

and the key k should be kept secret.<br />

Now imagine a hacker who has discovered F and S and wants to infect<br />

F without modifying its CCS. The hacker has first to find the key k, then<br />

construct an infected file F 0 whose CCS under k will be the same S. If<br />

the encryption is strong, the only way for the hacker to find k is to encrypt<br />

the original file F under every possible key, compute the checksum, and<br />

compare it to S. If the number <strong>of</strong> possible keys (the key space) is very large,<br />

this process is too slow. It will tie up the entire computer and will raise<br />

suspicion. Even under ideal conditions, such a brute-force approach may<br />

take many thousands <strong>of</strong> years.<br />

In the unlikely case where the hacker has found the correct key k, he<br />

still faces the problem <strong>of</strong> modifying file F in such a way that its new CCS<br />

under key k will be the original S. This problem doesn’t seem to have any<br />

efficient solution. A brute force approach where many tests are run is again<br />

too slow to be time effective.<br />

6.5 Botnets, Zombies, and Remote Control<br />

As cyber threats have become more sophisticated, perpetrators have come<br />

to rely on networks <strong>of</strong> hijacked computers, or zombies. Such networks have<br />

come to be known as botnets (networks <strong>of</strong> robots). A botnet is a collection<br />

<strong>of</strong> compromised computers (members) that are controlled remotely by their<br />

(illegitimate) owner, who is <strong>of</strong>ten referred to as a “botherd” or “botherder.”<br />

Each member computer <strong>of</strong> a botnet is running a bot program and these<br />

programs work either separately (stealing personal data, for example) or<br />

together (sending a flood <strong>of</strong> messages to create a denial <strong>of</strong> service in an<br />

attempt to compromise an important website).


174 6 Prevention and Defense<br />

Some readers may be familiar with the term Internet relay chat (IRC).<br />

It was IRC users who created, in the early 1990s, bot programs. Their<br />

innocuous idea was to provide automated responses to messages arriving<br />

while the owner is away from his computer, but this idea was adopted and<br />

extended (merged with worms and rootkits) by bad guys who wanted to<br />

invade and remotely control a large number <strong>of</strong> computers.<br />

With IRC, a botnet controller can send a single command that will reach<br />

every member <strong>of</strong> his botnet. It is also possible to employ peer-to-peer (p2p)<br />

protocols that enable individual members to communicate with each other.<br />

The controller sends a message to only one member <strong>of</strong> the botnet, and that<br />

zombie sends messages to others. A wave <strong>of</strong> messages propagates in the<br />

botnet, but only one arrives from the controller. This dilutes the risk <strong>of</strong> the<br />

cybercriminal being identified, arrested, and prosecuted.<br />

Bot s<strong>of</strong>tware can arrive at a computer through any method used for<br />

distributing malware. Examples are receiving and opening an infected email<br />

attachment, visiting a rogue website that exploits vulnerabilities in a Web<br />

browser, and downloading compromised s<strong>of</strong>tware. Once safely installed in a<br />

new host computer, the initial actions <strong>of</strong> a bot might be to download newer<br />

versions <strong>of</strong> itself, to evaluate the Internet connection <strong>of</strong> its unwilling host, to<br />

message its owner about its latest conquest (including the IP number <strong>of</strong> the<br />

host), and also to install spyware or adware in order to generate advertising<br />

revenue for its owner.<br />

Once these actions are complete, the bot may set down to its main<br />

“business” which may be sending spam (the quantity <strong>of</strong> which may be adjusted<br />

according to the Internet bandwidth <strong>of</strong> the host), sending phishing<br />

email messages, spreading itself and perhaps other malware, launching DOS<br />

attacks against Web sites (for political purposes or for extortion), locating<br />

personal data in its host and sending it (and perhaps a log <strong>of</strong> keystrokes) to<br />

its owner, or performing other malicious tasks for which it is programmed.<br />

The legitimate owner <strong>of</strong> the zombie computer <strong>of</strong>ten notices abnormal<br />

behavior, especially slow network traffic, and may remove the bot with antivirus<br />

s<strong>of</strong>tware. Sometimes, the ISP <strong>of</strong> the botnet controller will notice sudden<br />

increased or suspicious network activity and will shut him down. In such a<br />

case, the bot s<strong>of</strong>tware may try to connect to its owner through a secondary<br />

channel which was prepared and programmed in the bot in advance. If this<br />

is successful, new commands are sent to the bot, instructing it how to further<br />

communicate with its owner.<br />

Writing and debugging the s<strong>of</strong>tware <strong>of</strong> a sophisticated bot is a demanding<br />

job that requires detailed knowledge <strong>of</strong> several fields. The programmer<br />

has to be very familiar with certain aspects <strong>of</strong> the operating system, with<br />

communications protocols, and with techniques <strong>of</strong> propagating malware. As<br />

a result, security experts believe or suspect that bot writing is sometimes a<br />

group effort. Here are examples <strong>of</strong> the special “skills” required for implementing<br />

and releasing a potent bot: (1) How to invade Web servers and use<br />

them to spread malware. (2) How to program malware in general. (3) How<br />

to organize a botnet once enough computers have been invaded and infected.<br />

(4) How to distribute spam and other malware from a compromised host. (5)


6.6 Hoaxes 175<br />

How to search a host for useful data. (6) How to use this data to sell account<br />

information, commit credit card fraud, or siphon money from bank accounts.<br />

The advantages <strong>of</strong> a botnet are now clear. The botnet separates the<br />

criminal from his crime and gives him the power that stems from owning<br />

many computers. The zombie members <strong>of</strong> a huge botnet might execute more<br />

operations per second than the fastest supercomputers, and this computing<br />

power translates to a potential to (illegally) make money or do harm, or both.<br />

Because <strong>of</strong> the power <strong>of</strong> botnets, it is important for computer users to<br />

learn how to avoid becoming victims. Fortunately, this is no different from<br />

avoiding any other types <strong>of</strong> malware. <strong>Computer</strong> users should always install<br />

the latest security patches for their operating system, should use any available<br />

firewalls, and should use common sense in dealing with email messages.<br />

<strong>Security</strong> experts <strong>of</strong>ten use honeypots to become willing victims <strong>of</strong> the<br />

latest malware, in order to be able to study it first hand. If the code <strong>of</strong> a<br />

bot is disassembled, read by an expert, and understood, it may be possible<br />

to modify that code in order to retrieve information from the malware’s<br />

owner. On 13 June 2007, the FBI announced the arrest <strong>of</strong> three individuals<br />

that were charged with various crimes involving botnets, but such arrests are<br />

unfortunately rare (reference [FBI 08] is about a similar case).<br />

6.6 Hoaxes<br />

The standard dictionary definition <strong>of</strong> a hoax stresses its humorous or mocking<br />

aspects and may go like this: “A hoax is an attempt to deceive, especially with<br />

a joke or by mockery or mischief. It’s a humorous or mischievous deception.”<br />

Virus hoaxes are reports <strong>of</strong> nonexistent viruses. They are propagated as<br />

email messages that include some <strong>of</strong> the following:<br />

Announce the discovery <strong>of</strong> an undetectable, highly-destructive new virus.<br />

Warn users not to read emails with a particular subject line such as<br />

“Join the Crew” or “Budweiser Frogs.”<br />

Pretend that the warning was issued by a well-known security organization,<br />

ISP, or government agency, most <strong>of</strong>ten IBM, Micros<strong>of</strong>t, AOL, or the<br />

federal communications commission (FCC) in the United States.<br />

Make a fantastic claim about the payload <strong>of</strong> a new virus. For example, a<br />

hoax called “a moment <strong>of</strong> silence” claims “no program needs to be exchanged<br />

for a new computer to be infected by this virus.”<br />

Employ nonsensical technical jargon to describe the effects <strong>of</strong> the virus.<br />

For example, a hoax called “good times” says that the virus can put the CPU<br />

into “an nth-complexity infinite binary loop;” a nonexistent condition.<br />

Urge readers to forward the warning to others (such a hoax is known as<br />

a chain letter).<br />

We already know that viruses can be destructive, but even a hoax about<br />

a nonexistent virus can do harm. A full treatment <strong>of</strong> hoaxes and their effects


176 6 Prevention and Defense<br />

can be found in [vmyths 05], but here are the main reasons why hoaxes are<br />

bad.<br />

Hoaxes can be as disruptive and costly as a genuine virus.<br />

Users tend to believe a hoax, overreact to it, and forward hoax messages<br />

to everyone on their mailing list. This can create a temporary deluge <strong>of</strong> email<br />

which overloads mail servers and causes delays in delivering mail and even<br />

crashes. The damage may be equivalent to that done by a real virus, with<br />

the difference that the hoaxer doesn’t have to design, implement, and test<br />

any code.<br />

An organization that receives a hoax may also overreact and take drastic<br />

action, such as temporarily closing down a mail server or shutting down its<br />

entire network. This cripples communications and adversely affects normal<br />

business at least as effectively as a real virus, again with very little effort on<br />

the part <strong>of</strong> the hoaxer.<br />

Virus experts who deal with real viruses and other threats may get distracted<br />

by a hoax and waste precious time and effort trying to track it.<br />

A hoax, like other rumors, can persist for a long time before it dies <strong>of</strong>f,<br />

and its cumulative effect (wasting users’ time and causing pain and suffering)<br />

may be out <strong>of</strong> proportion to the work needed to start it.<br />

A hoax can inspire new viruses (the opposite is also true). The “good<br />

time” hoax, for example, was followed by a real “good time” virus (also called<br />

GT-Spo<strong>of</strong>).<br />

A hoax may turn out to be real. This causes psychological damage<br />

followed by real physical damage. An example is the email messages with<br />

the subject line “Rush-Killer virus alert” that started circulating on 1 April<br />

2000. They warned <strong>of</strong> viruses that dial 911 (the United States emergency<br />

telephone number) and urged readers to forward the warning to others. The<br />

messages seemed like a hoax, but it later turned out that the virus was real.<br />

Most people who claim to speak with authority about computer viruses<br />

have little or no genuine expertise. Some virus experts describe it as “False<br />

Authority Syndrome”—the person feels competent to discuss viruses because<br />

<strong>of</strong> his job title, or because <strong>of</strong> his expertise in another computer field,<br />

or simply because he knows how to use a computer.<br />

—From [vmyths 05.]<br />

Chain letters. An electronic chain letter is an email message that urges<br />

readers to forward it to others. There are four main types <strong>of</strong> chain letters as<br />

follows:<br />

Hoaxes. A chain letter may warn readers about a terrorist attack, a<br />

scam, or a new computer security threat. Some <strong>of</strong> these hoaxes can be<br />

classified as myths, but all should be ignored by conscientious readers.


6.6 Hoaxes 177<br />

Fake freebies. A chain letter may promise gifts (such as free flights, free<br />

cell phones, or cash awards) to those who forward it. Again, the best policy<br />

is to delete such email.<br />

Petitions. A chain letter may ask the reader to sign a petition (<strong>of</strong>ten<br />

<strong>of</strong> a political nature or against proposed legislation) and forward the letter.<br />

Some <strong>of</strong> these letters may refer to genuine causes, but many are for or against<br />

old topics that have expired. If you want to become an activist, please be<br />

considerate and don’t do it by sending a chain letter email.<br />

Jokes and pranks. It seems that some people have nothing better to<br />

do than waste others’ time. An example <strong>of</strong> a joke letter is the “Internet<br />

cleaning” chain message which claimed that the Internet would be closed for<br />

maintenance on 1 April (and asked to be forwarded).<br />

Chain letters are more a nuisance than a security threat, but they waste<br />

our time, spread misinformation, and distract us from more important activities,<br />

while also generating much junk email traffic that slows down mail<br />

servers.<br />

Hoaxes and chain letters are nasty and may cause damage, which is why<br />

this section concludes with a short list <strong>of</strong> points that can help avoid hoaxes<br />

and nip chain letters in the bud.<br />

An organization should have a clear policy on virus hoaxes. The policy<br />

should be distributed to all employees and should state (among other things)<br />

that all virus warnings received by email (even those that came from a legitimate<br />

source such as an anti-virus vendor or from a trusted party) should<br />

be forwarded to the person responsible for computer security (typically the<br />

chief security <strong>of</strong>ficer, or CSO) and to no one else. This person will check all<br />

virus warnings and decide which ones are real.<br />

Any security-conscious computer user should be kept informed about<br />

hoaxes. Information is available in many Web sites <strong>of</strong> organizations that are<br />

active in the security area. An example <strong>of</strong> such a site is [sophos 05].<br />

Don’t forward chain email letters even if they <strong>of</strong>fer money, fame, gifts, or<br />

useful information. This obvious point is unfortunately disregarded by some<br />

receivers, to the detriment <strong>of</strong> us all.<br />

When receiving unsolicited email don’t trust any links in it, even if they<br />

seem familiar and legitimate. If you want to take advantage <strong>of</strong> <strong>of</strong>fers from an<br />

organization, find its URL, type it manually, and send a message (instead <strong>of</strong><br />

responding to the <strong>of</strong>fer) to verify the <strong>of</strong>fer.<br />

Back up my hard drive? How do I put it in reverse?<br />

—Anonymous


7<br />

Network <strong>Security</strong><br />

7.1 Internet Vulnerabilities<br />

A network vulnerability is an inherent weakness in the design, implementation,<br />

or use <strong>of</strong> a hardware component or a s<strong>of</strong>tware routine. A vulnerability<br />

invites attacks and makes the network susceptible to threats.<br />

A threat is anything that can disrupt the operation <strong>of</strong> the network. A<br />

threat can even be accidental or an act <strong>of</strong> nature, but threats are mostly<br />

intentional. A threat can damage the network, slow it down, or make it<br />

unavailable. Any type <strong>of</strong> rogue s<strong>of</strong>tware represents a threat.<br />

An attack is a specific approach employed to exploit a known vulnerability.<br />

A passive attack is designed to monitor and record network activity in an<br />

attempt to collect information to be used later in an active attack. Examples<br />

<strong>of</strong> passive attacks are packet sniffing (page 226) and traffic analysis. Passive<br />

attacks are difficult to detect.<br />

An active attack tries to damage a network or its operation. Such attacks<br />

are easier to detect, but are also more damaging.<br />

The following sections describe the most important threats and attacks<br />

that actually occurred on the Internet. They do not include viruses, Trojan<br />

horses, and the other types <strong>of</strong> rogue s<strong>of</strong>tware that were described in earlier<br />

chapters.<br />

Give a person a fish and you feed them for a day; teach that person to use<br />

the Internet and they won’t bother you for weeks.<br />

—Anonymous.<br />

D. Salomon, <strong>Elements</strong> <strong>of</strong> <strong>Computer</strong> <strong>Security</strong>, Undergraduate Topics in <strong>Computer</strong> Science,<br />

DOI 10.1007/978-0-85729-006-9_7, © Springer-Verlag London Limited 2010


180 7 Network <strong>Security</strong><br />

7.2 Port Scanning<br />

When two programs on different computers exchange data, all the data packets<br />

sent between the programs have (among other specifications) the same<br />

port number. Accessing a network opens a port and is similar to opening a<br />

door. This makes ports especially important for network security. When data<br />

packets arrive at a computer from different sources, each stream <strong>of</strong> packets<br />

uses a port number. A port is identified by a 16-bit integer and there can be<br />

up to 2 16 − 1 = 65,535 ports.<br />

There are three classes <strong>of</strong> ports, well known (0 through 1023), registered<br />

(1024 through 49,151), and dynamic/private (49,152 through 65,535). The<br />

well-known ports are assigned by [IANA port 04] and are normally used by<br />

operating system processes. Some examples are FTP (port 21), TELNET<br />

(port 23), SMTP (port 25), and HTTP (port 80). Registered ports are<br />

typically used by user applications (as opposed to operating system processes)<br />

when they have to contact a server, but such ports can also identify named<br />

services that have been registered by a third party. Dynamic/private ports<br />

are used by user applications, but their use is rare. Such ports do not have<br />

any meaning outside <strong>of</strong> any particular TCP connection.<br />

A port scanner is a program that listens to data arriving at and departing<br />

from certain ports on a computer. Port scanning has legitimate uses in<br />

managing networks, but is also used heavily by hackers to gather information<br />

that identifies open doors to the computer. Information collected by port<br />

scanners is used to identify operating system utilities installed in the computer,<br />

and exploit known vulnerabilities in those utilities in order to break<br />

into the computer. Port scanners are implemented by sophisticated hackers<br />

who make them available on the Internet.<br />

In many cases, it is easy to detect the activity <strong>of</strong> a port scanner simply by<br />

checking the log files that are continuously updated by the operating system.<br />

Once a port scanner is detected, its transmissions can be traced back to their<br />

origin and sometimes stopped. However, the mere activity <strong>of</strong> port scanning<br />

is not illegal. Newer port scanners exploit a vulnerability associated with<br />

SYN packets and half-open connections. Those are much harder to detect,<br />

because half-open connections are logged by the operating system.<br />

There are several types <strong>of</strong> port scanners as follows:<br />

Vanilla: The scanner attempts to connect to all I/O ports.<br />

Strobe: A specialized scan looking only for certain services to exploit.<br />

Fragmented packets: The scanner sends fragments <strong>of</strong> packets. Such<br />

fragments can sometimes get through certain packet filters in a firewall.<br />

UDP: The scanner looks for open UDP ports.<br />

Sweep: The scanner connects to the same port on several (even many)<br />

computers.<br />

FTP bounce: The scanner goes through an FTP server (to appear legitimate).


7.3 Spo<strong>of</strong>s 181<br />

Stealth scan: The scanner partly disables the log service <strong>of</strong> the operating<br />

system, so it (the operating system) can no longer record the scanner’s<br />

activities.<br />

Web site [dslreports 04] <strong>of</strong>fers a free service looking for port scanners.<br />

Nmap (Network Mapper) from [insecure 04] is a free open source utility<br />

for network exploration and security auditing. Among other checks, it looks<br />

for port scanners.<br />

7.3 Spo<strong>of</strong>s<br />

The term spo<strong>of</strong> means to pretend to be someone else, to falsify one’s identity,<br />

or to cover tracks. It is no wonder that various spo<strong>of</strong>ing methods are used<br />

by hackers to gain access or to obtain information. This section describes<br />

various techniques for spo<strong>of</strong>ing over a network.<br />

IP spo<strong>of</strong>ing. A computer may be protected from attack by restricting<br />

the IP addresses that may send it data. A router may have a list <strong>of</strong> IP<br />

numbers and it allows only data from these numbers to enter the computer.<br />

A hacker who has this list may spo<strong>of</strong> the router by sending data that appears<br />

to have come from a legitimate IP address. Someone who doesn’t have the<br />

list may discover an allowed IP number by sending the computer data packets<br />

with consecutive IP numbers until a packet gains entry to the computer.<br />

Defending against spo<strong>of</strong>ing is never perfect, because it involves builtin<br />

weaknesses in the TCP protocol. However, a full understanding <strong>of</strong> the<br />

problem, combined with a few simple precautions, can reduce this threat.<br />

The defense involves two main techniques as follows:<br />

Filtering. If the computer is part <strong>of</strong> a local area network, the network<br />

has a range <strong>of</strong> IP addresses. When data is sent outside a local network<br />

(uploading), the filter s<strong>of</strong>tware at the router should block any source IP<br />

outside the range <strong>of</strong> the local network. This prevents someone in the local<br />

network from sending spo<strong>of</strong>ed data outside the local network. When data is<br />

received (download), the filter should block any packets with source IPs that<br />

are within the range <strong>of</strong> the local network.<br />

Encryption and Authentication. There are Internet protocols that specify<br />

the details <strong>of</strong> data encryption and how to authenticate messages. While<br />

imperfect, such protocols may help to eliminate simple IP spo<strong>of</strong>ing attacks.<br />

Sequence number spo<strong>of</strong>ing. The TCP protocol specifies the use <strong>of</strong><br />

sequence numbers within data packets. Each data byte has a sequence number,<br />

and the receiver must acknowledge the sequence number <strong>of</strong> the last contiguous<br />

byte it has received. When TCP connection between two computers<br />

(server and client) is established, the server selects an initial sequence number<br />

(ISN) and communicates it to the client by means <strong>of</strong> the three-step protocol.<br />

The ISN becomes the sequence number <strong>of</strong> the first byte <strong>of</strong> the first packet.<br />

If the packet contains N data bytes, then the last byte has sequence number


182 7 Network <strong>Security</strong><br />

ISN + N − 1. Thus, the first data byte <strong>of</strong> the next packet has sequence number<br />

ISN + N and this number is included by the server in the packet’s TCP<br />

header. For each packet received, the client sends an acknowledge where,<br />

among other items <strong>of</strong> information, it indicates the sequence number <strong>of</strong> the<br />

last contiguous byte it has received. This tells the server how much <strong>of</strong> the<br />

data has been received by the client as one contiguous block.<br />

As an example, suppose that the ISN selected by the server is 1000 and<br />

each packet is 100 bytes long. The sequence numbers <strong>of</strong> the packets sent by<br />

the server would therefore be 1000, 1100, 1200, 1300, and so on. Assume<br />

that packet 1300 is taking a different route and is delayed or even lost on its<br />

way to the client (Figure 7.1(a)). The client has received up to byte 1299,<br />

so all its acknowledge packets from now on, until it receives packet 1300, are<br />

going to contain sequence number 1299 (Figure 7.1(b)). After the server has<br />

received several acknowledgements with 1299, it resends packet 1300, followed<br />

by 1400, 1500, and so on (Figure 7.1(c)). If the server has resent packets <strong>of</strong><br />

data several times and it still receives incomplete acknowledgements, it stops<br />

sending, closes the connection, and signals to the user application that the<br />

connection had broken.<br />

1299 1299 1299<br />

Internet<br />

1300<br />

(b)<br />

(c)<br />

1000 1100 1200 1300<br />

(a)<br />

Figure 7.1: ISNs and Acknowledgments.<br />

1300 1400 1500 ...<br />

Sequence number spo<strong>of</strong>ing is the case where a hacker can compute or<br />

guess the next set <strong>of</strong> sequence numbers in a data transmission. The hacker<br />

can, in such a case, send false packets <strong>of</strong> data and they will be received with<br />

full trust by the client program in the receiving computer. Good defense<br />

against this kind <strong>of</strong> attack is to encrypt the data. If the hacker doesn’t know<br />

the encryption key, any false data inserted will not decrypt properly and will<br />

therefore be useless to the owner (who can request a retransmission) as well<br />

as to the hacker (who can try to corrupt the next transmission).<br />

It’s hard to believe that someone will go to such trouble just to break<br />

into someone else’s computer, but many cases <strong>of</strong> IP spo<strong>of</strong>ing are known and<br />

it is easy to locate detailed descriptions <strong>of</strong> some on the Internet. Perhaps the<br />

most famous case is that <strong>of</strong> Kevin Mitnick.<br />

On Christmas Day 1994, a hacker first probed a set <strong>of</strong> computers owned<br />

by Tsutomu Shimomura, a scientist and computer security pr<strong>of</strong>essional in the


7.3 Spo<strong>of</strong>s 183<br />

San Diego (California) area. Once vulnerability was discovered, an attack<br />

was launched employing IP spo<strong>of</strong>ing. The hacker managed to break into<br />

the computers and steal files. True to being a security expert, Shimomura<br />

kept detailed logs on the use <strong>of</strong> his computers in his absence. Once back<br />

from his vacation, the logs told him <strong>of</strong> the attack. The stolen files were<br />

tracked by the FBI to toad.com, to computers in Marin county, north <strong>of</strong><br />

San Francisco, to Denver, San Jose, and finally to Kevin Mitnick, a hacker<br />

in Raleigh, North Carolina. After spending five years in jail, Mitnick was<br />

released on 21 January, 2000. The details, as told by Shimomura, can be<br />

found at [takedown 04].<br />

Session hijacking. This type <strong>of</strong> attack occurs when a hacker gains<br />

privileged access to a network device, such as a router, that serves as a<br />

gateway between the server and client. The hacker can, in such a case, use<br />

IP spo<strong>of</strong>ing to take over the entire session <strong>of</strong> data transmission and send any<br />

information, rogue programs, and corrupt data to the client’s computer.<br />

Most authentication in the TCP/IP protocol takes place at the time the<br />

connection is established, and this can be exploited by a hacker to gain access<br />

to a machine by, for example, using source-routed IP packets. This allows a<br />

hacker at node A on the network to participate in a data exchange between<br />

B and C by placing himself in the middle and routing the IP packets to pass<br />

through his machine.<br />

An alternative is to use “blind” hijacking, where the hacker guesses the<br />

responses <strong>of</strong> the computers at B and C. The hacker can, in such a case, send<br />

a command and cannot see the response, but can guess the response to many<br />

commands. A typical command is to set a password allowing access to B<br />

and C from somewhere else on the network.<br />

DNS. A domain name server (DNS) is a computer used specifically for<br />

networking. It has a dictionary with IP addresses and the corresponding<br />

URLs. When a computer wants to send data, it has to prepare packets<br />

with the IP address <strong>of</strong> the receiving computer. The human user normally<br />

knows the URL (a meaningful string), so the sending application has to<br />

connect to the DNS first, send it the URL, and receive the corresponding<br />

IP address. Only then can the application send data with the proper IP<br />

and TCP headers. This is why, when we want to browse a certain URL, the<br />

browser <strong>of</strong>ten displays the message “looking for. . . ” for a few seconds.<br />

Exercise 7.1: Each <strong>of</strong> us has certain URLs that we browse <strong>of</strong>ten, yet the<br />

browser has to look up the IP address <strong>of</strong> a site each time. explain why.<br />

One threat related to DNS is man in the middle (MIM). A hacker may<br />

register a domain name, such as aple.com, that is similar to an existing<br />

popular URL. When a user mistypes aple instead <strong>of</strong> apple, the browser<br />

receives from the DNS computer the IP address <strong>of</strong> the hacker’s site, and<br />

connects to that site. Now the hacker is in control. His site can display<br />

information similar to that displayed by the real site, while also sending its<br />

own malicious s<strong>of</strong>tware. The hacker can even retrieve from apple.com the<br />

web pages the user wants, then forward them, perhaps modified, to the user<br />

(Figure 7.2).


184 7 Network <strong>Security</strong><br />

apple.com<br />

2<br />

3<br />

2<br />

3<br />

4<br />

1<br />

4<br />

MIM<br />

aple.com<br />

Figure 7.2: Illustrating Man in the Middle.<br />

1<br />

User<br />

Another option is for the hacker to insert himself “inline” between a user<br />

and a Web site using a sniffing program to intercept the exchange <strong>of</strong> data<br />

between them.<br />

A common MIM attack involves denial-<strong>of</strong>-service (DoS) against a network<br />

node by flooding it with messages and so preventing it from responding<br />

to legitimate users and visitors. This attack can be directed either against<br />

a server computer to force it to crash, or against the network connection to<br />

cause heavy packet loss.<br />

Another threat related to DNS is DNS poisoning. In the past, the most<br />

common DNS s<strong>of</strong>tware was the Berkeley Internet name daemon (BIND).<br />

Early versions <strong>of</strong> this s<strong>of</strong>tware had weaknesses that made it easy for a hacker<br />

to modify the IP addresses associated with any URLs. Once a hacker changes<br />

the IP associated with, say apple.com. Anyone trying to connect to that<br />

URL will be connected to the hacker’s site, with potentially disastrous results.<br />

A well-known example <strong>of</strong> DNS poisoning is the defacing, in 2001, <strong>of</strong> the<br />

Web site <strong>of</strong> RSA <strong>Security</strong> [RSAsecurity 04]. The anonymous hijacker rerouted<br />

visitors from RSAsecurity.com to a fake site that looked like the RSA site but<br />

was different in significant ways. Anyone who noticed the differences in the<br />

Web site, assumed that RSA <strong>Security</strong>, an important developer <strong>of</strong> encryption<br />

techniques and products, had been compromised. In fact, only the DNS was<br />

attacked and corrupted.<br />

A hacker preparing a fake site to lure unsuspecting visitors can make<br />

his site look identical to the original site, but with modified, redirected links.<br />

Anyone following a link may find themselves redirected to a pornographic<br />

site, or unintentionally downloading a virus disguised as an image.<br />

Imagine a customer trying to buy a piece <strong>of</strong> equipment online. The<br />

online merchant uses the secure socket layer (see document on cryptography<br />

in the book’s Web site) protocol to encrypt the transaction. A hacker places<br />

himself, as a man in the middle, between the customer and the merchant,<br />

intercepting all communications. The hacker cannot decrypt the messages,<br />

but can record them and replay the customer’s messages to the merchant once<br />

a day over the next ten days. The hacker does not modify the customer’s<br />

messages (he does not behave as an impostor), nor does he pretend to be the<br />

customer, yet the customer may receive ten identical pieces <strong>of</strong> the equipment


7.3 Spo<strong>of</strong>s 185<br />

with ten bills (or with one large bill). This kind <strong>of</strong> hassle is referred to as a<br />

replay attack.<br />

The following is a typical case <strong>of</strong> spo<strong>of</strong>ing that exploits a vulnerability in<br />

the Windows operating system. It was discovered and published in late 2009<br />

by Vupen [Vupen 09], a company that monitors vulnerabilities in thousands<br />

<strong>of</strong> s<strong>of</strong>tware products.<br />

>> Micros<strong>of</strong>t Windows CryptoAPI X.509 Spo<strong>of</strong>ing Vulnerabilities (MS09-056)<br />

Title : Micros<strong>of</strong>t Windows CryptoAPI X.509 Spo<strong>of</strong>ing Vulnerabilities (MS09-056)<br />

VUPEN ID : VUPEN/ADV-2009-2891<br />

CVE ID : CVE-2009-2510 - CVE-2009-2511<br />

CWE ID : VUPEN VNS Only<br />

CVSS V2 : VUPEN VNS Only<br />

Rated as : Moderate Risk<br />

Remotely Exploitable : Yes<br />

Locally Exploitable : Yes<br />

Release Date : 2009-10-13<br />

Technical Description Receive VUPEN <strong>Security</strong> alerts in a Text format Receive<br />

VUPEN <strong>Security</strong> alerts in a PDF format Receive VUPEN <strong>Security</strong> alerts in an<br />

XML format<br />

Two vulnerabilities have been identified in Micros<strong>of</strong>t Windows, which could be<br />

exploited by attackers to bypass security restrictions.<br />

The first issue is caused due to the Windows CryptoAPI incorrectly parsing a<br />

null terminator as the end <strong>of</strong> any values identified by an Object Identifier<br />

(OID) when processing ASN.1 information from X.509 certificates, which could<br />

allow spo<strong>of</strong>ing attacks.<br />

The second vulnerability is caused by an integer overflow error in the Windows<br />

CryptoAPI when parsing ASN.1 object identifiers from X.509 certificates<br />

(e.g. Common Name), which could allow an attacker to generate a malicious<br />

certificate that would be parsed incorrectly by the Windows CryptoAPI,<br />

impersonating another user or system.<br />

Affected Products<br />

Micros<strong>of</strong>t Windows 2000 Service Pack 4<br />

Micros<strong>of</strong>t Windows XP Service Pack 2<br />

Micros<strong>of</strong>t Windows XP Service Pack 3<br />

...<br />

Micros<strong>of</strong>t Windows 7 (32-bit)<br />

Micros<strong>of</strong>t Windows 7 (x64)<br />

Solution. Apply patches:<br />

http://www.micros<strong>of</strong>t.com/technet/security/bulletin/MS09-056.mspx<br />

References: http://www.vupen.com/english/advisories/2009/2891<br />

http://www.micros<strong>of</strong>t.com/technet/security/bulletin/MS09-056.mspx


186 7 Network <strong>Security</strong><br />

7.4 Spam<br />

We are all familiar with spam. Spam is unwanted, unsolicited email sent in<br />

bulk to many unwilling recipients. Most <strong>of</strong> it is commercial advertising for<br />

dubious products, get-rich-quick schemes, or quasi-legal or health services.<br />

In April 2009, Micros<strong>of</strong>t’s biannual report on the state <strong>of</strong> computer security<br />

estimated that 97.3% <strong>of</strong> email traffic was unwanted spam (or malicious email<br />

like phishing attacks and outright viruses). Surprisingly this was down a<br />

bit from the first half <strong>of</strong> 2008, when total spam volume reached a whopping<br />

98.4% <strong>of</strong> all email sent. Also in April 2009, Google estimated that about 94%<br />

<strong>of</strong> all email traffic monitored by its Postini services in 2009 represents spam.<br />

Spam is named after the 12-oz cans <strong>of</strong> spicy ham made by the Hormel<br />

company since 1937 [spam 04]. By itself, spam is nuisance, not a security concern,<br />

but it can be exploited for a DoS attack. A central computer dedicated<br />

to sending and receiving email for a large organization can be attacked by<br />

sending its many users massive quantities <strong>of</strong> identical email messages. This<br />

consumes valuable network bandwidth, it overloads the CPU, eats up disk<br />

space on the email server, and can cause it to crash (by overflowing some<br />

data structure) or freeze (by keeping the CPU permanently occupied with<br />

receiving, logging, sending, and forwarding the spam messages).<br />

Exercise 7.2: Use your experience with spam to list products <strong>of</strong>ten <strong>of</strong>fered<br />

in spam messages.<br />

Use <strong>of</strong> the term “spam” was adopted as a result <strong>of</strong> the Monty Python skit<br />

in which our SPAM meat product was featured. In this skit, a group <strong>of</strong><br />

Vikings sang a chorus <strong>of</strong> “spam, spam, spam. . . ” in an increasing crescendo,<br />

drowning out other conversation. Hence, the analogy applied because UCE<br />

(unsolicited commercial email) was drowning out normal discourse on the<br />

Internet.<br />

—See http://en.wikipedia.org/wiki/Spam_(Monty_Python).<br />

It may come as a surprise to many that most spam messages are sent<br />

from computers (mostly private personal computers on high-speed cable or<br />

DSL networks) that have been infected by special strains <strong>of</strong> viruses. Such a<br />

virus hijacks the infected computer and turns it into a spam proxie (a special<br />

case <strong>of</strong> zombie). A major spammer may at any time own such a botnet<br />

(Section 6.5) and control thousands <strong>of</strong> spam proxies that serve him obediently<br />

and send millions <strong>of</strong> spam messages anonymously (Figure 7.3). The<br />

sobig virus (technically a worm, see year 2003 in Appendix C) was the first<br />

specimen <strong>of</strong> malicious s<strong>of</strong>tware designed to create spam proxies, but similar<br />

viruses (mostly variants <strong>of</strong> the original sobig) are implemented and released<br />

all the time and manage to infect tens <strong>of</strong> thousands <strong>of</strong> computers worldwide<br />

every week. The virus installs special s<strong>of</strong>tware known as spamware that takes<br />

over the computer (essentially hijacking it) and handles the distribution <strong>of</strong><br />

spam.<br />

Once a hacker has released such a virus and has obtained a fresh army<br />

<strong>of</strong> spam proxies, he may try to sell them to spammers through special online


Spam proxie<br />

Spam<br />

7.4 Spam 187<br />

Control<br />

Spam proxie<br />

Figure 7.3: An Army <strong>of</strong> Spam Proxies.<br />

Hacker<br />

forums that are <strong>of</strong>ten closed to the general public. URLs such as Specialham.com<br />

and Spamforum.biz (both now defunct), which are hosted mostly<br />

in Russia and China (but also in Florida), may not look very useful or interesting<br />

to a casual visitor or even to security-conscious persons such as readers<br />

<strong>of</strong> this book, but are familiar and very useful to spammers. These sites also<br />

carry advertisements for bullet-pro<strong>of</strong> hosting (ISPs, most <strong>of</strong> them Chinese,<br />

that allow spam) and allow spammers to exchange news and information.<br />

The news is mostly about steps taken by ISPs and law makers and enforcers<br />

in various countries to make the lives <strong>of</strong> spammers more difficult. Much information<br />

is <strong>of</strong>fered on ISPs and networks that close their eyes to spam in<br />

return for the high revenues obtained from spammers.<br />

<strong>Security</strong> workers and experts also visit these sites <strong>of</strong>ten and make certain<br />

items <strong>of</strong> information available to the public to illustrate the seriousness <strong>of</strong><br />

the spam menace. For example, [spamhauslasso 05] has a list <strong>of</strong> the top ten<br />

spam-friendly ISPs and shows that most <strong>of</strong> them are American.<br />

⋄ Exercise 7.3: Browse the [spamhauslasso 05] site to locate the latest list.<br />

Much <strong>of</strong> the spamware currently in use is written by the Russian programmers<br />

and spammers Ruslan Ibragimov and Alexey Panov. The former<br />

is known for his Send-Safe proxy spamware and the latter is the creator <strong>of</strong><br />

direct mail sender (DMS), a spamware package. It is known that new<br />

waves <strong>of</strong> sobig-like viruses are normally followed by many discoveries <strong>of</strong> these<br />

spamware packages in hijacked personal computers.<br />

Send-Safe is a bulk email s<strong>of</strong>tware program based on a unique know-how<br />

sending technology. It provides real anonymous instant delivery—you can<br />

use your regular Internet connection because your IP address will never<br />

be shown in the email headers. Send-Safe performs email validation and<br />

displays delivery statistics in real time, which gives you the ability to evaluate<br />

the quality <strong>of</strong> your mailing lists. Send-Safe mailing s<strong>of</strong>tware is free <strong>of</strong><br />

charge. Our pricing is based on the number <strong>of</strong> emails you send over a given<br />

period <strong>of</strong> time.<br />

—From http://www.send-safe.com/.<br />

The Send-Safe program has a feature that speeds up the sending <strong>of</strong><br />

spam and makes it harder to identify its source. This feature, proudly titled<br />

“use proxy MX” by its creator, makes the spam messages appear as if they


188 7 Network <strong>Security</strong><br />

came directly from the ISP’s mail server instead <strong>of</strong> from the sending (spam<br />

proxie) PC. This troubling behavior has been noticed by major ISPs such<br />

as AOL, Time Warner Cable, and Earthlink, yet Send-Safe is still available<br />

for sale (for $50–500, depending on the number <strong>of</strong> messages sent) at [sendsafe<br />

05], thereby exacerbating the already-serious spam threat.<br />

An article (no longer available) at [Spamhous 05] titled should MCI be<br />

pr<strong>of</strong>iting from knowingly hosting spam gangs? claims that hosting spamfriendly<br />

sites such as [send-safe 05] is routinely practiced by certain communications<br />

companies (again, mostly outside the United States) because <strong>of</strong> the<br />

higher premiums paid by spammers.<br />

Is this a case <strong>of</strong> putting money before morality? This author doesn’t<br />

have the answer. Do you?<br />

More and more computer installations use spam filters and it is common<br />

to hear from a network administrator that his filters identify as spam more<br />

than half <strong>of</strong> all the email received and either delete it or return it. The<br />

problem with returning spam email is that the sender may use a fake return<br />

address, the address <strong>of</strong> a third, innocent party, that ends up getting flooded<br />

with the spam.<br />

Many Web sites that help users in the fight against spam are listed at<br />

[spam abuse 04] (actively engaged in fighting spam since 1996). Another site<br />

that accepts spam reports and checks them is [spamcop 05]. Spamhaus is<br />

an organization that tracks the Internet’s spammers, spam gangs, and spam<br />

services. It is located at [Spamhaus 05], it provides dependable realtime antispam<br />

protection for Internet networks, and it works with law enforcement to<br />

identify and pursue spammers worldwide.<br />

Spamhaus maintains a register <strong>of</strong> known spam operations (ROKSO)<br />

database with names, addresses, and much information on the top 200 spammers.<br />

In early June 2005, the top ten were the following:<br />

Alan Ralsky. Operating mostly in Michigan, United States. One <strong>of</strong> his<br />

companies is Additional Benefits, LLC.<br />

Michael Lindsay. Mostly in California, United States. Companies are<br />

iMedia Networks, InterNetco Communications, and GalaxyNET Telecom.<br />

Andrew Westmoreland with partner Kai Bannon. In Florida and Texas,<br />

United States. Operate under Internet Access Group, Inc.<br />

Jeffrey A. Peters, CEO <strong>of</strong> JTel.net (or CPU Solutions) Corp. Located in<br />

St Petersburg, Florida. Mr. Peters disappeared from the spamming business<br />

long enough for his spamhous ROKSO records to expire during 2004, but has<br />

reappeared in early 2005.<br />

Alexey Panov. Claims to live in Russia. Company is Trendlogic GMBH<br />

located in Germany. Email ckync@ckync.com.<br />

Ivo Ottavio Reali Camargo. Operating from his <strong>of</strong>fice in Florianopolis,<br />

Santa Carina, Brazil.<br />

Ruslan Ibragimov. Moscow, Russia. Web address send-safe.com.


7.4 Spam 189<br />

Robert Soloway. Oregon, United States. Aka NIM Corporation and<br />

Newport Internet Marketing.<br />

Ryan Pitylak, Steve Goudreault, and Mark Trotter. Michigan, United<br />

States. Associated with Alan Ralsky.<br />

Yambo Financials. The Ukraine. It attempts to look legitimate by<br />

renting postal addresses at American and British remailing services and<br />

forwarding-phone services.<br />

Table 7.4, based on information compiled by [Spamhaus 05], lists the<br />

top ten spam countries and top ten spam service ISPs as <strong>of</strong> early 2010. For<br />

each country and ISP, the table lists the number <strong>of</strong> current spam issues.<br />

Countries ISPs<br />

1 United States 2197 telefonica.com.ar 67<br />

2 China 590 xo.com 46<br />

3 Russia 456 ono.com 44<br />

4 UK 456 ovh.net 42<br />

5 Argentina 259 telecom.com.ar 40<br />

6 Germany 221 verizon.com 39<br />

7 Brazil 202 hinet.net 37<br />

8 Spain 181 integratelecom.com 36<br />

9 South Korea 175 fibertel.com.ar 35<br />

10 Japan 174 iberbanda.es 34<br />

Table 7.4: Top Ten Spam Countries and ISPs.<br />

The four main reasons why spam is so bad are as follows:<br />

It is easy to send. All that a spammer needs is spam s<strong>of</strong>tware and a<br />

fast Internet connection. Such a connection may send a flood <strong>of</strong> millions <strong>of</strong><br />

identical messages a day, while costing only about $100 a day. On the other<br />

hand, if any <strong>of</strong> the millions <strong>of</strong> receivers spends just ten seconds on deleting<br />

a spam message, the total effort may add up to thousands <strong>of</strong> hours wasted<br />

each day by the receivers. In addition, spam sent as email to cell telephones<br />

may cost its receiver money, not just time.<br />

Many spam messages ask the user to click on a link to be removed from<br />

the mailing list. As many <strong>of</strong> us have found, clicking to be removed from such<br />

a list at best verifies to the spammer that the email address exists and at<br />

worst may result in a virus infection. There is also the ethical question <strong>of</strong><br />

why I should have to get <strong>of</strong>f a mailing list I never asked to be placed on.<br />

Spammers tend to use computing resources illegally or even to steal them<br />

outright. A spammer may employ an Internet attack to get hold <strong>of</strong> a PC,<br />

then use that PC to forward its spam messages. The receivers see messages<br />

coming from the PC, and complain to its owner, <strong>of</strong>ten a clueless individual<br />

who has no idea <strong>of</strong> the many security pitfalls lurking in the Internet.


190 7 Network <strong>Security</strong><br />

Spam is trash. We have all seen messages advertising worthless merchandise<br />

and deceptive or fraudulent services.<br />

Case study. Convicted fraudster Alan Ralsky has been spamming for<br />

many years. He has grown from a small time operator, under the “Additional<br />

Benefits” moniker, to one <strong>of</strong> the bigger spam houses on the Internet with a<br />

gang <strong>of</strong> fellow morally challenged types working with him to pump out every<br />

type <strong>of</strong> sleazy deal and scam <strong>of</strong>fer into millions <strong>of</strong> internet users’ mailboxes.<br />

Ralsky does both mailings and hosting for people who want to spam.<br />

Using dial-up accounts that he buys under aliases or leases from large modem<br />

dial-up providers like UUNet, Genuity, etc. He sets up a dummy ISP<br />

pretending to have “users” that need dial-up access. This serves his purposes<br />

well, as complaints are directed from the large providers to this dummy ISP<br />

and are <strong>of</strong> course thrown away. Due to the big bandwidth purchase, large<br />

networks <strong>of</strong>ten close an eye to the spamming so as not to lose the revenue.<br />

Once the CAN SPAM legislation was signed into law, in December 2003,<br />

Ralsky changed his mailings to include certain information required by the<br />

law. By this time, he would send as many as 70 million email messages in a<br />

single day.<br />

Later, Ralsky hosts “<strong>of</strong>fshore” in China to evade US authorities. But<br />

the <strong>of</strong>fshore hosts are soon blocked and terminated so he’s forced to hop from<br />

one Chinese provider to the next like most <strong>of</strong> the spam gangs. One <strong>of</strong> his<br />

tricks in the USA is to host the Web sites on the same dial-up connections he<br />

uses to spam out <strong>of</strong>. He then uses an auto-updating DNS server to point to<br />

a new IP address whenever one <strong>of</strong> the dial-ups drops carrier or gets cut <strong>of</strong>f.<br />

Behind the times as usual, the companies who provide the connection for his<br />

DNS servers state that “our Acceptable Use Policy doesn’t cover this. . . we<br />

need to talk to our lawyers, etc. etc.,” which gives the Ralsky gang several<br />

weeks <strong>of</strong> use.<br />

In September 2005, the FBI raided Ralsky’s home and that <strong>of</strong> his partners.<br />

<strong>Computer</strong>s, servers, disks, and financial statements were confiscated.<br />

His operations were temporarily ceased, but not shut down. The FBI investigation<br />

lasted three years, and resulted, in January 2008, in indictment included<br />

stock fraud charges against Ralsky and ten others. Finally, in November<br />

2009, he was sentenced to four years, three months in jail and a fine <strong>of</strong><br />

$250,000<br />

—Based mostly on old records from http://www.spamhaus.org.<br />

It helps to know how spammers obtain so many valid email addresses.<br />

The main technique is called coregistration and works as follows:<br />

You surf to a Web site that seems interesting, even useful. It <strong>of</strong>fers<br />

something, a product or a service, for free or almost free. There are also<br />

several checkboxes, some already filled, that promise more information or free<br />

membership. When any <strong>of</strong> these boxes is checked, your email address is sent<br />

to the Web site owner who may sell it to a spammer. In the marketing world,<br />

this is known as coregistration. Spammers pay for valid email addresses


7.4 Spam 191<br />

depending on where they came from. Addresses provided by a site promising<br />

freebies may be sold for a few pennies each, while those collected by an<br />

established business, with many repeat customers whose buying habits are<br />

known, may be worth a few dollars each to a spammer. Remind yourself that<br />

such a Web site was set and is run for one purpose, to make money. The<br />

owner is not trying to help you.<br />

As a simple precaution, try to uncheck all the prechecked boxes before<br />

you ask for more information or subscribe to a free service or newsletter.<br />

Be selective; don’t ask for more free information than you really need. Remember,<br />

there is no such thing as a free lunch. If there is a box labeled<br />

“check all,” don’t use it. A simple trick is to display a “submit” checkbox<br />

in a prominent place on the monitor, where the user can easily see it, and<br />

hide all the prechecked buttons in the unseen area <strong>of</strong> the Web page, where<br />

the viewer has to scroll to see them. This technique is known as “below the<br />

fold.” Don’t fall for such a trick. Before you click on any “submit” button,<br />

scroll slowly and examine the rest <strong>of</strong> the page! Look especially for checkboxes<br />

that promise to share your information with partners. Another nasty habit<br />

is to automatically enroll a user for a subscription or another service, forcing<br />

them to disenroll explicitly, <strong>of</strong>ten at much trouble and waste <strong>of</strong> time. This is<br />

known as a “negative action <strong>of</strong>fer.”<br />

A Web site that collects names and addresses has to have a privacy<br />

policy where it states whether it shares this information with other parties.<br />

If a site does not display such a policy, or if it has no policy at all, avoid<br />

it. Naturally, the worst sites promise privacy and break this promise all the<br />

time.<br />

It is also a good idea (practiced by this author) to leave immediately<br />

when you see the words “free gift.” These words are a sure sign <strong>of</strong> something<br />

wrong, because a gift, by its very nature, is free. (A quick Internet search<br />

for “free gift” has returned more than two million results.) The phrase “free<br />

gift” is a redundancy (Exercise 11.2), so it should be suspect. Many free gifts<br />

also turn out, upon close scrutiny, to have strings attached or to demand<br />

excessive shipping and handling fees. Free <strong>of</strong>fers (freebies) are similar. Most<br />

<strong>of</strong>fers <strong>of</strong> free stuff are leads designed to generate names and addresses that<br />

are eventually sold to spammers. To cure you <strong>of</strong> the desire to receive freebies,<br />

search the Internet for the keyword “freebie” and examine some <strong>of</strong> the more<br />

than a million sites you will find.<br />

Exercise 7.4: Yes, go ahead and do this. What are the first three sites?<br />

A similar scam to avoid is contests. Contests are very <strong>of</strong>ten used as<br />

bait to lure unsuspecting users to submit their names, physical addresses,<br />

telephone numbers, and email addresses. Your chance <strong>of</strong> winning in a real<br />

contest are so small, and the number <strong>of</strong> fake contests is so large, that it’s not<br />

worth it to participate in them. The same is true for sites <strong>of</strong>fering prizes.<br />

The best policy is to ignore contests and prizes.<br />

Another important technique <strong>of</strong> collecting email addresses is harvesting<br />

them (some prefer the term scavenging) from the Whois data base at<br />

[Network solutions 04]. For example, a search for IP 130.166.2.76 re-


192 7 Network <strong>Security</strong><br />

sults in information that includes email addresses domainadmin@csun.edu,<br />

abuse@csun.edu, and helpdesk@csun.edu. The spammer can simply try<br />

all the 2 32 IP numbers in order, and examine each result automatically, by<br />

special s<strong>of</strong>tware (that he can constantly tune up and improve), looking for<br />

strings that may be email addresses.<br />

Internet search engines are common and very useful. Such an engine<br />

works by crawling the Internet, locating Web pages, and saving and indexing<br />

them. Along the same lines, spammers use spambots, s<strong>of</strong>tware that crawls<br />

the Web, examining Web pages looking for email addresses, and harvesting<br />

them for future abuse or for sale. An obvious (but alas, not ideal) protection<br />

is to obfuscate all email addresses in a Web page. Instead <strong>of</strong> writing an email<br />

address in your Web site in a form such as leopold.bloom@ulysses.name,<br />

it is better to have something like leopold bloom at ulysses dot name.<br />

There are commercial services that provide relief from spam for their<br />

members by blocking it. A typical spam-relief service maintains a list <strong>of</strong><br />

approved senders and asks each <strong>of</strong> its members to provide their own list <strong>of</strong><br />

approved senders. The service “sits” between the member and the member’s<br />

mail server, and the member uses the same email s<strong>of</strong>tware to send and receive<br />

messages. However, the s<strong>of</strong>tware connects to the service which, in turn,<br />

connects to the member’s email server. Messages whose senders are in the<br />

service’s list <strong>of</strong> approved senders (or in the individual member’s list) are let<br />

through to the member. For any other messages, the service sends the sender<br />

a short challenge message, like the one <strong>of</strong> Figure 7.5, asking the sender to<br />

click (just once) on a certain link. If the sender clicks on the link, he is added<br />

to the service’s list <strong>of</strong> approved senders. The idea is that a spammer would<br />

not be able or willing to respond to many challenges.<br />

Thus, the member receives email only from approved senders, but also<br />

has access to a list <strong>of</strong> unapproved (blocked) messages. The member can read<br />

messages from this list, delete messages, and also remove any sender from<br />

the approved list.<br />

Examples <strong>of</strong> such services are [Knowspam 04], [SpamArrest 04], [Mail-<br />

Frontier 04], and [Mailblocks 04]. Here is how Mailblocks works.<br />

1. Alice opens an account at mailblocks. She copies the address book <strong>of</strong><br />

her current email s<strong>of</strong>tware and sends it to mailblocks. This book becomes the<br />

kernel <strong>of</strong> her new protection. All the addresses in this book are whitelisted.<br />

2. Bob sends Alice an email message. If Bob is in Alice’s address book,<br />

she receives his message. Otherwise, the mailblocks service blocks the message<br />

temporarily and sends Bob a challenge message. Figure 7.5 (where the<br />

misspellings haven’t been corrected) is a real message that this author received<br />

on 31 December 2004.<br />

3. If Bob is a bona fide user, he elects to return the challenge to mailblocks,<br />

which then forwards his message, as well as any other message, to<br />

Alice. (Submitting the challenge requires a click, typing a seven-digit code,<br />

and hitting “submit.”) If Bob’s message was automatically generated, or if<br />

he is a spammer who doesn’t have the time to answer challenges, his future<br />

email to Alice will be automatically deleted until Alice adds him explicitly<br />

as a recognized user.


7.4 Spam 193<br />

These services constitute an obvious example <strong>of</strong> a trade-<strong>of</strong>f between security<br />

and convenience <strong>of</strong> use. Most are free, but are supported by advertisement,<br />

which partly defeats their purpose. Some may have several levels<br />

<strong>of</strong> service where the lowest one is free and is supported by advertising.<br />

A simple technique to reduce spam is to open several alternate email<br />

address. When one gets flooded with spam, tell your correspondents to use<br />

another one. There are several large companies, such as Yahoo and Hotmail,<br />

that provide free email addresses, but they are frequently targets <strong>of</strong> massive<br />

spam and various attacks.<br />

A common sense idea is to avoid giving out your email address as much<br />

as possible. If you have a Web site with your address, try to write it in the<br />

form john at abc dot com or a similar format. If you set up a message<br />

board or a discussion group, try to display just part <strong>of</strong> any email address.<br />

Zombies. Certain types <strong>of</strong> malware are used to capture control <strong>of</strong> a<br />

computer and command it remotely. Such a captured machine is known as<br />

a zombie and a set <strong>of</strong> zombies is termed a botnet (Section 6.5). A botnet is<br />

an ideal means <strong>of</strong> hiding the identity <strong>of</strong> a perpetrator and security experts<br />

see more and bigger botnets all the time. It is known that DoS attacks are<br />

<strong>of</strong>ten carried out after the attacker has gained control <strong>of</strong> many computers<br />

and turned them into zombies. A targeted Web site is flooded with a vast<br />

number <strong>of</strong> meaningless messages sent by computers whose innocent users<br />

know nothing about the attack. The attack keeps legitimate users from using<br />

the site, causing inconvenience to users and monetary losses to the site’s<br />

owners. Such an attack is referred to as distributed denial <strong>of</strong> service (DDoS).<br />

Zombies are also used by spammers to hide their identities. A spammer<br />

who controls a zombie computer, sends this slave a (normally stolen) list<br />

<strong>of</strong> email addresses and instructs it to send a message (or several messages)<br />

hawking useless merchandise, fraudulent schemes, or unwanted services to<br />

all the addresses. Zombies are less destructive than viruses or other types <strong>of</strong><br />

rogue s<strong>of</strong>tware because they rarely damage data.<br />

Exercise 7.5: The term zombie is also used in UNIX. Find out what it<br />

indicates?<br />

The following incident illustrates the power that a hacker can gain by<br />

taking over and enslaving a large number <strong>of</strong> computers. We all spend time<br />

(some <strong>of</strong> us perhaps too much time) surfing the Internet. We do this by typing<br />

a URL, such as www.ibm.com, but the communications s<strong>of</strong>tware has to use a<br />

numeric IP address such 123.098.321.0. There is therefore a need for address<br />

translation from the convenient, easy-to-remember URLs to the numeric IP<br />

addresses, and this service is provided by many dedicated computers called<br />

domain name servers (DNS).<br />

Notice that the IP address associated with a given URL may change,<br />

because the owner <strong>of</strong> the URL may move and change his Internet service<br />

provider (ISP), or because the ISP assigns dynamic IP addresses to its clients.<br />

Thus, every time we try to browse a Web site or perform a file transfer, our<br />

computer has to connect to a DNS to resolve the URL. An ISP has at least<br />

two DNS computers, and their information has to be updated every day from


194 7 Network <strong>Security</strong><br />

Date:Fri, 31 Dec 2004 00:18:58 -0800<br />

From:Chad Hurwitz Add To Address Book<br />

Subject:Re: Re: Is that your document? [Authorize]<br />

To:david.salomon@csun.edu<br />

Hi,<br />

You just sent an email to my churritz@aaa.com account, which is now being<br />

managed by my Mailblocks spam-free email service. (If you didnt recently<br />

send a message to me, please see the Note below*.)<br />

Because this is the first time you have sent to this email account, please confirm<br />

yourself so you’ll be recognized when you send to me in the future.<br />

It’s simple.To prove your message comes from a human and not a computer, go to:<br />

http://app21.mailblocks.com/confirm2.aspx?ck=CGNodXJyaXR6C21haWwybWUuY29tFm...<br />

This is the email message you have sent that is in my Pending folder waiting<br />

for your quick authentication:<br />

Subject: Re: Is that your document?<br />

Sent: Dec 31, 12:18 AM<br />

If you have not confirmed within several days, your message will automatically<br />

be deleted.<br />

Personal Message:<br />

!!!!!!!<br />

Hi! Since I, Chad from DRO INC. m_a_r_p, get way too much spam,<br />

I’ve opted for the Challenege/Response system provided by mailblocks.<br />

So, if you are seeing this message, then you have sent me a message<br />

to me (churritz@aaa.com or churritz@mail.com) but you haven’t yet<br />

proved you’re a real person and not a spamer. Please follow the<br />

directions and click the link ABOVE and then enter the number shown<br />

on that page. You will only have to do that ONCE. HOWEVER: WARNING:<br />

You only get this challenge once. So, if you delete this message<br />

before clicking on the above link, any message you send to me in the<br />

future will be trashed and i’ll never know you are a real person.<br />

After your verification, i will reply with any M_A_R_P, t_s_p_solve or<br />

v_r_p_solve issues. P.S. Mailblocks deletes all challeneged messages<br />

over 10k, so if your message was larger than that you may have to<br />

send it again aft! ! er verification. I apologize for this inconvenience.<br />

Thank you for sending me email!<br />

!!!!!!!<br />

*Note: If you did not send the above message to me, and you would like to<br />

report this email as unwanted, please notify Mailblocks by clicking here,<br />

and we will ensure that you do not receive any further notification<br />

regarding the above message. Mailblocks investigates all reports made<br />

using this link.<br />

-----<br />

Email for Humans... Mailblocks<br />

Try Mailblocks web-based personal email -- faster, cleaner interface, more<br />

storage, bigger attachments, and 100% spam-free. About Mailblocks<br />

(c) 2003-2004 Mailblocks Inc. All rights reserved.<br />

Figure 7.5: A Typical Mailblocks Confirmation Request.


7.4 Spam 195<br />

the central DNS computers operated by Akamai, a company that specializes<br />

in distributed computing solutions and services. Each time a new URL is<br />

registered and is assigned an IP address by an ISP, the ISP reports the pair<br />

(URL, IP) to Akamai. Also, each time the association between a URL and<br />

an IP is changed, the ISP has to report the new association.<br />

The use <strong>of</strong> URLs is convenient, because it is easier for a person to memorize<br />

a character string than to remember a long number, but it makes the<br />

central DNS computers a natural target for wrongdoers and a weak point<br />

in the Internet (the Internet was originally designed to be survivable in the<br />

sense that it should have no single point <strong>of</strong> failure).<br />

It therefore was no surprise to experts that an important DNS server<br />

was attacked for several hours on Wednesday, 23 December 2009. This was a<br />

distributed denial-<strong>of</strong>-service (DDoS) attack, where a vast number <strong>of</strong> requests<br />

is directed toward the victim, making it impossible for the attacked computer<br />

to respond to all the requests in reasonable time. As a result, legitimate<br />

requests cannot be satisfied, which denies this service to users.<br />

The DNS server in question is operated by Neustar, a company that<br />

provides DNS services under the UltraDNS brand name from facilities in<br />

Palo Alto and San Jose, California. Its server provides DNS translation<br />

for several large E-commerce companies—including Amazon, WalMart, and<br />

Expedia. The attack came just two days before Christmas, ostensibly to<br />

cripple the all-important holiday shopping season. In addition to the large<br />

retailers, the dozens <strong>of</strong> smaller sites that rely on Amazon for Web-hosting<br />

services were also severely affected by the attack.<br />

Such attacks <strong>of</strong>ten come from a large botnet <strong>of</strong> hijacked computers; zombies.<br />

A hacker can locate and collect a set <strong>of</strong> zombies by unleashing a special<br />

Trojan horse. The horse manages to find its way into a computer, where it<br />

runs silently in the background, continually looking for a command from its<br />

owner. Such a rogue program is <strong>of</strong>ten referred to as a remote-access Trojan<br />

or RAT, although the term bot is also sometimes used.<br />

An experienced hacker can create such a bot, set it loose in the Internet,<br />

and wait for it to multiply and occupy a large number <strong>of</strong> computers. The<br />

hacker then sends a command to all the bots, directing them to send a legitimate<br />

request to the same computer, resulting in a flood <strong>of</strong> requests that can<br />

block access to the attacked computer for at least a few hours and perhaps<br />

even days.<br />

What was special (but not new) in the attack described here is that it<br />

somehow managed to block access to several specific sites.<br />

Case study. (This case is somewhat old, but it is described here because<br />

it is so extreme.) A report in [Information Week 04] on 15 November 2004 tells<br />

the story <strong>of</strong> Jeremy Jaynes, a 30-year-old major spammer who was caught,<br />

tried, and convicted after an eight-day trial in late 2004. This is an important<br />

example that illustrates how simple it is to become a major spammer, bother<br />

millions <strong>of</strong> people, and make a lot <strong>of</strong> money, because there is always a small<br />

percentage <strong>of</strong> recipients who respond to any <strong>of</strong>fer.<br />

The almost unbelievable facts <strong>of</strong> this case can be summarized in just<br />

two numbers. At least ten million email messages sent each day, bringing


196 7 Network <strong>Security</strong><br />

a monthly income <strong>of</strong> $400,000 to $750,000. If you had an email address in<br />

2003–04 (and most <strong>of</strong> us have several addresses) chances are you received at<br />

least several messages from Mr Jaynes.<br />

The operation was based in a house in Raleigh, North Carolina (in the<br />

United States) that had 16 high-speed Internet lines installed. Experts say<br />

that this kind <strong>of</strong> Internet access is an overkill for a residence and is normally<br />

found in organizations with hundreds <strong>of</strong> employees. The spam messages<br />

aimed to sell s<strong>of</strong>tware, pornography, and work-at-home schemes. Specifically,<br />

this spammer “specialized” in s<strong>of</strong>tware that promises to clean computers<br />

<strong>of</strong> private information, pornography, a service for selecting penny stocks as<br />

investments, and a fraudulent scheme that promised $75 an hour for work<br />

done at home on delinquent FedEx accounts. In addition, Jaynes (who is<br />

also known as Gaven Stubberfield and has other aliases) was always adding,<br />

changing, and rotating products.<br />

Investigators found that Jaynes, who operated under the alias Gaven<br />

Stubberfield, received 10,000 to 17,000 responses a month, about one response<br />

to every 30,000 email messages sent, but this tiny percentage was translated<br />

to $40 a response, which turned this spamming operation into a lucrative<br />

business. Prosecutors believe that, when arrested, the net worth <strong>of</strong> Jaynes<br />

was about $24 million.<br />

The key to Jaynes’ commercial success was the sheer number <strong>of</strong> email<br />

addresses he had collected. He had millions <strong>of</strong> addresses in lists illegally<br />

obtained from AOL and eBay. These sites are among the chief targets <strong>of</strong><br />

spammers, because their customers are people who have shown an interest<br />

in e-commerce and should therefore be natural targets <strong>of</strong> spamming. It is<br />

known that an AOL programmer was charged with stealing a list <strong>of</strong> 92 million<br />

addresses, and investigators suspect that Jayne somehow obtained this list.<br />

(Jason Smathers, a former s<strong>of</strong>tware engineer at America Online (AOL)<br />

was arrested in early February 2005 and charged with using his inside knowledge<br />

to steal a list with names and accounts <strong>of</strong> 92 million AOL members.<br />

He then allegedly sold it to a friend, Sean Dunaway, who in turn sold it to a<br />

spammer. Each <strong>of</strong> the two men is facing a maximum sentence <strong>of</strong> five years in<br />

prison and a fine <strong>of</strong> $250,000. AOL stated that no passwords or credit card<br />

numbers were involved and that Smathers had been fired.)<br />

E-commerce by itself isn’t spam and shouldn’t be unnecessarily discouraged<br />

by laws. Therefore, laws against spam cannot outlaw the practice <strong>of</strong><br />

sending, even on a massive scale, email messages promoting products and<br />

services. An antispam law should concentrate on what distinguishes spam<br />

from legitimate e-commerce, namely sending unsolicited email and email with<br />

false information as to its origin or transmission.<br />

In the trial, prosecutors proved to the satisfaction <strong>of</strong> the jurors that<br />

Jaynes had registered Web sites under false company names, which made it<br />

impossible for his victims to trace him. He also sent email with false routing<br />

information and used special s<strong>of</strong>tware to generate phony domain names and<br />

paste them as the source addresses <strong>of</strong> his messages, a trick many spammers<br />

employ to confuse spam filters.


7.4 Spam 197<br />

During the trial it became known that Jaynes had the “right” background<br />

for his operations, because he worked as a distributor <strong>of</strong> old-fashioned<br />

junk mail in the past decade. With him were charged his sister and another<br />

helper.<br />

We don’t know the precise techniques employed by law enforcement to<br />

locate him and collect the evidence, but it seems that other spammers are<br />

much more sophisticated. They reside in countries that are indifferent or<br />

hostile to the United States and they operate by taking over computers <strong>of</strong><br />

innocent Internet users and converting them to a botnet <strong>of</strong> servers, thereby<br />

making it impossible to track the origin <strong>of</strong> their email.<br />

The jury has recommended a nine-year prison sentence in this, the first<br />

felony trial <strong>of</strong> a spammer in the United states. On 8 April 2005 the judge<br />

concurred, sentenced Jaynes to nine years in prison, and then set him free on<br />

a one million dollar bond until the appeals process concludes.<br />

Zombie networks <strong>of</strong> computers, known as botnets, are available for purchase<br />

and are advertised over the Internet. There was a Web page with one for<br />

sale—-an Internet shop for zombie networks, with 5,000 machines for $300.<br />

—Eugene Kaspersky, Kaspersky Labs, http://www.kaspersky.com.<br />

More Spam Advice<br />

Most <strong>of</strong> the ideas and advice <strong>of</strong>fered in this inset appear elsewhere in this<br />

chapter, but read and follow them anyway, because this list is important, it<br />

is based on long experience, and may improve your Internet experience.<br />

Spammers want to know who is receiving their messages, so that they<br />

can focus their next campaign on willing or vulnerable victims (popularly<br />

known as suckers). Even if you don’t reply to spam, there are ways for the<br />

spammer to verify that you have received and opened it. Some examples are:<br />

If you have your email program set to preview messages (i.e., to show<br />

you the contents <strong>of</strong> the message in a window below the list <strong>of</strong> email), the<br />

spammer may be able to verify that the email has been received.<br />

If you click on a link to unsubscribe from a mailing list, you have confirmed<br />

to the spammer that your email address is active. The spammer can<br />

then sell your address to others.<br />

Spammers can include a “web bug” in an email. This is a link that<br />

connects to the spammer’s Web site as soon as the email is read or previewed.<br />

If you want to avoid letting spammers know that their mail got through,<br />

follow the advice given here.<br />

How to avoid spam<br />

Use anti-spam s<strong>of</strong>tware, update and run it regularly. This s<strong>of</strong>tware can<br />

significantly reduce unwanted email, especially if it is programmed to receive<br />

feedback from the user/reader and employ it to learn (from the subject line<br />

or sender’s address) which messages are spam.


198 7 Network <strong>Security</strong><br />

Never buy anything advertised by unsolicited email because this only<br />

encourages future spam. Once your email address becomes known to the<br />

seller, it will be added to the huge address lists that are sold to other spammers,<br />

with the result that you’ll receive even more junk email. Worse still,<br />

responding to spam advertises you as a sucker and opens you to further fraud<br />

and identity theft attempts.<br />

If the sender’s name sounds unfamiliar, delete the email without any<br />

hesitation. Most spam is just a nuisance, but <strong>of</strong>ten it includes viruses and<br />

other nasty s<strong>of</strong>tware.<br />

Never respond to spam messages or click on any links in them. Replying<br />

to spam—even to unsubscribe from it—confirms to the spammer that your<br />

email address is a valid one, thereby encouraging more spam.<br />

Opt out <strong>of</strong> any further information or free or attractive <strong>of</strong>fers. When<br />

you fill out forms on the Web, uncheck any checkboxes that <strong>of</strong>fer further<br />

information or <strong>of</strong>fers.<br />

Don’t use the preview mode in your email viewer. Spammers can verify<br />

that a message has been previewed, even if it hasn’t been opened, because<br />

the preview effectively opens the email.) Knowing that you have read their<br />

messages encourages the spammers.<br />

Try to decide whether an email message is spam based only on the<br />

subject line and sender’s name and address. Use the bcc field if you email<br />

many people at once. The bcc (blind carbon copy) field hides the list <strong>of</strong><br />

recipients from any individual recipient. If you include the addresses in the<br />

To field, spammers may harvest them and add them to mailing lists.<br />

Restrict the use <strong>of</strong> your email address on the Internet. Don’t publish it<br />

on Web sites, newsgroup lists or other online public forums. Spammers have<br />

s<strong>of</strong>tware that crawls the internet to find addresses in such places, harvest<br />

them, and add them to mailing lists.<br />

Give your main address only to those you trust (and even then be ready<br />

for your address to be discovered and abused by spammers).<br />

Always have several secondary email addresses ready. (Those are easy<br />

to open at sites such as Yahoo, Gmail, and emailaddresses.com) When you<br />

fill out Web registration forms or surveys on sites with which you don’t want<br />

further contact, use a secondary email address. If the secondary address is<br />

flooded by spam, simply close it. This protects your main address from spam.


7.5 Denial <strong>of</strong> Service<br />

7.5 Denial <strong>of</strong> Service 199<br />

Many Internet attacks try to obtain private data or to damage data. In<br />

contrast, a denial-<strong>of</strong>-service attack aims to shut down an entire network, a<br />

single server, or a particular Web site. The attack tries to prevent legitimate<br />

users <strong>of</strong> a service from using that service. This can be done by one <strong>of</strong> the<br />

following methods:<br />

Flood a network with traffic. This makes it hard or impossible for legitimate<br />

users to send or receive data.<br />

Disrupt connections between two computers. This prevents remote access<br />

to the machines.<br />

Attempt to prevent a particular user from accessing a service.<br />

Disrupt or prevent network access to a particular computer or network.<br />

A hacker may open an account at an ftp site, then store data and retrieve it<br />

repeatedly, thereby consuming disk space and monopolizing network services<br />

at the site.<br />

A denial-<strong>of</strong>-service may be part <strong>of</strong> a bigger attack, but it disables a useful<br />

resource such as a computer or a network. If the resource is private, its owner<br />

may be inconvenienced. If the resource is public, its users may suffer loss <strong>of</strong><br />

service. If the resource is commercial, its owner suffers monetary losses. A<br />

denial-<strong>of</strong>-service is considered an easy type <strong>of</strong> attack. Even a single hacker,<br />

using an old, slow computer and a slow modem may be able to disable (or at<br />

least slow down) faster servers or even whole networks.<br />

There are three types <strong>of</strong> denial-<strong>of</strong>-service, (1) consumption <strong>of</strong> scarce or<br />

nonrenewable resources, (2) destruction or alteration <strong>of</strong> network information,<br />

and (3) physical destruction or alteration <strong>of</strong> network components.<br />

The first type, consumption <strong>of</strong> scarce resources, relies on the fact that<br />

computers and networks need resources such as electrical power, CPU time,<br />

memory space, disk space, and network connections. The easiest resource<br />

for a hacker to consume is network connectivity. It is possible to tie up<br />

the network connections <strong>of</strong> a computer, such that it waits for some data<br />

that never arrives, so it remains hung up. All that the hacker has to do<br />

is start opening a connection to a network server but never complete this<br />

process. The victim server has reserved a port and a data structure for<br />

the connection, but the port remains half open. The hacker (or a group <strong>of</strong><br />

coordinated attackers) can very quickly tie up all the available ports <strong>of</strong> a<br />

server. In the meantime, other users, legitimate or not, who try to establish<br />

connections are denied access.<br />

Such an attack is called a SYN flood. Even someone with only a slow<br />

computer and slow modem can stop a large server very quickly. Here is a<br />

detailed description <strong>of</strong> this threat.<br />

A typical client/server network consists <strong>of</strong> a server (a computer with files<br />

that are useful to a group <strong>of</strong> users) and many clients (users who want access<br />

to those files). When a client tries to connect to the server, both the client<br />

and the server have to execute a connection protocol. They have to exchange


200 7 Network <strong>Security</strong><br />

certain messages that establish the connection. This is true for all the TCP<br />

connections, such as email, telnet, and http.<br />

In its simplest form, the protocol starts when the client sends a SYN<br />

message to the server. If the server is ready to open a connection, it sends<br />

back a SYN-ACK message, expecting to receive an ACK message from the<br />

client. When this is done, communication can start.<br />

In a SYN flood attack, the client simply does not send back the ACK<br />

message (Figure 7.6). This leaves the server waiting, and creates the halfopen<br />

connection. The server maintains a data structure in memory with<br />

information on all the half-open connections and this data structure may<br />

overflow and damage other data in memory. The operating system may<br />

check for overflow and simply ignore any SYN messages in such a case. The<br />

half-open connections then start expiring, creating space in the structure,<br />

but the attacker can continue sending SYN requests that keep the structure<br />

full for a few hours or longer.<br />

Server<br />

SYN<br />

SYN-ACK<br />

(half open) ACK<br />

Figure 7.6: A SYN Flood Attack.<br />

Client<br />

In practice, a hacker uses IP spo<strong>of</strong>ing to perpetrate a DoS attack. The<br />

attacking computer sends the attacked server SYN messages that appear to<br />

come from a legitimate client. The hacker, however, selects a client that’s<br />

unable to respond to the SYN-ACK from the server, which leaves the server<br />

hung up and draws attention to the client.<br />

Any incoming connections established before the attack are still functioning.<br />

Also, the server can send data out while this type <strong>of</strong> attack is going<br />

on. The attack affects only new clients trying to connect to the server.<br />

Consumption <strong>of</strong> scarce resources can also take the form <strong>of</strong> the hacker<br />

using the victim’s resources against the victim. An example is an abuse<br />

<strong>of</strong> the Chargen and Echo services associated with UDP data packets. A<br />

detailed description <strong>of</strong> these services is beyond the scope <strong>of</strong> this book, but<br />

the following paragraphs provide the main facts.<br />

Data packets are sent over computer networks all the time, and sometimes<br />

are lost (dropped). Chargen (character generator, defined in [RFC-<br />

864 04]) was developed to locate the cause for dropped packets. It is a<br />

service that generates random characters either in one UDP packet or in a<br />

TCP session. The UDP chargen server looks for a UDP packet on port 19<br />

and responds with the random character packet.<br />

With TCP chargen, once a connection is established, the server sends<br />

a continuous stream <strong>of</strong> TCP packets until the connection closes. The data<br />

itself is random and is ignored.


7.5 Denial <strong>of</strong> Service 201<br />

Echo (defined in [RFC-862 04]) uses UDP and TCP port 7 and is employed<br />

as a debugging tool. It sends any data packets received from a source<br />

back to that source.<br />

An infiltrator can create a DoS attack by spo<strong>of</strong>ing an IP address and<br />

causing two computers to send packets with random data to each other. In<br />

more detail, by connecting a host’s chargen service to the echo service on the<br />

same or on a different computer, all affected computers may be effectively<br />

choked because <strong>of</strong> the huge number <strong>of</strong> packets produced and sent. In addition,<br />

if several computers are connected in this way, the network connecting them<br />

may also become congested and deny service to any other computers whose<br />

network traffic needs to be forwarded by that network.<br />

An attacker may also generate a huge number <strong>of</strong> data packets and send<br />

them to a target computer. This is a bandwidth consumption attack that<br />

may involve a group <strong>of</strong> intruders.<br />

Even resources that are not related to network services may be consumed.<br />

A hacker may write a program (a virus or a Trojan horse) that only<br />

creates copies <strong>of</strong> itself and starts executing them. Very quickly, the CPU<br />

will have thousands, then millions <strong>of</strong> copies to execute. This not only slows<br />

down the CPU, but may overflow operating system resources. The operating<br />

system switches the CPU from program to program, allocating each program<br />

a time slot. It therefore must have a table <strong>of</strong> all the programs (processes)<br />

currently active in the computer. When new processes are created by the<br />

virus, the table fills up quickly and the operating system must take appropriate<br />

steps to handle the new processes being created all the time. They have<br />

to be placed in a queue, and when this queue overflows, it may corrupt data<br />

in memory.<br />

An attacker may also consume massive amounts <strong>of</strong> disk space by, for<br />

example, generating many email messages, generating errors that have to be<br />

logged, and reading huge files from anonymous ftp servers and writing them<br />

on the disk. When the disk is full, this attack stops, but when the user needs<br />

more disk space later, the operating system issues an error message (disk<br />

full).<br />

An intruder may be able to cause an operating system to crash or to<br />

become unstable by sending unexpected data over the network. A well-known<br />

example <strong>of</strong> such an attack is called the ping <strong>of</strong> death.<br />

The TCP/IP protocol specifies data packets that can range in size from<br />

20 bytes (only a short header with no data bytes) up to 65,536 bytes. The<br />

protocol does not specify how to handle bigger packets, because no one envisioned<br />

an attack based on large data packets. As a result, some operating<br />

systems feature unpredictable behavior when a packet larger than 65,536<br />

bytes is received. The operating system may crash, freeze, or reboot itself.<br />

Hackers have discovered that such an attack is particularly “successful”<br />

when the large data packets are sent as part <strong>of</strong> the Internet control message<br />

protocol (ICMP). ICMP is a component <strong>of</strong> the TCP/IP protocol that<br />

transmits error and control messages between computers. Two specific data<br />

packets specified by ICMP are ECHO_REQUEST and ECHO_RESPONSE. These are<br />

commonly sent by a computer to determine whether a remote computer is


202 7 Network <strong>Security</strong><br />

reachable via the network and are commonly known as “ping,” which gave<br />

this particular attack its name (the name “smurf attack” is also sometimes<br />

used).<br />

The original ping program was written as part <strong>of</strong> UNIX by Mike Muuss<br />

[ping 04] and generated so much interest that the ping concept became part<br />

<strong>of</strong> the Internet protocol.<br />

If your operating system is experiencing frequent crashes with no apparent<br />

cause, it could be the result <strong>of</strong> this type <strong>of</strong> attack.<br />

The obvious defense against the ping <strong>of</strong> death is to patch the low-level<br />

routine that sends data packets to never send large packets, and patch the<br />

routine that receives packets to ignore packets that are too large. In practice,<br />

this should be done by the makers <strong>of</strong> the operating system and issued as a<br />

security patch.<br />

The second type <strong>of</strong> DoS threat involves destruction or alteration <strong>of</strong> network<br />

information. An attacker may be able to change the IP number <strong>of</strong> a<br />

victim’s personal computer, change the registration <strong>of</strong> the operating system,<br />

or change prerecorded telephone numbers used by the modem to call outside<br />

servers.<br />

The third type <strong>of</strong> DoS threat involves physical destruction or alteration<br />

<strong>of</strong> network components. This can be done by an intruder physically appearing<br />

in a computer center and disabling, breaking, or disconnecting cables and<br />

other hardware devices. A hacker may also climb a utility pole and disconnect<br />

telephone lines or television cables, thereby disrupting service to users in the<br />

neighborhood.<br />

Once the DoS threat is understood, there are certain things a security<br />

expert can do to reduce the effect <strong>of</strong> DoS attacks, but most require modifications<br />

<strong>of</strong> the operating system, which can normally be done only by its<br />

manufacturer. Any half-open port should close automatically after a fraction<br />

<strong>of</strong> a second (unfortunately, this may affect legitimate users with a slow communications<br />

line). When the number <strong>of</strong> active processes in memory reaches<br />

a certain limit, the operating system simply ignores any new processes (but<br />

this may backfire when an administrator wants to run a program to monitor<br />

the state <strong>of</strong> the computer). The size <strong>of</strong> disk files may be limited to, say 4 Gb<br />

(but this may prevent users form having legitimate large files, perhaps with<br />

movies).<br />

7.6 Firewall Basics<br />

A firewall is a combination <strong>of</strong> s<strong>of</strong>tware and hardware that decides what kinds<br />

<strong>of</strong> requests and what specific data packets can pass to and from a computer or<br />

a local network. Figure 7.7 illustrates a typical hardware firewall that protects<br />

an entire local-area network. A firewall for a personal computer is normally<br />

fully implemented by s<strong>of</strong>tware, whereas a small network <strong>of</strong> computers <strong>of</strong>ten<br />

found in a home (typically consisting <strong>of</strong> 2–3 computers and a printer) may<br />

use a hardware firewall that’s built into the network’s router.


To Internet<br />

Router<br />

7.6 Firewall Basics 203<br />

Firewall<br />

Figure 7.7: A Firewall in a LAN.<br />

The main task <strong>of</strong> a firewall is to block certain requests for data transfer,<br />

and the firewall makes these decisions based on rules. A firewall starts with<br />

some built-in (default) rules, and its user/owner can add, delete, and modify<br />

rules. We can say that a firewall enforces an access policy through the rules,<br />

and a rule tells the firewall what properties <strong>of</strong> a data packet to examine and<br />

how to decide whether to let the packet through or not.<br />

An effective firewall must be easy to adapt to the needs <strong>of</strong> any user.<br />

Such a firewall should be able to check any property <strong>of</strong> a data packet, should<br />

be able to take various actions depending on what it finds, and should do<br />

all this fast, so as not to slow down the flow <strong>of</strong> data to and from its host<br />

computer or network.<br />

A typical firewall performs the following tasks: (1) limit incoming data,<br />

so that data coming from certain senders (or that has certain properties) will<br />

be blocked, (2) limit outgoing data, so a program will not be able to send<br />

data outside (to call home) without the owner’s knowledge, (3) generate and<br />

save a log <strong>of</strong> all its activities, especially on data packets it has blocked, and<br />

(4) do all this fast and be transparent to the user.<br />

Examples <strong>of</strong> properties <strong>of</strong> data packets are the various fields in the header<br />

<strong>of</strong> a packet, such as device, direction, source and destination addresses, and<br />

source and destination ports. A rule may specify that all packets arriving<br />

at, say, port 5500 should be blocked, or that packets arriving from IP<br />

192.168.1.50 should always be let in.<br />

A firewall rule specifies a set <strong>of</strong> conditions and what action to take when<br />

a condition occurs. A complex rule can check several conditions, while a<br />

simple rule is limited to just one condition. Rules can also be hierarchical.<br />

In such a case, each rule is simple and checks one condition, but a rule can<br />

have several child rules, each checking one condition. This way, each rule is<br />

simple, but the overall performance can be complex.<br />

In general, a rule consists <strong>of</strong> a condition and an action. A condition is<br />

a property, a relationship, and a value. For example, a condition may be<br />

destination port = 5500. If a condition is satisfied, the corresponding action<br />

is taken. Otherwise, the firewall proceeds to the next rule. In a hierarchical<br />

firewall, each condition also specifies its parent and its children (if any). In<br />

such a firewall, if a condition <strong>of</strong> a rule is met, the children <strong>of</strong> that rule will be<br />

tested one by one. If the condition is not met, then the sibling rule (the next<br />

rule on the same level) is checked. If none <strong>of</strong> the conditions <strong>of</strong> the sibling<br />

rules are met, the next rule on the previous level is checked. Figure 7.8


204 7 Network <strong>Security</strong><br />

shows an example <strong>of</strong> a hierarchical tree <strong>of</strong> rules and the order in which they<br />

are checked.<br />

2<br />

3<br />

1<br />

4<br />

7<br />

10<br />

11<br />

5 6 8 9 12 13<br />

Figure 7.8: Hierarchical Firewall Rules.<br />

Certain useful conditions may be unrelated to the content <strong>of</strong> any data<br />

packets. These include properties such as date, day <strong>of</strong> the week, time, parent<br />

idle time, and parent byte count. Experience gained by network administrators<br />

suggests that limiting access to certain Web sites or certain services<br />

during peak times <strong>of</strong> the day may improve overall network performance.<br />

Similarly, many restrictions on network usage may be relaxed or lifted on<br />

weekends.<br />

A sophisticated firewall may maintain simple statistics on the data packets<br />

that satisfy each rule. When a packet satisfies a rule, its idle time is set to<br />

zero, its match count is incremented by 1, and its byte count is incremented<br />

by the size <strong>of</strong> the packet. Such statistics can be useful to the computer owner<br />

and to the network administrator, and can also be used in rules. For example,<br />

if a rule hasn’t detected data from a certain sender within a specified<br />

idle time, the action <strong>of</strong> the rule is executed (even though no data packet has<br />

been received) and may send a probe to the sender or may alert the user that<br />

the sender isn’t responding fast enough.<br />

Examples <strong>of</strong> actions are “delete,” to delete a data packet, “pass,” to let it<br />

through (into or out <strong>of</strong> the computer), “drop,” to drop the connection (in case<br />

<strong>of</strong> a DoS attack that tries to hang up the connection), and “log,” to log the<br />

data packet and then apply the next rule to it. (For incoming data packets,<br />

the “drop” action sends a TCP RESET command to the sender, while for an<br />

outgoing packet the same action sends a small TCP FIN packet.)<br />

The two main components <strong>of</strong> a firewall are the gate and the choke (there<br />

can be several such pairs in a large firewall). The gate transfers or blocks<br />

the data and the choke is the filter that decides which data to block. Those<br />

familiar with firewalls like to compare the gate to a security checkpoint and<br />

the choke to a security guard.<br />

In addition to its main task <strong>of</strong> checking conditions and executing actions,<br />

a modern firewall can perform more sophisticated operations as described<br />

below.<br />

A modern firewall may also include rules for checking the data <strong>of</strong> a data<br />

packet, not just the fields <strong>of</strong> its header. This useful feature is referred to as<br />

content filtering. The user may instruct the firewall to block all incoming (and<br />

14<br />

15<br />

16


7.7 Other Threats 205<br />

perhaps all outgoing) data packets that contain a certain string <strong>of</strong> characters.<br />

This can block common viruses and worms that have already been detected<br />

and analyzed. An advanced firewall should also be able to recognize ethernet<br />

hardware addresses (the so-called MAC addresses), so that the rules would<br />

be able to distinguish between outside traffic and local traffic.<br />

Another advanced task is to limit the amount <strong>of</strong> data (the bandwidth)<br />

allocated to certain users or to certain applications. This way, a firewall can<br />

help in bandwidth management. Consider an ISP that <strong>of</strong>fers cable Internet<br />

access to private users. A private user normally has one or two computers<br />

and generates a small amount <strong>of</strong> traffic, perhaps browsing, sending email,<br />

and transferring files. Also, most <strong>of</strong> this traffic should be incoming. As long<br />

as each user conforms to this pattern, the ISP can support many users with<br />

one cable and can remain competitive. If one user suddenly starts consuming<br />

large amounts <strong>of</strong> bandwidth (perhaps because the user generates spam or has<br />

other commercial activities), other users may notice low speeds and may start<br />

complaining. The ISP may decide to limit the amount <strong>of</strong> data each user can<br />

send, and this task (bandwidth management) should best be performed by<br />

the ISP’s firewall.<br />

Bandwidth accounting is another important task performed by modern<br />

firewalls. The owner/operator <strong>of</strong> a local network needs to know how the<br />

network is used over time. Network usage varies between day and night,<br />

weekdays and weekends, and from month to month. A firewall can provide<br />

information about the amount <strong>of</strong> traffic flowing to and from (and the amount<br />

being blocked at) each computer on the network. When such information is<br />

presented graphically, it can tell an important story. It can tell the network<br />

manager that certain computers are active on weekends, and that the total<br />

network bandwidth is insufficient, say, right before lunch time on Fridays.<br />

Another important picture that a good firewall can paint is the pattern<br />

<strong>of</strong> connection logging. The firewall can keep a record <strong>of</strong> every connection<br />

opened between a computer in the network and an outside address. The<br />

date, time, and amount <strong>of</strong> data transferred in each direction can also be<br />

logged. Such information can provide an audit trail which may be invaluable<br />

when something out <strong>of</strong> the ordinary, such as an attack, occurs. Connection<br />

logging provides a bird’s eye view <strong>of</strong> the usage <strong>of</strong> an entire local network, and<br />

may suggest ways to improve its behavior.<br />

7.7 Other Threats<br />

Here we illustrate how network security involves threats that do not stem<br />

directly from malware.<br />

Router attacks. A router is an important component <strong>of</strong> a computer<br />

network, even a small network used in a home. Even if there is only one<br />

computer, a router is still useful. Routers are designed to be easy to use,


206 7 Network <strong>Security</strong><br />

which also makes them vulnerable to attacks. This has been realized back in<br />

2006, and has been exploited by wrongdoers since (and perhaps also before).<br />

Perhaps the simplest attack on a router is to change the DNS server it<br />

uses. Every time the computer user wants to connect to the Internet, the<br />

URL typed by the user has to be translated to an IP address. There are<br />

many DNS servers that maintain lists <strong>of</strong> pairs (URL, IP), and they supply<br />

the needed IP addresses. Sending the router to a malicious DNS server can<br />

be the key to a whole slew <strong>of</strong> other attacks.<br />

A more complex threat is posed if someone can modify the programs<br />

that run the router. Those programs are firmware and router makers issue<br />

firmware updates from time to time. Imagine someone slipping malware into<br />

a new firmware update issued by the router manufacturer and made available<br />

in its website, waiting to be downloaded by router owners. Once a router<br />

is updated, the malware in it can send its controller copies <strong>of</strong> any data sent<br />

and received by the computer. It can even send executable code to all the<br />

devices attached to the router, all without the router owner’s knowledge.<br />

Even more dangerous exploits are possible, but they may require some<br />

“help” from the user. Both hackers and security researchers have proved that<br />

a router can be attacked and compromised if the user can be enticed to click<br />

on a bad link or if the user neglects to change the router’s password from the<br />

default (usually admin).<br />

Thus, when a router, used or new, is set for the first time before it is<br />

used, the user should do the following:<br />

Reset the router (even a brand new one) to its factory state.<br />

Update the router with the latest firmware available in the manufacturer’s<br />

website.<br />

Change the default password to a new, secure one.<br />

The router may have features to support devices that you don’t have.<br />

Turn those features <strong>of</strong>f.<br />

Turn <strong>of</strong>f all features that allow the device to be administered from anything<br />

other than the device(s) plugged directly into the router.<br />

In addition, consider the following points. Current routers are wireless<br />

and support WPA or WPA2 encryptions. If your router doesn’t support<br />

those, either use it for wired connections only or buy another router. WEP<br />

is a weak encryption whose passwords can be cracked in minutes (information<br />

on how to do this is available on the Internet). WPA should also be<br />

strengthened by setting its key interval to a small value (perhaps not longer<br />

than 20 minutes).<br />

The URL-shortening threat. The Internet is big. There are many<br />

sites and even more files. Each file on the Internet (as also on a computer)<br />

must have a unique name, which is why many URLs are long. Special<br />

URL-shortening services exist to alleviate this problem. Examples are<br />

tinyurl.com, bit.ly, and is.gd. These services are useful but they also<br />

pose a security threat. Someone sends you a short URL that should take you


7.7 Other Threats 207<br />

to an interesting site whose URL is long. Instead, the short URL takes you<br />

to an infected website.<br />

This threat can be prevented by checking a short URL before using it.<br />

Website http://longurl.org/ does just that. You paste a short URL, the<br />

free service checks it and lets you know where this URL really takes you.<br />

There are also many Twitter clients, such as TweetDeck and Mixero, that<br />

have a preview function that shows the long form <strong>of</strong> a shortened URL. Such<br />

services illustrate the compromise between security and convenience. It takes<br />

time to check a short URL, but this is time well spent.<br />

PDF JBIG2 flaw. In 1993, Adobe introduced the portable document<br />

format (PDF), a file format for documents. The format is independent <strong>of</strong><br />

the application s<strong>of</strong>tware, hardware, and operating system used to create or<br />

view the document. A PDF file includes a complete description <strong>of</strong> the document<br />

including text, fonts, illustrations (images in vector graphics format),<br />

and bitmaps. Each type <strong>of</strong> data in the file is compressed with an algorithm<br />

designed specifically for that type. Together with the format specification,<br />

Adobe also released appropriate s<strong>of</strong>tware that it collectively named “Acrobat.”<br />

Adobe Acrobat is a family <strong>of</strong> computer programs designed to view, create,<br />

manipulate, and manage PDF files. Most <strong>of</strong> the programs in this family<br />

are commercial, but Adobe Reader (for viewing and printing <strong>of</strong> PDF files)<br />

is free and can be downloaded from Adobe’s web site. The Acrobat family<br />

and especially the Reader are widely used to present and exchange platformindependent<br />

documents.<br />

In January 2009, a security vulnerability was found in version 9.1 <strong>of</strong><br />

the Reader. A specially-crafted, malicious PDF document can be prepared<br />

such that just opening it, without any user activity or interaction, causes<br />

the Reader to crash and releases a payload that allows an attacker to take<br />

complete control <strong>of</strong> the affected computer.<br />

The problem was a buffer overflow in JBIG2, one <strong>of</strong> the specialized,<br />

efficient compression algorithms used by PDF. JBIG2 was designed for the<br />

compression <strong>of</strong> monochrome (black-and-white) images, such as text and diagrams.<br />

When parsing the contents <strong>of</strong> a JBIG2 stream, a 32-bit value that<br />

represents the number <strong>of</strong> values in a table is used to allocate a heap buffer.<br />

This buffer is then filled with values from the file, without properly checking<br />

the bounds <strong>of</strong> the buffer. This flaw leads to one <strong>of</strong> those well-known<br />

heap-based buffer overflows that can result in arbitrary code execution.<br />

An update to Adobe Reader 9 and Adobe Acrobat 9 was issued in March<br />

2009 (see [apsa 09]). In June, another update was issued for the same two<br />

programs, fixing at least 13 critical flaws reported by outside researchers and<br />

Adobe programmers.<br />

Flash weakness. Adobe Flash is a popular multimedia application for<br />

adding animation and interactivity to Web pages. Originally designed and<br />

implemented in 1996 by Jonathan Gay who called it SmartSketch, the program<br />

was acquired by Macromedia in the same year and its name changed<br />

to Flash. Since 2007, it has been developed and distributed by Adobe Systems.<br />

Flash is commonly used to create animation, advertisements, and other


208 7 Network <strong>Security</strong><br />

videos that are included in Web pages. In July 2009, a weakness (that became<br />

known as zero-day vulnerability) was discovered in Flash player versions 9<br />

and 10 by an anonymous hacker. This became public knowledge, and was<br />

exploited by other miscreants. This weakness makes it possible to include a<br />

malicious, specially-constructed Flash video in a Web site, such that simply<br />

surfing to the site causes harm. The user does not even have to click on<br />

anything; as soon as the video comes up it releases its payload.<br />

Call it a clan, call it a network, call it a tribe, call it a family.<br />

Whatever you call it, whoever you are, you need one.<br />

—Jane Howard


8<br />

Authentication<br />

Billy left home when he was in his teens and went to seek his fortune in<br />

Australia. When he returned home 30 years later as a mature, successful<br />

man, his relatives came to meet him at the dock in Southampton. He later<br />

remarked on this meeting to a friend “after not having seen my mother for<br />

30 years, I have recognized her instantly among my many aunts, uncles,<br />

and other family.” This short (and usually true) story illustrates the use<br />

<strong>of</strong> identification and authentication in real life. We authenticate a person<br />

by looking at them and listening to them, and we can do this even after<br />

a long interval during which the person has greatly changed. A computer,<br />

unfortunately, cannot see its owner/user and has to rely on other means for<br />

authentication, which is the topic <strong>of</strong> this chapter.<br />

The term authentication signifies the process <strong>of</strong> verifying someone’s identity.<br />

The discussion in this chapter concentrates on local authentication,<br />

authentication by biometric means, and password authentication. There is<br />

additional material on consumer authentication and protection on page 268.<br />

Local authentication is verification done when the person is located<br />

nearby and is available for questioning and scrutiny. Local authentication<br />

<strong>of</strong> a person is achieved by something that the person has, knows, or is.<br />

A key is something a person has, so it is a means <strong>of</strong> authentication. A<br />

key authenticates a person to a lock. A password is something that a person<br />

knows, and it authenticates the person to a computer or an ATM machine in<br />

a bank. A fingerprint or a DNA is part <strong>of</strong> a person. It is something a person<br />

is, and it also serves as (biometric) authentication.<br />

D. Salomon, <strong>Elements</strong> <strong>of</strong> <strong>Computer</strong> <strong>Security</strong>, Undergraduate Topics in <strong>Computer</strong> Science,<br />

DOI 10.1007/978-0-85729-006-9_8, © Springer-Verlag London Limited 2010


210 8 Authentication<br />

8.1 Local Authentication<br />

Thus, local identification, where a person tries to use a local computer, is<br />

easy and reliable. It may use attributes such as a key (to open the door to a<br />

protected facility), personal knowledge (a guard at the door may personally<br />

know the user), paper or plastic identification (examined by a guard), fingerprints<br />

(verified by touching a special pad), voice prints (verified by talking<br />

to a special circuit), or facial identification (at present, not very reliable).<br />

In contrast, remote authentication is more complex and is never absolutely<br />

secure. You can send your picture remotely to authenticate yourself<br />

to a person who knows you, but this requires a person who knows you, and<br />

it isn’t completely secure, because a determined perpetrator pretending to<br />

be you can get hold <strong>of</strong> your picture, or wear a latex mask resembling you<br />

and attempt to fool someone watching him on a remote screen. You can<br />

place your finger in a device that reads your fingerprints and sends them to<br />

a remote location for authentication, but such a device can be fooled by a<br />

glove with your fingerprints or by an eavesdropper who intercepts the fingerprint<br />

data on its way and modifies it. Currently, remote authentication is<br />

normally done by passwords (Section 8.3), which is why fraudsters are always<br />

after passwords.<br />

Exercise 8.1: Try to come up with a scheme <strong>of</strong> remote authentication based<br />

on knowing someone personally.<br />

An expensive alternative to the use <strong>of</strong> passwords is a machine that scans<br />

your retina (Section 8.2) and sends a pattern <strong>of</strong> the blood vessels. This is not<br />

absolutely secure because the pattern data can be intercepted on its way, but<br />

encryption can make it virtually secure. A cheap alternative, for cases where<br />

high security is not needed, is a video camera mounted on your computer,<br />

identifying you to a friend. It’s difficult to imagine a hacker who will go to<br />

much trouble trying to impersonate both your image and your voice.<br />

8.2 Biometric Techniques<br />

The term biometric (from the Greek for bio=life, metric=degree) refers to<br />

authentication by means <strong>of</strong> biological (more accurately, physiological or behavioral)<br />

features.<br />

The first effective biometric technique was the anthropometric test (anthropometry<br />

means literally “measurement <strong>of</strong> humans”) designed by Alphonse<br />

Bertillon in 1883. It was the first scientific method widely used to identify<br />

criminals. It was based on precise measurements <strong>of</strong> certain lengths and widths<br />

<strong>of</strong> the head and body. It was later shown to be inferior to fingerprinting and<br />

was supplanted by it.<br />

At the time <strong>of</strong> writing (early 2010) the use <strong>of</strong> biometric techniques for<br />

remote authentication and identification is becoming more and more popular.<br />

Technologies, devices, and algorithms are becoming more sophisticated, costs<br />

are slowly dropping, and usage is getting easier and less intrusive. What was


8.2 Biometric Techniques 211<br />

until recently the domain <strong>of</strong> science fiction and spy novels is fast becoming a<br />

hard reality. Biometric techniques use various human characteristics to identify<br />

a person, but such characteristics are difficult to measure, they vary all<br />

the time, and some may be faked. Fingerprinting is an illustrative example.<br />

Each person has unique fingerprints, which is why this attribute has been<br />

used for decades to identify criminals and link them with crimes. Even more,<br />

we use the term “fingerprint” in many contexts, such as “fingerprinting by<br />

DNA analysis” or “CRC is the fingerprint <strong>of</strong> a file.” However, a person’s<br />

fingerprints vary during the day with changes in temperature, humidity, skin<br />

moisture and oiliness, and cuts and bruises. The precise image <strong>of</strong> fingerprints<br />

therefore varies, which is why fingerprint identification should be based on invariant<br />

features <strong>of</strong> the fingerprints, not on their actual image. In addition to<br />

fingerprints, biometric identification devices employ other biological features<br />

found in the face, eyes, voice, gait, body temperature, and even signature<br />

(yes, physical signature on paper) and typing habits.<br />

The term identification refers to the first time a person is presented to<br />

a security device. Once the device registers the biometric parameters <strong>of</strong> the<br />

person, every subsequent visit <strong>of</strong> that person is for the purpose <strong>of</strong> authentication.<br />

A simple example is biometric identification and authentication <strong>of</strong><br />

the owner <strong>of</strong> a personal computer. The first time a PC is turned on, it considers<br />

whoever is at the keyboard its owner. It asks for a name, a password,<br />

for other personal items such as an address, telephone number, and email<br />

address, and finally, for a fingerprint, an iris scan, or other biometric data<br />

(assuming that the proper sensing devices are hooked up to the computer).<br />

From then on, the computer associates this data with its owner and uses it<br />

to authenticate the owner on subsequent sessions.<br />

An important feature <strong>of</strong> any security procedures and devices, but especially<br />

<strong>of</strong> techniques for biometric authentication, is scalability. Employees<br />

come to work every day (at least, they should), while a visitor shows up<br />

only sporadically. Authenticating an employee should therefore be quicker,<br />

simpler, and less intrusive than authenticating an outside visitor.<br />

The following is a short description <strong>of</strong> a few popular biometric authentication<br />

technologies.<br />

Fingerprints. The print <strong>of</strong> even one finger is a complex image and<br />

it is known that several prints <strong>of</strong> the same finger produce slightly different<br />

images. However, the image <strong>of</strong> a fingerprint has certain features that either<br />

don’t vary or change only rarely from image to image. Figure 8.1 shows<br />

two examples <strong>of</strong> fingerprints and four such features, ridges (one is marked<br />

in part (b)), furrows (the valleys between ridges), minutiae points (marked<br />

by circles, mostly in part (a)), and sweat pores (the triangles in part (b)).<br />

Minutiae are the points at the end <strong>of</strong> ridges, the intersection <strong>of</strong> two ridges,<br />

and where a ridge splits.<br />

One approach to comparing two images <strong>of</strong> fingerprints is to find the<br />

minutiae points and then map their relative placement on the finger. If two<br />

such maps are sufficiently similar, the fingerprints are deemed identical. The<br />

downside <strong>of</strong> this approach is that many fingerprint images are <strong>of</strong> low quality,<br />

which makes it difficult to locate enough minutiae points with high precision.


212 8 Authentication<br />

Δ<br />

Δ<br />

Δ<br />

Δ<br />

minutiae ridge<br />

(a) (b)<br />

Figure 8.1: Examples <strong>of</strong> Scanned Fingerprints.<br />

Also, in rare cases two completely different fingerprints may have very close<br />

maps <strong>of</strong> minutiae points. The final decision should therefore be made by<br />

a person. This is fine in forensic cases, but cannot be used by a computer<br />

trying to authenticate someone automatically.<br />

Another approach to comparing two fingerprint images is to use statistical<br />

correlations. An origin point is selected and the line segments connecting<br />

it to each minutiae point are measured and become vectors. Statistical correlation<br />

is then computed between the two sets <strong>of</strong> vectors in the two images.<br />

This approach produces accurate results, but is very sensitive to the orientations<br />

<strong>of</strong> the two fingerprint images being compared. Even the smallest<br />

rotation changes all the vectors and corrupts the result <strong>of</strong> the test.<br />

(Privacy advocates and activists object to fingerprints being collected<br />

and saved for authentication purposes, even by governments, on grounds <strong>of</strong><br />

privacy. See, for example, [openmarket 10].)<br />

Iris scans. The iris <strong>of</strong> the human eye (Figure 8.2, plural is irides) is<br />

the colored ring that surrounds the pupil. It is a muscle (more accurately,<br />

a muscular structure) that varies the pupil’s size, thereby controlling the<br />

amount <strong>of</strong> light that enters the eye. Note that the iris is not the retina.<br />

Iris<br />

Retina<br />

Cornea Lens<br />

Optic nerve<br />

Iris<br />

Figure 8.2: The Main Parts <strong>of</strong> the Eye.


8.2 Biometric Techniques 213<br />

An iris scan records features such as striations, pits, rings, furrows, and<br />

freckles in the iris. The scan results in more than 200 such features that<br />

can be used for comparison <strong>of</strong> two images and thus for authentication. This<br />

is much more information than is provided by fingerprints. An iris scan is<br />

unique not just for a person but for the eye. The scans <strong>of</strong> the left and right<br />

eyes <strong>of</strong> a person are different. An iris scan does not require special equipment<br />

and is done with a video camera. The camera doesn’t even have to be close to<br />

the eye, as is the case with retinal scan, and works fine even with eye glasses.<br />

The scan itself is a quick and simple procedure. The person being scanned<br />

has to be placed such that he sees his eye reflection in the camera from a<br />

comfortable distance, and a video image is taken. The only problem with<br />

this method is unwilling individuals. Also, there is no effective algorithm<br />

to compress the resulting images efficiently, which is why iris scan has large<br />

storage requirements.<br />

Exercise 8.2: A fraudster A obtains access to the iris scan <strong>of</strong> a potential<br />

victim B. In order to fool the camera and get authenticated as B, A prepares<br />

an artificial eye with B’s iris scan and hires C, a person with a glass eye, to<br />

replace his eye and get authenticated. How can we sense and defeat such an<br />

attempt?<br />

The first glass eye was made in 1832 by the glassblower Ludwig Müller-Uri<br />

in Lauscha, Germany. Although artificial eyes can be manufactured from<br />

plastic today, no other material is said to be equal to a glass eye created<br />

from a special blend <strong>of</strong> Cryolite glass.<br />

It may come as a surprise to most that the basic idea <strong>of</strong> using patterns<br />

in the eye for personal identification and authentication is not new. It was<br />

originally proposed in 1936 by Frank Burch, an ophthalmologist. Lacking<br />

computer technology, this idea was impractical and was way ahead <strong>of</strong> its<br />

time. Several <strong>of</strong> the James Bond movies in the 1980s “used” this technology,<br />

but it wasn’t until 1994 that practical algorithms for comparing iris scans<br />

were developed by John Daugman. It has been shown that the chance <strong>of</strong><br />

false authentication by these algorithms is extremely low.<br />

The first application <strong>of</strong> iris scan was as part <strong>of</strong> the booking procedure<br />

to identify prisoners. Currently, iris scan is used in several airports to authenticate<br />

frequent passengers and speed up their pre-boarding check. In the<br />

future, this technique may be used by banks to authenticate ATM transactions.<br />

Sarn<strong>of</strong>f, a subsidiary <strong>of</strong> SRI international [sarn<strong>of</strong>f 10], is one <strong>of</strong> the companies<br />

that promote iris scans and make equipment for scanning and authenticating.<br />

Retina scan. The retina is a thin layer <strong>of</strong> cells at the back <strong>of</strong> the eyeball<br />

<strong>of</strong> vertebrates and some cephalopods (Figure 8.2). The cells (rods and cones)<br />

in the retina are photoreceptors; they convert light to neural signals. The<br />

retina is rich in blood vessels and it is the structure <strong>of</strong> these blood vessels<br />

that is unique to the person and can serve as biometric identification and<br />

authentication.


214 8 Authentication<br />

A scan <strong>of</strong> the retina is done in low light and requires a special optical<br />

coupler that can read the patterns in the retina at high resolution. Eye<br />

glasses have to be removed, the head has to be kept still, and the eyes must<br />

be focused on the light for a few seconds.<br />

The high reliability <strong>of</strong> this technique is due to the fact that current<br />

technology cannot duplicate the retinal pattern in another eye, even in a<br />

glass eye.<br />

At present, this authentication technique is perhaps the most secure <strong>of</strong><br />

all the biometric methods. It is also fairly expensive, so it is employed mostly<br />

for high-end security applications, such as identification and authentication<br />

in highly-secure rooms and facilities <strong>of</strong> the military and in nuclear power<br />

plants. Recently it has been used in prisons, for ATM identity verification,<br />

and in the prevention <strong>of</strong> welfare fraud.<br />

As can be expected, many view this type <strong>of</strong> scan as potentially harmful<br />

to the eye and object to it on this basis.<br />

Face recognition. Wouldn’t it be nice if you could stand before a door<br />

to a secure room and let a camera scan your face. A computer would then recognize<br />

it and unlock the door. Face recognition is still at its infancy because<br />

the human face is so complex and there are no simple tests to distinguish<br />

between faces. Our brain is very different from a computer in this respect.<br />

When John Doe moves to the antipodes and comes back for a visit after<br />

an absence <strong>of</strong> 20 years, he instantly recognizes his old mother, even though<br />

her face has changed so much during his absence (partly from getting older<br />

but mostly from missing John, who rarely wrote). <strong>Computer</strong>s, however, are<br />

notoriously unreliable in tasks that require this kind <strong>of</strong> intelligence.<br />

Consumer and privacy advocates object to any large-scale implementation<br />

<strong>of</strong> face recognition because <strong>of</strong> the ways this immature technology has<br />

been used so far. In several instances, local governments placed cameras in<br />

crowded places (such as a stadium during a crucial ball game) in an attempt<br />

to match faces in the crowd to faces in databases <strong>of</strong> criminals, terrorists, or<br />

just plain suspects. Regardless <strong>of</strong> the legal or ethical considerations involved,<br />

these experiments failed technically. Technology simply isn’t up to such a<br />

task yet.<br />

Smart cards. In the 1950s and 1960s, input was fed to computers from<br />

punched cards. Then came terminals, followed by smart terminals. In a similar<br />

development, credit cards first appeared in the 1950s and were followed<br />

by smart cards in the 1970s (but mostly since the mid 1980s). A traditional<br />

credit card has a narrow magnetic stripe with a little information recorded.<br />

A smart card (Figure 8.3) is a plastic card that looks like a credit card, but<br />

has an integrated circuit (a chip) embedded that gives it its smartness. The<br />

chip is either a microprocessor (with some internal memory) or just a memory<br />

unit with non-programmable logic.<br />

A microprocessor chip in a smart card operates on 8, 16, or 32-bit words<br />

and has memory capacity in the range <strong>of</strong> 300 bytes to 32 Kbytes. It has a<br />

primitive operating system and can download programs and run them. A<br />

memory-only chip is less expensive than a microprocessor, but is less secure<br />

(lacking the execution logic <strong>of</strong> a microprocessor, a memory chip depends on


8.2 Biometric Techniques 215<br />

ISSUER NAME<br />

OWNER NAME<br />

BANK CARD<br />

Figure 8.3: A Smart Card.<br />

the card reader for its security). Its capacity typically ranges from about 100<br />

to about 16,000 bits.<br />

The chip has tabs or connectors on its surface, through which a special<br />

device (a card reader) can read its data and status and send it commands<br />

and new data. Such a card has to be inserted into the device to achieve a<br />

connection. Many newer chips are contactless; they can be accessed remotely,<br />

without any physical touch, by electromagnetic waves. Such a card has an<br />

antenna and can communicate when brought into the range <strong>of</strong> the reader<br />

(typically a few inches). Some contactless cards may have batteries but most<br />

get their power from the reader’s antenna. A contactless card is handy in<br />

applications where speed is important, such as in a subway.<br />

A hybrid card has two chips, one with contacts and the other contactless.<br />

The two are not connected and each can serve a different purpose. A combi<br />

card has one chip with both contact and contactless interfaces. This type<br />

is supposed to have high security and is expected to be adopted mostly by<br />

financial institutions.<br />

Smart cards are made by several manufacturers, so there is a need for<br />

a standard. The basic smart card standard is titled the ISO 7816 series,<br />

parts 1–10. This standard is derived from the financial ID card standards<br />

and details the physical, electrical, mechanical, and application programming<br />

interface to a contact-chip smart card.<br />

Currently, smart cards are especially popular in Europe where they are<br />

used as credit and debit cards, telephone cards, bank cards, and as passes for<br />

mass transportation. One <strong>of</strong> the many companies that make smart cards and<br />

associated equipment is [gemalto 10]. The smart card government handbook<br />

[smartcardalliance 05] is a comprehensive reference on smart cards and includes<br />

an overview <strong>of</strong> smart card and related technologies and implementation<br />

guidance for government organizations planning smart card applications.<br />

Smart cards have many applications, the most important <strong>of</strong> which are<br />

listed here.<br />

Controlling a mobile telephone. A smart card contains a telephone number,<br />

password, and account information. Without a card, the telephone is<br />

not assigned a number and is unusable. Once the card is inserted into the


216 8 Authentication<br />

telephone, it (the telephone) knows its own number and recognizes the user.<br />

The telephone stores billing information and frequently-used numbers on the<br />

card.<br />

A satellite dish television uses a smart card to store account and security<br />

data. The account information tells the card what channels the user<br />

subscribes to.<br />

More and more credit and debit cards are issued as smart cards. The<br />

microprocessor in the card provides security and stores a list <strong>of</strong> the most<br />

recent transactions.<br />

Several countries with national health programs have adopted smart<br />

cards for their members.<br />

Many countries issue smart cards for the use <strong>of</strong> pay telephones.<br />

In addition to these, other applications for smart cards include computer/Internet<br />

user authentication and nonrepudiation, merchants’ gift cards,<br />

physical access to secure facilities, hotel cards (that act as both chits and key),<br />

mass transit passes, electronic road toll, product tracking, national ID cards,<br />

drivers licenses, and passports.<br />

8.3 Passwords<br />

Passwords provide strong (although not absolute) and inexpensive protection<br />

in many situations. When someone becomes a legitimate user <strong>of</strong> a network<br />

or a network service, both a login name and a password are issued by the<br />

network owner or the service provider (the issuer). A person trying to log into<br />

a remote computer or into an account has to type both items for complete<br />

identification. Even a simple transaction, such as purchasing an item online,<br />

<strong>of</strong>ten requires opening an account and selecting a password. Once a password<br />

is issued, the user can change it. In fact, it is good practice to change<br />

passwords on a regular basis.<br />

Passwords are currently the only inexpensive, popular, and practical way<br />

for a person to identify himself remotely (there have recently been experiments<br />

in remote identification and authentication using an array <strong>of</strong> personal<br />

questions, but the reliability <strong>of</strong> this technique is still unknown). Smartcards<br />

and biometric authentication (Section 8.2) are becoming more common, but<br />

are still too expensive or unreliable for general use. A password sent on a<br />

communications line should, <strong>of</strong> course, be encrypted, and this issue is discussed<br />

in the document on cryptography, available in the book’s Web site.<br />

Password identification is a simple technique, but it involves two types <strong>of</strong><br />

risk.<br />

One risk is that the password is kept somewhere in the issuer’s computer<br />

and may be located and stolen. The solution is to encrypt all passwords and<br />

keep only the encrypted results. The issuer deletes the original password<br />

and keeps a file with the login names and encrypted passwords <strong>of</strong> all the<br />

users. Encryption involves a key and all the passwords are encrypted with


8.3 Passwords 217<br />

the same key. Normally, encryption methods are symmetric; the same key<br />

used to encrypt data is also used to decrypt it. In order to keep the passwords<br />

secure, even the person who has the encryption key and who encrypts the<br />

passwords should not be able to decrypt them. Thus, for better security,<br />

password encryption should be done with a one-way encryption algorithm,<br />

where no decryption is possible.<br />

This insert discusses the concept <strong>of</strong> one-way encryption and how UNIX<br />

handles passwords. Despite the “UNI” in its name, UNIX (in its current<br />

flavors) is a multiuser operating system. A computer running UNIX has a<br />

special password file, where the names and passwords <strong>of</strong> all the users are<br />

stored. Not surprisingly, this file was the main target <strong>of</strong> hackers, because the<br />

list <strong>of</strong> all user names and their passwords made the hacker as powerful as the<br />

administrator. At a certain point, UNIX started using encrypted passwords.<br />

This change in UNIX reflects the difference between keeping information<br />

secret and opening it up. When the passwords are not encrypted, they have<br />

to be kept secret and can therefore be stolen or compromised by insiders as<br />

well as by outsiders. When they are encrypted, they can be open to anyone.<br />

The password file can be read by anyone and no one can go back from an<br />

encrypted password to the original password. Bitter experience, however,<br />

has taught UNIX administrators and implementors that it is best to keep the<br />

passwords encrypted and the password file as inaccessible as possible. (In<br />

other words, combine the benefits <strong>of</strong> secret policy and open policy.) Current<br />

UNIX versions have a password file where the passwords are encrypted with<br />

a special, one-way encryption method. An entry in this file has the following<br />

fields:<br />

Login name. This is a short name, such as johndoe, assigned by the<br />

UNIX administrator when a new account is opened. It cannot be changed<br />

by the user.<br />

Encrypted password. This is a string <strong>of</strong> bits, the result <strong>of</strong> encrypting the<br />

password. When a new user account is opened, a standard password, such as<br />

user, is assigned, and the user is supposed to change it as soon as possible<br />

to a secure password.<br />

A short string <strong>of</strong> bits that’s referred to as salt. This is appended to the<br />

password before it is encrypted, to make a dictionary search <strong>of</strong> passwords<br />

more difficult. The salt is discussed below.<br />

A user identification number. This is the number used by UNIX to<br />

identify the user. It is easier to use this number, which is an integer, than<br />

to use the login name, which is a string <strong>of</strong> characters. (Each character has<br />

a character code, so a string <strong>of</strong> characters can be considered a number, but<br />

this number is normally too long and therefore inconvenient for the operating<br />

system.)<br />

The group identification number. This identifies the user as a member<br />

<strong>of</strong> a group <strong>of</strong> users for file access purposes. Each file has a 9-bit access


218 8 Authentication<br />

permission code that specifies what kind <strong>of</strong> access (read, write, and execute,<br />

see page 75) the file’s owner, the group members, and the rest <strong>of</strong> the users<br />

have.<br />

The real name <strong>of</strong> the user. This is a long string that identifies the real<br />

user, in case users have to be contacted personally.<br />

The name <strong>of</strong> the user’s directory. This is used by UNIX to locate the<br />

user’s files.<br />

Next, we discuss ways to implement one-way encryption and we start<br />

with a simple permutation. Assume that a password is a string <strong>of</strong> exactly<br />

eight characters. In ASCII, each character has an 8-bit code, so the password<br />

becomes a string <strong>of</strong> 64 bits. Such a string can be securely encrypted by<br />

permuting it, because there are 64! permutations <strong>of</strong> 64 bits. Such encryption<br />

is not one-way because every permutation has an inverse, but this idea can<br />

be refined and extended in various ways. One extension is to apply the same<br />

permutation n times, where n is derived from the original password. A hacker<br />

trying to reconstruct the original password cannot compute n and therefore<br />

cannot perform the reverse permutations. A simple way <strong>of</strong> computing n is<br />

to start with the numeric codes <strong>of</strong> the individual characters, add the codes,<br />

and retain some <strong>of</strong> the bits <strong>of</strong> the sum.<br />

Here is an example using 4-character (equivalent to 32 bits) passwords.<br />

As our permutation we select a 1-bit rotation to the left. We start with the<br />

string qP3$ as our password. The four ASCII codes are 7116 = 01110001,<br />

5016 = 01010000, 3316 = 00110011, and 2416 = 00100100 and their sum<br />

is 100011000. The rightmost four bits <strong>of</strong> the sum are 1000 = 8, so we set<br />

n to 8 and apply our permutation eight times. Rotating the original 32-bit<br />

string 01110001|01010000|00110011|00100100 eight times to the left produces<br />

01010000|00110011|00100100|01110001. (Rotation is not a secure permutation,<br />

but it makes for a simple example).<br />

This example isn’t secure, because the hacker can try all the possible<br />

values <strong>of</strong> n. Starting from n = 0, the hacker has to perform the four simple<br />

steps: (1) Perform the inverse permutation on the encrypted password, obtaining<br />

a character string S. (2) Add the ASCII codes <strong>of</strong> the characters <strong>of</strong><br />

S. (3) Retain the four rightmost bits <strong>of</strong> the sum. (4) Compare it to n. If the<br />

two don’t agree, increment n by 1 and repeat the steps.<br />

We clearly need a more complex encryption method. We can start with<br />

the original password, compute another number m (perhaps by performing<br />

the exclusive-or <strong>of</strong> the ASCII codes, instead <strong>of</strong> adding them arithmetically),<br />

then execute the original encryption method m times, using a different permutation.<br />

We can then compute another number p and execute the original<br />

encryption method p times, using a third permutation. This can be repeated<br />

x times, where x is also computed from the original password.<br />

Exercise 8.3: Suggest another variation <strong>of</strong> the permutation approach to a<br />

one-way encryption algorithm.<br />

More sophisticated approaches to one-way encryption use hash methods.<br />

Several secure hash algorithms are currently known and some are designated


8.3 Passwords 219<br />

SHA (secure hash algorithm). The terms “digest” and “digital signature”<br />

are also commonly used because these algorithms are employed to generate<br />

digital signatures. Popular hash methods are SHA-256 [csrc 04] and MD5<br />

[MD5 04].<br />

Like any encryption algorithm, any method we choose has to go through<br />

public scrutiny for a certain length <strong>of</strong> time before we can be reasonably certain<br />

that it is secure and cannot be broken by computer analysis. Even after years<br />

<strong>of</strong> use, someone may find a way to break a one-way encryption, which is why<br />

it is wise to combine one-way encryption with an inaccessible password file.<br />

UNIX uses a one-way encryption method based on the data encryption<br />

standard (DES), because there is no known way to invert this encryption<br />

method in a reasonable time. Because <strong>of</strong> the popularity <strong>of</strong> DES, there are<br />

hardware circuits that perform fast DES encryption and decryption, which is<br />

why UNIX uses a variant <strong>of</strong> DES. <strong>Computer</strong>s, however, are becoming faster<br />

all the time, so at a certain point it will be possible to break UNIX encryption<br />

by brute force in a short period <strong>of</strong> time. This is why UNIX administrators<br />

and developers have been trying for the last two decades to defend against<br />

fast implementations <strong>of</strong> their encryption method.<br />

One idea to protect UNIX password encryption is to have a shadow<br />

password file. The visible password file will be just a fake, placed in the<br />

computer to bait any would-be attackers, while the real password file will<br />

be hidden. In addition, any repeated login attempts will be logged and<br />

scrutinized by human operators as soon as possible. Unfortunately, past<br />

experience has shown that the bad guys will catch on to any such scheme<br />

very quickly.<br />

Another proposal is to modify the existing DES version used by UNIX<br />

and simply add rounds to it, to make it much slower to crack by brute<br />

force. The original DES algorithm computes 16 rounds, but increasing this<br />

to 1000 rounds may make it secure for current computers. If this approach<br />

proves useful, the number <strong>of</strong> rounds may simply be increased periodically as<br />

computers get faster.<br />

The concept <strong>of</strong> salt has already been mentioned. Salt is a short, random<br />

string <strong>of</strong> characters appended to a UNIX password to make it more difficult to<br />

find valid passwords. When a user enters a password during a login procedure,<br />

the salt is appended to the password and the resulting string is encrypted<br />

and is compared to the encrypted password in the password file. This makes<br />

it more difficult for a hacker to crack passwords with the dictionary method,<br />

because if two users select the same password, say sesame, their passwords<br />

will have different salts appended and may become, for example, sesameU0<br />

and sesameF2. If a word in a dictionary encrypts to sesameU0, then only one<br />

<strong>of</strong> the two sesame passwords has been compromised (the dictionary attack<br />

is discussed below).<br />

Another password risk is that a user may forget a password. This is<br />

common because a computer user normally has several (sometimes many)<br />

passwords. If the password protects a resource that’s important to the user,<br />

the user simply loses access to the resource. An example is disk space allo-


220 8 Authentication<br />

cated by a company to users (free or paid for). If a user loses his password,<br />

he loses all his data files. His account is erased, and a new password is issued.<br />

The company does not keep the original passwords, only the encrypted ones,<br />

and they cannot be decrypted.<br />

A solution recommended by some security experts is to list all a user’s<br />

passwords in a file and encrypt that file by a strong encryption utility. The<br />

encryption code is another password that the user has to memorize, but this<br />

single password provides insurance against losing any other password. There<br />

is, unfortunately, a human factor that comes into play in such a situation.<br />

The user may change passwords, delete old ones, and add new ones, and<br />

“forget” to update the encrypted file because <strong>of</strong> laziness.<br />

(The Macintosh operating system has a built-in utility called Keychain<br />

where passwords and other sensitive information can be stored and encrypted.<br />

Of the many password encryption utilities available for the Windows operating<br />

system, only the shareware Password Keeper 2000 is mentioned here.<br />

We quote [gregorybraun 05]: “This utility lets you store your frequently-used<br />

passwords as well as edit and print them. Each password file that you create<br />

can contain up to 1,000 account entries. Password Keeper data files are<br />

stored in an encrypted format to prevent unauthorized users from accessing<br />

and viewing them.”)<br />

However, if the passwords are important to the issuer, they may be kept<br />

by the issuer (at the risk <strong>of</strong> being compromised by an employee or an outsider)<br />

and a forgotten password may be sent to the user upon verification. An<br />

example is an online business with a large customer base that wants to make<br />

it both safe and convenient for online customers to order merchandise. When<br />

a new user opens an account, the merchant’s computer issues a user (login)<br />

name and a password and also asks for other identification, such as an email<br />

address, a birthdate, and a personal question and its answer. When the user<br />

declares a lost password, the merchant’s computer asks the personal question.<br />

On receiving the correct answer, the computer sends the password to the<br />

email address originally provided by the customer. This method provides<br />

reasonable security, but requires the user to remember that the email address<br />

is kept by the merchant. If the user changes his email address, he has to log in<br />

with his password, then notify the merchant’s computer <strong>of</strong> the new address.<br />

It’s no wonder that hackers try to crack passwords. With a password at<br />

hand, a hacker can easily log into an account and cause much damage. The<br />

account owner may later have a hard time recovering from the damage and<br />

convincing other victims that he is not responsible for the misuse <strong>of</strong> his account.<br />

One way to crack a password is to guess it. Statistics (more precisely,<br />

unfortunate statistics) tells us that many users select easy-to-remember passwords<br />

that are also easy to guess. The most common bad passwords are listed<br />

here and should be avoided.<br />

A valid word in your language. Something that appears in a dictionary.<br />

A word spelled backwards.<br />

Any names, whether first, last, street names, or place names.


Any names with the first letter in uppercase.<br />

8.3 Passwords 221<br />

A car license plate number (even if it is not your car).<br />

A number. Avoid using telephone numbers, government identification<br />

numbers, such as the social security number in the United States, dates such<br />

as someone’s birthdate, house numbers, or room numbers.<br />

Any string similar to your login name.<br />

For example, if the login name is “abc,” then “abc,” “cba,” and “abcabc”<br />

are excellent candidates for [guessing] passwords.<br />

—F. T. Grampp and R. H. Morris [Grampp and Morris 84].<br />

[Grampp and Morris 84] looked at more than 100 password files in various<br />

UNIX-based computers and discovered that 8–30% <strong>of</strong> all the passwords<br />

in those files were either identical to the account (login) name or could be<br />

guessed by using simple variations <strong>of</strong> it. Section 3.4 lists the tests performed<br />

by the Internet worm to crack passwords in computers it invaded.<br />

Exercise 8.4: Search the Internet, the computer security literature, and<br />

your operating system for default passwords (passwords that come with an<br />

operating system or with other s<strong>of</strong>tware and should be replaced immediately).<br />

The dictionary attack. An alternative method <strong>of</strong> password cracking is<br />

the dictionary attack. Imagine a hacker breaking into the main computer <strong>of</strong><br />

a large company and copying its password file. The file contains many login<br />

names and encrypted passwords. The hacker cannot decrypt the passwords,<br />

but he can use a dictionary <strong>of</strong> words (without their definitions) and with the<br />

help <strong>of</strong> a fast computer encrypt every word in the dictionary and compare the<br />

encrypted result to all the encrypted passwords in the stolen password file<br />

(Figure 8.4). If a user has selected a password<br />

that appears in the dictionary, this method<br />

will identify it. This method was actually used<br />

by the German hacker caught by Clifford Stoll<br />

[Stoll 88, 90, 04]. An obvious defense is to<br />

make the password file readable only by the<br />

administrator (or super user) <strong>of</strong> the network<br />

or organization, but a hacker may sometimes<br />

crack an administrator’s password or find a<br />

way to gain super user status.<br />

A more general password cracking method is a hybrid dictionary attack.<br />

It goes over all the words <strong>of</strong> a dictionary, encrypts every word, and then<br />

encrypts the word after appending a number to it. Thus, if the word attack<br />

has been encrypted and tried, the method tries attack1, attack2, and so<br />

on. This cracking method is based on human nature. When a user is told to<br />

change a password periodically, many tend to simply append a digit to their<br />

existing password.


222 8 Authentication<br />

doorsill<br />

doorstead<br />

doorstep<br />

doorstone<br />

doorstop<br />

doorward<br />

doorway<br />

doorweed<br />

doorwise<br />

dooryard<br />

Dictionary<br />

p{;K8&D3<br />

Figure 8.4: A Dictionary Attack.<br />

n6mm4uh6<br />

s9%vbY3=<br />

0)*y&{Lb<br />

7DeS#u?'<br />

*7hYRz@1<br />

:lM5ds#e<br />

@!tgI*76<br />

/":lgTc$<br />

Gy&jnv$s<br />

Hba)*75><br />

Passwords<br />

An even more general dictionary attack is to try a brute force approach<br />

where every combination <strong>of</strong> letters and digits (up to a certain length) is tried,<br />

encrypted, and compared to all the encrypted passwords in the password file.<br />

In English, there are 26 letters and 10 digits, so there are 36 passwords<br />

<strong>of</strong> length 1, 36 2 passwords <strong>of</strong> length 2, and so on. These numbers grow<br />

very rapidly, so even the fastest computer may not be able to try all the<br />

passwords <strong>of</strong> up to, say 12 characters, but many users tend to use short, easy<br />

to remember passwords, and these may be cracked in this type <strong>of</strong> attack.<br />

Along the same lines, don’t use the reverse <strong>of</strong> a word found in a dictionary,<br />

or the word preceded or followed by one digit.<br />

As a result, the following guidelines should be kept in mind, when selecting<br />

a secure password:<br />

Select a reasonable length, at least 6 to 8 characters.<br />

Have several unique characters. Something like mmmmm is easy for someone<br />

looking over your shoulder to memorize.<br />

Make sure you have at least one digit and at least one uppercase and<br />

one lowercase letter. Punctuation marks should be included whenever possible,<br />

but some operating systems restrict the choice <strong>of</strong> those characters. A<br />

password can be made robust by including in it special characters such §, ,<br />

†, and ‡. These can be typed with the help <strong>of</strong> special modifier keys found on<br />

most keyboards.<br />

The password should not be a recognizable word (even in a foreign<br />

language). Remember, there are password cracking programs that can go<br />

through millions <strong>of</strong> words in seconds.<br />

It should not be a name, address (even old), telephone number, social<br />

security number, passport number, car license plate number, or abbreviations<br />

<strong>of</strong> the above.<br />

Don’t select mathematical or physical constants such as the digits <strong>of</strong> π<br />

or e, even in reverse.<br />

Don’t select letters or digits that are consecutive on the keyboard, such<br />

as qwerty.


8.3 Passwords 223<br />

The name <strong>of</strong> the current month is similarly an especially bad choice for<br />

a password.<br />

Case study. As these words are being written, in late April 2010, the<br />

trial <strong>of</strong> David C. Kernell is under way in Knoxville, Tennessee. The former<br />

University <strong>of</strong> Tennessee student is accused <strong>of</strong> identity theft, mail fraud, and<br />

two other felony charges. Specifically, he is accused <strong>of</strong> breaching the Yahoo<br />

email account <strong>of</strong> the then vice-presidential candidate Sarah Palin. He managed<br />

to guess the correct answers to the security questions required by Yahoo<br />

(Palin’s birth date, zip code, and where she first met her husband), received<br />

permission to reset her password, and posted the new password, as well as her<br />

phone number, on an Internet discussion board. The prosecution in the case<br />

claimed that this caused a major disruption that impacted Palin’s personal<br />

life and threatened what would become a failed presidential campaign. The<br />

defense claimed that this was simply a college prank and that the password<br />

was obtained using publicly-available information.<br />

Palin’s use <strong>of</strong> the same Yahoo email account to conduct state business<br />

and personal affairs has drawn criticism from both security experts and open<br />

government advocates.<br />

Because <strong>of</strong> the special interest in this case, many thousands <strong>of</strong> comments<br />

have quickly appeared on the Internet. The following is typical:<br />

This was plain hacking and thus criminal. He broke the law<br />

and needs to accept the consequences <strong>of</strong> his choice. But I also don’t<br />

agree that he deserves up to 50 years in prison for it. That is out <strong>of</strong><br />

whack especially when rapists, murderers, and corporate criminals<br />

get far less.<br />

Exercise 8.5: A possible password may be a permutation <strong>of</strong> a familiar word<br />

or phrase. Thus, a password may be the permutation scrumrewpdaoyses <strong>of</strong><br />

the 16-letter phrase my secure password (without the spaces). Is such a<br />

method secure?<br />

A simple method to select a secure password that’s also easy to memorize<br />

is to select a familiar phrase or quotation and pick up the first letters <strong>of</strong> its<br />

words, replacing occurrences <strong>of</strong> to, too, and two with 2 and occurrences <strong>of</strong><br />

for and four with 4. As an example, the phrase “In 96 I got married to<br />

YOU! for life” results in the secure password I96Igm2Y!4l. A mixture <strong>of</strong><br />

initials and dates may also be secure. Someone named Arthur C. Lark who<br />

owns a Dodge car and whose birthday is 12 November, 2004 may select the<br />

semirandom password ACL111204DOD and pray that he’ll remember it. The<br />

first line (or any memorable line) <strong>of</strong> a poem or a book may also serve as a<br />

secure and easy-to-remember password, but all the spaces should be squeezed<br />

out. Examples are LetMeNotToTheMarriage, ItWasTheBestOfTimes, and<br />

ForAlongTimeIusedToGoToBedEarly.<br />

A more complex, two-step method that’s the favorite <strong>of</strong> many puzzle<br />

and crossword enthusiasts is to start with a short, familiar phrase, perhaps<br />

just 2–3 words. Step 1 replaces the first character <strong>of</strong> the first word by “!”<br />

(the keyboard key that corresponds to uppercase 1), then replaces the second


224 8 Authentication<br />

character <strong>of</strong> the second word by “@”, and so on. Step 2 eliminates all spaces<br />

and changes every other character (except punctuation marks) to uppercase.<br />

As an example, start with the phrase let’s be ready and apply step 1. The<br />

result is !et’s b@ re#dy which step 2 turns into !eT’sB@rE#dY, a secure<br />

password that’s hard to memorize but easy to recreate.<br />

In addition to the above suggestions, this author would like to <strong>of</strong>fer the<br />

following ideas. Don’t share a password with friends or relatives. Change<br />

passwords periodically, but don’t go back to old ones; they may already have<br />

been cracked by a hacker. Don’t write your password anywhere, especially<br />

on a paste-it note stuck on your monitor (or even thinly disguised in your<br />

address book), and use different passwords for different accounts. Many users<br />

apply 2–3 letters taken from the account name as part <strong>of</strong> the password. Thus,<br />

a password for Yahoo may start with ya and one for Amazon may start with<br />

am. This may be secure enough if the passwords are as long as possible.<br />

A security-conscious organization should have a password filter that<br />

checks every password selected (and typed) by a user for strength, and issues<br />

a mild warning to the user when it discovers a weak password. The warning<br />

should be mild, because a strong warning or an ultimatum (either replace<br />

your password or your account is closed) may infuriate the user, who may<br />

then use his far more superior intelligence to thwart the stupid computer<br />

that’s trying to tell him, a human, what to do. Also, all schemes requiring<br />

a user to replace passwords periodically should use tact to convince the user<br />

that the request makes sense and is important. Here is a short list <strong>of</strong> what<br />

users can do (and actually do) to defeat a computer telling them to change<br />

a password.<br />

Submit the existing password as a new one.<br />

If the computer has been programmed to reject the current password as<br />

a new one, a user may have two passwords and simply swap them all the<br />

time.<br />

A similar, bad scheme is to change the current password for a new one,<br />

then immediately change it back to the original password.<br />

If the computer is reprogrammed to remember a user’s n previous passwords<br />

and it insists on a new password every month, an irate user may decide<br />

to use the name <strong>of</strong> the month as a password. Not only is the name <strong>of</strong> the<br />

current month a terrible choice for a password, but the previous passwords<br />

stored in the computer may fall into the hands <strong>of</strong> a hacker and provide him<br />

with a clue to guess the next password with.<br />

Exercise 8.6: Given that the three previous passwords <strong>of</strong> a user were qwerty,<br />

poiuyt, and asdfgh, what’s a good guess for the next password?<br />

Some passwords are used locally. A user may type a password to let<br />

his computer identify him as the owner. Other passwords are remote. A<br />

user may type a password which is then transmitted through the Internet to<br />

identify the user to a remote location. A hacker desperate to find someone’s<br />

password may intercept all the data packets sent from the computer and


8.3 Passwords 225<br />

search for passwords or credit card numbers. A solution is to encrypt a<br />

password sent through the Internet, but consider the following. A hacker<br />

may intercept the encrypted password and simply send this encryption in the<br />

future. One solution is to change the password encryption method all the<br />

time, but a better approach is the secure socket layer protocol (see document<br />

on cryptography in the book’s Web site) that’s based on certificates issued<br />

by trusted sources. Exercise 10.2 proposes another approach to a solution.<br />

In the 1970s and 1980s, fewer users had personal computers, and many<br />

had only terminals. A terminal would connect to a central remote computer<br />

to enable the user to run programs. In those days, a hacker could <strong>of</strong>ten tap<br />

the line connecting the terminal to the computer and intercept passwords.<br />

Terminals became smart over time and could be programmed. A typical program<br />

for a smart terminal was a script (also called a macro). It started with<br />

the escape character, followed by a name, followed by a string <strong>of</strong> characters.<br />

This associated the name with the string, so typing the name would be identical<br />

to typing the string. For early hackers, such a facility was a Godsend.<br />

The hacker with access to the terminal could, for example, reprogram the<br />

return key to execute a normal return, followed by his malicious program.<br />

Often, it was possible to send a terminal a character string starting with an<br />

escape and there was no need to have physical access to the terminal. Each<br />

technological era has its own security problems.<br />

Treat your password like your toothbrush. Don’t let anybody else use it,<br />

and get a new one every six months.<br />

—Clifford Stoll.<br />

Exercise 8.7: Search the Internet for commercial devices for local identification<br />

(fingerprint scanners, retina scanners, voice recognition, and facial<br />

identification).<br />

Social engineering. When sophisticated technical methods fail to disclose<br />

a password or other desired information, a clever, determined hacker<br />

may resort to social engineering. This term refers to ways <strong>of</strong> exploiting human<br />

vulnerabilities and weaknesses. A hacker who badly wants to penetrate<br />

the network <strong>of</strong> an organization, may start by obtaining some telephone numbers<br />

<strong>of</strong> employees. The hacker may then call an employee, pretending to be a<br />

security <strong>of</strong>ficer from the computer security department or an outside consultant<br />

hired to increase security, and ask the employee to cooperate in a test<br />

procedure. The hacker may ask the employee to enter a long sequence <strong>of</strong> complex<br />

commands, then claim that there is a problem or that something didn’t<br />

work. The hacker then asks the employee to try again. After a long sequence<br />

<strong>of</strong> mysterious commands, the hacker again seems disappointed. After a few<br />

tries, the hacker starts showing signs <strong>of</strong> impatience and the employee may feel<br />

embarrassed at his inefficiency. At a certain points the hacker says: “This<br />

doesn’t seem to work. Why don’t you just give me your password and I’ll<br />

try it from here.” Someone reading this description might claim that such an<br />

approach is stupid because no one would be that naive, yet experience shows<br />

that such attempts sometimes succeed.


226 8 Authentication<br />

The following telephone call, from a hacker to a vulnerable employee,<br />

perhaps a receptionist, is similar. It exploits the uncertainty and hesitation<br />

many employees exhibit when they have to make a quick technical decision.<br />

“Quick! This is John from the security department! I need the password<br />

for the xyz account! Quick! We’ve just discovered a virus and I have to<br />

eradicate it immediately. You don’t know where it is!? Well, I’ll show you<br />

how to get it from your computer and if you do that for me, but quick, I<br />

won’t tell anyone how slow you are.”<br />

In the same category belong attempts such as email purportedly coming<br />

from the boss, asking to open an attachment, or claiming to be from Micros<strong>of</strong>t,<br />

urging the receiver to open an attachment that will patch a security<br />

weakness.<br />

Viruses and worms also use social engineering techniques to lure uninformed<br />

email users to click on infected attachments. A common approach is<br />

to send messages promising pictures <strong>of</strong> celebrities. Year 2002 in Appendix C<br />

lists three examples.<br />

Good defense against social engineering is for an organization to have a<br />

clear policy for the disclosure <strong>of</strong> passwords. It should spell out who is and<br />

who is not entitled to an employee’s password.<br />

[Mitnick and Simon 02] is a detailed description <strong>of</strong> the exploits <strong>of</strong> a real<br />

hacker in the field <strong>of</strong> social engineering.<br />

Exercise 8.8: Use your knowledge <strong>of</strong> human frailties to come up with more<br />

approaches to social engineering.<br />

Social Engineering: Definitions.<br />

Feeding misinformation to people to obtain real information.<br />

Manipulating people psychologically to get useful data.<br />

Using certain keywords in conversation to dupe listeners into giving away<br />

personal details.<br />

Obtaining sensitive information by relying on weaknesses and vulnerabilities<br />

<strong>of</strong> people rather than on technical means.<br />

A new form <strong>of</strong> the old confidence game.<br />

A hacking technique related to social engineering is dumpster diving. A<br />

hacker may search through the garbage <strong>of</strong> a company, looking for computer<br />

printouts with passwords, login names, source codes, and customer account<br />

numbers. This is why it is important to shred paper documents, even those<br />

that seem innocuous (Section 10.2).<br />

Sniffing. Sniffing (more precisely, network sniffing or packet sniffing)<br />

is the case where a hacker monitors the traffic to and from a certain site,<br />

attempting to identify information (such as passwords, account names, and IP<br />

numbers) that may be used later for an attack. The sniffer is a wiretap device,<br />

similar to the ones used to tap telephone lines, that works in connection<br />

with s<strong>of</strong>tware. The sniffer collects the bits sent on the network line to a<br />

certain network node, while the accompanying s<strong>of</strong>tware tries to make sense


8.3 Passwords 227<br />

<strong>of</strong> the bits by identifying the elements <strong>of</strong> network protocol (IP and TCP<br />

headers, passwords, and IP numbers) or at least converting the bits into<br />

human-readable format.<br />

There are even (legal) hardware devices and s<strong>of</strong>tware programs developed<br />

for legitimate uses that can be abused by hackers for sniffing. Recall<br />

that logging into a remote network node requires sending a password to the<br />

node. A hacker monitoring traffic to the node can easily recognize the password.<br />

Fortunately, the Internet is distributed and has no central location. This<br />

means that no sniffer can listen to all the traffic on the Internet (an impossible<br />

task anyway, considering the amount <strong>of</strong> data sent all the time). Any localarea<br />

network, however, connects its member nodes with a single line, which<br />

is why a tap on this line may reveal all the network traffic.<br />

An obvious solution is to encrypt all network traffic, including passwords<br />

and login attempts. This prevents direct reading <strong>of</strong> sensitive data, but a<br />

sophisticated hacker can gain some information (such as the types <strong>of</strong> modems<br />

and routers used in the network) even from encrypted data.<br />

[packet-sniffing 04] sells several s<strong>of</strong>tware tools for detecting packet sniffing<br />

on a network. [Orebaugh and Ramirez 04] is a new book that attempts<br />

to cover the entire area <strong>of</strong> packet sniffing.<br />

Case study. Larry, a pharmacist (not his real name), decided to subscribe<br />

to ICQ, a popular instant messaging service. One morning he realized<br />

he could no longer log into his account. The service kept rejecting his password.<br />

After consulting with friends and with experts on the Internet, he<br />

realized that someone got hold <strong>of</strong> his password, logged into his account, and<br />

changed the password. Because <strong>of</strong> its popularity, ICQ has continually been<br />

the target <strong>of</strong> hackers.<br />

The real problem started when the hacker, posing as Larry, started sending<br />

Trojan horses as email attachments to everyone on Larry’s address book.<br />

The recipients, believing the messages came from Larry, clicked on the attachments<br />

and infected their computers, which gave the hacker control over<br />

those computers as well.<br />

Internet security volunteers from [spywareguide 04] became involved.<br />

They messaged the hacker, who demanded money for releasing the account.<br />

He was tracked to a university in Holland, which made it slow and legally<br />

difficult to identify and apprehend him. The spywareguide workers made sure<br />

the victims understood what had happened and showed them how to delete<br />

the Trojan horse. The management <strong>of</strong> ICQ was approached and took several<br />

days to close Larry’s account.<br />

Once the worst was over, the security people set up to find out how the<br />

hackers managed to hijack Larry’s account. What they found may astound<br />

the reader, but was a familiar story to them. Larry used his name “Larry” as<br />

both his login name and his password, which made it trivial for the hacker to<br />

guess both. In addition, Larry’s ICQ unique identification number was only<br />

six digits long, identifying him as a long-time ICQ user, someone who may<br />

have a large address book and may be worth attacking.


228 8 Authentication<br />

The conclusion is obvious; your password is the only protection you have<br />

from criminals on the Internet. Selecting a weak password is like leaving your<br />

doors and windows open or leaving your car key in the ignition.<br />

Exercise 8.9: What is the most common bad password inexperienced people<br />

tend to select?<br />

Table 8.5 lists the results <strong>of</strong> a quick survey made by this author in early<br />

2005. A total <strong>of</strong> 6828 passwords used on a large university campus were examined<br />

and 5667 <strong>of</strong> them, a full 83%, were found to be in one <strong>of</strong> seven categories<br />

<strong>of</strong> weak passwords as listed in the table. Generally, password information is<br />

sensitive and is not available even to those working closely with the operating<br />

system. However, the administrators in charge <strong>of</strong> campus communications<br />

have come up with a new, secure password check and replacement policy, and<br />

users were forced to change their passwords within a period <strong>of</strong> a few days.<br />

When a user changed a password, the old password became available for this<br />

survey. The results are discouraging.<br />

Number Percent Type <strong>of</strong> password<br />

33 0.48 A single character<br />

151 2.21 Two characters<br />

911 13.3 Three characters<br />

946 13.9 Four letters<br />

1353 19.8 Five letters <strong>of</strong> the same case<br />

1280 18.8 Six letters <strong>of</strong> the same case<br />

993 14.5 Words in dictionaries<br />

5667 83.0 Total weak passwords<br />

Table 8.5: Typical(?) Distribution <strong>of</strong> Weak Passwords.<br />

Defacing Web sites. You sit at your computer, browsing the Internet,<br />

admiring your new high-speed Internet connection, clicking here, clicking<br />

there, surfing from site to site, having a good time (instead <strong>of</strong> exercising or<br />

spending time outdoors). Today, however, is different. Today you are going<br />

to start writing a book on computer security, using Internet resources. You<br />

use a search engine to find a Web site on Internet security, you go there and<br />

to your surprise you find a single cryptic message scrawled out, announcing<br />

something negative and unclear and full <strong>of</strong> mistypes. You have just seen<br />

an example <strong>of</strong> a network attack. The Web site, like many others, has been<br />

defaced.<br />

Defacing a Web site is a common Internet attack. It has already been<br />

mentioned in Section 7.3 in connection with DNS poisoning. Defacing occurs<br />

when a hacker modifies the content <strong>of</strong> a site to display <strong>of</strong>fending or provocative<br />

data. This attack is normally perpetrated as a way for the hacker to<br />

object to a specific site, to an organization, or to an action or policy carried<br />

out by someone perceived by the hacker to be associated with the site. The<br />

hacker uses the medium <strong>of</strong> the Web site to advertise his message. Sometimes,<br />

a hacker defaces a site just to prove (to himself) that he controls the Internet.


8.3 Passwords 229<br />

Defacing, also known as the graffiti <strong>of</strong> the Internet, is surprisingly common.<br />

In a survey conducted by the FBI in 2000, 19% <strong>of</strong> the responders reported<br />

some kind <strong>of</strong> defacement. Web site defacing is done by exploiting a vulnerability<br />

in the s<strong>of</strong>tware run by the site server or a bug in the server’s routine<br />

that executes the communications protocols. However, password cracking<br />

and social engineering are also sources <strong>of</strong> information to a would-be defacer.<br />

The medium is the message.<br />

—Marshall McLuhan.<br />

Like many other attacks, the best defense against Web site defacing is<br />

to check for s<strong>of</strong>tware updates and install the latest version <strong>of</strong> the operating<br />

system and server being used by a site. Another solution is to keep a copy (a<br />

mirror) <strong>of</strong> the Web site on a separate disk, and use it periodically to refresh<br />

the original data. This way, if the original Web site data becomes corrupted,<br />

the damage would automatically be corrected from the mirror after a while.<br />

The mirror should be kept on a separate disk to minimize the chance that a<br />

hacker would corrupt it at the same time that the original is defaced.<br />

The site [attrition-mirror 05] used to track this type <strong>of</strong> attack and keep<br />

(until 2001) copies <strong>of</strong> defaced Web sites. It reports an average <strong>of</strong> ten defaced<br />

sites daily, with up to 100+ sites defaced on certain bad days.<br />

Back in July 2003, the following story appeared in many publications<br />

concerned with various aspects <strong>of</strong> the Internet:<br />

“A hacking contest slated for this weekend could produce a rash <strong>of</strong> Website<br />

defacements worldwide, according to a warning issued Wednesday by<br />

security companies and government Internet security groups.<br />

The hacker defacement contest is expected to kick <strong>of</strong>f on Sunday. The<br />

contest supposedly will award free hosting services, Web mail, unlimited Email<br />

forwarding, and a domain name <strong>of</strong> choice for the triumphant hackers,<br />

according to a Web site promoting the contest.”<br />

In May 2001 the Micros<strong>of</strong>t site streamer.micros<strong>of</strong>t.com was defaced<br />

by a group calling itself Prime Suspectz. The original site was replaced with<br />

the message, “Micros<strong>of</strong>t Owned. Where is the security?” The point was<br />

that the attack exploited a vulnerability in version 5 <strong>of</strong> Internet Information<br />

Server (IIS), a product <strong>of</strong> Micros<strong>of</strong>t.<br />

In the early days <strong>of</strong> the Internet, most users depended on slow telephone<br />

connections. The user would dial a local telephone number, provided by an<br />

ISP, type his login name and password, and become connected. Employees<br />

<strong>of</strong> an organization would be given an in-house number and connect in the<br />

same way. This method created opportunities for hackers.<br />

In the United States, telephone numbers are ten digits long. The leftmost<br />

three digits are the area code and the next three digits are the prefix. Thus<br />

(123) 456-7890 has area code 123 and prefix 456. A large organization may<br />

have thousands <strong>of</strong> telephone numbers, but they <strong>of</strong>ten constitute a contiguous<br />

range <strong>of</strong> four-digit numbers within the same prefix, such as 456-1000 through<br />

456-3200. A hacker who knows some telephone numbers <strong>of</strong> an organization,


230 8 Authentication<br />

such as 456-1544 and 456-2730 can dial the 1000 numbers preceding 456-1544,<br />

all the numbers from 456-1544 to 456-2730, and the 1000 numbers following<br />

456-2730, looking for a number that responds with a modem tone. This is a<br />

brute force approach for locating a backdoor into the organization.<br />

A war dialer is s<strong>of</strong>tware (<strong>of</strong>ten obtained for free from hackers’ Web sites)<br />

that can identify telephone numbers that are hooked up to a computer modem.<br />

Examples are BlueDial, ToneLoc, and PhoneTap. It is used by hackers<br />

to identify potential targets. The program dials all the telephone numbers in<br />

a specified range and identifies those numbers that successfully connect to a<br />

modem. An advanced war dialer can sometimes also identify the particular<br />

operating system running in the computer and detect modem, fax, or PBX<br />

tones. A more aggressive version may also try to break into the computer by<br />

trying all the login names and passwords in a predetermined list. Commercial<br />

war dialers, also known as modem scanners, are also used by network administrators<br />

to identify unauthorized modems in their network. Such modems<br />

can provide easy access to an organization’s network.<br />

Imagine a large university campus, with 10,000+ computers and thousands<br />

<strong>of</strong> users, many <strong>of</strong> them pr<strong>of</strong>essors who may not know much about<br />

computers and computer security, but have private <strong>of</strong>fices and feel that they<br />

are privileged on the campus. A pr<strong>of</strong>essor decides to hook up a modem to his<br />

<strong>of</strong>fice computer in order to receive special data, not generally available on the<br />

Internet, from a research institute through his <strong>of</strong>fice telephone and modem.<br />

This innocuous action opens up a backdoor in a campus that may otherwise<br />

be very secure, and may allow a hacker to introduce malicious s<strong>of</strong>tware into<br />

campus computers. The point is that it’s difficult for campus administrators<br />

to identify this security weakness. They have to war dial all the campus telephone<br />

numbers periodically, and hope that any unauthorized modems will<br />

be up and running while this test is in effect.<br />

Exercise 8.10: Once a hacker breaks into one computer on a campus, how<br />

can he penetrate to other computers?<br />

In the movie War Games (1983) a young hacker uses a primitive version<br />

<strong>of</strong> a war dialer, which gave this type <strong>of</strong> s<strong>of</strong>tware first the name “wargames<br />

dialer” and later “war dialer.”<br />

A phreaker is a hacker “specializing” in telephone-related hacks and the<br />

war dialer is one <strong>of</strong> the most important tools in the phreaker’s kit.<br />

Today, most users connect to the Internet through cable or DSL which<br />

are open all the time and require no telephone numbers and no dial up. Fewer<br />

people use dial-up connections, resulting in a smaller chance <strong>of</strong> identifying<br />

modem telephone numbers.<br />

Perhaps the best defense against a war dialer is the call back technique,<br />

where the operating system has a telephone number associated with each<br />

username. When a user dials up the modem and logs in, the telephone hangs<br />

up, then calls back the telephone number associated with the user. This<br />

makes sense for an organization whose users work <strong>of</strong>f site at fixed locations,<br />

but it cannot be used in general.


8.3 Passwords 231<br />

A security-conscious administrator should personally determine those<br />

users who really need dial-in access and deny such access to others. The<br />

privileged users should be made to select strong passwords and change them<br />

regularly. A stronger defense is to ask for a second password whenever a user<br />

logs-in from the outside. This makes it considerably harder for a hacker to<br />

crack passwords. Another good habit is to log all dial-in attempts (especially<br />

failed attempts) and personally verify each week a sample <strong>of</strong> them with the<br />

relevant users.<br />

If kings and great men had occasion to authenticate any<br />

document, they subscribed the “sign” <strong>of</strong> the cross<br />

opposite to the place where the “clerk” had written<br />

their name. Hence we say, to sign a deed or a letter.<br />

—David N. Carvalho, Forty Centuries <strong>of</strong> Ink


9<br />

Spyware<br />

Spyware is the general name <strong>of</strong> an entire range <strong>of</strong> nasty s<strong>of</strong>tware that monitors<br />

the users’ activities, collects information such as keystrokes, screen images,<br />

and file directories, and either saves this information or sends it to a remote<br />

location without the knowledge or consent <strong>of</strong> the computer owner.<br />

Spyware has become one <strong>of</strong> the biggest headaches in computer security.<br />

Users who are wizards at avoiding virus-riddled email and always install the<br />

latest updates <strong>of</strong> the operating system are finding to their surprise that in<br />

spite <strong>of</strong> all their efforts their computers are loaded with spyware. And what<br />

makes this problem worse is that most spyware is particularly tricky to get<br />

rid <strong>of</strong>.<br />

The various flavors <strong>of</strong> spyware, such as adware (Section 9.7) and researchware<br />

(Section 9.8.1) have become so prevalent and wide reaching that<br />

in April 2004 the Federal Trade Commission (FTC), a United States Government<br />

consumer protection agency, conducted a one-day workshop to explore<br />

the issues associated with the effects <strong>of</strong> information-gathering s<strong>of</strong>tware<br />

[FTC-work 05]. The FTC also accepts complaints about spyware, issues publications<br />

to educate the public about this menace, and issues publications on<br />

privacy and information security (go to http://www.ftc.gov/ and search<br />

for spyware and privacy). Even with all this activity, the FTC is not the<br />

only organization concerned about spyware. The anti-spyware coalition is<br />

also active in this area and has also organized a spyware workshop (in May<br />

2009, see [antispyware 09]).<br />

In addition to the FTC, legislators have become aware <strong>of</strong> spyware and<br />

have been trying to do something about it. In 2004, the United States<br />

Congress introduced legislation to fight spyware and its varieties. This act,<br />

dubbed SPYBLOCK (for s<strong>of</strong>tware principles yielding better levels <strong>of</strong> consumer<br />

knowledge) makes it illegal to install s<strong>of</strong>tware on someone’s computer<br />

without the owner’s consent and also requires reasonable uninstall proce-<br />

D. Salomon, <strong>Elements</strong> <strong>of</strong> <strong>Computer</strong> <strong>Security</strong>, Undergraduate Topics in <strong>Computer</strong> Science,<br />

DOI 10.1007/978-0-85729-006-9_9, © Springer-Verlag London Limited 2010


234 9 Spyware<br />

dures for all downloadable s<strong>of</strong>tware (spyware is <strong>of</strong>ten meant to be virtually<br />

impossible to remove).<br />

Generally, SPYBLOCK requires a dialog box that informs the user that<br />

clicking a button will download a certain program and clicking another button<br />

will uninstall it. However, if the s<strong>of</strong>tware has some <strong>of</strong> the features listed below,<br />

more specific disclosure about the operations <strong>of</strong> the s<strong>of</strong>tware is required.<br />

Features <strong>of</strong> spyware. The s<strong>of</strong>tware collects information about the user<br />

and transmits it to a third party.<br />

Features <strong>of</strong> adware. The s<strong>of</strong>tware causes pop-ups or other advertisements<br />

to appear on the user’s screen.<br />

Features <strong>of</strong> zombie generator. The s<strong>of</strong>tware sends data to third parties<br />

for purposes unrelated to what the user is doing. Typically, these messages<br />

help to hijack the computer and eventually use it, as part <strong>of</strong> a botnet, to<br />

send spam or DoS messages.<br />

Features that modify user settings without the user’s consent. The most<br />

common such feature is to change the home page <strong>of</strong> the Web browser.<br />

In addition to this, SPYBLOCK absolutely prohibits programs designed<br />

to trick users about who is responsible for content a user sees. A typical<br />

example is spyware that causes a counterfeit replica <strong>of</strong> a Web site to appear<br />

whenever the user tries to surf to the legitimate site. Such spyware has<br />

been used to fraudulently obtain personal financial information from users<br />

confused by dummy Web sites.<br />

9.1 Introduction and Definition<br />

Unfortunately for the lawmakers, it is impossible to even define spyware rigorously.<br />

A recent attempt in California (SB 1436) to prevent the installation<br />

<strong>of</strong> spyware on an unsuspecting computer, defines spyware as follows:<br />

Spyware is an executable computer s<strong>of</strong>tware program that is installed on<br />

a user’s computer without the knowledge <strong>of</strong> a computer user by a computer<br />

s<strong>of</strong>tware manufacturer, computer s<strong>of</strong>tware controller, or Web site operator,<br />

and that does either <strong>of</strong> the following:<br />

(1) Gathers and transmits to the provider <strong>of</strong> the computer s<strong>of</strong>tware, to<br />

a third party, or to a remote computer or server any <strong>of</strong> the following types<br />

<strong>of</strong> information:<br />

(A) The personal information <strong>of</strong> a user (e.g., name, address, etc.).<br />

(B) Data regarding computer usage, including, but not limited to, which<br />

Internet sites are or have been visited by a user.<br />

(2) Operates in a manner that is intended to confuse or mislead the user<br />

concerning the identity <strong>of</strong> the person or entity responsible for the performed<br />

functions or content displayed by the computer s<strong>of</strong>tware.<br />

This is a good definition, but readers <strong>of</strong> this chapter will see that there are<br />

already programs such as adware and researchware, that satisfy this definition


9.1 Introduction and Definition 235<br />

and yet are considered by many to be different from spyware. The field <strong>of</strong><br />

computing is related to mathematics, but is not as rigorous and does not<br />

always allow for precise definitions and statements.<br />

Since it is virtually impossible to define spyware, any given computer<br />

program should be declared spyware if it passes certain tests. The following<br />

list proposes such tests and experts can add many more. When presented<br />

with a program whose behavior is known and we want to find out whether it<br />

is spyware, we ask the following questions and consider the program spyware<br />

if the answers to n <strong>of</strong> them are positive (where n is determined by the leniency<br />

<strong>of</strong> the individual evaluating the s<strong>of</strong>tware).<br />

Is the application file name similar to an important operating system<br />

name?<br />

Is the program similar to a known Trojan horse?<br />

Does the user have to pay a fee to remove the program?<br />

Does the program exploit any (even as yet unknown) security holes to<br />

propagate and install itself on computers?<br />

Does the program log various activities in the computer stealthily?<br />

Does the program have a long and confusing s<strong>of</strong>tware license that uses<br />

legalese or unfamiliar technical terms?<br />

Is the program useful, popular, and also free or almost free? (if yes,<br />

there may be a spyware Trojan horse lurking within).<br />

Does the program modify the browser’s home page or redirect Internet<br />

searches without the user’s knowledge?<br />

Does the program look for anti-spyware applications in the computer?<br />

Does the program try to reinstall itself after it has been deleted (by<br />

keeping invisible copies on the disk).<br />

Exercise 9.1: Add another question based on the fact that it is easy to<br />

locate complaints on the Internet.<br />

We first consider the question <strong>of</strong> who installs such s<strong>of</strong>tware; who are the<br />

spies? It turns out that there are many types <strong>of</strong> spies and they have different<br />

reasons to spy. Following are the main categories.<br />

Spouses. When relations between a married (or even a live-in) couple<br />

start deteriorating, one <strong>of</strong> them may install spyware on the other’s computer,<br />

or even on their shared computer. Some experts even claim that this is the<br />

primary use <strong>of</strong> keystroke loggers. In fact, there are known cases where both<br />

spouses install spyware on the same computer. In such a case, the advantage<br />

is normally on the side who installed it first, because they can tell, from the<br />

spyware they installed, that the other side has installed similar programs<br />

later. This not-so-funny situation may be called a spy versus spy arms race<br />

or duel.


236 9 Spyware<br />

Parents. More and more parents discover that the best way to restrict the<br />

use <strong>of</strong> the family computer by children is to spy on them. This is arguably<br />

one <strong>of</strong> the few legitimate uses <strong>of</strong> spyware. (There is s<strong>of</strong>tware for parental<br />

supervision, especially designed to restrict the privileges <strong>of</strong> certain users on<br />

a computer, but this s<strong>of</strong>tware is far from satisfactory.) We <strong>of</strong>ten hear about<br />

children abducted by adults they met on the Internet, which suggests that<br />

turning children loose in the Internet is like letting them roam city streets<br />

known to be dangerous.<br />

Spying on your kids is an important moral and personal, not just a technical<br />

issue, which is why there are organizations and websites that discuss<br />

the pros and cons <strong>of</strong> this approach. References [parenting 10] and [SpyOnYourKids<br />

10] are just two examples.<br />

One claim that is <strong>of</strong>ten heard goes like this “Any parent who needs to<br />

spy on their kids has some more serious problems to address than how to spy<br />

on their kids. Why not use your coding talent to produce some s<strong>of</strong>tware that<br />

promotes trust between parents and kids, or anybody else for that matter.<br />

Feh!”<br />

Bosses. This may be another (sometimes) legitimate use <strong>of</strong> spyware. An<br />

organization expects its employees to use their work computers only for work,<br />

not for private uses and certainly not for questionable uses, such as shopping<br />

or surfing pornographic sites. The organization must have a clear privacy<br />

policy, and should have some way <strong>of</strong> checking and identifying malingerers.<br />

Children. In many households, the children are more technologically<br />

advanced than their parents, and a child may decide to spy on his parents for<br />

fun or to obtain the password they use to limit his access to the computer.<br />

This application <strong>of</strong> spyware is very common and is especially easy since the<br />

necessary s<strong>of</strong>tware can <strong>of</strong>ten be freely obtained from hackers’ underground<br />

Web sites.<br />

Corporations. They spy on each other to obtain commercial secrets.<br />

Many commercial organizations have sensitive data (such as new product<br />

information, pending patents, and planned mergers) on their computers, and<br />

many do not realize how easy it is for a competitor to steal this data by<br />

installing spyware on a key computer. Even small and very small businesses<br />

suffer from this problem and may have to install and run special s<strong>of</strong>tware<br />

that identifies spyware. (See page 75 for a similar example <strong>of</strong> a print shop<br />

attacked by a virus sent by a competitor.)<br />

Identity thieves. Often an identity thief can easily install spyware on a<br />

public computer located in a public library, Internet cafe, or university lab.<br />

Such spyware can then transmit information on computer users to the thief<br />

and some personal information left on a public computer by a careless user<br />

may be enough to start the thief on stealing the user’s identity (Chapter 10).<br />

Obviously, no one should enter personal data into a public computer.<br />

Hackers and criminals. A hacker may install spyware on a computer<br />

in an attempt to collect passwords. A criminal may do the same in order<br />

to collect financial and personal information. In extreme cases, a criminal


9.1 Introduction and Definition 237<br />

may install spyware that identifies important and sensitive files and encrypts<br />

them, thereby holding them hostage. A message left by the spyware explains<br />

what happened and tries to extort money from the user/owner by <strong>of</strong>fering to<br />

sell them the encryption key. Reports <strong>of</strong> such nasty attempts actually appear<br />

from time to time, but security experts point out that such an extortionist<br />

has to expose himself (perhaps not in person, but to some degree) in order<br />

to collect the ransom, which makes this type <strong>of</strong> crime unattractive.<br />

Law enforcement. The law, as usual, always lags one step behind the<br />

criminals, but law enforcement agencies have finally discovered how to legally<br />

use spyware to collect information from computers owned or used by crime<br />

suspects. A case in point is a keystroke logging program installed by the<br />

American government to capture a password that was later used to access<br />

files on a computer owned by jailed mob boss Nicodemo (Little Nicky) Scarfo<br />

and his son.<br />

Commercial adware, also known as pestware, and parasitic s<strong>of</strong>tware.<br />

Such s<strong>of</strong>tware (sometimes only cookies) displays unwanted advertisements by<br />

taking the user to certain Web sites. Adware may also open new Web pages<br />

(popup windows) for these commercials. Adware generally doesn’t send data<br />

from the computer, so it cannot be called “pure” spyware. Still, adware is<br />

steadily becoming more sophisticated. New versions log the user’s Internet<br />

shopping history and surfing habits (such as news sites, music sites, or sites<br />

for movies) and focus the advertisement based on this information. In order<br />

to sweeten the bitter taste <strong>of</strong> adware, Performics, a company specializing in<br />

services and technologies for leading multi-channel marketers, has prepared<br />

a code <strong>of</strong> conduct for adware. It recommends habits such as “all clickable<br />

events should be initiated by the user” and “an ad publisher should not use<br />

ISPs services to interfere with the ads <strong>of</strong> another ad publisher.” The code <strong>of</strong><br />

conduct is available at [performics 10].<br />

Commercial (again), trying to obtain usage data from their customers.<br />

A company that makes scanners, for example, also provides a special utility<br />

to use their hardware. The company may include a spy routine in this utility,<br />

to collect usage data from the user and transmit it periodically and silently<br />

to a Web site owned by the company. The data collected may include the<br />

number <strong>of</strong> pages scanned since the last transmission, how many were scanned<br />

in color, and how many pages were saved in JPEG, GIF, and other image<br />

formats. Such data is anonymous and is used for statistical purposes only,<br />

but even this is considered by many an intrusion <strong>of</strong> privacy and is included in<br />

the spyware category. Section 9.6 discusses this practice <strong>of</strong> remote reporting.<br />

The special case <strong>of</strong> researchware is discussed in Section 9.8.1.<br />

(See discussion on page 34 on how to perturb data for such a purpose.<br />

Also, it’s hard to imagine a scanner maker having enough time and money to<br />

hire personnel to read every report sent from a user site; such data collection<br />

can only be for statistical purposes.)<br />

The next three sections discuss other examples <strong>of</strong> spyware users.


238 9 Spyware<br />

9.2 RIAA and Spyware<br />

The Recording Industry Association <strong>of</strong> America (RIAA) is the trade group<br />

that represents the United States recording industry. Its mission is (quoted)<br />

“to foster a business and legal climate that supports and promotes our members’<br />

creative and financial vitality.” The RIAA members constitute about<br />

90% <strong>of</strong> the companies that make up the music industry in the United States.<br />

The music industry has known for a while that people illegally download<br />

and swap music through file-swapping computer programs such as Napster<br />

(now deceased), Kazaa, Morpheus, and Grokster. In the last decade, the<br />

RIAA has become more and more active in pursuing, locating, and prosecuting<br />

individuals in well-publicized attempts to scare and stop those who<br />

swap music. These facts are well known and will not be discussed here. The<br />

topic <strong>of</strong> this section is to show how the RIAA finds its “persons,” because<br />

this involves privacy issues and can also teach the reader something about<br />

both spyware and anti-spyware.<br />

The key to locating an illegally swapped file is the shared folders that are<br />

used by the file-swapping services. When a computer has a shared folder, any<br />

file sharing activity in the computer can be monitored from the outside. The<br />

RIAA joins a file-swapping service, and then uses special programs (bots)<br />

that search for specific files. Once such a file is found in a shared folder, the<br />

RIAA bot downloads it and checks to verify its content. If the file turns out<br />

to be a copyrighted song or other piece <strong>of</strong> music, it may end up as evidence<br />

in court.<br />

Once an illegal file has been located in a computer, the RIAA still needs<br />

to identify the owner <strong>of</strong> the computer. The first step is to identify the IP<br />

address <strong>of</strong> the computer (although this can be made difficult if the data is<br />

routed through an anonymous proxy server). The second step is to find out<br />

which ISP was assigned that IP number, and the last step is to convince the<br />

ISP to locate and disclose the user’s name and address.<br />

We intuitively feel that locating the creator <strong>of</strong> a dangerous computer<br />

virus through his IP address is a good thing, but identifying file-swappers in<br />

this way makes some people wonder about privacy on the Internet.<br />

Once a pirated file is located, the RIAA uses s<strong>of</strong>tware to examine metadata<br />

<strong>of</strong>ten found in mp3, jpeg, and other types <strong>of</strong> files such as Micros<strong>of</strong>t<br />

Word. Metadata in an audio file may include the artist’s name, song title,<br />

recording company, and date <strong>of</strong> recording. Many mp3 players even display<br />

this data when the music is played. However, when a file is copied or ripped,<br />

new metadata may be added showing what s<strong>of</strong>tware did the ripping or the<br />

name (pseudonym) <strong>of</strong> the original hacker who prepared the file. This information<br />

is important to the RIAA, but the point is that obtaining it is done<br />

by s<strong>of</strong>tware that some would consider spyware.<br />

Micros<strong>of</strong>t will provide the resources for ripping MP3 files in Windows<br />

XP after all. But there is a catch: Consumers will pay extra<br />

for it.<br />

—From news.com.com, 14 July 2001.


9.3 Terrorism and Spyware 239<br />

When the RIAA has a file, its incriminating metadata, an IP address,<br />

and a name and a physical address, its lawyers may decide they are ready to<br />

prosecute.<br />

The solution, for those who want to continue to swap files (a practice<br />

not recommended by this author), is to disable the sharing (sometimes called<br />

“uploading”) feature <strong>of</strong> the program used for file swapping. If the program<br />

has a “supernode” feature, it is better to turn it <strong>of</strong>f too. There are references<br />

(normally short lived) that explain how to do this for various file sharing<br />

services, but don’t complain to this author if you get in trouble with the<br />

RIAA before or after following such ideas. Another remedy is to avoid music<br />

files by artists who are RIAA members (see [RIAA 10] for a list <strong>of</strong> members).<br />

The zealousness <strong>of</strong> the RIAA (and its Canadian sister, the CRIA) in<br />

pursuing song swappers has resulted in claims that they sue people who<br />

don’t own or use computers and may even sue the dead (see box below).<br />

Gertrude Walton was recently targeted by the recording industry in a<br />

lawsuit that accused her <strong>of</strong> illegally trading music over the Internet. But<br />

Walton died in December 2004 after a long illness, and according to her<br />

daughter, the 83-year-old hated computers.<br />

More than a month after Walton was buried in Beckley, West Virginia,<br />

a group <strong>of</strong> record companies named her as the sole defendant in a federal<br />

lawsuit, claiming she made more than 700 pop, rock, and rap songs available<br />

for free on the Internet under the screen name “smittenedkitten.”<br />

Walton’s daughter, Robin Chianumba, lived with her mother for the last<br />

17 years and said her mother objected to having a computer in the house.<br />

—A news item on Friday, 4 February 2005.<br />

9.3 Terrorism and Spyware<br />

Spyware can be used to launch a DDoS attack. Such attacks have already<br />

occurred and were <strong>of</strong>ten aimed at anti-spyware Web sites. If a spyware perpetrator<br />

can find the time and is willing to spend the effort it takes to attack an<br />

anti-spyware site, imagine the effect that a concerted, well-organized attack<br />

by terrorists using both spyware and bombs/guns can have on a country, its<br />

citizens, and its economy.<br />

It is a little-known fact that the most popular type <strong>of</strong> computer s<strong>of</strong>tware<br />

is a screen saver. People love those active, colorful patterns that adorn<br />

the computer screen when it is not in use (and a personal computer tends<br />

to be unused most <strong>of</strong> the time). With this in mind, imagine a new company,<br />

ScreenSavers R Us, coming up with a revolutionary screen saver with<br />

a patriotic theme. The program costs very little, and it is fully functional<br />

even if it’s unpaid for. Obviously, there are going to be many copies <strong>of</strong> this<br />

program, used all over the globe, in a very short time. (An alternative is<br />

to release a patriotic computer game, full <strong>of</strong> anti-terrorist action, because<br />

computer games are also popular.) Unbeknownst to the users, however, this


240 9 Spyware<br />

program is also a Trojan horse set to activate on 11 September <strong>of</strong> next year<br />

and unleash a coordinated DDoS attack that will also result in cutting <strong>of</strong>f<br />

the income sources <strong>of</strong> many companies and will have an adverse effect on the<br />

economy.<br />

Even though ScreenSavers R Us practically gives the s<strong>of</strong>tware away, it<br />

still makes money by being an affiliate network. The company’s Web site carries<br />

ads by well-known brands such as Amazon, Dell, and Target. These ads<br />

are seen by anyone surfing to the site in order to download the screen saver,<br />

and if the visitor buys anything from any <strong>of</strong> those sponsors, ScreenSavers<br />

R Us gets a small commission. Notice that the sponsors do not check the<br />

background, performance, or reputation <strong>of</strong> ScreenSavers R Us; they are only<br />

interested in the size <strong>of</strong> the commission they fork out. In fact, ScreenSavers<br />

R Us doesn’t even have to write to any <strong>of</strong> the sponsors, fill out an application<br />

to become an affiliate network, or fulfill any requirements. All it has to do is<br />

read an agreement and perform the “click <strong>of</strong> allegiance” to accept its terms.<br />

Think about it! ScreenSavers R Us is distributing to unsuspecting consumers<br />

a screen saver that’s actually a ticking time bomb, and while doing<br />

this it also makes money each time a consumer buys something from a sponsor.<br />

On the appointed date, the Trojan horses buried in the screen savers<br />

spring into action. They instruct their host (zombie) computers to launch<br />

a DDoS attack against very specific targets that include medical facilities,<br />

critical government Web sites, and media information outlets. Now imagine<br />

that ScreenSavers R Us was originally founded by a terrorist organization,<br />

and they complement the cyber attack with a physical 9/11-style attack on<br />

civilians. The result is an unusually large number <strong>of</strong> casualties, because the<br />

medical and government computer networks designed to help in such a case<br />

have been incapacitated by the DDoS attack.<br />

As if all this is not enough, the DDoS attack is followed by a flood<br />

<strong>of</strong> emails loaded with propaganda and viruses and sent by the screen saver<br />

zombies to hundreds <strong>of</strong> thousands <strong>of</strong> computer users, to create further panic<br />

and chaos.<br />

Such a combined attack, involving physical violence and cyber crime,<br />

could be devastating to any country.<br />

Exercise 9.2: Does this sound far-fetched (see also Exercise 2.17)?<br />

9.3.1 Parasiteware<br />

There is an interesting twist to the concept <strong>of</strong> affiliate networks and it involves<br />

a new type <strong>of</strong> s<strong>of</strong>tware, the parasiteware. Parasiteware is any adware<br />

that overwrites certain affiliate tracking links. Here is a typical scenario.<br />

John joins eBates. He is given a computer program, a parasiteware, and is<br />

presented with a list <strong>of</strong> stores to shop at. Those stores pay a commission<br />

to eBates (located at [eBates 05]) on John’s purchases and eBates pays that<br />

commission (or part <strong>of</strong> it) to John. If this is all the parasiteware does, it<br />

does not pose a security threat, but past experience shows that in the wrong<br />

hands, parasiteware may become such a threat.


9.4 Political Contributions<br />

9.4 Political Contributions 241<br />

In the United States, contributions to political parties and political campaigns<br />

cannot be anonymous and must be made public by law. The name,<br />

address, and occupation <strong>of</strong> every contributor become public knowledge, as<br />

well as the amounts <strong>of</strong> individual contributions. This law is the result <strong>of</strong> unfair<br />

political influence gained in the past by anonymous contributors. (The<br />

law regulates only “hard money” contributions, but it is also possible to<br />

contribute “s<strong>of</strong>t money” which is not regulated by this law.)<br />

This law makes sense, but also serves as an example <strong>of</strong> governmentimposed<br />

invasion <strong>of</strong> privacy, which is why many may consider it a sort <strong>of</strong><br />

spyware. Contributors know that any donation they make will become public<br />

knowledge. The following organizations make it easy to search for political<br />

contributions.<br />

The center for responsive politics, located at [opensecrets 05], is a nonpartisan,<br />

non-pr<strong>of</strong>it research group based in Washington, D.C. This organization<br />

conducts research on campaign finance issues, including names, addresses,<br />

and amounts <strong>of</strong> contributions made by individuals. OpenSecrets<br />

maintains data about contributions to presidential and congressional elections<br />

in the United States going back to 1990. This data includes hard<br />

money and s<strong>of</strong>t money contributions. This data can be sorted by zip code,<br />

year, and donation amount, thereby making it a very valuable resource to<br />

those looking for personal information.<br />

The FundRace: This is a useful Web site created and maintained by the<br />

Eyebeam research group [fundrace 10] which is trying to illustrate how contributions<br />

shape elections. The site maintains a city mapping tool that shows<br />

the ratios <strong>of</strong> Democrats and Republicans in individual states and cities in the<br />

United States. The data is based on records filed with the American government<br />

<strong>of</strong> contributions by individuals to a single Republican or Democratic<br />

presidential campaign or national committee during 2004 and 2008.<br />

The Voters’ Self Defense Manual 2008 [vote-smart 08] is a 97-page publication<br />

from Vote Smart, a citizen’s organization. It describes project Vote<br />

Smart, an online database with information on members <strong>of</strong> Congress in five<br />

basic categories: biographical information, issue positions, voting records,<br />

campaign finances, and interest group ratings. This is a useful resource for<br />

anyone interested in the members <strong>of</strong> Congress and their activities, but some<br />

may view it as an intrusion on privacy.<br />

The political contributions law and the resources above make it easy to<br />

obtain certain items <strong>of</strong> personal information on many individuals.<br />

Exercise 9.3: Search [opensecrets 05] for political contributions made by a<br />

person <strong>of</strong> your choice.


242 9 Spyware<br />

There’s a lot <strong>of</strong> money in the Internet. On the last count <strong>of</strong> malware I<br />

did, only 10 percent was written by teenagers. Ninety percent is developed<br />

by criminals. This malware is designed for criminal needs such as stealing<br />

money, distributing spam, and Internet rackets.<br />

—Eugene Kaspersky, Kaspersky Labs, http://www.kaspersky.com.<br />

9.5 Distribution <strong>of</strong> Spyware<br />

How can you have your computer riddled with spyware? Simple, just use<br />

it (the computer, not the spyware). It is well known that certain Web sites<br />

such as [HastaLaVista 04] that provide serial numbers for pirated s<strong>of</strong>tware,<br />

also download spyware in the process. Unfortunately, even something as<br />

innocuous as downloading a movie trailer and watching it can result in more<br />

than one spyware program being loaded and installed in the process. A<br />

frightening prospect!<br />

An especially disturbing example <strong>of</strong> spyware with a twist was a program<br />

called LoverSpy that was advertised for a while by sending large quantities <strong>of</strong><br />

email (spam) to people with email addresses. LoverSpy was touted as easyto-use,<br />

inexpensive spyware that can spy on spouses, children and so on,<br />

but the frightening aspect <strong>of</strong> LoverSpy was that it could be installed on any<br />

computer by sending an electronic greeting card. The card carried a Trojan<br />

horse that installed an activity monitor and emailed the result to the card<br />

sender periodically. (This type <strong>of</strong> stealth installation is sometimes referred to<br />

as a drive-by download.) LoverSpy monitored and recorded activities such as<br />

email, Web sites visited, instant messaging communication, passwords, files,<br />

and keystrokes.<br />

Imagine someone using a work computer, checking their email, finding a<br />

greeting card, and opening it, only to have spyware surreptitiously installed<br />

on their computer. When such spyware is later discovered by the boss, the<br />

hapless worker gets in trouble and may loss credibility, a promotion, or even<br />

the job itself.<br />

Theoretically, the best defense against spyware is to (1) install antispyware<br />

s<strong>of</strong>tware and run it <strong>of</strong>ten to detect and remove suspicious programs,<br />

(2) install a firewall that monitors transmission <strong>of</strong> data outside the computer<br />

(Section 7.6), and (3) encrypt all sensitive data stored in the computer (all<br />

the files with personal or commercial data). Even this is not completely<br />

secure. Anti-spyware s<strong>of</strong>tware (especially the free varieties) may install its<br />

own adware (Section 9.7). Spyware that logs keystrokes may save them in the<br />

computer, perhaps as an invisible file. The spy (spouse, child, boss, employee)<br />

may personally access the computer and copy this file to a removable disk or<br />

print it. The spy may log into the computer remotely and retrieve the file<br />

periodically, or may even use s<strong>of</strong>tware that has a backdoor, that allows the<br />

spy, but no one else, to remotely access the computer and retrieve the file.<br />

The Bugbear worm (year 2002 in Appendix C) installs a backdoor that opens<br />

port 36794 and waits for commands from its author. The commands order


9.5 Distribution <strong>of</strong> Spyware 243<br />

the worm to perform actions such as copy files, list files and deliver the list<br />

to the hacker, delete files, start processes, terminate processes, list processes<br />

and deliver the list to the author, deliver saved keystrokes in encrypted form,<br />

and deliver various items <strong>of</strong> information about the infected computer to the<br />

hacker.<br />

Backdoors have already found their way into main stream literature.<br />

The character Nedry in the novel Jurassic Park builds a backdoor in his<br />

s<strong>of</strong>tware and uses it later to turn <strong>of</strong>f the electronic alarm system in the park<br />

so he could sneak into a storage room, steal dinosaur DNA, and sell it to a<br />

park competitor.<br />

And partly it was insurance for the future. Nedry was annoyed with the<br />

Jurassic Park project; late in the schedule, InGen had demanded extensive<br />

modifications to the system but hadn’t been willing to pay for them, arguing<br />

they should be included under the original contract. Lawsuits were threatened;<br />

letters were written to Nedry’s other clients, implying that Nedry was<br />

unreliable. It was blackmail, and in the end Nedry had been forced to eat his<br />

overages on Jurassic Park and to make the changes that Hammond wanted.<br />

But later, when he was approached by Lewis Dodgson at Biosyn, Nedry<br />

was ready to listen. And able to say that he could indeed get past Jurassic<br />

Park security. He could get into any room, any system, anywhere in the park.<br />

Because he had programmed it that way. Just in case.<br />

—Michael Crichton, Jurassic Park, 1991.<br />

In response to spyware, s<strong>of</strong>tware makers started developing anti-spyware<br />

s<strong>of</strong>tware tools. Such a program searches the disk for executable files with<br />

known signatures and alerts the user to them. New spyware is introduced all<br />

the time and its signatures change, so anti-spyware s<strong>of</strong>tware must be updated<br />

regularly, like anti-virus s<strong>of</strong>tware.<br />

The freeware Spybot [Spybot 10] is a good example <strong>of</strong> such a tool. It<br />

searches the files for particular signatures that it associates with spyware<br />

and alerts the user to decide whether to remove them. The commercial antispyware<br />

s<strong>of</strong>tware Spy Sweeper from [Spy Sweeper 05] is another example. Ad-<br />

Aware, from Lavas<strong>of</strong>t [Lavas<strong>of</strong>t 04] is another commercial utility. It works<br />

similarly, but finds a different set <strong>of</strong> nasties. Any personal computer should<br />

have several such tools and the owner should update and run them regularly.<br />

There are other titles <strong>of</strong> similar s<strong>of</strong>tware tools, but the above can normally<br />

rid a PC <strong>of</strong> virtually all the spyware “on the market.”<br />

Ad-Aware is designed to provide advanced protection from known Datamining,<br />

aggressive advertising, Parasites, Scumware, selected traditional Trojans,<br />

Dialers, Malware, Browser hijackers, and tracking components. With<br />

the release <strong>of</strong> Ad-Aware SE Personal edition, Lavas<strong>of</strong>t takes the fight against<br />

Spyware to the next level.<br />

—From [Lavas<strong>of</strong>t 04].


244 9 Spyware<br />

Examples <strong>of</strong> commercially available keystroke loggers are Spector Pro<br />

and eBlaster (both by [SpectorS<strong>of</strong>t 04], both currently in version 2010). The<br />

latter even sends reports back to the spy over email. Both programs <strong>of</strong>fer<br />

stealth mode, in which they reveal no trace <strong>of</strong> their existence. Several recent<br />

spy programs even have remote-installation capabilities. They can be sent as<br />

email attachments to the potential victim, and will install themselves when<br />

clicked on by the (normally trusting) victim. This is an example <strong>of</strong> a drive-by<br />

download. In their advertising, the makers <strong>of</strong> such s<strong>of</strong>tware claim that the<br />

programs are useful for parents who want to keep an eye on kids’ computeruse<br />

habits, but they also tend to have testimonials from customers who use<br />

the s<strong>of</strong>tware to spy on spouses and competitors.<br />

Spector Pro contains seven integrated tools that record: chats, instant<br />

messages, emails sent and received, web sites visited, keystrokes typed, programs<br />

launched, peer to peer file searching and swapping—plus, Spector Pro<br />

provides the equivalent <strong>of</strong> a digital surveillance tape so that you can see the<br />

EXACT sequence <strong>of</strong> EVERYTHING your family members or employees are<br />

doing on the computer. All seven tools work together at the same time,<br />

secretly saving all the recordings in a hidden location only you know about.<br />

. . . Spector Pro has been awarded PC Magazine Editors Choice as the<br />

best Internet monitoring s<strong>of</strong>tware for recording computer activity.<br />

—From www.SpectorS<strong>of</strong>t.com.<br />

Encrypting a file implies that the file has to be decrypted every time it<br />

is used, then encrypted again. Such a tedious process is an ideal candidate<br />

for automation, which is precisely what the well-known PGP s<strong>of</strong>tware does.<br />

PGP has a virtual disk option, where all the sensitive files are moved to<br />

a section <strong>of</strong> the hard disk that’s declared a virtual disk. This section is<br />

mounted separately, it looks like a separate drive and can be activated by a<br />

password. All files written in this section are automatically encrypted each<br />

time they are saved and are also automatically decrypted whenever they are<br />

opened. The sensitive data is always encrypted (except when it is processed)<br />

and the encryption and decryption steps are transparent to the user, except<br />

for small but sometimes noticeable delays when files are opened and saved.<br />

This is another example <strong>of</strong> a sophisticated use <strong>of</strong> cryptography for computer<br />

security.<br />

A case study. In late 2004, the FTC filed the first spyware case against<br />

Seismic Entertainment Productions Inc., Smartbot.Net, Inc., and Sanford<br />

Wallace, a (supposedly former) spammer. The three have been charged <strong>of</strong><br />

infecting many computers with spyware, and then <strong>of</strong>fering the computer owners<br />

special spy-deleter s<strong>of</strong>tware for $30 to correct the problem. The spyware<br />

in question had modified the Web browsers on the affected computers, and<br />

added s<strong>of</strong>tware to download advertisements in the form <strong>of</strong> pop-up ads. Surprisingly,<br />

the FTC did not ask the court to punish the defendants, only to<br />

compel them to remove the <strong>of</strong>fending spyware, to cease their spyware operations,<br />

and to produce documents related to their internal marketing. Whether


9.6 Remote Reporting 245<br />

this will serve as a deterrent to future spyware makers and dealers remains<br />

to be seen.<br />

Spyware has become such a plague that the United States Congress<br />

opened hearings, on 29 April 2004, on the subject, in order to prepare legislation<br />

to fight it. The proceedings <strong>of</strong> these hearing are available at [house 04].<br />

Another evidence for the prevalence <strong>of</strong> spyware is provided by the following<br />

numbers. They were compiled in late 2004 by Webroot, an anti-spyware<br />

firm, located at [webroot 04] that makes the SpyAudit anti-spyware program<br />

and other tools. Webroot scanned more than 10,000 computers installed in<br />

about 4100 companies and found them riddled with spyware. The large majority<br />

<strong>of</strong> spyware found was cookies, which may be annoying but are harmless.<br />

In addition, 5% <strong>of</strong> the computers had spyware and 5.5% had Trojan horses,<br />

which are similar to spyware. Another survey, this time <strong>of</strong> personal home<br />

computers, found an even worse situation. An average <strong>of</strong> 26 nasty s<strong>of</strong>tware<br />

items (consisting mostly <strong>of</strong> cookies, spyware, adware, Trojans) was found on<br />

these private computers.<br />

Exercise 9.4: Search the Internet for this and other spyware audits.<br />

9.6 Remote Reporting<br />

Remote reporting is an old concept, used in computers since the 1970s. This<br />

term refers to data transmitted automatically by a piece <strong>of</strong> hardware when it<br />

detects urgent or unusual conditions in a computer. The following examples<br />

are typical:<br />

In a multiuser computer, certain powerful instructions are privileged and<br />

can only be used by the operating system. When a user program tries to use<br />

a privileged instruction, the computer hardware generates an interrupt that<br />

invokes an operating system routine. The routine may simply display an error<br />

message on the user’s screen and terminate the user’s program, but it may<br />

also send a report to the computer administrators for further investigation.<br />

When a printer runs out <strong>of</strong> paper or becomes jammed, sensors in the<br />

printer may send a report to the computer operators, so that the problem<br />

can be corrected quickly.<br />

Nowadays, in the age <strong>of</strong> personal computers and spyware, remote reporting<br />

has taken on a new, more sinister face. Commercial entities, even<br />

reputable ones, sometimes decide to use a mild version <strong>of</strong> spyware to gain a<br />

competitive edge. The chance <strong>of</strong> knowing more about their customers and<br />

how their products are used is simply too tempting to pass up. A typical<br />

example is a printer maker. Every printer is different, so a printer maker<br />

always provides s<strong>of</strong>tware to drive their printers on various platforms. The<br />

s<strong>of</strong>tware may contain a remote reporting feature that collects data about the<br />

use <strong>of</strong> the printer and periodically sends it to the printer maker for statistical<br />

use, without the user’s knowledge. The data may include items such as the


246 9 Spyware<br />

number <strong>of</strong> pages printed, how many were in color, and the page coverage<br />

(how much <strong>of</strong> each page was covered by ink).<br />

A case in point is the Lexmark Corp., a maker <strong>of</strong> laser and inkjet printers.<br />

In November 2004, several reports appeared in the comp.periphs.printers<br />

Usenet newsgroup claiming that Lexmark printer drivers contain spyware<br />

that monitors the use <strong>of</strong> the printer and reports back to www.lxkcc1.com,<br />

a Web site owned by Lexmark. This practice was discovered by users who<br />

installed special firewalls that monitor data sent outside the computer by<br />

various programs.<br />

Lexmark initially denied the rumors, then admitted the existence <strong>of</strong><br />

the tracking s<strong>of</strong>tware, but claimed that (1) its s<strong>of</strong>tware license includes a<br />

statement about the silent monitoring, (2) no personal data is collected by<br />

its s<strong>of</strong>tware, and (3) it is impossible to identify any individual user. The<br />

company even claimed that the s<strong>of</strong>tware has a name, Lexmark Connect. Such<br />

data is obviously useful to Lexmark and can be used to help plan the next<br />

generation <strong>of</strong> printers.<br />

In response, users point out that (1) very few people read long, complex<br />

s<strong>of</strong>tware licenses, warnings, and copyright statements, (2) once someone<br />

has purchased a printer, the only way to use it is to agree to the s<strong>of</strong>tware<br />

license, and (3) after the s<strong>of</strong>tware is installed, it prompts the user to fill out<br />

a registration form with the user’s name, address, and the printer’s serial<br />

number, thereby making it possible for Lexmark to track the printing habits<br />

<strong>of</strong> individual users.<br />

Other points to consider are (1) many users have s<strong>of</strong>tware installed for<br />

them by an expert, who becomes the one to agree to the s<strong>of</strong>tware license,<br />

(2) sometimes a computer is purchased with a printer as a package deal and<br />

the s<strong>of</strong>tware is preinstalled in a store, (3) a user who has read the license<br />

and noticed all its points is only human and may forget some <strong>of</strong> the conditions,<br />

especially after reading many such licenses, and (4) many have come<br />

to consider s<strong>of</strong>tware licenses and the need to click to accept them (the click<br />

<strong>of</strong> allegiance) an unnecessary nuisance.<br />

It is clear that many users object to data being sent back to a manufacturer<br />

silently, surreptitiously, and involuntarily. Even a user who has<br />

carefully read the license and knows about the remote reporting feature may<br />

become suspicious when they actually notice a printer “calling home.” Such<br />

behavior resembles spyware too much for users to feel comfortable with. The<br />

result may be a growing suspicion <strong>of</strong> customers toward Lexmark that may<br />

translate into declining sales.<br />

Proponents <strong>of</strong> the “calling home” approach claim that programs that<br />

send data back to the manufacturer <strong>of</strong>fer important advantages for the consumer.<br />

A printer maker may establish a subscriber service where a printer<br />

notifies the company when toner or ink runs low, and the company responds<br />

by automatically delivering a fresh supply and charging the customer. A<br />

possible solution may be for a company to start <strong>of</strong>fering such a service, or at<br />

least to notify the user each time the program intends to transmit data (and<br />

to display the data about to be sent).


9.6 Remote Reporting 247<br />

Both Micros<strong>of</strong>t, the makers <strong>of</strong> the Windows operating system, and Apple,<br />

with the Macintosh OS X, have implemented a procedure for error reporting.<br />

When the operating system senses that a program has quit abnormally,<br />

it (the operating system) gives the user a chance <strong>of</strong> filling out an error report<br />

and sending it to the manufacturer. Such open policy cannot reasonably<br />

be considered spyware and can perhaps be adopted by printer makers and<br />

others.<br />

Lexmark is also notorious for its strict policy about third-party cartridges.<br />

A Lexmark toner cartridge has a special chip and the printer will<br />

not accept a cartridge that doesn’t have this chip (Lexmark is not the only<br />

printer maker that has this policy). Original Lexmark cartridges are therefore<br />

expensive, which has prompted other companies to copy the chip and<br />

make compatible, but less expensive, cartridges. Lexmark has sued one such<br />

competitor, Static Control, that makes imitation chips called Smartek. These<br />

chips allow printer owners to use Static’s after-market laser toner cartridges<br />

for printers made by several manufacturers.<br />

In its law suit, Lexmark claimed that the Smartek chip violates the 1998<br />

DMCA law enacted in the United States to limit Internet piracy. Under this<br />

law, it is generally unlawful to circumvent technology that restricts access to<br />

a copyrighted work or sell a device that can do so.<br />

Lexmark has claimed that the Smartek chip mimics a technology used<br />

by Lexmark chips and thus unlawfully tricks the printer into accepting an<br />

after-market cartridge. Fortunately, the United States Congress also included<br />

exemptions in the DMCA explicitly permitting activities such as lawenforcement<br />

activities, encryption research, security testing, and interoperability.<br />

The last <strong>of</strong> these, interoperability, permits the mimicking <strong>of</strong> technology<br />

“for the purpose <strong>of</strong> enabling interoperability <strong>of</strong> an independently created<br />

computer program with other programs.” The interoperability exception,<br />

combined with a legal claim about the traditional fair use rights enshrined<br />

in United States copyright law, has resulted in Static Control winning on<br />

appeal (and the rest <strong>of</strong> us benefitting from competition). Static Control’s<br />

site [eff 10] has more information on this case.<br />

For more that a century, industrialists and marketers have realized that<br />

for many products, the “real” money didn’t come from the selling <strong>of</strong> the<br />

big item at a huge, one-time premium, but rather from the periodic sale <strong>of</strong><br />

inexpensive support items necessary for the operation or maintenance <strong>of</strong> the<br />

big item. Smart business people realized that if you practically give away<br />

the big item, the money to be made on the regular sales <strong>of</strong> the little support<br />

items translates to huge pr<strong>of</strong>its.<br />

The classical example <strong>of</strong> this pricing strategy comes from the business <strong>of</strong><br />

razors. Makers <strong>of</strong> razors and razor blades sell their razors at or below cost,<br />

and make money from the sale <strong>of</strong> their proprietary, patent-protected razor<br />

blades.<br />

Several decades ago, the United States government enacted the Sherman<br />

and Clayton Anti-Trust acts to prevent anyone from being subjected to this


248 9 Spyware<br />

sort <strong>of</strong> business practice. These acts dictate that consumers cannot be forced<br />

to use a particular supply, nor can a warranty be voided because a consumer<br />

did not use the high-priced, name-brand supply. This applies to any product<br />

that needs a regular supply <strong>of</strong> anything.<br />

9.7 Adware<br />

Generally, adware is s<strong>of</strong>tware that downloads advertisements and displays<br />

them on a computer. These advertisements are referred to in the advertising<br />

industry as interstitials or pop-ups. Various flavors <strong>of</strong> adware can do more<br />

than that. For example, they can pr<strong>of</strong>ile your online surfing and spending<br />

habits. Some adware comes as a virus or a Trojan horse, and is definitely<br />

spyware, while other adware is voluntarily installed by computer owners on<br />

their machines. In order to entice users to install adware on their computers,<br />

the adware is <strong>of</strong>ten promoted as free s<strong>of</strong>tware that cleans up the computer<br />

by finding and identifying spyware and other “objectionable” s<strong>of</strong>tware. This<br />

is an example <strong>of</strong> a free item that comes with a hidden cost. A case in point<br />

is PurityScan [purityscan 05], a company that <strong>of</strong>fers free s<strong>of</strong>tware to scan a<br />

computer and find undesirable content.<br />

It’s a fact—inappropriate files can make their way onto your computer<br />

when you surf the Internet. PurityScan is a safe and easy way to discover<br />

if undesirable files are on your computer.<br />

—From PurityScan.<br />

The catch (or hidden cost) is that the PurityScan s<strong>of</strong>tware modifies the<br />

Internet browser installed on the computer. Once PurityScan is installed,<br />

pop-up ads appear on the screen every time the browser is launched. A<br />

user who finds this practice annoying, can get rid <strong>of</strong> the unwanted ads by<br />

uninstalling the PurityScan s<strong>of</strong>tware, but the point is that the ads appear as<br />

long as the s<strong>of</strong>tware is installed, not just when it is actually used.<br />

This catch is mentioned in PurityScan’s user’s agreement, but as discussed<br />

on page 246, few people read long, complex s<strong>of</strong>tware licenses. The<br />

inescapable conclusion is: read your s<strong>of</strong>tware license, especially if the s<strong>of</strong>tware<br />

is free.<br />

Someone with experience (especially bitter experience) with computer<br />

security issues would tend to recommend against using free s<strong>of</strong>tware or services<br />

that come with hidden costs, especially since they may involve even<br />

higher costs in the future. An unscrupulous company may start by selling<br />

pop-up ads, but may later be tempted to “extend” its s<strong>of</strong>tware to look for<br />

personal information and browsing patterns in host computers and sell this<br />

information to marketing organizations.<br />

The final choice, <strong>of</strong> course, is in the hands <strong>of</strong> the user who should, as<br />

always, use common sense.


9.8 Spyware? 249<br />

Any s<strong>of</strong>tware application in which advertising banners are displayed while<br />

the program is running is called Adware. And any s<strong>of</strong>tware that sends data<br />

back to a third party—WITHOUT ASKING the user—is Spyware.<br />

—From www.adware.info.<br />

Table 9.1 (from www.ca.com) lists the top ten spyware, adware, and keylogger<br />

programs <strong>of</strong> 2010. As usual, there is no complete agreement on such<br />

rankings, and [searchcio 10] lists the following as the top ten culprits: Cool-<br />

WebSearch (CWS), Gator (GAIN), 180search Assistant, ISTbar/AUpdate,<br />

Transponder (vx2), Internet Optimizer, BlazeFind, Hot as Hell, Advanced<br />

Keylogger, and TIBS Dialer.<br />

Spyware Adware Keylogger<br />

1 DashBar0 Hotbar Employee Watcher<br />

2 SpyMan IMesh Absolute Key Logger<br />

3 ISearch Kuaiso Toolbar H@tKeysH@@k<br />

4 RelevantKnowledge D Zango Search Assistant SafeSurfing<br />

5 New.Net.Domain.Plugin Kuaiso Toolbar Sc-Keylog Pro<br />

6 Timesink AdClicker Borzoi Keylogger<br />

7 DSSAgent Ezula Nice S<strong>of</strong>t Keylogger<br />

8 RelevantKnowledge HotBar NiceSpy<br />

9 Netzip Trymedia Advanced <strong>Computer</strong> Monitor<br />

10 3721 CnsMin Zango SA Family Key Logger<br />

9.8 Spyware?<br />

Table 9.1: Top Ten Spyware <strong>of</strong> 2010 (after www.ca.com).<br />

The following example illustrates how a useful, well-designed piece <strong>of</strong> s<strong>of</strong>tware<br />

can be abused. The well-known Internet search engine Google has come up<br />

with Google Desktop Search, a utility [Google 05] that prepares an index<br />

(or cache) <strong>of</strong> many types <strong>of</strong> files on a computer. Once the index is ready,<br />

the user can easily search the computer for files with certain keywords. In<br />

addition to text and other types <strong>of</strong> document files, this search includes Web<br />

sites visited in the past, email messages, and bookmarks. Google Desktop<br />

Search is definitely a useful program, but poses a hidden danger. When used<br />

on a public computer, it allows a miscreant to locate important personal<br />

information left by others.<br />

Google Desktop Search is how our brains would work if we had photographic<br />

memories.<br />

—http://desktop.google.com/about.html.<br />

Libraries, university labs, and Internet cafes have public computers that<br />

are continually used by many people. Careless users may enter passwords or<br />

credit card numbers into such a computer, and these may later be discovered<br />

by a hacker. All that such a bad guy has to do is install Google Desktop<br />

Search, hide its icon, leave it for a few hours to generate its cache, and then


250 9 Spyware<br />

use it to locate keywords such as “password,” and “master card.” When<br />

done, the hacker can delete the utility and its cache in order to cover up his<br />

tracks. This scenario applies also to a home computer with several users.<br />

Because <strong>of</strong> this and similar dangers, a careful user should never conduct<br />

important business at a public computer. The owner <strong>of</strong> a public computer<br />

should search as <strong>of</strong>ten as possible for spyware and utilities such as Google<br />

Desktop Search and delete them. Most operating systems have a routine that<br />

displays all the active processes on the computer and can reveal the presence<br />

<strong>of</strong> active but hidden spyware and other suspicious s<strong>of</strong>tware.<br />

9.8.1 Researchware<br />

It is clear that keystroke loggers and screen capturers are spyware, as are<br />

many other types <strong>of</strong> rogue s<strong>of</strong>tware. There are, however, invasive and secretive<br />

programs that are touted by their developers as adware or researchware,<br />

while others consider them as bad as spyware.<br />

Consider the case <strong>of</strong> comScore Networks [comscore 04], a company that<br />

helps other companies improve their marketing, sales, and trading strategies<br />

by providing them with insight on consumer behavior. The following quotes,<br />

from comScore’s site, show how it gains this insight. The first quote is from<br />

2005: “. . . based on a continuously captured view <strong>of</strong> a representative crosssection<br />

<strong>of</strong> more than 2 million global Internet users—the largest consumer<br />

panel.”<br />

The second quote is from 2010: “We accomplish this by providing exceptional<br />

insight into consumer behavior, based on a massive, global cross-section<br />

<strong>of</strong> more than 2 million consumers who have given comScore permission to confidentially<br />

capture their browsing and transaction behavior, including online<br />

and <strong>of</strong>fline purchasing.”<br />

In order to accomplish its task and continuously capture the views <strong>of</strong><br />

millions <strong>of</strong> online users, comScore has developed s<strong>of</strong>tware titled marketscore.<br />

This application (now defunct) was voluntarily installed in the computers<br />

<strong>of</strong> many Internet users (whom comScore calls panelists) who participate in<br />

comScore’s market research and who in return receive from comScore benefits<br />

such as server-based virus protection, improved Internet performance,<br />

sweepstakes prizes, and the opportunity to help shape the future <strong>of</strong> the Internet.<br />

Once marketscore is installed on a computer, it routes all the Internet<br />

traffic <strong>of</strong> the computer through comScore’s computers. Every data packet<br />

sent from a panelist’s computer arrives first at comScore’s server where it<br />

is examined and then forwarded to its destination. Every packet destined<br />

for the panelist is similarly routed through comScore’s server, where it is<br />

also examined and forwarded to the panelist’s computer. Even secure data<br />

transfers, which employ the secure socket layer protocol (see document on<br />

cryptography in the book’s Web site), are examined. An encrypted data<br />

packet arriving at the comScore server is decrypted, examined, and then<br />

re-encrypted and sent on its way.<br />

This process, which is completely transparent to the computer user, allows<br />

comScore to capture a complete picture <strong>of</strong> the panelist’s online activities.


9.8 Spyware? 251<br />

Every Web site visited, every page viewed, every ad seen, every promotion<br />

used, every product or service purchased by the panelist (including the prices<br />

paid) are recorded and used by comScore to provide its client companies with<br />

insight on consumer behavior.<br />

In addition, comScore sends its panelists surveys asking about their <strong>of</strong>fline<br />

commercial activities, such as supermarket purchasing, their use <strong>of</strong> manufacturers’<br />

coupons, or automotive registrations, and this information is also<br />

included in the company’s statistical reports and improves its insight on consumer<br />

behavior.<br />

ComScore claims that its panelists are fully aware <strong>of</strong> its practices, but are<br />

safe because the company removes any personal information it receives from<br />

the participants and sends its clients only statistical data on E-commerce<br />

sales trends, Web site traffic, and online advertising campaigns.<br />

The claim is that spyware is s<strong>of</strong>tware that’s planted in a computer without<br />

the computer owner’s knowledge, whereas researchware is downloaded<br />

into a computer with the owner’s permission. Also, spyware is hidden in the<br />

computer, while researchware can be located and deleted by the owner/user<br />

at will.<br />

These activities have turned comScore in just a few years into an important<br />

Internet research provider (IRP, not to be confused with ISP). Its<br />

research service is regarded as one <strong>of</strong> the best and its clients include large<br />

companies, universities and media outlets.<br />

With such success, trouble was bound to ensue. Privacy advocates got<br />

wind <strong>of</strong> comScore’s activities (and similar operations by other organizations)<br />

and are warning consumers against them, claiming that s<strong>of</strong>tware like marketscore<br />

is nothing more than spyware. After all, it sniffs and tracks every<br />

step a user takes on the Internet, and the user has to trust comScore to ignore<br />

and delete any personal data. Also, marketscore is s<strong>of</strong>tware and is therefore<br />

vulnerable to viruses. If a virus invades marketscore, all the information<br />

available to comScore may become available to the virus’ owner.<br />

In its defense, comScore calls its s<strong>of</strong>tware “researchware” and tries to<br />

convince security experts, ISPs, and the general public that researchware<br />

(and similar programs that collect data) is not spyware. The point is that the<br />

voluntary nature <strong>of</strong> marketscore participation makes it a legitimate application<br />

<strong>of</strong> computers and networks for research purposes. Spyware, in contrast,<br />

is unknowingly planted in victims’ computers.<br />

In response, consumer and security experts point out that legitimizing<br />

labels such as adware and researchware may lead to many new s<strong>of</strong>tware applications<br />

that “live” in the wide gray area between (definitely bad) spyware<br />

and (useful and legitimate) researchware. A possible result <strong>of</strong> this battle may<br />

be government intervention in the form <strong>of</strong> a law or an agency that will try<br />

to precisely classify each s<strong>of</strong>tware product as spyware, adware, researchware,<br />

system monitor, data miner, or something else. Another, unavoidable result<br />

will be additional confusion for computer users. The vast majority <strong>of</strong> computer<br />

users know very little about their computers and how data is moved<br />

into and out <strong>of</strong> the computer. Such users may be lured by promises <strong>of</strong> gifts<br />

and may never realize the kind <strong>of</strong> information that’s collected about them.


252 9 Spyware<br />

The success <strong>of</strong> comScore has prompted other companies to release s<strong>of</strong>tware<br />

that detects the presence <strong>of</strong> marketscore and can delete it. One <strong>of</strong> the<br />

major players in this field is Webroot, an Internet security company (see<br />

[webroot 04]) that developed Spy Sweeper, a utility that promises to locate<br />

and uproot not just spyware and adware, but other types <strong>of</strong> s<strong>of</strong>tware such<br />

as system monitor, researchware, and other “pests” that transmit personal<br />

data and may potentially be as damaging as viruses and worms.<br />

Exercise 9.5: search the Internet for other companies that develop and<br />

promote anti-spyware programs.<br />

Ten Basic Facts About Spyware<br />

The following ten paragraphs are not exactly the ten commandments <strong>of</strong><br />

spyware, but they summarize its important attributes and the features that<br />

distinguish it from other types <strong>of</strong> rogue s<strong>of</strong>tware.<br />

Spyware started as s<strong>of</strong>tware that records keystrokes and captures the<br />

monitor screen periodically, but has since “matured” in unforeseen ways. The<br />

newest breed <strong>of</strong> spyware can open a port in a computer and protect it with<br />

an easy-to-guess password. Any hacker scanning the Internet can find these<br />

vulnerable computers, guess the password, and transmit dangerous s<strong>of</strong>tware.<br />

Thus, new spyware can create security weaknesses.<br />

The use <strong>of</strong> spyware is restricted by law in the United States and in<br />

other countries. Thus, before trying to install spyware on someone else’s<br />

computer, a potential spy should consider the legal ramifications <strong>of</strong> this act<br />

and its possible consequences. More federal and local laws governing spyware<br />

can be expected in the future.<br />

Spyware is constantly becoming more sophisticated and less expensive,<br />

which makes it more and more popular.<br />

Spyware is made easy to install, easy to use, but hard to remove, and<br />

these features also increase its popularity.<br />

Adware and researchware are not the same as spyware. Spyware is<br />

not generally written and distributed by commercial entities or market researchers.<br />

These bodies write and attempt to distribute s<strong>of</strong>tware that can be<br />

classified as rogue or at least as invading privacy, but spyware is much more<br />

invasive and constitutes a threat, not just a nuisance.<br />

Spyware is <strong>of</strong>ten hawked as monitoring s<strong>of</strong>tware, which disguises its real<br />

applications. However, its makers and sellers are aware <strong>of</strong> the potential spying<br />

power <strong>of</strong> their s<strong>of</strong>tware and should warn potential buyers <strong>of</strong> any possible<br />

abuses <strong>of</strong> their monitoring s<strong>of</strong>tware. Instead <strong>of</strong> warning buyers, the makers <strong>of</strong><br />

spyware <strong>of</strong>ten make buyers agree (with the instantaneous click <strong>of</strong> allegiance)<br />

to release them from any liability in the use or abuse <strong>of</strong> the s<strong>of</strong>tware.<br />

Spyware is made difficult to remove and to detect, but it is not absolutely<br />

invisible; it can be detected, yet spyware makers <strong>of</strong>ten try to convince<br />

potential purchasers that the s<strong>of</strong>tware is untraceable.


9.8 Spyware? 253<br />

Spyware can be planted in a victim’s computer from the outside, as a<br />

Trojan horse, exploiting any vulnerabilities or security weaknesses as any<br />

other rogue s<strong>of</strong>tware.<br />

Most spyware transmits the data it collects. Therefore, deleting sensitive<br />

data, such as log files, browser caches, and cookies, may not protect a<br />

computer user from loss <strong>of</strong> data by spyware.<br />

The best way to detect and delete spyware is by using anti-spyware on a<br />

regular basis. However, even this cannot guarantee a clean computer, which<br />

is why a careful computer user should use common sense and should (1) read<br />

reports on the Internet about new types <strong>of</strong> spyware, (2) avoid s<strong>of</strong>tware from<br />

unknown or untrusted sources, and (3) avoid surfing to Web sites where a<br />

careless click may download spyware to the computer.<br />

[spywareguide 04] is a Web site with much information about spyware,<br />

anti-spyware, and related topics. [Wyatt 04] is a book helping users <strong>of</strong> Windows<br />

XP to fight spyware as well as other problems specific to that operating<br />

system.<br />

I’m not a spy or anything. I did all the work sitting at a little desk in<br />

a little room on the third floor. I wrote a report, and that was that.<br />

—Tom Clancy, Patriot Games (1987)


10<br />

Identity Theft<br />

Identity theft is the crime <strong>of</strong> pretending to be someone else. The thief goes to<br />

the trouble <strong>of</strong> obtaining someone’s identity in order to gain financially from<br />

fraud, leaving the victim to sort out the resulting mess as best they can.<br />

Identity thieves use three main methods to obtain personal information:<br />

Installing spyware on personal computers, computers at public places,<br />

and computers in <strong>of</strong>fices and other places <strong>of</strong> work. Such spyware acts as<br />

snoopware, and provides the thief with sufficient personal information to<br />

steal someone’s identity.<br />

Stealing data files from E-commerce sites, government agencies, and<br />

other entities that maintain large consumer and citizen data bases.<br />

Phishing. This is the topic <strong>of</strong> Section 10.4.<br />

There are also secondary sources for personal information such as stealing<br />

letters from mailboxes, searching trash cans for useful garbage, mostly<br />

computer printouts, and sending baited mail or email to unsuspecting or vulnerable<br />

persons, promising free gifts or cruises and asking for personal data.<br />

Spyware is the topic <strong>of</strong> Chapter 9. This chapter discusses the latter two<br />

methods.<br />

The Consumer Sentinel Network (CSN) is a secure online database <strong>of</strong><br />

consumer complaints that were filed with the FTC, the Internet Crime Complaint<br />

Center, Better Business Bureaus, Canada’s Phone Busters, the U.S.<br />

Postal Inspection Service, the Identity Theft Assistance Center, the National<br />

Fraud Information Center, and others.<br />

In 1997, the CSN started collecting fraud and identity theft complaints,<br />

and it now has more than 7.2 million complaints, not just about identity<br />

theft. In its first public report, in 2008, the CSN has included the numbers<br />

<strong>of</strong> identity theft complaints filed from 2000 to 2008. The nine numbers are<br />

D. Salomon, <strong>Elements</strong> <strong>of</strong> <strong>Computer</strong> <strong>Security</strong>, Undergraduate Topics in <strong>Computer</strong> Science,<br />

DOI 10.1007/978-0-85729-006-9_10, © Springer-Verlag London Limited 2010


256 10 Identity Theft<br />

31,140, 86,250, 161,977, 215,240, 246,909, 255,667, 246,174, 259,266, and<br />

313,982. These are only the numbers <strong>of</strong> complaints, not <strong>of</strong> actual cases <strong>of</strong><br />

identity theft, but the trend is clear and is frightening.<br />

According to [spendonlife 10], identity theft is on the rise, affecting<br />

almost ten million victims in 2008 (a 22% increase from 2007).<br />

10.1 Introduction<br />

A rare crime in the past, identity theft has become prevalent in the age <strong>of</strong><br />

the Internet because <strong>of</strong> the greater availability <strong>of</strong> personal information in<br />

various computerized data bases. More and more files and data bases contain<br />

personal information such as names, physical addresses, email addresses,<br />

telephone numbers, and government identification numbers (in the United<br />

States, the social security numbers). A news item noticed by this author<br />

in January 2009 tells about a hacker (or a group <strong>of</strong> miscreants) who stole<br />

the details (names, passwords, telephone numbers, email addresses, birth<br />

dates, sex and ethnicity data, as well as other demographic information)<br />

<strong>of</strong> 4.5 million job seekers from the British recruitment<br />

site monster.co.uk. This is believed to be the largest<br />

case <strong>of</strong> cyber theft in the UK and such cases are becoming<br />

common. Not every identity thief is a hacker<br />

or a pr<strong>of</strong>essional criminal. A news item broadcast on<br />

CNN in early November 2004 tells about a cancer patient<br />

whose identity had been stolen while he lay in<br />

hospital. After weeks <strong>of</strong> double agony for the victim,<br />

the thief was caught and turned out to be a technician<br />

at the hospital, who happened to have access to the<br />

patient’s information.<br />

In the United States, the key step to stealing someone’s identity is to<br />

obtain that person’s social security number. Based on this number, the thief<br />

can obtain bona fide identification documents, such as a driver’s license and<br />

credit cards. With those, the thief may purchase merchandise and draw cash.<br />

The thief may also use the credit background <strong>of</strong> the victim to apply for loans,<br />

and may even obtain a job, not pay any taxes, and wait for the tax authorities<br />

to demand the money from the victim. There are known cases <strong>of</strong> victims <strong>of</strong><br />

identity theft getting arrested for crimes committed by the thieves.<br />

Even governments have finally become aware <strong>of</strong> the role played by the<br />

social security number (SSN) in identity theft. A law (that started its life<br />

as SB168) enacted in California in early 2005 is designed to thwart identity<br />

theft by restricting the use <strong>of</strong> social security numbers by bodies other than<br />

government agencies. Among other clauses, this law says that companies<br />

cannot post or display social security numbers, print them on identification<br />

cards or badges, print an SSN on anything mailed to a customer, require<br />

people to transmit an SSN over the Internet (through e-mail, for example)


10.1 Introduction 257<br />

unless the connection is secure, or require people to log on to a Web site using<br />

an SSN without a password. One publication <strong>of</strong> the state <strong>of</strong> California that<br />

discusses the relation between the SSN and identity theft is [Calif-gov 05].<br />

Experts who talked to many victims <strong>of</strong> this crime paint the following<br />

picture <strong>of</strong> a typical identity theft. Mr and Mrs Smith apply for a new, lowinterest<br />

mortgage on their home. To the best <strong>of</strong> their knowlege they have<br />

excellent credit and don’t owe money to anyone. When their loan application<br />

is processed, the bank obtains their credit report, which shows many open,<br />

outstanding accounts to stores, credit card companies, and E-commerce sites.<br />

In the language <strong>of</strong> loan <strong>of</strong>ficers, these are negative accounts, so their loan application<br />

is refused. The Smiths are first surprised, then puzzled, and finally<br />

devastated. Their case is complicated by the additional fact that the thief<br />

actually made the minimum payments <strong>of</strong> the credit cards balances, which<br />

allowed him more time for his activities and made the police investigators<br />

suspicious <strong>of</strong> the Smiths.<br />

The victims normally take months to discover the identity theft and on<br />

average they have to pay about $1000 in legal fees and damage repair <strong>of</strong> their<br />

credit. The thief is many times apprehended, but is normally sentenced to<br />

only probation or a short prison term, punishment that many thieves feel<br />

makes this type <strong>of</strong> crime pay very well. In addition, light sentences also<br />

discourage law enforcement agencies from prosecuting identity theft crimes.<br />

In a democracy, prosecution is a slow, expensive process, and a prosecutor<br />

or a district attorney may decide that releasing an identity thief would free<br />

scarce resources that could then be used to prosecute more serious crimes.<br />

In response to the growing threat <strong>of</strong> identity theft, the Unites States<br />

Congress passed a tough new identity theft bill, signed into a law by the<br />

President in July 2004, that adds two years to prison sentences for criminals<br />

convicted <strong>of</strong> using stolen credit card numbers and other personal data to<br />

commit crimes. Violators who use such data to commit “terrorist <strong>of</strong>fenses”<br />

would get five extra years. In the signing ceremony the President said “Like<br />

other forms <strong>of</strong> stealing, identity theft leaves the victim poorer and feeling<br />

terribly violated. The criminal can quickly damage a person’s lifelong effort<br />

to build a good credit rating.”<br />

Spyware for identity theft. The discussion <strong>of</strong> spyware in Chapter 9<br />

makes it obvious that spyware, even the less-sophisticated programs designed<br />

for use by parents and bosses, can become a dangerous tool in the hands<br />

<strong>of</strong> an identity thief (who in turn considers it a treasure trove). The thief<br />

installs spyware remotely, as a Trojan horse, normally by sending the spyware<br />

application as email attachment and duping the recipient to click on it (an<br />

example <strong>of</strong> a drive-by download).<br />

Exercise 10.1: Can you think <strong>of</strong> any legitimate scenario where a parent<br />

or employer would need to use remote installation to install a monitoring<br />

program?<br />

A case study. The Federal Reserve Board <strong>of</strong> the United States government<br />

is an agency that oversees Federal Reserve Banks, establishes monetary<br />

policy (interest rates, credit, etc.), and monitors the economic health <strong>of</strong> the


258 10 Identity Theft<br />

country. Its current chairman, Ben Bernanke, was one <strong>of</strong> hundreds (perhaps<br />

as many as 500) victims <strong>of</strong> an elaborate identity-fraud ring—headed by<br />

Leonardo Darnell Zanders, a convicted scam artist known as “Big Head”—<br />

that stole millions from consumers and from financial institutions around the<br />

United States. In January 2010, a member <strong>of</strong> this ring stole Mrs Bernanke’s<br />

purse with the family’s checkbook. A few days later, someone started cashing<br />

those checks. The stolen checkbook became a part <strong>of</strong> an ongoing identitytheft<br />

investigation by the Secret Service and the U.S. Postal Inspection Service.<br />

This investigation resulted in several arrests and criminal indictments<br />

<strong>of</strong> members <strong>of</strong> the ring. It is now known that they used a combination <strong>of</strong> traditional,<br />

low-tech theft and modern high-tech electronic fraud to steal from<br />

the bank accounts <strong>of</strong> victims.<br />

The result? Leonardo Darnell Zanders, pleaded guilty for conspiring to<br />

commit bank fraud and was sentenced to 200 months (16 years and eight<br />

months) in prison.<br />

Exercise 10.2: Obviously, it is risky to type a password outright in a public<br />

computer even if no one is looking. Suggest ways to type a password (or any<br />

other text) indirectly, to confuse any spyware.<br />

Because <strong>of</strong> the prevalence <strong>of</strong> identity thefts, there are several precautions<br />

that everyone must take. The most important ones are the following:<br />

Monitor your credit on a regular basis. This is the best way to discover<br />

identity theft. Any suspicious or unrecognizable items such as a wrong<br />

change <strong>of</strong> address, unknown open financial accounts, or negative statements<br />

by anyone should be cause for concern. Similarly, we all receive monthly<br />

billing statements from banks, credit cards, and utility companies and those<br />

should also be checked for errors, unusual activity, and unknown, unrecognizable<br />

items. In the United States, an individual is periodically entitled to<br />

a free credit report which can be applied for from the large credit reporting<br />

companies such as EquiFax, Experian, TransUnion, ConsumerInfo, and<br />

CreditReporting.com.<br />

When applying for a loan, a credit card, or rental housing, always request<br />

that your identification number (in the United States, the social security<br />

number) be erased once the application is processed. If the application<br />

requires a credit report, ask for the report to be shredded once the application<br />

is processed.<br />

Persons in the United States should request their social security earnings<br />

and benefit statement at least once a year and check for signs <strong>of</strong> fraud. This<br />

statement can be applied for online at [annualcreditreport 10] or by filling<br />

out form SSA-7004 obtainable at [ssa-form 04]. The statement is mailed to<br />

the consumer by the government.<br />

Shred old and unneeded documents (Section 10.2). This author’s experience<br />

suggests using a cross-cut shredder for best results and to avoid the<br />

huge piles <strong>of</strong> narrow slips <strong>of</strong> paper left by a straight-cut shredder.


10.1 Introduction 259<br />

Replace your mailbox with a lockable one. One way identity thieves obtain<br />

personal information is by stealing it from mailboxes. <strong>Security</strong>-conscious<br />

persons should consider renting a mailbox in a post <strong>of</strong>fice (another example <strong>of</strong><br />

a trade-<strong>of</strong>f between security and convenience). Anyone going on vacation or<br />

planning to stay away from home should arrange for their mail to be picked<br />

up by a trusted person or be kept in the post <strong>of</strong>fice.<br />

Exercise 10.3: What personal information useful to an identity thief can<br />

be found regularly in a mailbox?<br />

An identity thief may call you, claiming to be from a loan company that<br />

gives out loans at a low interest rate. It is important not to give out personal<br />

information over the telephone, unless you personally know the person on<br />

the other side. Along the same lines, don’t print your social security number<br />

on personal checks and don’t let merchants write it on your checks as an<br />

identification.<br />

Check your wallet and remove anything you don’t use on a regular basis.<br />

There is no need to have in your wallet or carry on your person bank<br />

account numbers, passwords, a birth certificate, or your social security card.<br />

Unfortunately, in the United States certain people must carry their medicare<br />

or another health insurance card that uses the social security number as<br />

identification.<br />

Passwords are now routinely used by financial institutions to verify transactions.<br />

If a password is optional, get one (and follow the guidelines for secure<br />

passwords listed in Section 8.3).<br />

Be paranoid rather than vulnerable. Check your mail and email with<br />

suspicion. Don’t just assume that a letter you received was really sent by a<br />

person known to you or that an email received really came from the source<br />

address on the email and is going to the destination address you specify. Remember<br />

how spo<strong>of</strong>ing (Section 7.3) works and how spammers use it. Identity<br />

thieves use it in much the same way to obtain your personal data. You may<br />

receive email that seems to have come from a familiar store or online merchant<br />

and asks you to click on a link to update your personal information.<br />

You click and are directed to a Web site that looks identical to the store’s or<br />

merchant’s site, where you are asked to enter your password. Be suspicious.<br />

It is best to type the store’s URL manually rather than use the convenience<br />

<strong>of</strong> a click.<br />

Page spo<strong>of</strong>ing is a technique hackers and thieves use to route your email<br />

or Web site request to a different address. If a Web form has a return address<br />

such as<br />

http://www.B<strong>of</strong>A.com@thief.biz/index.html, your reply will go the address<br />

following the “@” sign instead <strong>of</strong> to the Bank <strong>of</strong> America.<br />

The use <strong>of</strong> security s<strong>of</strong>tware is recommended. At a minimum you should<br />

have on your personal computer a firewall, antivirus, and anti-spyware s<strong>of</strong>tware.<br />

The latter two should be updated regularly with the latest definitions<br />

and security patches.


260 10 Identity Theft<br />

Bypass registration. Many magazines and newspapers keep their content<br />

on the Internet and will let anyone read it for free. Some, such as the<br />

New York Times, require (free) registration. Beside being tedious, typing<br />

your name, address, email and other personal information may help identity<br />

thieves and should be avoided as much as possible. An attractive solution is<br />

to use the free service <strong>of</strong>fered by www.bugmenot.com. You type in the site<br />

you’re trying to access and you immediately receive a username and password<br />

that will let you in. No personal information needs be typed or sent over the<br />

Internet.<br />

Fake an email address. Often, a Web site asks for an email address to<br />

send a confirmation to. Similarly, someone at a party may ask for your email<br />

for a flimsy reason. Anyone who needs a temporary email address can use the<br />

free service <strong>of</strong>fered by [mailinator 04]. You simply select an email address <strong>of</strong><br />

the form xxx@mailinator.com, where xxx is any string and give it to someone<br />

you’d like to hear from once, but not more than once. When a message is<br />

sent to that address, it is deleted after a few hours, giving you a chance to<br />

read it. This foils any would-be identity thief or spammer who collect email<br />

addresses. Similar services are <strong>of</strong>fered by [dodgeit 04], [spamgourmet 04], and<br />

[spambob 04].<br />

A disposable credit card number? Yes, Citibank <strong>of</strong>fers them. Such a<br />

number can be used just once for online shopping (not for purchases where<br />

the actual card has to be swiped). It takes time to apply for such numbers,<br />

but they increase security.<br />

Rotate your IP. A hacker planning to break into your computer starts by<br />

finding your IP address. For a subscription fee <strong>of</strong> $80 a year, anonymizer.com<br />

will change your IP at random very <strong>of</strong>ten while you surf, thus strengthening<br />

your Internet security.<br />

Exercise 10.4: What’s wrong with people knowing your IP number?<br />

Turn <strong>of</strong>f html. Email messages are sent in either plain text or html<br />

formats. It turns out that a spammer can embed special html commands in<br />

an otherwise innocuous-looking email message. Such code tells the spammer<br />

whether the message has been read and for how long. Many email programs<br />

make it possible to turn <strong>of</strong>f “display html” in the preferences.<br />

This long list looks intimidating, but there is some help. The identity<br />

theft resource center [idtheftcenter 04] <strong>of</strong>fers information, resources, and help<br />

to victims <strong>of</strong> identity theft.<br />

One way to gain extra protection when surfing the Internet is to use a<br />

proxy server. A proxy server is a service that “sits” between your computer<br />

and the Internet. It serves many Internet users by saving the most-popular<br />

Web sites in its buffer (or cache). When a user requests a cached page, the<br />

proxy server can serve it immediately. A special type <strong>of</strong> a proxy server is an<br />

anonymous server. It hides the IP addresses <strong>of</strong> its users, thereby allowing<br />

them to surf anonymously. A Web site that’s being visited from an anonymous<br />

server cannot locate the IP address <strong>of</strong> the visitor, which gives the visitor


10.2 Shredding 261<br />

some protection. The point is that a Web site may collect the IP addresses<br />

<strong>of</strong> its visitors and use this information to limit what certain visitors can see<br />

and to monitor visitors’ surfing patterns. However, the anonymous proxy<br />

server itself may collect the IP numbers <strong>of</strong> its visitors and abuse this information,<br />

which is why it is recommended to choose a reputable anonymous<br />

proxy server (which rules out most <strong>of</strong> the free ones).<br />

10.2 Shredding<br />

Old magnetic and optical storage media should be thoroughly destroyed, not<br />

just thrown away, when it is no longer needed, because people tend to forget<br />

what they put on old disks and CDs. A single CD/DVD may have old bank<br />

and tax records and personal correspondence that may prove a treasure trove<br />

for a wrongdoer looking to steal identities. Banks, mortgage companies, and<br />

medical and dental <strong>of</strong>fices should especially pay attention to the problem<br />

<strong>of</strong> getting rid <strong>of</strong> old, personal information. The following paragraphs <strong>of</strong>fer<br />

some ideas on how to handle old storage media in order to protect personal<br />

information and privacy.<br />

Encrypt personal files. Many strong-encryption programs, commercial,<br />

shareware, and free, are available for all computer platforms. The well-known<br />

PGP s<strong>of</strong>tware is the first example that comes to mind, and there are many<br />

others. Remember that the protection is provided by the encryption key, not<br />

the encryption algorithm, so be sure to choose strong keys as discussed in<br />

Section 8.3.<br />

On a magnetic disk, it is not enough to simply delete old files. Deleting<br />

a file only removes it from the disk directory and marks the space occupied<br />

by the file as available, so that other data can be written in it. However, as<br />

long as no data has been written in this space, an expert may recover the<br />

original, deleted data, or at least parts <strong>of</strong> it.<br />

Apparently there are many security-conscious people who own paper shredders<br />

who don’t know or don’t care about residual information from their<br />

deleted computer files. But there have been many people in recent history<br />

who have learned about this issue the hard way. That’s how U.S. Senate investigators<br />

got evidence on Col. Oliver North. Email messages that North<br />

believed to be deleted were found and used against him in litigation. A<br />

total <strong>of</strong> 758 email messages were sent, involving him in the Iran-Contra affair,<br />

and every one <strong>of</strong> them was recovered. Ironically, this problem becomes<br />

more difficult if you make backup copies <strong>of</strong> everything on your computer,<br />

as you should.<br />

—From http://www.akdart.com/priv9.html.<br />

A magnetic disk can be erased by reformatting it, but not all reformatting<br />

utilities do a good job. It is safer to erase a disk by degaussing it<br />

first, and then formatting it. Degaussing is the process <strong>of</strong> passing the disk


262 10 Identity Theft<br />

through a strong magnetic field that erases the data bits recorded on the<br />

disk. (The unit <strong>of</strong> measure <strong>of</strong> magnetic inductive force is the gauss, named<br />

for mathematician Karl Friedrich Gauss.)<br />

When new data is recorded “on top” <strong>of</strong> old, it erases the old data. This<br />

is referred to as data wiping. Thus, a disk can be erased by filling it up with<br />

(perhaps random) data, but the entire disk must be filled up, to ensure that<br />

no old data remains.<br />

A disk can be physically destroyed by exposing the platters and cutting<br />

or physically damaging each. This was easy to do with floppy disks, but a<br />

hard disk has to be disassembled first.<br />

Old CDs and DVDs can be shredded. Many high-quality shredders are<br />

powerful enough to shred the heavy plastic <strong>of</strong> these media. However, it is<br />

the opinion <strong>of</strong> this author that it is enough to bend and fold a CD several<br />

times and make sure the metallic layer (that looks like very thin aluminum<br />

foil) has cracked. A few more foldings will actually break the CD, and the<br />

really paranoid will throw each piece in a different trash container.<br />

A commercial service that shreds documents may want to retain the<br />

inner hub <strong>of</strong> all CDs shredded (this is where the serial number <strong>of</strong> the CD is<br />

written, Figure 10.1) to prove that they were in fact destroyed, and not just<br />

thrown in the trash.<br />

3311G315 10704 15<br />

Figure 10.1: The Inner Hub <strong>of</strong> a CD.<br />

Old, unneeded paper documents should be shredded. A cross-cut shredder<br />

is recommended for best results and to avoid the huge piles <strong>of</strong> narrow<br />

slips <strong>of</strong> paper left by a straight-cut shredder.<br />

When applying for a loan, a credit card, or rental housing, always request<br />

that your identification number (in the United States, the social security<br />

number) be erased once the application is processed. If the application<br />

requires a credit report, ask for the report to be shredded once the application<br />

is processed.<br />

(The following news item appeared in the Orange county, California in<br />

late November 2009. The California Association <strong>of</strong> Community Organizations<br />

for Reform Now (ACORN) was accused <strong>of</strong> a massive document dump<br />

at its San Diego, California <strong>of</strong>fice. The discarded papers contained sensitive<br />

personal information about clients and employees, such as Social <strong>Security</strong>


10.3 Internet Cookies 263<br />

numbers, driver’s license numbers, voided checks, tax returns, even credit<br />

reports.)<br />

It never ceases to astonish me what organisations leave in refuse piles<br />

without first giving them a session with the paper shredder.<br />

10.3 Internet Cookies<br />

—Hugo Cornwall, The Hacker’s Handbook (1985).<br />

Online shopping is so common nowadays that we take it for granted. It’s easy<br />

to surf to an online store, select an item, place it on a “shopping cart” and<br />

either order it or ignore it and forget about it. When the item is ordered,<br />

the customer provides a name, address, and credit card information, but<br />

before the item is ordered the shopping cart is simply a record in the online<br />

store’s computer with the item’s information and whatever is known about<br />

the customer (<strong>of</strong>ten just an IP address). Now consider the following typical<br />

situation. The customer places an item in the shopping cart, then surfs to<br />

another store to compare items and prices. If the customer returns to the<br />

original store within a reasonable period <strong>of</strong> time, ready to order the item, the<br />

store’s computer should be able to identify the customer and associate him<br />

with a waiting shopping cart.<br />

This problem was recognized in the early days <strong>of</strong> E-commerce and is<br />

handled by adding a simple feature, cookies, to Internet browsers. A cookie<br />

is a small text file, with an expiration date, sent by the store (or by any<br />

site the user visits) and kept by the browser until it expires or until the<br />

user explicitly deletes it. When a potential customer visits an online store,<br />

the store’s computer looks for any cookies in the customer’s browser area.<br />

If it finds a cookie with the store’s URL, the cookie’s content identifies the<br />

customer to the store, which can then reconstitute any past shopping cart,<br />

shopping habits, and browsing habits <strong>of</strong> the customer.<br />

A simple application for cookies is to identify an online visitor to a Web<br />

site (such a visitor may also be a customer). Imagine the Web site <strong>of</strong> URL<br />

www.rollers.info. Once someone connects to this site, the site search for<br />

cookies that start with the string UserID and end with www.goto.com/. If<br />

no such cookie is found, the site sends a cookie with the following format:<br />

UserID F9D3AEC40583962D www.rollers.info/<br />

The site then creates a record on its computer that associates the visitor<br />

with the identification string F9D3AEC40583962D. On subsequent visits, the<br />

site will find this cookie in the visitor’s computer and will use it to identify<br />

the visitor.<br />

Exercise 10.5: Suggest other applications for cookies.<br />

The mechanism <strong>of</strong> cookies is certainly handy and contributes to the usefulness<br />

<strong>of</strong> the Internet and its resources. However, it allows Web sites to store<br />

something in a user’s computer and therefore has a potential for abuse. One


264 10 Identity Theft<br />

example <strong>of</strong> such abuse is an employee <strong>of</strong> company A who knows the meaning<br />

<strong>of</strong> cookies installed by A on computers. The employee then quits A, is hired<br />

by B, a competitor <strong>of</strong> A, and uses his knowledge to read cookies installed by<br />

A to benefit B. Another example is a boss going through the cookies stored<br />

in an employee’s work computer to discover the Internet surfing habits <strong>of</strong><br />

the employee. The boss cannot tell what each cookie means, but cookies<br />

from online merchants imply shopping on company time,<br />

and cookies from adult sites may imply objectionable use<br />

<strong>of</strong> company time and resources. The boss, <strong>of</strong> course, may<br />

do more than cookie checking. He may actually install spyware<br />

on all employee computers and log keystrokes, email<br />

sent, and other information on the employee’s use <strong>of</strong> the<br />

computer.<br />

The good news about cookie security is that no one has yet found a way<br />

to employ cookies to install a virus or to execute any other type <strong>of</strong> remote<br />

attack.<br />

Every browser has user-controlled settings that limit the cookies that a<br />

site can store in the browser. Typically, a user can set the browser to (1)<br />

always accept cookies, (2) ask the user for each cookie sent, (3) ask the user<br />

for each site visited, and (4) reject all cookies.<br />

Rejecting cookies may be a safe approach for careful users, but some sites<br />

don’t work without them. For example, Wells Fargo bank provides several<br />

useful online services to its customers, but those services are controlled by<br />

cookies. A computer owner may always check all the existing cookies and<br />

manually delete all cookies from unknown sources. There are also utilities<br />

that allow the user to edit cookies, delete them, add new cookies, and move<br />

cookies from browser to browser.<br />

10.4 Phishing<br />

When identity thieves fail to locate victims with the help <strong>of</strong> data stolen on<br />

the Internet, they frequently resort to what has become known as phishing.<br />

In this type <strong>of</strong> scheme, the criminal sets up a Web site that resembles a<br />

familiar E-commerce or bank site. The idea is to dupe innocent consumers<br />

into entering personal information while trying to open an account or apply<br />

for a loan at the fake site. A common variation on this technique is to send an<br />

email message to someone, informing them that their personal information<br />

(bank account details, credit card numbers, dates <strong>of</strong> birth and so on) has<br />

been lost or is being audited, and asking to re-enter the information. Many<br />

vulnerable people fall for such schemes, especially if the message appears to<br />

have come from a legitimate site, such as a bank or a large online merchant.<br />

<strong>Security</strong> workers in this area believe that phishers are able to convince up to<br />

5% <strong>of</strong> recipients to respond to them.<br />

The following is a recent, typical example <strong>of</strong> phishing, one among many<br />

sent to this author. This one relies on social engineering, trying to confuse<br />

the reader and elicit a quick response.


10.4 Phishing 265<br />

ALERT: Fraudulent Email Recently Sent to Your CSU E-mail account<br />

IT Help Center<br />

Sent: Wednesday, April 14, 2010 2:01 PM<br />

To: Salomon, David<br />

Good afternoon,<br />

You recently received a fraudulent email listed below. Please delete<br />

this message and do not respond. CSUN will never ask for your password<br />

or answers to your security questions. If you have already responded to<br />

the fraudulent message, reset your password by visiting<br />

https://auth.csun.edu/idm/changepwd<br />

and your security question and answer by visiting<br />

https://auth.csun.edu/idm/aqprov.<br />

If you have any questions, please contact the IT Help Center at<br />

(818) 677-1400 or by email to helpcenter@csun.edu.<br />

----------------------------------------------<br />

From: Sandra Agyei - Poku [pokus@coventry.ac.uk]<br />

Sent: Saturday, April 10, 2010 3:51 PM<br />

To: info@web.org<br />

Subject: Webmail Quota Has Exceeded The Set Limit<br />

Your mailbox has exceeded the storage limit which is 20GB as set by<br />

your administrator,you are currently running on 20.9GB, you may not<br />

be able to send or receive new mail until you re-validate your<br />

mailbox.To re-validate your mailbox please CLICK HERE :<br />

Thanks, System Administrator .<br />

Naturally, as phishing and its dangers become familiar to the public,<br />

consumers become aware <strong>of</strong> the danger and look and think twice before entering<br />

any sensitive information. In response, the phishers have also become<br />

more sophisticated. They find ways to send messages that look legitimate<br />

and even have the correct sender’s address. It is common to receive messages<br />

from a bank or other online site that say: “We will never ask you for your<br />

password. If you receive such a request from us, let us know.”<br />

Experts suggest a simple and useful way to handle phishing. If you<br />

receive a request for personal information or for a donation that seems to<br />

come from a bona fide, familiar source S, don’t answer it and don’t follow<br />

any instructions to go to a Web site. Instead, get in touch with the source<br />

(using the email address, physical address, or telephone number you always<br />

use for S) and ask them to confirm the request. If you decide to use the<br />

email address, wait! The phisher may have modified it in your address book.<br />

Better use the telephone.<br />

Some phishing attempts arrive as an html form where the recipient can<br />

input the information directly into the form. This is convenient but risky.<br />

Responding to email forms should be avoided as much as possible.<br />

Check your bank balance regularly and compare it to the bank statement<br />

to ensure that all the transactions are legitimate. It is even more important<br />

to do this with credit and debit cards. Today, aware <strong>of</strong> phishing and other


266 10 Identity Theft<br />

identity theft “techniques,” banks and credit card companies call the consumer<br />

for any unusually large or suspicious transactions, but the consumer<br />

should have the ultimate responsibility for his financial situation. There are<br />

credit and bank monitoring services that will watch your accounts for you<br />

(or rather, for a fee), but it is this author’s opinion that this type <strong>of</strong> work<br />

should best be done by the individual, except in rare cases.<br />

Credit and Bank Monitoring Services<br />

The AAA (American Automobile Association). A free service provided<br />

in the United States by the AAA to its members. Members have instant<br />

access to their credit records at Experian, one <strong>of</strong> the three credit monitoring<br />

bureaus in the United States. This also includes information on who has<br />

been checking your credit reports and on creditors’ addresses.<br />

ConsumerInfo Credit Monitoring E-mail Reporting. This is a service<br />

that <strong>of</strong>fers unlimited Experian credit reports. Once you enroll, you can see<br />

your updated credit report at anytime. This service also emails its members<br />

alerts <strong>of</strong> changes to their credit reports. It also monitors members’ credit<br />

reports on a daily basis to discover any fraudulent activity, new inquiries,<br />

new accounts, and late payments—all within 24-hours. The service features<br />

credit dispute forms and tips. This gives members the ability to easily correct<br />

mistakes in credit reports.<br />

Equifax Credit Reporting. Equifax protects its members against identity<br />

theft and minimizes its impact on victims. Membership includes weekly email<br />

alerts <strong>of</strong> credit changes and identity theft insurance (with a deductible and<br />

other limits). Members have access to one initial Equifax credit report and<br />

there is a charge for any additional reports.<br />

Experian Credit Reporting Services. It provides its members with powerful<br />

tools to help them manage and protect personal credit information in<br />

real time. Members get unlimited access to credit reports, scoring tools, and<br />

credit advice. An added benefit is early warning <strong>of</strong> fraudulent activity or<br />

identity theft.<br />

Know Your Loan Rate. A service that advertises itself as a unique<br />

and really useful service. It surveys lenders and uses the information thus<br />

obtained to provide potential borrowers with an estimate <strong>of</strong> what they can<br />

expect to pay based on their credit scores and other factors. Such a service<br />

may prove useful to those planning to buy a house.<br />

Social <strong>Security</strong> Statement (in the United States). The Social <strong>Security</strong><br />

Statement estimates the future Social <strong>Security</strong> benefits that an individual<br />

can expect and explains how to qualify for those benefits. This statement is<br />

free. It is possible to request a Social <strong>Security</strong> Statement online. At present,<br />

however, the statement itself is provided by mail only, not online, and takes<br />

two to four weeks.


10.4 Phishing 267<br />

TransUnion Credit Report Service. Offers its members a free credit<br />

report, credit score and analysis, and borrowing power analysis. This service<br />

has the following features (quoted directly):<br />

1. Weekly Fraud-Watch Emails. Receive weekly email alerts to changes<br />

in your report. Immediately find out about credit report changes including<br />

fraudulent activity, new inquiries, new accounts, late payments, and more.<br />

2. Quarterly Access to Your Credit Report. Receive a brand new credit<br />

report four times per year. Reports are easy-to-read with color graphics and<br />

free interactive guide.<br />

3. Credit Score Monitoring. Receive updated credit scores four times<br />

per year. Includes personalized analysis with tips for improving your score.<br />

4. Borrowing Power Monitoring. Receive updated analysis <strong>of</strong> your<br />

debt/income relationship four times per year. Includes custom hints for improving<br />

debt management.<br />

5. Powerful Tools and Analysis. Graphical trending helps you manage<br />

your progress. View colorful charts and graphs on changes in your debt,<br />

income, credit score, and more.<br />

For actual addresses <strong>of</strong> these and similar services, see [creditexpert 05],<br />

[creditreporting 05], [equifax 05], [knowyourloanrate 05], [qspace 05], [ssastat<br />

05], and [TransUnion 05].<br />

Around 2003, phishing and other aspects <strong>of</strong> identity theft had become<br />

so prevalent that most experts have decided to upgrade identity theft from<br />

“just” e-crime to an endemic online threat. One result <strong>of</strong> this realization is<br />

that financial institutions, online retailers, and others who have a wide online<br />

customer base are trying harder than ever to secure their data and protect<br />

their customers. Another aspect <strong>of</strong> increased identity theft is that technology<br />

companies are developing new products and are <strong>of</strong>fering new services to<br />

counteract and curb, or at least greatly reduce, online identity theft. Here is<br />

a list <strong>of</strong> current products available at the time <strong>of</strong> writing (mid 2010).<br />

The Anti-Phishing Working Group (APWG). This is an industry association<br />

focused on eliminating the identity theft and fraud that result from<br />

the growing problem <strong>of</strong> phishing and email spo<strong>of</strong>ing. APWG is located at<br />

[APWG 04].<br />

Antiphishing toolbars. One phishing technique uses spam to lure vulnerable<br />

individuals to a certain URL designed to look like a legitimate online<br />

store or an e-commerce site. Once there, the potential victim is lured into<br />

entering personal information. An antiphishing toolbar is a small, free applet<br />

<strong>of</strong>fered by several ISPs, such as AOL and EarthLink and by legitimate online<br />

e-commerce sites such as eBay. The program adds to the user’s Web browser<br />

a new toolbar that warns the user about Web sites that try to hide their true<br />

identities.<br />

Antiphishing services. A typical antiphishing service employs a distributed<br />

network <strong>of</strong> sensors to monitor email traffic, news groups, and Web


268 10 Identity Theft<br />

domain registrations in an attempt to spot new scams, such as phishing attacks.<br />

When a sensor locates a fraudulent Web site, it alerts its subscribers<br />

(both individuals and companies) by email. Such services are currently <strong>of</strong>fered<br />

by MarkMonitor Inc. (FraudProtect), Symantec Corp. (Online Fraud<br />

Management Solution), secureworks Inc. (Anti Phishing services), and wombatsecurity<br />

Inc.<br />

Smart cards (Section 8.2). Traditional credit cards have a magnetic<br />

stripe with some information about the card holder, but the new smart cards,<br />

such as the one shown in Figure 10.2, have a small computer (a microprocessor<br />

with memory) embedded in them, so they can hold much more information<br />

and can update it. As an example, a smart card can store biometric information<br />

to authenticate its owner, as well as long, multidigit PINs. Smart cards<br />

have been used extensively for several years in certain European countries<br />

to verify the identity <strong>of</strong> purchasers. The hope is that just stealing someone<br />

else’s account number will not be enough for the thief to use the account.<br />

Also, a thief stealing someone’s smart card will not be able (and may not<br />

even try) to use it because <strong>of</strong> the biometric information in the card.<br />

ISSUER NAME<br />

OWNER NAME<br />

BANK CARD<br />

Figure 10.2: A Smart Card.<br />

Fraud screening and prevention. When a thief gets hold <strong>of</strong> someone’s<br />

credit card number, they try to use it immediately, and spend as much as<br />

possible, <strong>of</strong>ten on extravagant or useless items. Such unusual activity can<br />

be exploited as an indication <strong>of</strong> a problem if immediately detected by the<br />

credit card company. In addition, the geographic locations <strong>of</strong> the thief and<br />

the victim may be different, providing another clue to a potential identity<br />

theft. Such indicators are commonly used by credit card companies to detect<br />

fraud while it is happening. There are even companies, such as VeriSign,<br />

ClearCommerce Corp., and CyberSource Corp., that <strong>of</strong>fer services in this<br />

area. They follow the purchasing habits <strong>of</strong> an individual with a credit card,<br />

flag any suspicious pattern, and notify the card issuing company.<br />

Consumer authentication services (see also Chapter 8 for this topic). It<br />

is well known that a simple password isn’t very secure, because many users<br />

select easy-to-guess passwords and many hackers know how to guess and


10.4 Phishing 269<br />

steal passwords. As a result, security experts have been working on stronger<br />

authentication procedures. Typical examples <strong>of</strong> such procedures are RSA<br />

SecurID and the unified authentication program <strong>of</strong> VeriSign [Verisign 04].<br />

RSA security, a leading developer <strong>of</strong> encryption techniques and devices,<br />

has developed a two-step authentication process known as RSA SecurID<br />

[RSASecurID 04]. Network and desktop users identify themselves with two<br />

unique factors—something they know (a password or a PIN), and something<br />

they have (an authenticator)—before they are granted access to a secured<br />

network, computer, site, or service. A SecurID authenticator can be hardware<br />

or s<strong>of</strong>tware. A hardware authenticator comes as a key fob, a card, or a<br />

PINpad (the latter is a small, credit-card-shaped device with a ten-key keypad<br />

on the card). These authenticators are manufactured and sealed with an<br />

integral lifetime battery. No user maintenance or battery replacement is required.<br />

A s<strong>of</strong>tware authenticator (available for Windows, Palm, Blackberry,<br />

and various mobile telephones) is a PINpad displayed on the screen.<br />

To log into a site with SecurID, the owner enters a password and uses<br />

the authenticator to send an additional code to the site. The additional code<br />

is unique and is always different. A new code is generated by the authenticator<br />

every 60 seconds. At the site, the RSA authentication manager knows<br />

which code is valid at that particular moment for that user/authenticator<br />

combination. This type <strong>of</strong> authentication is much safer than just a password,<br />

but is more expensive.<br />

The VeriSign unified authentication scheme is based on a portable hardware<br />

device called a USB hybrid token that generates one-time passwords<br />

(OTPs). The user presses a button on the device, and an OTP is displayed,<br />

ready for immediate use. The user then enters their static password and the<br />

OTP for secure authentication. If authentication is done from a computer<br />

that has USB connectivity, the hybrid token can be plugged into the computer<br />

and it sends the OTP automatically. The user still needs to enter their<br />

static password.<br />

A Case study. The following case broke in January 2007 and was<br />

reported in Information Week.<br />

Jeffrey Brett Goodin posed as a representative from AOL’s billing department<br />

in order to trick users into handing over financial details After a<br />

lengthy trial he was jailed for 70 months (five years and ten months).<br />

Potential victims were lured to visit websites maintained by Goodin<br />

and hand over confidential information, including credit card details, under<br />

threat that failure to respond to messages could result in the suspension <strong>of</strong><br />

their AOL accounts.<br />

Goodin resold this credit card information to other crooks and used it<br />

himself for a number <strong>of</strong> purchases. It’s unclear how much he made through<br />

the scam. Charges presented against Goodin involved 15 identified victims,<br />

but there were probably far more.<br />

Goodin was also convicted <strong>of</strong> wire fraud, unauthorized use <strong>of</strong> credit cards,<br />

attempted witness harassment, and failure to appear in court. His lack <strong>of</strong> a<br />

previous criminal record worked in his favor in his final sentencing.


270 10 Identity Theft<br />

10.5 The Homograph Threat<br />

The resemblance <strong>of</strong> the letter “O” to the digit “0” has long been a source <strong>of</strong><br />

confusion to programmers. In the old days <strong>of</strong> computing, printers produced<br />

the same glyph for both characters. Later, a zero got a slash added and<br />

became ∅. Current editors, word processors, and high-resolution printers<br />

easily distinguish between the two characters in print and on a display, but<br />

the problem <strong>of</strong> similar glyphs has returned in early 2005 to haunt computer<br />

users, this time in the form <strong>of</strong> a security hole dubbed the homograph threat.<br />

Homograph (noun). One <strong>of</strong> two or more words that have the same spelling<br />

but differ in origin, meaning, and sometimes pronunciation, such as fair<br />

(pleasing in appearance) and fair (market), wind (blowing) and wind (your<br />

watch), or bow (and arrow) and bow (to my superior wisdom).<br />

—From http://www.yourdictionary.com/.<br />

In its crudest form, this threat may be realized by a phisher who exploits<br />

the similarity <strong>of</strong> the two Os to register domain www.micr∅s∅ft.com<br />

(or something similar) and then try to lure unsuspecting visitors to this site<br />

in an attempt to obtain personal information. This doesn’t seem a serious<br />

threat because current Web browsers display different glyphs for “O” and<br />

“0”, thereby making it easy to distinguish between them, but the next step<br />

in this threat is to use foreign language glyphs in domain names.<br />

Exercise 10.6: How can a phisher lure visitors to www.micr∅s∅ft.com or a<br />

similar site?<br />

The new homograph threat, discovered by Evgeniy Gabrilovich and Alex<br />

Gontmakherm, is described in [homograph 05]. It stems from the new Web<br />

initiative that makes it possible to register domain names in character sets<br />

other than Latin. This is a worthwhile development that will allow more people<br />

to benefit from the Web and the Internet, but it has its downside. Often,<br />

the glyph <strong>of</strong> a character in a foreign script resembles (or is even identical to)<br />

that <strong>of</strong> a Latin character, and this is what creates the homograph threat.<br />

Exercise 10.7: Try to register domain www.micr∅s∅ft.com.<br />

The problem is easy to understand (and unfortunately, also easy to exploit).<br />

Certain Cyrillic characters (Figure 10.3) have glyphs identical to the<br />

Latin letters a, e, p, and y (although the Cyrillic p is pronounced like the<br />

English r). A trouble maker can register the domain yahoo.com where the<br />

y comes from the Cyrillic alphabet, and then lure unsuspecting visitors to<br />

this site. The point is that certain browsers, most notably Firefox, Safari,<br />

and Opera make it impossible to distinguish between such a domain and<br />

the authentic yahoo site. Both are displayed with the same graphics. The<br />

older Internet Explorer, on the other hand, does distinguish between different<br />

character sets, thereby making it easy for the user to detect such “forgery.”<br />

As an example, try to create a local html file on your computer with the<br />

link http://www.p&#1072;ypal.com/. When older versions <strong>of</strong> Safari open<br />

this file, the link displays as http://www.paypal.com/, is misleading and


10.5 The Homograph Threat 271<br />

Figure 10.3: The Cyrillic Character Set.<br />

points to a site different from paypal.com. When the same file is opened in<br />

Internet Explorer and the user clicks on the link, the URL is displayed as<br />

http://www.p‡ypal.com/, indicating a problem.<br />

Readers <strong>of</strong> this book may already know enough about the way hackers<br />

operate and may know how easy it is to extend this threat to something<br />

really serious. A miscreant may register a domain similar to that <strong>of</strong> a bank<br />

but using characters from a different script, lure visitors to his site, and<br />

get their passwords by a trick similar to the Trojan horse that replaces the<br />

login procedure (Chapter 4). The forged site asks the user for an account<br />

number and a password, then displays the message “wrong password, please<br />

try again” and immediately forwards the user to the legitimate site. When<br />

the user tries again, the password is accepted by the real site, the user has no<br />

reason to suspect anything, and the fraudster has harvested another account<br />

number and password. Such an operation may go undetected for a long time<br />

(especially as more and more bank customers bookmark the forged domain for<br />

convenience) and be extremely pr<strong>of</strong>itable to the perpetrator while becoming<br />

a new headache for security experts and for the rest <strong>of</strong> us Internet users.<br />

A possible solution is to modify all the Web browsers to display characters<br />

from different scripts in different colors, but this will most likely be<br />

frowned upon by activists from the international association <strong>of</strong> the color<br />

blind, thereby giving new meaning to the phrase “you cannot satisfy everyone”<br />

(just a joke).<br />

Users <strong>of</strong> older versions <strong>of</strong> the Safari browser on the Macintosh should update<br />

to the current version, but up until a few years ago, there was a different<br />

solution. A free program called Saft Lite was written by Hao Li [SaftLite 05].<br />

It intercepts URLs that contain any non-Roman alphabet characters and displays<br />

an alert giving the user the option <strong>of</strong> not surfing to that URL. For the<br />

paypal example above, the message (English grammar by Hao Li) says:<br />

“The URL on your location field is shown as http://www.paypal.com/<br />

though the real (spo<strong>of</strong>ing) URL (may look like the same) is http://www.xn-<br />

-pypal-7ve.com/.”<br />

A sibling may be the keeper <strong>of</strong> one’s identity, the only person<br />

with the keys to one’s unfettered, more fundamental self.<br />

—Marian Sandmaier


11<br />

Privacy and Trust<br />

In this age <strong>of</strong> computers, the Internet, and massive data bases that never<br />

lose or forget anything, it is no wonder that we feel we are losing our privacy<br />

and we get very concerned about it. The reason for this loss can be found<br />

in the phrase “once something is released into the Internet, it can never be<br />

completely deleted.” We give away bits and pieces <strong>of</strong> personal information<br />

all the time, but we give them to different entities, at different times, and<br />

through different media such as paper or verbally. We therefore expect these<br />

pieces <strong>of</strong> information to disappear or at least to stay separate. The nature<br />

<strong>of</strong> the online world, however, is such that individual pieces <strong>of</strong> information<br />

tend to gravitate toward one another and coalesce into solid objects called<br />

personal records.<br />

A personal record is an important tool in the hands <strong>of</strong> marketers, public<br />

opinion researchers, social scientists, physicians, statisticians, and also (as<br />

readers <strong>of</strong> this book can easily guess) criminals. More and more countries<br />

are coming to grips with this problem and are adopting privacy laws that<br />

make it difficult to collect unauthorized information and that specify when<br />

and where such information has to expire or be explicitly deleted or erased.<br />

An important organization devoted to protecting our online privacy is<br />

the Online Privacy Alliance [privacyalliance 05] whose mission statement<br />

reads “We will lead and support self-regulatory initiatives that create an<br />

environment <strong>of</strong> trust and that foster the protection <strong>of</strong> individuals’ privacy<br />

online and in electronic commerce.”<br />

This chapter starts with a short survey <strong>of</strong> privacy issues and general tools<br />

and techniques for maintaining online privacy. It continues with a detailed<br />

discussion <strong>of</strong> the important topic <strong>of</strong> children’s online privacy, and it concludes<br />

with a section on trust and how to create it in online visitors, shoppers, and<br />

potential customers.<br />

D. Salomon, <strong>Elements</strong> <strong>of</strong> <strong>Computer</strong> <strong>Security</strong>, Undergraduate Topics in <strong>Computer</strong> Science,<br />

DOI 10.1007/978-0-85729-006-9_11, © Springer-Verlag London Limited 2010


274 11 Privacy and Trust<br />

11.1 Privacy Issues<br />

Privacy has two faces. The first, traditional face has to do with seclusion<br />

from intrusion or the right to be let alone. The second face, formulated in<br />

the 1960s in response to the rapid development <strong>of</strong> computers and data bases,<br />

deals with informational self-determination, the right to control the collection,<br />

disclosure, and use <strong>of</strong> information about oneself. Nowadays, privacy<br />

is closely connected to computer security, and many feel that our privacy is<br />

rapidly dwindling because <strong>of</strong> actions <strong>of</strong> hackers, spammers, and online merchants,<br />

and <strong>of</strong> mistakes made by government agencies and other organizations<br />

that have large collections <strong>of</strong> private data.<br />

I want to be let alone.<br />

—Greta Garbo in Grand Hotel, 1932.<br />

The issue <strong>of</strong> privacy is further complicated because privacy, even though<br />

a fundamental human right, is not absolute. It has to be balanced with accountability.<br />

Privacy should be respected, but should not provide impervious<br />

and permanent cover for criminal activity. (The Introduction mentions a few<br />

people who kept to themselves.) This section discusses various aspects <strong>of</strong><br />

privacy as affected by the Internet.<br />

Geolocation is the name <strong>of</strong> a new, disturbing trend on the World Wide<br />

Web. Web sites examine the IP address <strong>of</strong> a visitor and use it to try to<br />

determine the visitor’s physical location (at least country, preferably state or<br />

province, and ideally down to individual zip codes or organizations). Once<br />

known, the geographic location <strong>of</strong> the viewer determines what the Web site<br />

will display and what the visitor will be allowed to do. The following examples<br />

illustrate the applications <strong>of</strong> geolocation.<br />

A person in Moscow, Idaho (the United States) is looking for a Chinese<br />

restaurant. Typing the phrase moscow idaho chinese restaurant into an<br />

Internet search engine returns the few Chinese restaurants in Moscow, but<br />

also produces websites about Moscow that happen to have the word “Chinese.”<br />

A sport team may sign a contract with a local television station to broadcast<br />

their games in city A. The team may then elect to have some games<br />

shown for free on their Web site, except to visitors from A, who find these<br />

games blocked because <strong>of</strong> the contract. Similarly, certain movies may be<br />

shown only to visitors from certain countries.<br />

A gambling casino in country X may have to block bets coming from<br />

country Y because <strong>of</strong> legal restrictions.<br />

A company may display certain prices for its products to the general<br />

public, but switches to lower prices when someone from a competing company<br />

visits their site.<br />

A candidate for a public <strong>of</strong>fice may display material on job creation to<br />

visitors from one county and information on crime fighting to visitors from<br />

another county.


11.1 Privacy Issues 275<br />

A company that caters to customers from many countries may display<br />

prices in different currencies depending on the geographic location <strong>of</strong> a visitor.<br />

The well-known Google search engine allows its advertisers to target ads<br />

to visitors according to their city or distance from a given location.<br />

Yahoo has a Web auction site that auctions Nazi paraphernalia. It had<br />

to block these auction items to French visitors because <strong>of</strong> a French court<br />

order.<br />

Exercise 11.1: Think <strong>of</strong> a geolocation application for a news agency.<br />

People’s opinions on these geolocation schemes and restrictions vary.<br />

Most agree that not all <strong>of</strong> them are bad, and that geolocation cannot identify<br />

individual users. Proponents <strong>of</strong> geolocation claim that it helps Web<br />

content providers to cater to different tastes <strong>of</strong> viewers and to comply with<br />

laws in different countries, but privacy advocates consider geolocation techniques<br />

unethical and worry that further expansion <strong>of</strong> this trend would lead to<br />

misleading information and reduced privacy. The following quotation, from<br />

privacy advocate Jason Catlett, summarizes this worry.<br />

The technical possibilities do allow a company to be two-faced or<br />

even 20-faced based on who they think is visiting.<br />

—Jason Catlett.<br />

Geolocation works by examining the IP number <strong>of</strong> the visitor. The<br />

allocation <strong>of</strong> IP numbers by ICANN is public information, so anyone can<br />

collect the entire Whois data base (located at [Network solutions 04]) and<br />

find out who is assigned a given IP number. The identification is complicated<br />

by the fact that certain entities (large ISPs, companies, universities,<br />

and government agencies) have been assigned a block (or several blocks) <strong>of</strong><br />

IP numbers and have privately assigned these to their members/customers,<br />

sometimes dynamically. For example, a search for IP 130.166.2.76 results<br />

in the following information<br />

OrgName: California State University, Northridge<br />

OrgID: CSUN<br />

Address: 18111 Nordh<strong>of</strong>f St<br />

City: Northridge<br />

StateProv: CA<br />

PostalCode: 91330<br />

Country: US<br />

NetRange: 130.166.0.0 - 130.166.255.255<br />

(followed by many more lines). We see that this university has been assigned<br />

the entire block <strong>of</strong> 2 16 = 65,536 numbers 130.166.x.x, and only their network<br />

administrators can tell who is located at, for example, 130.166.2.76.<br />

However, because <strong>of</strong> the growing importance <strong>of</strong> geolocation, several companies,<br />

among them Digital Envoy Inc. [digitalenvoy 04], Quova [Quova 04],<br />

and Akamai Technologies [Akamai 04], have been trying to narrow the actual<br />

locations <strong>of</strong> IP numbers by tracing data packets as they are forwarded


276 11 Privacy and Trust<br />

between Internet routers. The result is data bases where IP numbers are identified<br />

by country, province, postal code, time zone, and even organization.<br />

Currently, such data bases claim better than 80% accuracy, and sometimes<br />

up to 99%.<br />

Web crawling. We are all familiar with Internet search engines. In fact,<br />

life on the Internet without them would be difficult, dull, and unproductive to<br />

most users. A search engine has two parts, a crawler and a ranking algorithm.<br />

The crawler is a program that collects Web sites and stores them in a data<br />

base. The ranking algorithm searches that data base for a word or a phrase,<br />

finds all the pages that contain that word, and ranks them.<br />

A Web crawler is given an initial URL or a set <strong>of</strong> initial URLs. It visits<br />

one <strong>of</strong> them and analyzes its content, looking for hypertext links that point<br />

to other Web pages. The crawler then visits those pages and examines each<br />

for new links. The process continues recursively until no more unvisited links<br />

are found. The crawler then starts with the next URL on the list <strong>of</strong> initial<br />

URLs. Figure 11.1 shows a small fragment <strong>of</strong> typical html text with links.<br />

A spider starts with an initial list <strong>of</strong> URLs that have many links. Examples<br />

<strong>of</strong> such URLs are yahoo.com for general reference, the Internet movie<br />

data base (www.imdb.com) for movie information, eric.ed.gov for educational<br />

resources, and vlib.org for literary resources. Such a list can be<br />

started by using another search engine to search for Web pages containing<br />

phrases such as “many links,” “the most links,” “art resources,” or “all about<br />

music.” Once an initial list <strong>of</strong> URLs has been established, the spider can<br />

follow every link from each <strong>of</strong> the URLs on the list. When those Web pages<br />

are input into the data base, the number <strong>of</strong> links in each is counted, and<br />

those pages with the most links are added to the initial list.<br />

Figure 11.1: A Sample HTML Text With Links.<br />

Notice that a Web crawler doesn’t actually propagate itself to different<br />

computers on the Internet, as viruses do. The crawler resides on its own<br />

computers (or many computers) and only sends HTTP requests to other<br />

computers on the Internet for documents, just as a Web browser does. The<br />

crawler is a recursive program that looks for links.<br />

As long as a crawler is limited to a search engine, no one would object<br />

to it, but any Internet user can implement (or buy) and use a crawler. Here<br />

is one questionable commercial application <strong>of</strong> such a private crawler. Back<br />

in 1997, an article in the San Francisco Chronicle reported that Barnes and<br />

Noble, a major online and <strong>of</strong>fline American bookseller, had implemented a<br />

crawler to examine Web pages <strong>of</strong> private individuals for their reading habits<br />

and preferences. The information collected in this way was then used to email<br />

those individuals book <strong>of</strong>fers based on their perceived reading habits (dear<br />

John, as a murder enthusiast we have an <strong>of</strong>fer, a free gift, and a surprise


11.2 Online Privacy 277<br />

for you. . . ). Once this practice was unveiled by the newspaper, Barnes and<br />

Noble discontinued it, but a precedent had been set. Once again the Internet<br />

is being used to pry information that most people would rather keep private.<br />

Exercise 11.2: (Tricky.) What’s a free gift?<br />

11.2 Online Privacy<br />

One (although not the only) outlet through which our personal information is<br />

leaked out are the many online commercial entities. When we make an online<br />

purchase, we are asked to provide our name, address, and other information,<br />

followed by our credit card data. Often, a purchaser is asked to open an<br />

account and select a password. Thus, the various online merchants have much<br />

information on consumers and have a responsibility to ensure its privacy.<br />

Nevertheless, this information tends to leak outside and spread either because<br />

the merchant decides to sell it or because it is stolen by an insider or by a<br />

hacker breaking into a computer.<br />

As these problems become prevalent, more online commercial sites advertise<br />

privacy policies that promise either “we will never sell your personal<br />

data” or “we don’t keep your credit card number.” Such promises are encouraging<br />

but consumers should not absolutely rely on them. There are certain<br />

steps consumers can take (and certain rules to keep in mind) to protect themselves.<br />

The most important ones are listed here.<br />

When a Web site asks you to register or to provide information, look<br />

for its privacy policy and read it. If this policy is easy to find and easy to<br />

understand, chances are it is credible. The link to a site’s privacy policy<br />

should be right on the home page and should be clearly visible. The policy<br />

itself should say exactly what information the site collects, what it is used<br />

for, and whether it is shared with anyone else. The policy should have an<br />

option for the user to restrict sharing or selling <strong>of</strong> information. If a Web site,<br />

especially a commercial one, doesn’t have a privacy policy or if the policy is<br />

hard to find or difficult to understand, consider the site suspicious.<br />

Look for a privacy seal in Web sites that ask for personal information.<br />

These seals, a recent innovation, should make the user fairly confident that<br />

a Web site is abiding by its posted privacy policy. Two organizations that<br />

issue such seals are [truste 05] and [bbbseal 05]. Finding<br />

a seal <strong>of</strong> approval in a Web site should give a consumer<br />

confidence that the site is legitimate and can be trusted.<br />

It also provides a mechanism for handling complaints by<br />

consumers who feel that their privacy has been violated.<br />

The seals also mean a company has instituted procedures<br />

for practicing what it preaches about privacy protection.<br />

If you don’t find a seal at a Web site, better have second<br />

thoughts.


278 11 Privacy and Trust<br />

Keep your password secure and secret. Remember the various methods<br />

<strong>of</strong> social engineering used by the many scammers, spammers, and phishers<br />

(or review Section 8.3 if you forgot).<br />

Web browsers are important. We use them in our daily lives to communicate,<br />

to obtain information, and to do business. It is therefore crucial to<br />

use a secure browser that complies with an industry security standard, such<br />

as Secure Sockets Layer (see document on cryptography in the book’s Web<br />

site) that encrypts or scrambles sensitive transaction information.<br />

Lastly, when shopping online, print and save a copy <strong>of</strong> any purchase<br />

order. This document has the all-important confirmation number that will<br />

be needed in any future communications with the seller.<br />

These are the basic rules. Others can be found at [truste 05] and [bbbseal<br />

05].<br />

When ordering merchandise online, the seller has to have the real name<br />

and address <strong>of</strong> the purchaser, but in other online situations privacy can be<br />

protected by remaining anonymous or by using an intermediary.<br />

Anonymizers work by giving a person an untraceable alias. This is a useful<br />

tool for certain applications, but it works both ways because anonymizers<br />

can protect lawbreakers. Intermediaries (or infomediaries) negotiate on behalf<br />

<strong>of</strong> a user or a consumer the amount <strong>of</strong> personal data released to any given<br />

Web site. S<strong>of</strong>tware tools for either approach exist and some are described<br />

here.<br />

Anonymizer from [anonymizer 05] redirects all communications to and<br />

from a computer through the servers <strong>of</strong> anonymizer.com. The program also<br />

uses SSL to encrypt all communications to and from the computer it is installed<br />

on. When the owner <strong>of</strong> a computer sends a message to a site xyz.com,<br />

Anonymizer encrypts the message and routes it to anonymizer’s server, where<br />

it is decrypted and sent to xyz.com with anonymizer.com as the sender’s address.<br />

Thus, any responses from xyz.com are sent to anonymizer.com, where<br />

they are encrypted and sent to the originating computer. The result is that<br />

xyz.com doesn’t know who the real sender is, anyone listening on the connection<br />

between anonymizer.com and xyz.com has no idea who the real sender<br />

is, and anyone eavesdropping on the communications between the computer<br />

and anonymizer.com has to defeat the encryption, a nontrivial task.<br />

Mutemail, at [mutemail 10] is a commercial service that anonymizes<br />

and secures email. The IP address and host name (the originating country<br />

and internet connections details) <strong>of</strong> the sender are removed from the email<br />

message and the message itself is encrypted on its way to the receiver.<br />

Crowds is a research project [Reiter and Rubin 98] conducted at Bell<br />

Labs. It protects the anonymity <strong>of</strong> a user by blending the user in a crowd. A<br />

large group <strong>of</strong> geographically diverse users becomes a crowd. When a crowd<br />

member issues a request for data, the request is routed through another<br />

member, making it impossible to track a group member individually.


11.3 Children’s Privacy 279<br />

The Onion routing project [onion-router 05] is a research project <strong>of</strong> the<br />

United States Naval Research Lab (NRL). The assumption is that two parties<br />

want to communicate and may even agree to authenticate themselves to each<br />

other, but want to keep their communication private. The project employs a<br />

technique where each message is forwarded several times through a series <strong>of</strong><br />

routers before it reaches its destination.<br />

DigitalMe is a discontinued infomediary service from Novell. The idea<br />

was to have a member submit personal information, including names and<br />

passwords (as real or as fake as the member decides) and have the service use<br />

it to automatically fill out forms at Web sites. The member gets a chance to<br />

review each form before it is sent by the service.<br />

Jotter (also discontinued) is a similar tool. The user enters personal<br />

information (normally only partly real) for various sites, and the program<br />

later produces the right user pr<strong>of</strong>ile for each site visited.<br />

Lumeria is an infomediary service based on the belief that if personal<br />

information <strong>of</strong> users is valuable to companies, they should be willing to pay for<br />

it. A consumer can get in touch with Lumeria and submit a personal pr<strong>of</strong>ile<br />

including areas <strong>of</strong> interest. Marketers send advertisements to Lumeria. If a<br />

consumer indicates interest in, for example, cosmetics, Lumeria will forward<br />

the consumer ads in this area. This way, the consumer remains anonymous<br />

to the marketers. The company also has an anonymizer service where it<br />

provides wrong cookie information to commercial Web sites.<br />

In addition to anonymizers and infomediaries, an individual can ask certain<br />

organizations to remove his personal information from their data bases.<br />

Reference [squidoo 10] has very detailed advice in this area.<br />

11.3 Children’s Privacy<br />

In many households, the children are more comfortable with computers, computer<br />

communications, and the Internet than their parents. The Internet,<br />

and especially the World Wide Web, is a tremendous resource for children.<br />

It gives young people a chance (in fact, many chances) to receive new ideas,<br />

explore the world, learn many topics, and chat with their peers. However, the<br />

Internet has its own dangers, some as serious as those found in the real world.<br />

Web sites with harmful and objectionable material can confuse<br />

a child. Predators who <strong>of</strong>fer to secretly meet with the child can<br />

change overnight from a virtual threat to a real danger. Miscreants<br />

may convince a child to click on an email attachment<br />

that will place spyware in the computer, thereby creating a risk<br />

for the entire family.<br />

The terms “harmful” and “objectionable” normally refer to pornography,<br />

pr<strong>of</strong>anity, and hate material, but readers <strong>of</strong> this book already know that<br />

these terms also include spam and misleading advertising specifically directed<br />

toward children.


280 11 Privacy and Trust<br />

There are several public interest organizations dedicated to protecting<br />

the privacy and safety <strong>of</strong> anyone, but especially <strong>of</strong> children, on the Internet.<br />

One such organization is GetNetWise. Located at [getnetwise 05], this organization<br />

is funded by a wide range <strong>of</strong> Internet industry corporations and<br />

public interest organizations. The GetNetWise coalition wants Internet users<br />

to be only “one click away” from the resources they need to make informed<br />

decisions about their and their family’s use <strong>of</strong> the Internet.<br />

The national center for missing children, located at [missingkids 05], has<br />

a cyber tipline where anyone can report cases <strong>of</strong> sexual exploitation (especially<br />

resulting from online communications) <strong>of</strong> children.<br />

A similar organization is the privacy rights clearinghouse, a public interest<br />

body located in San Diego, California. It has researched the topic <strong>of</strong><br />

children’s privacy and safety on the Internet, and has come up with a list<br />

(see [privacyrights 05]) <strong>of</strong> threats that exist especially for children and ways<br />

for parents and educators to combat them.<br />

The main protection children have on the Internet is parental guidance<br />

and supervision. Parents should take the time to involve themselves in their<br />

children’s activities and apply their life experience to advise the child on<br />

what is bad, misleading, and dangerous. This is true even if the parents<br />

know nothing about computers and the Internet. When the parents cannot<br />

or will not spend the time and the effort, the child suffers, period! Following<br />

is a list <strong>of</strong> tips for parents on how best to protect a child’s privacy and<br />

safety on the Internet. More information and ideas for parents are provided<br />

by the Federal Trade Commission <strong>of</strong> the United States in its publication<br />

NET CETERA, Chatting with Kids About Being Online, which is available<br />

at [FTC-CONT 05].<br />

Privacy policy. Parents should read the privacy policies <strong>of</strong> Web sites<br />

frequented by a child. If anything looks unusual, suspicious, or unclear,<br />

advise the child to forgo the site. Older children should be taught to do the<br />

same themselves.<br />

Web seal. Many Web sites have “seals <strong>of</strong> approval” to build trust in<br />

visitors. One organization that issues such seals is [truste 05]. The following<br />

short quote explains what this seal does for an online business.<br />

“Build trust and drive revenue with the TRUSTe privacy seal. Displaying<br />

the TRUSTe seal demonstrates that your site complies with our best<br />

practices. Call TRUSTe to sign up, and let consumers know they can trust<br />

you more than other businesses when it comes to online privacy.”<br />

The truste organization checks sites and audits their<br />

privacy practices. It also helps in resolving disputes. The<br />

Council <strong>of</strong> Better Business Bureaus has a similar Web seal<br />

program, see [bbbseal 05]. Finding such a seal <strong>of</strong> approval in<br />

a Web site should give a parent confidence that the site owner<br />

is not out to cheat vulnerable people, especially children.<br />

Consent. In the United States, federal law requires a parent to decide<br />

whether or not they consent to their child giving information to a Web site.


11.3 Children’s Privacy 281<br />

Children should be taught (repeatedly, if necessary) not to give any information<br />

without parental consent.<br />

Contracts. Often, children, especially teenagers, can be made more responsible<br />

for their online actions and behavior by signing a contract with<br />

their parents. Such a contract increases the self-importance <strong>of</strong> the child and<br />

should therefore be written in a simple language employing basic, nonlegal<br />

terms. Figure 11.2 shows such an agreement and [getnetwise-ctrct 05] has a<br />

similar contract.<br />

Cyberspace Passport<br />

These rules are for my safety. I will honor them when I go online.<br />

• I can go online (Time <strong>of</strong> day) for (How long)<br />

• It’s OK not OK for me to go online without a parent.<br />

• I understand which sites I can visit and which ones are <strong>of</strong>f limits.<br />

• I won’t give out information about myself or my family without permission<br />

from my parents.<br />

• My password is my secret. I won’t give it to anyone.<br />

• I will never agree to meet an online pal, or send my picture, without<br />

permission from my parents.<br />

• I know an advertisement when I see one. I also know that animated or<br />

cartoon characters aren’t real and may be trying to sell me something or<br />

to get information from me.<br />

• I will follow these same rules when I am at home, in school, or at the<br />

library or a friend’s.<br />

Figure 11.2: A Sample Child’s Online Contract.<br />

Family rules. A list <strong>of</strong> rules that have to be obeyed by anyone in the<br />

family may go a long way. Such rules may include the following:<br />

1. Never give out identifying information such as family information, home<br />

address, school name, or phone number in chat room discussions and<br />

when visiting Web sites. Even email addresses should be handled carefully<br />

and not given to strangers met online. The same is true for family<br />

pictures.<br />

2. Passwords should be kept private and secret. When someone pretending<br />

to be authorized or important asks you in a chat for a password, refuse<br />

to give it and leave the chat immediately.<br />

3. Similarly, when you receive a threatening, suggestive, or just plain uncomfortable<br />

message, quit without an argument.<br />

4. <strong>Computer</strong> use, like television watching, should be limited. Everyone<br />

should understand the meaning <strong>of</strong> the word “addiction” and should set<br />

a daily maximum amount <strong>of</strong> time <strong>of</strong> Internet surfing.<br />

5. If at all possible, the family computer should be kept in a family room<br />

rather than in a child’s room. This rule is especially difficult to keep<br />

when children become teens and insist they know better.


282 11 Privacy and Trust<br />

6. A cooperative child should be encouraged to disclose the names and<br />

addresses <strong>of</strong> any online friends and buddies. Everyone should be taught<br />

that face-to-face meetings with online friends can be dangerous. An<br />

Internet search provides a list <strong>of</strong> children that went missing as a result<br />

<strong>of</strong> such a meeting.<br />

7. Similarly, a child should be encouraged to disclose what Internet services<br />

they use. A parent may pretend to be computer illiterate asking for help<br />

and information from the child.<br />

8. It’s a useful rule to assume that strangers on the Internet are never who<br />

they claim to be. A chat partner claiming to be a teenager <strong>of</strong>ten turns<br />

out to be an adult (and possibly dangerous).<br />

9. A similar rule should explain that not everything we read online is true,<br />

especially <strong>of</strong>fers, and most especially <strong>of</strong>fers that look too good to be true.<br />

(End <strong>of</strong> list.)<br />

Someone who is not in the “business” (<strong>of</strong> marketing) may not realize<br />

that children constitute a large segment <strong>of</strong> the consumer population. Market<br />

researchers may try to use the Internet to learn about the preferences <strong>of</strong><br />

children. Advertisers see the Internet as a natural ground for advertising,<br />

and they generate special Web sites that lure young visitors. Such a site may<br />

advertise merchandise for children and promise gifts for filling out surveys,<br />

disclosing personal information, and joining clubs.<br />

A toy maker, for example, is naturally interested in selling to children.<br />

An agent for such a company may visit chat rooms, pretending to be an action<br />

figure or a comics hero and chat with children. Once a child discloses an email<br />

or a physical address, the company sends a message or a letter purportedly<br />

coming from the hero and <strong>of</strong>fering merchandise. A child being tempted in this<br />

way may not realize the difference between the world <strong>of</strong> comics and the real<br />

world, and may give his parents a hard time asking for (perhaps unsuitable<br />

or expensive) toys.<br />

Even more serious are attempts to have a child click on various links that<br />

send cookies and adware to his computer. The result may be a large number<br />

<strong>of</strong> advertisements especially targeted for the child, sent to the computer in a<br />

seemingly unending stream. Parents should turn <strong>of</strong>f cookies if possible and<br />

run anti-spyware s<strong>of</strong>tware regularly to discover unwanted s<strong>of</strong>tware.<br />

Exercise 11.3: Are children especially vulnerable to rogue s<strong>of</strong>tware?<br />

So far we have concentrated on commercial Web sites catering to children,<br />

but there is still the bigger problem <strong>of</strong> sites with objectionable material<br />

or content unsuitable for children, such as pornography, obscenity, violence,<br />

and hatred. The best approach so far to block kids’ access to such sites are<br />

various s<strong>of</strong>tware filters. A filter obeys the commands <strong>of</strong> its owner, who is<br />

identified by a password. Its main task is to block access to certain sites, but<br />

it may provide other useful services such as: (1) It can prevent users from<br />

surfing the Internet during certain times. (2) It maintains an activity log<br />

<strong>of</strong> Web sites visited, pages received, and cookies saved. (3) It regularly and<br />

automatically connects to its maker to receive fresh lists <strong>of</strong> new Web sites


11.3 Children’s Privacy 283<br />

that the owner may want to block. (4) It has search features that return<br />

porn-free results or can be filtered in any desired way.<br />

This type <strong>of</strong> s<strong>of</strong>tware is easy to locate by searching the Internet under<br />

“parental control s<strong>of</strong>tware,” but here are three examples.<br />

NetNanny, from [netnanny 05] is touted as the only family control s<strong>of</strong>tware<br />

that includes family-safe filtered search, an Internet monitor, Web site<br />

filtering, time limits, chat recording, newsgroup blocking, and privacy controls.<br />

CyberSitter, published by [CyberSitter 05], is advertised as s<strong>of</strong>tware designed<br />

primarily for home, educational, and small business use. It records all<br />

Instant Messenger chat conversations for AOL (AIM), and Yahoo Messengers.<br />

It provides over 30 categories <strong>of</strong> filtering, making it the most complete<br />

Internet filter available. Filters are updated automatically. It allows parents<br />

to override blocked sites, add their own sites to block, and specify allowable<br />

times to access the Internet. It maintains a detailed log <strong>of</strong> all Internet activity<br />

and violations. It will even send a daily report to parents by email.<br />

CyberPatrol, made by [cyberpatrol 05], features the following: Block<br />

harmful websites and newsgroups. Restrict chat and instant messaging. Filter<br />

Web based email. Manage time online and access to programs. Control<br />

program downloads. Protect personal identity.<br />

In general, parents looking for s<strong>of</strong>tware that allows filtering and control<br />

should look for the following features:<br />

The first user to launch the s<strong>of</strong>tware becomes its owner and can select a<br />

password that will authorize him to turn the s<strong>of</strong>tware on and <strong>of</strong>f, set parameters,<br />

and select options.<br />

The s<strong>of</strong>tware should block outgoing messages with personal information.<br />

This is an ideal feature that state <strong>of</strong> the art <strong>of</strong> artificial intelligence cannot<br />

achieve. The best that can be done at present is to block any strings that<br />

resemble an email address, a telephone number, or any names <strong>of</strong> family members.<br />

Similarly, the s<strong>of</strong>tware should block incoming text that has <strong>of</strong>fensive<br />

language, but this is also an as-yet unachieved goal <strong>of</strong> artificial intelligence.<br />

The best the owner can do is enter a list <strong>of</strong> words and ask the s<strong>of</strong>tware to<br />

block any message that contains any <strong>of</strong> them.<br />

It should limit the total amount <strong>of</strong> connect time and also limit Internet<br />

access to certain hours.<br />

It should allow its owner (typically a parent) to view and edit the list<br />

<strong>of</strong> blocked Web sites, including Internet relay chats (IRCs) and usenet newsgroups.<br />

It should <strong>of</strong>fer criteria for blocking certain sites automatically. The html<br />

standard supports a meta tag which is used to describe a site. A parent should


284 11 Privacy and Trust<br />

be able to instruct the filtering s<strong>of</strong>tware to block any site that features a meta<br />

tag such as .<br />

Filtering s<strong>of</strong>tware should be updated <strong>of</strong>ten to reflect newly-discovered<br />

threats and new features <strong>of</strong> the operating system.<br />

Many ISPs are continually developing tools and features to control spam<br />

and objectionable material. An ideal filtering program should know about<br />

such tools and features and use them.<br />

Current filtering s<strong>of</strong>tware is never ideal, but is being developed and is<br />

getting better all the time. Here is a simple example that illustrates the<br />

difficulty <strong>of</strong> filtering. If the s<strong>of</strong>tware is instructed to block Web sites that<br />

have the word “breast” in them, it may block sex sites, but also medical sites<br />

and sites that <strong>of</strong>fer chicken recipes. The significance <strong>of</strong> a keyword has to be<br />

judged by its context. The conclusion? S<strong>of</strong>tware for filtering and control is<br />

useful but cannot replace parental supervision and judgement.<br />

Chat rooms and instant messages are two services <strong>of</strong>fered by commercial<br />

online organizations such as AOL, Yahoo, and MSN and by Internet relay<br />

chat (IRC). Both services are very popular with children because they allow<br />

a child to appear older and because children tend to have free time. Unfortunately,<br />

these facts are also known to the bad guys, and they <strong>of</strong>ten participate<br />

in chats, pretending to be children and phishing for addresses, passwords, and<br />

other personal information. Even worse, sexual predators have been known<br />

to try to lure children to meet them physically, sometimes with disastrous<br />

results.<br />

Here is what may happen in a sexual abuse case (see also the many<br />

articles in [chatdanger 05]). The perpetrator lurks in a public chat room<br />

looking for a vulnerable child. When he (most sexual predators are males)<br />

finds someone who seems both a child and vulnerable, he invites the child into<br />

a private area <strong>of</strong> the chat room to get better acquainted. His first tactic is to<br />

create a comfort level, typically by posing as a young person about the same<br />

age as the intended victim. Next comes private chat via an instant message<br />

service followed by email, telephone conversations, and finally, a face-to-face<br />

meeting.<br />

Because <strong>of</strong> the importance <strong>of</strong> this topic, there are several sites that deal<br />

with protecting kids and families from the dangers <strong>of</strong> online communications<br />

and making the Internet and technology fun, safe, and productive for the<br />

entire family. See, for example, [chatdanger 05], [safekids 05], and [protectkids<br />

05].


11.4 Digital Forensics<br />

11.4 Digital Forensics 285<br />

The dictionary defines the noun “forensic” as “the use <strong>of</strong> knowledge and<br />

techniques derived from various sciences in the investigation <strong>of</strong> crime.”<br />

Digital forensics is a relatively new area <strong>of</strong> computer science. Its main<br />

aim is to authenticate digital data—mostly data with lots <strong>of</strong> natural noise,<br />

such as images, audio, and video—or declare it a forgery. It is easy to write a<br />

program that will compare two text files and find all the differences between<br />

them, but it may be hard or even close to impossible to determine whether<br />

a digital image has been manipulated, doctored, or even completely forged,<br />

because images have noise; modifying pixels in an image may completely<br />

change its meaning, and may be very difficult to detect.<br />

In the past, a photograph was considered the definitive record <strong>of</strong> an<br />

event. Today, with digital cameras and the availability <strong>of</strong> Adobe Photoshop<br />

and other image processing s<strong>of</strong>tware, it is easy for anyone to process and<br />

improve their photographs. Unfortunately, this also includes inappropriate<br />

and even criminal cases such as the following:<br />

A tabloid wants to increase its circulation by romantically linking two<br />

celebrities, A and B. In the absence <strong>of</strong> pictures that show the two together,<br />

the editors can start with two photos, one showing A and the other showing<br />

B, and generate an image that shows both in a pose that can be interpreted<br />

as intimate.<br />

A scientist is desperate to have an important discovery that will make his<br />

name. He performs an experiment, takes a picture <strong>of</strong> the results, manipulates<br />

it, and submits a paper that claims a new discovery based on the doctored<br />

image.<br />

A fishing-supply company announces a bounty fishing contest. Contestants<br />

should send in photographs <strong>of</strong> fish they’ve caught, and the biggest fish<br />

in each category receives a prize. It is tempting to try to cheat in such a<br />

contest. Someone can take an image <strong>of</strong> smiling people pointing at something<br />

and place in it a fish that is made to look huge.<br />

A law enforcement agency records telephone conversations <strong>of</strong> a suspected<br />

criminal and uses them as evidence. The defending lawyer claims that the<br />

agency was overzealous and it doctored the recordings in an attempt to<br />

achieve a quick conviction. A digital forensics expert is assigned the task<br />

<strong>of</strong> verifying the recordings.<br />

How can one determine whether an image has been modified? Experts<br />

working on this problem have noticed that images tend to have different<br />

lighting. Thus, placing an image A inside an image B <strong>of</strong>ten can be detected<br />

because the lighting will not be consistent. When image A was originally<br />

photographed, the light came from the left, while in B the light is from above<br />

and is in a different color or intensity. Another approach is to look at eyes <strong>of</strong><br />

people in the image. An eye in a photograph should reflect the environment<br />

being photographed. If the image has sufficient resolution, magnifying an eye


286 11 Privacy and Trust<br />

may result in enough pixels for an expert to decide whether or not the eye<br />

really reflects the environment seen in the rest <strong>of</strong> the image.<br />

The problem <strong>of</strong> tampering with digital data has become so serious that<br />

a new pr<strong>of</strong>essional organization, the Digital Forensics Association (DFA) has<br />

been formed. The DFA [DFA 10] is a non-pr<strong>of</strong>it organization dedicated to<br />

fostering education, providing networking opportunities, and conducting research<br />

to benefit the digital forensics community. The DFA was founded by<br />

Information <strong>Security</strong> pr<strong>of</strong>essionals with digital forensics backgrounds.<br />

See [digitaltampering 10] for many examples <strong>of</strong> intentionally modified images,<br />

some going back as far as the 1860s. Reference [Rossner and Yamada 04]<br />

discusses specific “techniques” used by image manipulators to achieve their<br />

aims. See also the article on computer forensics in wikipedia.<br />

11.5 Trust<br />

The dictionary defines trust as “firm reliance on the integrity, ability, or<br />

character <strong>of</strong> a person or thing,” but in the online world trust is defined as the<br />

expectation that one’s vulnerabilities will not be exploited. Trust, specifically<br />

online trust, is perhaps the most important reason why users surf to certain<br />

Web sites while ignoring other sites.<br />

In real life (the <strong>of</strong>fline world) we try unconsciously to build trust by<br />

adopting certain facial expressions, looking the right way, saying the right<br />

things in the right tone, and using body language that our fellow humans<br />

understand. None <strong>of</strong> these methods work online, so substitutions must be<br />

found. A well-designed, smart, and straightforward Web site is the first step<br />

toward establishing online trust.<br />

If many people visit the Web site <strong>of</strong> a company each day, but very little<br />

new business is generated, the reason could be lack <strong>of</strong> trust. Bear in mind<br />

that each visitor has located the site and took the time to visit it, implying<br />

that they had expectations from it, but most went away immediately, which<br />

means they were somehow disappointed.<br />

Even beginners have heard <strong>of</strong> viruses, spam, and spyware, and therefore<br />

know that online interaction involves risk and that computers are vulnerable.<br />

Thus, users, online shoppers, and Web surfers look for sites they can trust.<br />

The degree <strong>of</strong> trust they expect is inversely proportional to the risk involved in<br />

the interaction. A sick person following medical advice <strong>of</strong>fered on the Internet<br />

faces more risk than someone purchasing a low cost item, and therefore looks<br />

harder for a site that can be trusted.<br />

How can a Web site, whether informational or commercial, be designed<br />

to convey trust? Perhaps the two main features that help are usability and<br />

credibility. The simple fact that a Web site is easy to use contributes to<br />

increased trust on the part <strong>of</strong> a user. Similarly, a credible site, a site that<br />

conveys honesty, pr<strong>of</strong>essionalism, and expertise, will reduce a visitor’s feeling<br />

<strong>of</strong> risk and will therefore be considered trustful even by first-time visitors.<br />

Secondary factors in creating trust are style, color, and layout <strong>of</strong> text,<br />

amount <strong>of</strong> information on the screen, and speed <strong>of</strong> download (a site with many


11.5 Trust 287<br />

small images takes the browser longer to download, render, and display). It<br />

has been shown that lines <strong>of</strong> centered text which have a ragged left margin<br />

are harder to read than left-justified text. Text in italics or in boldface is<br />

similarly more demanding and results in slow reading. Readers also prefer<br />

warm colors (red, orange and yellow) to cool colors (violet, blue, and green).<br />

As a result, it is easy to design a Web site that will be demanding on the<br />

user and will therefore convey low trust.<br />

After reading so much about miscreants, fraudsters and wrongdoers in<br />

this book, readers can easily draw the obvious conclusion from the preceding<br />

paragraphs. A hacker can also employ the tips given here in order to set up<br />

an attractive Web site, a trap. This is why reputation also enters the picture.<br />

An unscrupulous operator can easily design an attractive site, but can hardly<br />

develop a reputation, much less a solid one. Recommendations are also a big<br />

contributor to trust. A Web site that can boast references and support from<br />

recognized and respected entities and individuals generates more trust.<br />

Another factor that tends to be ignored is the loss <strong>of</strong> trust. Once users<br />

lose trust in a site, it is slow and difficult to recreate this trust (see the answer<br />

to Exercise 2.15).<br />

Online commerce (or E-commerce) is very different from traditional business.<br />

Many cues are available to a customer in a traditional store. The neighborhood,<br />

the age <strong>of</strong> the store, its decoration, the selection <strong>of</strong> products, and<br />

the personnel are a few examples. An online business, on the other hand,<br />

has only its Web site to confront a new customer. If the site isn’t attractive,<br />

clear, and easy to use, the customer loses trust and may “walk” away.<br />

Trust me, I know what I’m doing.<br />

—A common phrase.<br />

The following list applies to commercial Web sites and <strong>of</strong>fers the site’s<br />

owner tips for increased trust.<br />

Pay special attention to how customers’ billings and payments are handled.<br />

A mistake in this area, even in favor <strong>of</strong> the customer, diminishes trust<br />

considerably.<br />

Use the SSL protocol (see document on cryptography in the book’s Web<br />

site) to encrypt all sensitive transactions. This is obvious and has become<br />

prevalent. It is rare to find a commercial site that doesn’t use encryption.<br />

Customers tend to complain when something goes wrong, but a few also<br />

send praise when they are satisfied. Collect those positive responses and<br />

make it easy for prospective customers to find them (but they have to be<br />

real).<br />

Pretend to be a customer and use your own site to make purchases. This<br />

is the best way to learn about any downside in your Web interface and to<br />

come up with ideas that will make shopping experience at your site simple,<br />

pleasant, and reassuring.<br />

One way for merchants to compete by reducing prices is to raise the rates<br />

they charge for shipping and handling (S&H). As a result, the total cost <strong>of</strong> a


288 11 Privacy and Trust<br />

small, inexpensive item may almost double once the S&H is included, which<br />

may irritate many customers and lead to cancellation <strong>of</strong> orders and loss <strong>of</strong><br />

trust. Marketing researchers <strong>of</strong>ten recommend to tie the S&H to the cost <strong>of</strong><br />

an item (so an inexpensive item will also be inexpensive to ship) instead <strong>of</strong><br />

to its weight. A large inexpensive item, such as a garden rake, is awkward to<br />

pack and expensive to ship, and therefore shouldn’t be sold online. On the<br />

other hand, a heavy, expensive item, such as a table saw, is normally shipped<br />

(and not carried by the purchaser) even if bought in a store, so an online<br />

merchant can charge more in S&H for it.<br />

An important reason to have an online business is the smaller number<br />

<strong>of</strong> employees required. Salaries are normally a large item <strong>of</strong> expense in a<br />

business, so the number <strong>of</strong> employees is important. Still, even an online<br />

business should make it easy for customers to talk to a person, which is<br />

why a toll-free telephone number and a 24-hour online chat are important<br />

tools that increase customers’ trust. Remember, computers are notoriously<br />

weak in intelligence and can’t hold an intelligent conversation, which is why<br />

people hate to talk to computers. Browsing [versiontracker 05], an Internet<br />

site that lists new s<strong>of</strong>tware daily, this author <strong>of</strong>ten notices users’ evaluations<br />

<strong>of</strong> s<strong>of</strong>tware that claim “to me, the single most-important feature <strong>of</strong> a s<strong>of</strong>tware<br />

developer is its responsiveness to users’ questions and complaints.”<br />

A publicly-held company must report its finances to the government.<br />

If the company is doing well, it’s a good idea to display important positive<br />

financial data prominently in the Web site. (However, if the company is doing<br />

badly, there is no need to worry about displaying data since the company may<br />

soon be out <strong>of</strong> business anyway.)<br />

Customers hate long-term contracts. Companies (such as weight-loss<br />

providers and fitness centers) that traditionally lose customers after a short<br />

period insist on long-term contracts. If your business isn’t like that, try to<br />

<strong>of</strong>fer short-term contracts or no contracts at all.<br />

Similarly, if at all possible, avoid asking for any money up front, it<br />

diminishes trust.<br />

Register with the local better business bureau or any similar consumer<br />

organizations in your area and advertise this fact in your site.<br />

Pretend to be honest (just joking; be honest) and post as many prices,<br />

contracts, and agreements as possible prominently on your site.<br />

Make sure it’s easy to see on your site how long you’ve been in business<br />

and the size <strong>of</strong> the business (number <strong>of</strong> customers, employees, products,<br />

warehouses, etc.).<br />

Try to innovate. Look at other Web sites and try to improve on them.<br />

It is generally believed that sites dealing with entertainment, youth, and<br />

media are innovative, whereas financial and legal sites are more traditional<br />

and rigid.


11.5 Trust 289<br />

It’s better to <strong>of</strong>fer choices to customers instead <strong>of</strong> trying to sell them<br />

what you prefer to sell.<br />

Display your telephone number on every Web page. It’s also better to<br />

have a street address instead <strong>of</strong> a P.O. Box and display it too. Remember<br />

that a person would like to see real-world contact points. Any information<br />

on insurance and dispute resolution also adds to consumer trust.<br />

Along the same lines, pictures <strong>of</strong> your employees (the team) and premises<br />

may create trust. A simple, modern logo also helps.<br />

Experience with the psychology <strong>of</strong> shoppers teaches us that the quality<br />

<strong>of</strong> a Web site and the degree <strong>of</strong> satisfaction derived from its use transfers to<br />

a perceived quality <strong>of</strong> the product or service <strong>of</strong>fered. In other words, if the<br />

customer is satisfied with the site and the process <strong>of</strong> purchasing, they will<br />

tend to be satisfied with what they bought.<br />

In God we trust, all others we monitor.<br />

—A popular phrase.<br />

In general, online commercial sites should educate the public, make the<br />

online environment more “human,” and thereby demonstrate that the Internet<br />

can be a safe place to shop in spite <strong>of</strong> malware, spyware, spam, and<br />

other threats. Education is needed because ours is the first generation <strong>of</strong> online<br />

shoppers and customers. Most <strong>of</strong> us have long been familiar with credit<br />

cards and use them routinely in <strong>of</strong>fline situations, in a store or an <strong>of</strong>fice, yet<br />

many are scared <strong>of</strong> using a credit card in an online transaction. “I mistrust<br />

computers” is a phrase commonly heard. Such a person can be educated by<br />

pointing out the following. When you hand over your credit card in a store,<br />

the store clerk or employee swipes it and its details are sent, encrypted, to the<br />

credit card company through the Internet. In principle, this is no different<br />

from using a credit card in an online transaction. The sensitive information<br />

is still sent through the Internet and is still encrypted. The main difference<br />

is that there is no clerk or employee involved in the process.<br />

The slogan <strong>of</strong> the American National Rifle Association (NRA) “guns<br />

don’t kill people, people do,” can with justification be modified to “computers<br />

do not create fraud, people do” (see also Exercise Intro.2). All the<br />

security problems, fraud, and computer crime are created by people, but<br />

other people fight back by developing technologies such as encryption and<br />

digital signatures that create a safer online environment.<br />

Interactive Media in Retail is a British group that promotes safe Internet<br />

shopping, trade, and interaction. Their main project is titled Internet<br />

Shopping is Safe [ISIS 05], and is where the following quotation comes from<br />

ISIS: a keystone in the bridge <strong>of</strong> trust between shops and shoppers.<br />

ISIS-accredited merchants now account for approximately two thirds<br />

<strong>of</strong> all UK online shopping.<br />

Consumers can shop online with confidence wherever they see the<br />

ISIS logo because it certifies that the merchant has:<br />

• registered with the ISIS programme and undertaken to trade in a<br />

manner that is LEGAL, DECENT, HONEST, TRUTHFUL AND FAIR.


290 11 Privacy and Trust<br />

• had its web site and service reviewed and monitored by IMRG.<br />

• had its Business, VAT and Data Protection registrations checked<br />

by IMRG.<br />

To verify the merchant’s ISIS certification, simply click on the ISIS<br />

logo—a new “ISIS verification” page will open up confirming that specific<br />

merchant’s certification. If you see an ISIS logo that doesn’t correctly link<br />

through to the verification page, please report it to IMRG immediately<br />

by emailing ISIS@imrg.org.<br />

Wolf: I get the feeling you still don’t completely trust me.<br />

Virginia: I don’t trust you at all! You tried to eat my Grandmother.<br />

Wolf: You don’t trust no one.<br />

Virginia: I don’t trust you, no.<br />

—From The 10th Kingdom, 2000.<br />

In conclusion, a new online consumer may be hesitant, uncertain, and<br />

reluctant to trust an online commercial site and to pay even a discount price<br />

for a product or service sold online. The best solution for both sellers and<br />

buyers is to create trust using the methods described here and to keep that<br />

trust.<br />

Exercise 11.4: Now that you have read the first part <strong>of</strong> this book, develop<br />

your own set <strong>of</strong> the ten most important security laws.<br />

Every man should know that his conversations, his<br />

correspondence, and his personal life are private.<br />

—Lyndon B. Johnson<br />

Well, just one more piece, then I’m done. Trust no<br />

one, my friend, no one. Not your most grateful<br />

freedman. Not your most intimate friend. Not your<br />

dearest child. Not the wife <strong>of</strong> your bosom. Trust no one.<br />

Herod, I, Claudius, (1976)


A<br />

The Hacker<br />

Madame Curie once said “En science, nous devons nous intéresser aux choses,<br />

non aux personnes [In science, we should be interested in things, not in<br />

people].” Things, however, have since changed, and today we have to be<br />

interested not just in the facts <strong>of</strong> computer security and crime, but in the<br />

people who perpetrate these acts. Hence this discussion <strong>of</strong> hackers.<br />

Over the centuries, the term “hacker” has referred to various activities.<br />

We are familiar with usages such as “a carpenter hacking wood with an ax”<br />

and “a butcher hacking meat with a cleaver,” but it seems that the modern,<br />

computer-related form <strong>of</strong> this term originated in the many pranks and practical<br />

jokes perpetrated by students at MIT in the 1960s. As an example <strong>of</strong> the<br />

many meanings assigned to this term, see [Schneier 04] which, among much<br />

other information, explains why Galileo was a hacker but Aristotle wasn’t.<br />

A hack is a person lacking talent or ability, as in a “hack writer.” Hack<br />

as a verb is used in contexts such as “hack the media,” “hack your brain,”<br />

and “hack your reputation.” Recently, it has also come to mean either a<br />

kludge, or the opposite <strong>of</strong> a kludge, as in a clever or elegant solution to a<br />

difficult problem. A hack also means a simple but <strong>of</strong>ten inelegant solution or<br />

technique. The following tentative definitions are quoted from the jargon file<br />

([jargon 04], edited by Eric S. Raymond):<br />

1. A person who enjoys exploring the details <strong>of</strong> programmable systems<br />

and how to stretch their capabilities, as opposed to most users, who prefer<br />

to learn only the minimum necessary.<br />

2. One who programs enthusiastically (even obsessively) or who enjoys<br />

programming rather than just theorizing about programming.<br />

3. A person capable <strong>of</strong> appreciating hack value.<br />

4. A person who is good at programming quickly.<br />

5. An expert at a particular program, or one who frequently does work<br />

using it or on it; as in “a UNIX hacker.” (Definitions 1 through 5 are corre-<br />

D. Salomon, <strong>Elements</strong> <strong>of</strong> <strong>Computer</strong> <strong>Security</strong>, Undergraduate Topics in <strong>Computer</strong> Science,<br />

DOI 10.1007/978-0-85729-006-9, © Springer-Verlag London Limited 2010


292 A The Hacker<br />

lated, and people who fit them congregate.)<br />

6. An expert or enthusiast <strong>of</strong> any kind. One might be an astronomy<br />

hacker, for example.<br />

7. One who enjoys the intellectual challenge <strong>of</strong> creatively overcoming or<br />

circumventing limitations.<br />

8. [deprecated] A malicious meddler who attempts to locate sensitive<br />

information by poking around. Hence “password hacker” and “network<br />

hacker.” The correct term for this sense is cracker (which stands for criminal<br />

hacker).<br />

Today’s computer hacker is <strong>of</strong>ten an expert in a computer-related field<br />

who finds a way to exploit a weakness or a vulnerability in a certain component<br />

<strong>of</strong> that field. This component may be a piece <strong>of</strong> hardware, part <strong>of</strong><br />

the operating system, or a s<strong>of</strong>tware application. Not all hackers are experts<br />

and not all are malicious. A notable example is Linus Torvalds, the creator<br />

<strong>of</strong> the well-known, free Linux operating system. Many Linux users will agree<br />

that this activity <strong>of</strong> Torvalds is a hack, but everyone (except commercial<br />

competitors) agrees that it is useful.<br />

I think any time you expose vulnerabilities it’s a good thing.<br />

—Janet Reno.<br />

Some security experts claim that today’s computer hackers should be<br />

termed crackers or intruders, but the general public and the media seem to<br />

love the term hacker. The word “cracker” is used to designate someone who<br />

breaks the security code <strong>of</strong> s<strong>of</strong>tware, so that it can be used without pay. The<br />

term “intruder” is commonly used to indicate a person who breaks into a<br />

remote computer.<br />

The following classification <strong>of</strong> the various hacker categories is informal<br />

and is by no means universally accepted.<br />

The highest category <strong>of</strong> hacker may be a brilliant programmer (although<br />

such a hacker may prefer the title <strong>of</strong> guru, cracksman, or wizard). Someone<br />

who is intimately familiar with a certain communications program, protocol,<br />

operating system, or encryption algorithm. Such a person can identify<br />

weaknesses or vulnerabilities and then come up with a clever, original way <strong>of</strong><br />

penetrating a computer and inflicting damage. Alternatively, such an expert<br />

may develop ways and means to plug up security holes in s<strong>of</strong>tware, or even<br />

completely rewrite a weak routine or procedure to make it invulnerable.<br />

The next category is that <strong>of</strong> the good programmer. Such a person hears<br />

<strong>of</strong> a new security threat, for example, a new type <strong>of</strong> virus, and may decide<br />

to “improve” it. A good programmer can disassemble the code <strong>of</strong> a virus,<br />

read and understand it, and come up with more “efficient” ways <strong>of</strong> employing<br />

the basic principle <strong>of</strong> the virus. Such a person may also be a good guy (a<br />

white-hat hacker) and work as a security expert. Disassembling and reading<br />

the code <strong>of</strong> a virus uncovers the vulnerabilities the virus exploits and leads<br />

directly to eliminating them.<br />

A script kid is a hacker with little or no programming skills who simply


The Hacker 293<br />

follows directions created by a higher-rank hacker or who uses a cookbook<br />

approach without fully understanding the principles and details <strong>of</strong> what he<br />

is constructing.<br />

A hacktivist is an activist who employs hacking to promote a cause. In<br />

February 2010, a hacktivist group that calls itself Anonymous unleashed DoS<br />

attacks against several Australian government Web sites as a protest against<br />

Australia’s evolution toward internet censorship. In the past, the same group<br />

brought down Scientology’s Web sites, an epilepsy message board, and a Neo-<br />

Nazi webcaster.<br />

A sneaker or a gray-hat is a hacker who breaks security for altruistic<br />

motives or other non-malicious reasons. The darker the hat, the more the<br />

ethics <strong>of</strong> the activity should be considered dubious.<br />

The least harmful hacker is the white-hat type. This term is <strong>of</strong>ten<br />

used to describe self-appointed security gurus who attempt to break into<br />

computers or networks in order to find security flaws and inform the owners/administrators<br />

<strong>of</strong> the problem.<br />

The following is a list <strong>of</strong> “tools <strong>of</strong> the trade,” methods, approaches,<br />

and special s<strong>of</strong>tware used by hackers to gain unauthorized access to data, to<br />

computers, to mobile devices, or to entire computer installations:<br />

Rogue s<strong>of</strong>tware. These are computer programs especially designed to<br />

propagate among computers and either inflict damage or collect data and<br />

send it back to the hacker. They are also known as malware. The chief types<br />

<strong>of</strong> rogue s<strong>of</strong>tware are viruses, worms, Trojan horses, and the various kinds <strong>of</strong><br />

spyware. Each is described in one paragraph below.<br />

Virus (Chapter 2, a term borrowed from biology). A program that invades<br />

a computer and embeds itself inside a host program, where it replicates<br />

and propagates from computer to computer, infecting each in turn. A virus<br />

spreads by infected removable disks, or over a network.<br />

Worm. A program that exploits weaknesses in an operating system or<br />

in communications s<strong>of</strong>tware in order to replicate itself on other computers on<br />

a network. A worm does not reside in a host program. Worms are discussed<br />

in Chapter 3.<br />

Trojan horse. A program that seems useful, but has a backdoor, installed<br />

by its creator and employed later to gather information, to damage s<strong>of</strong>tware,<br />

or to inflict other harm. Examples are programs that mimic login sequences<br />

or that fool a user into downloading and executing them by claiming to be<br />

useful applications. This type <strong>of</strong> rogue s<strong>of</strong>tware is described in Chapter 4.<br />

Spyware is the general name assigned to a whole range <strong>of</strong> nasty s<strong>of</strong>tware<br />

that runs on a computer, monitors its users’ activities, collects information<br />

such as keystrokes, screen dumps, and file directories, and either saves this<br />

information or sends it to a remote location without the knowledge or consent<br />

<strong>of</strong> the computer owner. Spyware is described in Chapter 9.<br />

Scanning. This term refers to s<strong>of</strong>tware and equipment that methodically<br />

probes computers on the Internet for vulnerabilities. Two <strong>of</strong> the main tools


294 A The Hacker<br />

used for this purpose are a vulnerability scanner and a sniffer. They are<br />

described here.<br />

Vulnerability scanner. A program designed to quickly check computers<br />

on a network for known weaknesses. A port scanner (Section 7.2) is a special<br />

case. It is a program that attempts to find open ports on a target computer<br />

or ports that are available to access the computer. A firewall is a piece <strong>of</strong><br />

hardware or s<strong>of</strong>tware that defends computers from intruders by closing <strong>of</strong>f all<br />

unused ports.<br />

Sniffer. A program that captures passwords and other data while the<br />

data is in transit either within the computer or between computers or routers<br />

on a network.<br />

Exploit. A ready-to-run program that takes advantage <strong>of</strong> a known weakness.<br />

These can <strong>of</strong>ten be found in hackers’ newsgroups.<br />

Social engineering. A general term for methods that exploit human<br />

weaknesses. A hacker may discover someone’s password by calling and pretending<br />

to be an <strong>of</strong>ficial, by looking over someone’s shoulder while a password<br />

is being typed, or by sending email that poses as an <strong>of</strong>ficial notice asking for<br />

sensitive information. Bribing and blackmailing are also included in this class.<br />

Even though no special s<strong>of</strong>tware may be needed and no s<strong>of</strong>tware weakness is<br />

exploited, social engineering is still a powerful tool used by many miscreants.<br />

Social engineering (page 225) is a wide class that includes, among others, the<br />

following methods:<br />

Shoulder spying (or shoulder watching or surfing). A hacker enters a<br />

secure computer installation or a restricted computer lab (<strong>of</strong>ten disguised as<br />

a pizza delivery man) and looks behind users’ shoulders for passwords typed<br />

by them or being taped to the sides <strong>of</strong> computer monitors.<br />

Optical spying. The hacker watches from a nearby room or building,<br />

perhaps with a binocular, and tries to read keystrokes typed by legitimate<br />

users.<br />

Scavenging (or dumpster diving). Hackers have been known to collect<br />

trash and examine it for passwords and credit card numbers (see also<br />

page 226).<br />

Side-channel attacks. A hacker can spy on a secure installation “from<br />

the side” by capturing and listening to information that is continuously and<br />

unintentionally leaked by electronic devices inside. The basis <strong>of</strong> this approach<br />

is the well-known fact that people are nosy and machines are noisy. Sidechannel<br />

methods are discussed in Section 1.1, but the following are typical<br />

examples.<br />

Eavesdropping. A hacker, <strong>of</strong>ten disguised as a telephone company repair<br />

man, enters a computer room and plants devices that later transmit to<br />

him useful data on the activities <strong>of</strong> users. Such devices may include radio<br />

transmitters, acoustic microphones (Section 1.1.1), and cameras.<br />

Acoustic keyboard eavesdropping. This sophisticated approach to spying<br />

employs the little-known fact that each key in a keyboard emits a slightly<br />

different sound when pressed. Recording the sounds <strong>of</strong> keys with a sensitive<br />

microphone may enable a hacker to analyze them by computer and discover


The Hacker 295<br />

the actual keys pressed by a user. A similar approach is to use a high-gain<br />

antenna outside a building to receive the electromagnetic waves emitted by<br />

CRT monitors inside and analyze them to recreate the displays. (Notice that<br />

LCD monitors do not emit such radiation.) These methods are discussed in<br />

Section 1.1.1.<br />

Root kit (or rootkit). A program especially designed to hide the fact that<br />

a computer’s security has been compromised. A root kit may replace an operating<br />

system program, thereby making it impossible for the user/owner to<br />

detect the presence <strong>of</strong> the intruder by looking at activity inside the computer.<br />

Leet (l33t speak). Slang used by hackers to obfuscate discussions in<br />

newsgroups and other “gathering places” on the Internet. Examples <strong>of</strong> leet<br />

are “warez” (for pirated s<strong>of</strong>tware), “pr0n” for pornography, and “sploitz” for<br />

exploits. See Appendix B.<br />

A honeypot is the reverse tool. A honeypot is a server that acts as a<br />

decoy, attracting hackers in order to study their methods and monitor their<br />

activities. <strong>Security</strong> workers use honeypots to collect valuable information<br />

about new methods and tricks employed by hackers to break into computers.<br />

Hacker motivation and psychology. Why does someone become<br />

a hacker? In most cases, hacking involves intense study (<strong>of</strong> programming,<br />

communications protocols, and the internal workings <strong>of</strong> operating systems),<br />

expense (the hacker must have a computer and normally also Internet connection),<br />

time for experimentation, and effort.<br />

We all hear about teenagers, high-school kids who spend days in front<br />

<strong>of</strong> a computer, trying to hack into other computers, Web sites, installations,<br />

or mobile devices for the satisfying feeling <strong>of</strong> achievement, <strong>of</strong> (false) success.<br />

This type <strong>of</strong> hacker, who “works” for the challenge <strong>of</strong> penetrating a secure<br />

computer or a secret computer installation, for the sheer pleasure and the<br />

rush <strong>of</strong> adrenalin, may also be an adult. There are many known cases <strong>of</strong> disgruntled<br />

employees who plant a time bomb in sensitive s<strong>of</strong>tware and schedule<br />

it to go <strong>of</strong>f when they are terminated. Another category is a computer-savvy<br />

person who hears about successful hacking episodes and decides to try and<br />

make money in this way. Spies are also potential hackers. A spy may acquire<br />

a great deal <strong>of</strong> useful information by hacking into a military computer<br />

and can do it “from the comfort <strong>of</strong> his home.” A case in point is Markus<br />

Hess (also known as the wily hacker), tracked down and later discussed by<br />

Clifford Stoll [Stoll 88, 90, 04]. Various kinds <strong>of</strong> terrorists, both home grown<br />

and foreigners, are also believed to be active in hacking, because this is one<br />

activity that causes much harm with relatively small risk for the hacker.<br />

Sometimes, the hackers are the administrators themselves. The following<br />

story broke in late February 2010 and was immediately dubbed webcamgate<br />

(after the infamous watergate scandal <strong>of</strong> 1972).<br />

Sometime in 2009, a high school in Philadelphia loaned Apple Mac-<br />

Books to 2300 <strong>of</strong> its students. The computers had built-in cameras. In<br />

mid-November 2009, a 15-year-old student (we’ll call him Joe) was accused<br />

by the school’s assistant vice principal <strong>of</strong> improper behavior, specifically, taking<br />

drugs inside his bedroom. The vice principal told Joe that the school had<br />

photographs, taken by his computer camera, proving the accusation.


296 A The Hacker<br />

Joe relayed this information to his parents, and when they complained to<br />

the school, they were told that the computers issued to the students were preequipped<br />

with the LANrev s<strong>of</strong>tware that could activate the camera whenever<br />

administrators chose. The idea was to have this option a part <strong>of</strong> the school’s<br />

anti-theft program.<br />

The parents did not agree. They consulted a lawyer, and in February<br />

2010 a class action lawsuit was filed against the school district.<br />

In response, the school district declared that the project was “a security<br />

feature intended to track lost, stolen, and missing laptops. . . . The district<br />

has not used the tracking feature or web cam for any other purpose or in any<br />

other manner whatsoever. . . and the matter is under review.”<br />

The school district further declared that they activated the webcam<br />

loaned to Joe because he never paid the mandatory $55 insurance fee.<br />

Finally, there is organized crime, as the following quote (from [Brenner<br />

02]) makes clear:<br />

“The Internet is still in its infancy, but we have already seen large segments<br />

<strong>of</strong> human activity migrate wholly or partially into cyberspace, a trend<br />

that will only accelerate. Criminal activity has also moved into cyberspace,<br />

and this, too, is a trend that will only accelerate; lawbreakers will shift much<br />

<strong>of</strong> their activity into cyberspace because it will increasingly be the venue<br />

where illicit pr<strong>of</strong>its are to be made and because it <strong>of</strong>fers operational advantages.”<br />

<strong>Computer</strong> crime is perpetrated not just by hackers. Many honest people<br />

who have access to computers with important data are tempted to commit a<br />

crime in order to enrich themselves. Inevitably, some yield to the temptation.<br />

The following story from the 1960s (which may even be true) is just one<br />

<strong>of</strong> many examples. A low-level programmer in a bank had noticed that<br />

the quarterly interest payments on the many savings accounts held by the<br />

bank (there were tens <strong>of</strong> thousands <strong>of</strong> such accounts) were computed to four<br />

decimal places, then rounded <strong>of</strong>f. Thus, anything above $0.0075 was rounded<br />

up to the next cent and any amount below that was truncated to the nearest<br />

cent. In other words, anything below three quarters <strong>of</strong> a cent earned in<br />

interest was going back to the bank. The programmer simply modified the<br />

source code <strong>of</strong> the program that did these computations, directing it to send<br />

all this extra money to his account. The story (there are many versions <strong>of</strong> it)<br />

goes on to say that the programmer was unmasked only because he bought<br />

an expensive car, too expensive for his salary, and parked it prominently in<br />

the bank’s parking lot. This story may or may not be true, but in response to<br />

it many banks have instituted a policy that requires each programmer to take<br />

his annual vacation every year, at which time any s<strong>of</strong>tware the programmer<br />

worked on is scrutinized by special auditors.<br />

Exercise A.1: Who audits the auditors?<br />

(A joke. Today, after decades <strong>of</strong> inflation, it is even possible for a bank<br />

programmer to simply take a penny or two from each bank account without<br />

the account’s owner noticing or caring about the loss, and channel this money<br />

to his private account. Before going on vacation, the programmer can clean


The Hacker 297<br />

his program for the benefit <strong>of</strong> the auditors. While on vacation, the programmer<br />

enjoys the extra money. Upon returning, the program can be doctored<br />

again. Naturally, this author does not condone such behavior, but it helps<br />

to improve the vacation patterns <strong>of</strong> low-paid bank programmers. On second<br />

thought, is this just a joke?)<br />

Another, even more bizarre story is about a pair <strong>of</strong> programmers who<br />

started appearing to work in a matching pair <strong>of</strong> Rolls-Royces. The company’s<br />

executives immediately became suspicious and started an investigation.<br />

When the pair heard <strong>of</strong> it, they promptly bolted. However, in spite <strong>of</strong><br />

a long and careful investigation, nothing untoward was ever discovered. If<br />

the two programmers were guilty, they managed to completely cover their<br />

tracks, and got scared needlessly.<br />

In the early days <strong>of</strong> hacking and breaking into computers, some security<br />

experts maintained that “hackers have done less damage to corporate<br />

computer systems than overflowing lavatories.” Today, such a claim seems<br />

ludicrous. The damage done to computers, to networks, to individuals, and<br />

to the economy is getting worse and has become a global concern. Fighting<br />

it involves governments, law enforcement agencies, and security experts all<br />

over the world.<br />

For more information, see How to Become a Hacker and Brief History<br />

<strong>of</strong> Hackerdom by Eric Raymond [Raymond 04].<br />

Among my most prized possessions<br />

are words that I have never spoken.<br />

—Orson Rega Card


B<br />

l33t Speak<br />

The term “l33t Speak” (pronounced “leet”) refers to a language or a notational<br />

system widely used by hackers. This notation is unique because it<br />

cannot be handwritten or spoken. It is an Internet-based notation that relies<br />

on the keyboard. It is simple to learn and has room for creativity. Web site<br />

[bbc 04] is just one <strong>of</strong> many online references to this topic.<br />

Many other artificial languages or notational rules have been described or<br />

used in literature. The following are a few examples.<br />

Elvish in J. R. R. Tolkien’s The Lord <strong>of</strong> the Rings.<br />

Newspeak in George Orwell’s Nineteen Eighty-Four.<br />

Ptydepe in Václav Havel’s The Memorandum.<br />

Nadsat in Anthony Burgess’ A Clockwork Orange.<br />

Marain in Iain M. Banks’ The Player <strong>of</strong> Games and his other Culture<br />

novels.<br />

Pravic in Ursula K. LeGuin’s The Dispossessed.<br />

The history <strong>of</strong> l33t speak is tied up with the Internet. In the early<br />

1980s, as the Internet started to become popular, hackers became aware <strong>of</strong><br />

themselves as a “species.” They wanted a notation that will both identify<br />

them as hackers and will make it difficult for others to locate hacker Web sites<br />

and newsgroups on the Internet with a simple search. Since a keyboard is<br />

one <strong>of</strong> the chief tools used by a hacker, it is no wonder that the new notation<br />

developed from the keyboard. The initial, tentative steps in the development<br />

<strong>of</strong> l33t speak have simply replaced certain letters (mostly vowels) by digits<br />

with similar glyphs, so A was replaced by 4 and E was replaced by 3.<br />

It was the development <strong>of</strong> sophisticated computer games in the early<br />

1990s that boosted the popularity <strong>of</strong> l33t speak and prompted hackers to<br />

enrich it with features. Gamers started developing their own language, based<br />

on phrases heard in games, and hackers who played games (and there are


300 B l33t Speak<br />

many <strong>of</strong> them) naturally wrote such phrases in l33t speak. An important<br />

example is the phrase “I am elite,” whose l33t speak version is “1 4m 3l1t3.”<br />

Hackers are notoriously bad spellers, so this phrase got first corrupted to “1<br />

4m 3l33t,” then mutated to “1 4m 133t,” which gave l33t speak its current<br />

name. The final boost to the popularity <strong>of</strong> l33t speak was given by a very<br />

popular Web comic called Megatokyo.<br />

Like any other language or notational system, l33t speak has its grammar<br />

rules, but they are flexible, allowing users to be creative. The basic rules for<br />

replacing letters with digits and other keyboard characters are listed here,<br />

but new rules appear all the time and either become popular or are forgotten.<br />

A → 4, E → 3, I → 1, O → φ, O → (),<br />

U → | |, T → 7, D → |), W → \/\/, S → $<br />

(Notice the two versions <strong>of</strong> O.) Connoisseurs <strong>of</strong> l33t speak talk about classifying<br />

versions <strong>of</strong> this notation into classes or levels such as light l33t, medium<br />

1337, hard | 337, and ultra | 33 − | − .<br />

In l33t, z is used instead <strong>of</strong> s to construct the plural, f is generally<br />

changed to ph, and a short u is <strong>of</strong>ten replaced by the pair φφ.<br />

The term “digram” is used in English to indicate a pair <strong>of</strong> characters<br />

and l33t speak employs φd and φr to express the digrams “ed” and “er.” For<br />

example, “1 4m 4 l33t h4xφr” can be used instead <strong>of</strong> “1 4m 4 133t h4ck3r.”<br />

(In ultra, this would be spelled “1 φ\/\/|\|zφr.”)<br />

Punctuation marks are sometimes omitted, and are rare in higher levels<br />

<strong>of</strong> l33t speak. Many chat programs allow the user to type only one sentence<br />

at a time, so there is no need for end-<strong>of</strong>-sentence periods. On the other<br />

hand, since l33t speak is commonly used to express surprise or pleasure,<br />

exclamation marks are popular and are sometimes repeated several times<br />

(a practice strictly prohibited by traditional copy editors). Low levels <strong>of</strong><br />

l33t speak may use commas, but even those humble punctuation marks are<br />

omitted in the higher levels.<br />

The vocabulary <strong>of</strong> l33t speak is mostly a corrupted form <strong>of</strong> English, but<br />

many phrases and spellings are unique to l33t speak. Here are some examples.<br />

φw|\| or φwn3d. A popular l33t speak word. Its (very loose) meaning is<br />

“beaten” but it can also express awe, as in, “I φwn3d you” which means “I<br />

have beaten you good and proper”, or “φwn4ge!” which means “That was<br />

very nifty.”<br />

wφφt. This word, derived from “hoot,” is interpreted to mean “yay,”<br />

and is commonly used to express victory.<br />

13wt. A misspelling <strong>of</strong> “loot” that came to mean a treasure, good merchandise,<br />

or possessions. Its most common use it to refer to pirated s<strong>of</strong>tware,<br />

to items in a game, or promotional giveaways.<br />

h4xφr. The word for hacker or a skillful person. This is the most common<br />

occurrence <strong>of</strong> the φr digram.<br />

ph33r. Fear. Most-commonly used in phrases such as “Ph33r m3!” or<br />

“Ph33r |\/|y 1337 sk1llz!” It can also be spelled “ph34r.”


l33t Speak 301<br />

sk1llz. A word derived from “skill” and referring to skill in some online<br />

activity such as programming or hacking. Often used in conjunction with<br />

“m4d.” As a general rule, if one has sk1llz, one is to be ph33r3d.<br />

m4d. Mad, commonly used as a descriptive term meaning great, for<br />

example, “h3s gφt m4d sk1llz.”<br />

jφφ. You, <strong>of</strong>ten used in phrases like “jφφ d34d fφφ.”<br />

fφφ. Fool, someone not bright or skillless.<br />

In any event, it’s not a matter <strong>of</strong> liking or disliking, not a matter <strong>of</strong> skillful<br />

or skillless (how many Ls does that have?). No. When it comes to penguin<br />

shuffling, it’s your patriotic duty.<br />

—Anonymous.<br />

jφ. Yo, as in the greeting.<br />

dφφd. Dude, used to address a colleague or an unknown person online.<br />

suxφr. Sucks, as in “7h1s suxφr,” an example <strong>of</strong> the φr digram.<br />

l4m3r. Lamer, someone who is lame, an unfair person or someone who<br />

isn’t fun to be with.<br />

nφφb. Short for noobie, a corruption <strong>of</strong> newbie. Someone who is new to<br />

or is weak at something.<br />

Usage <strong>of</strong> l33t speak is nonuniform. Some use it exclusively or almost so,<br />

while others frown on general use <strong>of</strong> l33t speak and insist that it should be<br />

used only in brief expressions, preferably expression <strong>of</strong> excitement.<br />

Exercise B.1: (No answer provided). Rewrite the following two l33t speak<br />

paragraphs in your language.<br />

$4n DI3go- feDEr4L @gEN+s $t0rmEd tH3 H0U53$ Of tW0 $U5p3CTEd TeRrOr15+5<br />

E@RLY Y35+3rd@Y M0RniNg 4PHTer dEt3rMiNiNg theY WER3 P4Rt opH @ Pl0+ +0<br />

De$TR0y u.5. C1+i3$.<br />

jac0b M4R+Z 4nd cuR+iS hUgH3$, WELL knOWN 1n t3H Pc g4Ming C0MMUnI+Y 4$<br />

"W@xX0R" aND "L00d@|


C<br />

Virus Timeline<br />

This timeline is meant to serve both as a historical survey and as a teaching<br />

tool. Most <strong>of</strong> the viruses described in this appendix have interesting features<br />

that make them unique or a first. Those are described here in some detail.<br />

Chapter 5 has several detailed descriptions <strong>of</strong> viruses and worms, including<br />

some <strong>of</strong> the ones mentioned here.<br />

Several timelines <strong>of</strong> computer viruses can be found on the Internet. One<br />

reference is [IbmAntiVirus 05].<br />

1949–50. First attempts to implement self-replicating programs.<br />

1950s. An experimental game in which players use malicious programs to<br />

attack each other’s computers is developed and used in Bell Labs.<br />

1975. John Brunner publishes The Shockwave Rider, a science fiction novel<br />

in which computer “worms” spread across networks.<br />

1981. Several <strong>of</strong> the first viruses seen “in the wild,” (i.e., in the public domain)<br />

are found on the Apple II operating system, and are designated Apple<br />

viruses 1, 2, and 3. These viruses spread through Texas A&M University via<br />

pirated computer games.<br />

1982. Another virus found on the Apple II computer and is designated Elk<br />

Cloner (the term virus was not used).<br />

1983–84. Fred Cohen is the first to consider viruses a serious topic <strong>of</strong><br />

scientific study and experimentation. He proposes a definition and conducts<br />

controlled experiments in virus propagation.<br />

1986. Brain (Section 5.2), perhaps the first widespread virus (a BSI with<br />

stealth features), seems to have been written by two brothers in Pakistan<br />

who disseminate it on floppy disks with pirated s<strong>of</strong>tware sold to tourists.


304 C Virus Timeline<br />

In December, a file infector named Virdem is introduced in Germany as a<br />

demonstration. It is quickly followed by the demonstration viruses Burger<br />

and Rush Hour.<br />

1987. This is the first bad year and it signals the shape <strong>of</strong> things to come.<br />

In the fall, the Lehigh virus (Section 5.1), an early file infector, appears at<br />

Lehigh university in Bethlehem, Pennsylvania and infects command.com files.<br />

The Christmas tree worm paralyses the IBM worldwide network.<br />

In December, the Jerusalem virus appears at the Hebrew University <strong>of</strong> Israel.<br />

It was the first file infector that infected both .com and .exe executable files<br />

and also successfully modified interrupt handling routines so that it could<br />

reside in memory and be invoked frequently. A bug in this virus caused it<br />

to reinfect programs. The Jerusalem virus was preceded by three variants<br />

designated Suriv 1, 2, and 3 (suriv is virus spelled backward) and may have<br />

been deployed by the same author.<br />

Two more viruses appear later in the year, the stoned virus (the first master<br />

boot record, or MBR infector), apparently written by a student in New<br />

Zealand, and the Vienna virus, written by an Austrian high school student.<br />

The latter is completely disassembled and analyzed, and its code published.<br />

Last (and perhaps least), a virus appears in South Africa that deletes files<br />

on Friday the 13th.<br />

Origins <strong>of</strong> Friday the 13th<br />

Many stories, anecdotes, and beliefs explain why Friday the 13th is considered<br />

by many an unlucky day. Perhaps the most important <strong>of</strong> those is<br />

a historical event. On Friday, 13 October, 1307, the Pope <strong>of</strong> the Roman<br />

Catholic church, together with the King <strong>of</strong> France, sentenced the “Knights<br />

Templars” to death and ordered the torture and crucifixion <strong>of</strong> their leader.<br />

Traditional beliefs have it that Eve tempted Adam with the apple on a<br />

Friday, the Biblical Flood, the confusion at the Tower <strong>of</strong> Babel, and the<br />

death <strong>of</strong> Jesus Christ all took place on a Friday. Also, 13 was the number<br />

at the Last Supper following which Judas betrayed Jesus.<br />

The Belgian writer Georges Simenon was born a little after one AM on<br />

Friday, 13 February 1903. Being superstitious, his mother Henriette had<br />

the birth date <strong>of</strong>ficially falsified and recorded as February 12th.<br />

The fear <strong>of</strong> the number 13 is known scientifically as tridecaphobia, and is<br />

perhaps the most common <strong>of</strong> all superstitions. The long, complex, and rare<br />

term “Paraskavedekatriaphobia” also describes this phobia. This term is a<br />

concatenation <strong>of</strong> the Greek words Paraskevi (Friday), dekatreis (thirteen),<br />

and phobia (fear).<br />

1988. The Internet worm (Section 3.4) spreads through the United States<br />

DARPA network by exploiting security weaknesses in the finger and sendmail<br />

UNIX utilities. In a rare stroke <strong>of</strong> luck, its author is promptly identified,<br />

tried, and punished.


Virus Timeline 305<br />

The first good virus (or anti-virus virus) is released. Its task is to detect<br />

and remove the Brain virus. There are two versions <strong>of</strong> this virus, written by<br />

Denny Yanuar Ramdhani in Bandung, Indonesia and named the Den Zuk<br />

viruses<br />

This year also sees another innovation, a self-encrypting virus. First found<br />

in Germany, the cascade virus is a file infector that encrypts itself with a<br />

random key.<br />

The ping-pong virus (also known as “bouncing ball” or “Italian”) appears at<br />

the university <strong>of</strong> Turin in Italy in March. It becomes the most common and<br />

best known boot sector virus (BSI) and keeps this title for a while. This virus<br />

had a small bug that caused it to crash computers based on the Intel 80286<br />

microprocessor and its successors, which made the ping-pong virus easy to<br />

detect.<br />

Finally, after several years <strong>of</strong> attacks, infections, and much damage inflicted<br />

by viruses, the topic <strong>of</strong> malicious s<strong>of</strong>tware starts attracting the attention<br />

<strong>of</strong> the media. Newspapers and magazines publish articles and news briefs<br />

about occurrences <strong>of</strong> viruses and worms, speculations as to their origins, and<br />

descriptions provided by virus detectives.<br />

1989. The Dark Avenger.1800 virus is unleashed from Sophia, Bulgaria<br />

in January. It is named Dark Avenger after its anonymous creator, and it<br />

represents the next step in virus sophistication (some might say, the next<br />

generation <strong>of</strong> viruses). It spreads fast because it infects executable files as<br />

they are opened, even if they do not execute. Also, its payload is dangerous.<br />

It performs slow data diddling to files on the disk, so that when its damage<br />

is finally discovered, even files backed up weeks before are already corrupted.<br />

Exercise C.1: The Dark Avenger.1800 virus infected executable files as<br />

they were opened, even if they did not execute. Why does this make it a<br />

fast-spreading virus?<br />

In October, the “Frodo lives” virus emerges from Israel. This is an advanced<br />

stealth file infector. It saves the original length <strong>of</strong> every file infected and<br />

displays the lengths when the user asks for a directory listing. It also tries to<br />

intercept attempts to read infected files and it sends the original, clean files<br />

instead. This virus triggers on 22 September <strong>of</strong> any year (if it happens to<br />

execute on that date), when it displays the message “Frodo lives” and tries<br />

(unsuccessfully, because <strong>of</strong> a bug in its code) to install a Trojan horse. (Frodo<br />

Baggins is one <strong>of</strong> the main characters in the novel The Lord <strong>of</strong> the Rings by<br />

J. R. R. Tolkien.)<br />

1990. The flip virus (a slow file infector also designated flip-2343 because<br />

it increases the size <strong>of</strong> infected files by this number <strong>of</strong> bytes) escapes from<br />

Switzerland and is seen in the wild everywhere. This is perhaps the first<br />

successful multipartite virus (both BSI and file infector, Section 2.9) and is<br />

also polymorphic (appears as different bit strings, Section 2.20), which delays<br />

its identification, isolation, and successful removal. Flip is a slow infector


306 C Virus Timeline<br />

because the only way for it to infect a computer is when a flip-infected file is<br />

executed. The file can come from an external disk, can be downloaded from<br />

a network, or be an email attachment.<br />

Flip got its name because its payload is to flip horizontally the display on<br />

the monitor screen (only EGA or VGA monitors) on the second day <strong>of</strong> each<br />

month, between 16:00 and 16:59. Other flip viruses appear in future years,<br />

with other payloads in addition to the relatively harmless flipping.<br />

Symantec Inc., already a recognized company in the field <strong>of</strong> computer security,<br />

launches Norton AntiVirus, one <strong>of</strong> the oldest anti-virus programs. At the<br />

time <strong>of</strong> this writing, the program still bears the same name and is regularly<br />

updated (both the s<strong>of</strong>tware and the virus definitions).<br />

1991. The tequila virus is a the first widespread polymorph <strong>of</strong> flip, probably<br />

generated by the same person who wrote the original flip virus.<br />

The Bulgarian virus developer Dark Avenger announces in March that he is<br />

working on a new, dangerous virus that can mutate in billions <strong>of</strong> ways. This<br />

threat will materialize in 1992 (see MtE).<br />

The first virus kits appear. Version 1 <strong>of</strong> VCS (virus construction set) appears<br />

in March in Hamburg, Germany. It was written by the Verband Deutscher<br />

Virenliebhaber (community <strong>of</strong> German virus lovers). It is followed by VCL<br />

(virus construction lab, implemented by Nowhere Man) and in August by<br />

PS-MPC.<br />

VCL is an attempt by a virus writer calling himself Nowhere Man to create<br />

a user-friendly package that will allow inexperienced programmers to create<br />

their own viruses. VCL has menus for the infection type, encryption, and<br />

payload, allowing a would-be virus creator to easily generate code in either<br />

assembler language or directly as an executable .com file. PS-MPC is a virus<br />

code generation file (PS stands for Phalcon/Skism, presumably indicating<br />

the anonymous writers) in August.<br />

Virus workers claim that there are upward <strong>of</strong> 1000 viruses in existence.<br />

1992. Dark Avenger finally releases his long-promised mutation engine<br />

(dubbed MtE or DAME). It turns out to be a toolkit that converts ordinary<br />

viruses into polymorphic ones.<br />

It takes a while for anti-virus s<strong>of</strong>tware to get to the point where viruses that<br />

employ MtE can be detected. In future years, MtE continues to be a source <strong>of</strong><br />

inspiration for those planning to implement and unleash polymorphic engines.<br />

The demo virus which accompanied the [mutation] engine contained the<br />

text: “We dedicate this little virus to Sara [sic] Gordon, who wanted to<br />

have a virus named after her.”<br />

—From [avenger 05].<br />

This year marks the first worldwide panic about a computer virus. The<br />

Michelangelo virus (Section 5.3) is touted in the media as a global threat,<br />

but turns out to infect very few computers.


Virus Timeline 307<br />

Statistics: There are now 1300 viruses in the wild (although many appear<br />

to be dead). In response, more and more computer users purchase antivirus<br />

s<strong>of</strong>tware, encouraging more s<strong>of</strong>tware makers to jump on this bandwagon<br />

(many later alight).<br />

1994. The first major virus hoax, Good Times, appears (hoaxes are discussed<br />

in Section 6.6). It warns about a destructive virus that erases an entire<br />

disk drive if an email message with the subject “Good Times” is opened. Rumors<br />

persist for months, and then resurface in future years.<br />

A destructive, polymorphic virus called Pathogen (or alternatively, SMEG)<br />

appears in England. Analysis shows that Pathogen is really two sibling<br />

viruses, SMEG.Pathogen and SMEG.Queeg. The virus author, who calls himself<br />

the Black Baron, claims to have written them in a language he calls the<br />

Simulated Metamorphic Encryption Generator (SMEG). The two siblings are<br />

highly polymorphic, and mutate to become completely different bit strings<br />

in each infection.<br />

In a rare example <strong>of</strong> successful police work, the author is tracked down by<br />

New Scotland Yard’s <strong>Computer</strong> Crime Unit. He is identified as Christopher<br />

Pile, is tried in November, and is sentenced to 18 months under the <strong>Computer</strong><br />

Misuse Act <strong>of</strong> the United Kingdom.<br />

Ay! Then, Miss Newson, ye had better say nothing about this hoax, and<br />

take no heed <strong>of</strong> it. And if the person should say anything to you, be civil<br />

to him or her, as if you did not mind it—so you’ll take the clever person’s<br />

laugh away.<br />

—Thomas Hardy, The Mayor <strong>of</strong> Casterbridge, 1885.<br />

1995. This is the year <strong>of</strong> the macro virus (Section 2.10). The first such virus,<br />

Concept, is discovered in May. It is written in WordBASIC (an interpreted<br />

programming language similar to Visual Basic for Applications and executed<br />

by Micros<strong>of</strong>t Word). Concept infects documents <strong>of</strong> Word versions 6 and 7 on<br />

any computer platforms (Word is supported on Windows and Macintosh).<br />

It seems that the only payload <strong>of</strong> Concept is to display the message “REM<br />

That’s enough to prove my point.” Anti-virus s<strong>of</strong>tware makers are not<br />

prepared for a macro virus. After analyzing Concept they assess it as a weak<br />

infector, but in fact it becomes one <strong>of</strong> the most prevalent viruses in the mid<br />

1990s.<br />

While the good guys try to come to terms with the new macro virus, virus<br />

developers decide they like this approach and they write and release a few<br />

more macro viruses this year.<br />

1996. In January, the Boza virus (sometimes misspelled baza) is discovered.<br />

Boza is the first virus to spread only under the Micros<strong>of</strong>t Windows 95 operating<br />

system. Even though it has been seen in many geographic locations,<br />

it is not considered a serious threat to Windows 95 users. Boza was written<br />

by the Australian virus group VLAD and is named after a text string that it<br />

contains Please note: the name <strong>of</strong> this virus is [Bizatch] written<br />

by Quantum/VLAD.


308 C Virus Timeline<br />

Two variants, Boza.B and Boza.C are later released, probably in attempts to<br />

correct bugs in the original Boza, but have no noticeable effect.<br />

In July, the anti-virus community learns <strong>of</strong> a new nondestructive macro virus<br />

(promptly named Laroux) that infects Micros<strong>of</strong>t Excel files (files with an<br />

.xls extension) for Excel versions 5 and 7 running under Windows 3, Windows<br />

95 and Windows NT, but not on the Macintosh. Once an infected Excel<br />

document is opened, the virus will be active every time the Excel program<br />

is run, and will infect any workbook that’s created or opened. Laroux was<br />

written in Visual Basic for Applications (VBA), a macro language based on<br />

Visual Basic from Micros<strong>of</strong>t.<br />

Laroux consists <strong>of</strong> two macros, auto_open and check_files. The former is<br />

expanded whenever an infected Spreadsheet is opened, followed by the latter<br />

macro which determines the startup path <strong>of</strong> Excel. The virus creates a file<br />

titled personal.xls with a module called laroux, hence its name.<br />

Laroux is one <strong>of</strong> the most common viruses, but fortunately it has no payload.<br />

It just replicates.<br />

Staog is the first Linux virus, discovered in the Fall. It is written in assembler<br />

and it infects only Elf-style executable files in the Linux operating system.<br />

It copies itself into memory and tries to infect Elf-style executables when<br />

they are executed. Staog exploits three known vulnerabilities (mount buffer<br />

overflow, tip buffer overflow, and one suidperl bug) in Linux in an attempt<br />

to gain superuser status.<br />

Staog is named after the text string “Staog by Quantum/VLAD” that was<br />

discovered in it. VLAD is the name <strong>of</strong> an Australian virus group that also<br />

wrote the first Windows 95 virus, Boza<br />

1997. More hoaxes abound. The following hoax about five viruses is quoted<br />

from “<strong>Computer</strong> Crime: An Emerging Challenge for Law Enforcement,” an<br />

article by the two PhDs David L. Carter and Andra J. Katz. It was published<br />

in the December 1996 edition <strong>of</strong> the FBI’s Law Enforcement Bulletin.<br />

Virus Introduction<br />

<strong>Computer</strong> viruses, created for a variety <strong>of</strong> reasons, can have many<br />

different effects, depending on the creator’s intent. To illustrate,<br />

several new insidious viruses have been found.<br />

“Gingrich” randomly converts word processing files into legalese <strong>of</strong>ten<br />

found in contracts. Victims can combat this virus by typing<br />

their names at the bottom <strong>of</strong> infected files, thereby signing them,<br />

as if signing a contract.<br />

“Clipper” scrambles all the data on a hard drive, rendering it useless.<br />

“Lecture” deliberately formats the hard drive, destroying all data,<br />

then scolds the user for not catching it.<br />

“Clinton” is designed to infect programs, but it eradicates itself<br />

when it cannot decide which program to infect.


Virus Timeline 309<br />

“SPA” examines programs on the hard disk to determine whether<br />

they are properly licensed. If the virus detects illegally copied s<strong>of</strong>tware,<br />

it seizes the computer’s modem, automatically dials 911, and<br />

asks for help.<br />

1998. In June, the CIH virus, also known as Chernobyl, is discovered in<br />

Taiwan. Local authorities point to Chen Ing-hau as the writer <strong>of</strong> this virus,<br />

which derives its name from his initials.<br />

The payload <strong>of</strong> this virus will first be triggered on 26 April, 1999, causing<br />

many computer users to lose their data. The total loss is estimated in the<br />

hundreds <strong>of</strong> millions <strong>of</strong> dollars.<br />

CIH searches for empty, unused spaces in executable files it attempts to infect.<br />

On finding such spaces, it breaks itself up into smaller pieces and inserts its<br />

code into them. To disinfect a file infected by CIH, anti-virus s<strong>of</strong>tware looks<br />

for these small viral pieces and removes them from the file.<br />

In August, the StrangeBrew virus rears its harmless head. This is the first<br />

virus to infect Java files. It can spread from a Java applet or a Java application<br />

to another, but only if executed locally, not over the Internet.<br />

The virus searches for existing .class files and modifies them to append<br />

a copy <strong>of</strong> itself to the file and include a call to the virus’ code in the first<br />

instruction. When such a file is later executed, the virus is executed first.<br />

The infector routine in StrangeBrew has bugs, as a result <strong>of</strong> which it rarely<br />

infects files in its host correctly. Most <strong>of</strong> the time it crashes the host when it<br />

attempts an infection.<br />

The StrangeBrew virus is based on Java, which makes it capable <strong>of</strong> executing<br />

on virtually any platform that can run Java programs (all Windows and Linux<br />

platforms as well as PDA devices that have Java runtime installed).<br />

StrangeBrew does not inflict any damage; it just spreads itself.<br />

1999. March marks the first appearance <strong>of</strong> the Melissa menace (Section 5.5).<br />

The virus (with the <strong>of</strong>ficial name W97M_Melissa) originates in an Internet<br />

alt.sex newsgroup. This is a macro virus that attacks the Micros<strong>of</strong>t Word 97<br />

and Word 2000 applications and propagates via email attachments. Melissa<br />

executes a macro in a document attached to an email message, and this macro<br />

locates the owner’s Outlook address book and forwards the document to 50 <strong>of</strong><br />

the addresses found there. This technique is the reason for its unusually fast<br />

spreading. The virus also infects other Word documents and subsequently<br />

mails them out as attachments.<br />

At the time <strong>of</strong> writing, Melissa and variants are still seen in the wild and the<br />

very latest about this threat can be found in [melissavirus 05].<br />

An important first this year is the BubbleBoy worm. As soon as email users<br />

got used to the idea that email attachments can be dangerous, along comes<br />

this worm and teaches them another lesson. Merely opening an email message<br />

can infect the computer. The worm exploits a security weakness in Internet


310 C Virus Timeline<br />

Explorer 5 (IE, a common Web browser, but the virus affects only IE installations<br />

that have Windows Scripting Host) and the fact that Micros<strong>of</strong>t<br />

Outlook, a popular email program, automatically opens email messages in a<br />

lower window in the program.<br />

This worm spreads fast because it locates all the Outlook and Outlook Express<br />

e-mail address books in the computer and emails itself to every addressee<br />

in them. Fortunately, BubbleBoy is relatively harmless. It modifies<br />

the owner’s email settings by changing the owner’s name to BubbleBoy and<br />

the organization’s name to Vandelay Industries. These are fictitious names<br />

taken from a popular television program.<br />

Perhaps the worst feature <strong>of</strong> this worm is its successful spread, which may<br />

tempt other miscreants to come up with similar, but more destructive, worms<br />

in the future.<br />

Another first for this year is the tristate macro virus (formally O97M/Tristate)<br />

and its many variants. This virus is written in Visual Basic for applications<br />

(VBA) and its name implies that it infects documents for Micros<strong>of</strong>t Word,<br />

Excel, and PowerPoint, three components <strong>of</strong> the MS Office 97 suite <strong>of</strong> applications.<br />

An unusual feature <strong>of</strong> this virus is the large number (at least 11) <strong>of</strong><br />

its variants.<br />

The virus removes all the macros from the MS Word global template. This,<br />

and the fact that it infects the three applications, is its only payload.<br />

2000. This is the year <strong>of</strong> Love Bug, also known as the ILOVEYOU virus.<br />

First appearing in early May, this virus is the most “successful” email virus<br />

to date and is destructive. Within hours <strong>of</strong> its release it spreads to every continent<br />

and infects tens <strong>of</strong> thousands <strong>of</strong> computers. The number <strong>of</strong> machines<br />

infected after one day is estimated at 45 million. Its fast spread is attributed<br />

to the fact that many users save large numbers <strong>of</strong> old email messages and<br />

also have large address books with many correspondents. The virus can find<br />

all these addresses and it automatically generates email messages to all <strong>of</strong><br />

them (this author has also received one from a student, but was unaffected<br />

because he uses a Macintosh and doesn’t use Outlook).<br />

This virus arrives as a Visual Basic script attachment in an email message<br />

whose subject line claims “I love you.” It deletes audio, video, and image<br />

files. It also locates usernames and passwords and sends them to its author.<br />

A suspect, 23-year old Reomel Ramones, is located and arrested within a<br />

week in Manila, the Philippines. Police charge him with being the originator<br />

<strong>of</strong> this virus, but his relatives blame his girlfriend’s sister <strong>of</strong> creating the<br />

virus.<br />

This year the title “a first” belongs to the Stages worm, the first malware that<br />

infects text files. The worm enters a computer as an email attachment named<br />

Life_stages.txt.shs (.shs is the extension <strong>of</strong> Micros<strong>of</strong>t Scrap Object files.<br />

These files are executable and can contain many different types <strong>of</strong> objects),<br />

but the .shs extension is not displayed by the Windows operating system.<br />

When the attachment is opened, it is readable (it seems to joke about the


One <strong>of</strong> the nastiest I’ve seen.<br />

This worm spreads at an amazing speed.<br />

Virus Timeline 311<br />

It began spreading like wildfire, taking out computers left, right and centre.<br />

It’s a particularly malicious virus.<br />

It is compromising security and confidentiality.<br />

It can go into private e-mails and forward them to anybody in your contacts<br />

book.<br />

I was looking for some deeper meaning in the last two major virus assaults.<br />

Each one has seven letters and three vowels, and if you rearrange the letters,<br />

MELISSA and LOVE BUG spell: BIG VOLUME SALES.<br />

—Experts’ comments on the Love Bug virus.<br />

male and female stages <strong>of</strong> life), but a script is simultaneously running in the<br />

background, infecting and deleting files. The worm locates addresses in the<br />

address books <strong>of</strong> Outlook, ICQ, mIRC, and PIRCH, and then mails itself as<br />

an attachment to all the addressees found. Thus, email users can no longer<br />

assume that text attachments to messages are safe.<br />

On Monday, 7 February, large, well-aimed and well-planned distributed denial<strong>of</strong>-service<br />

(DDoS) attacks against Yahoo, eBay, Amazon, and other popular<br />

Web sites knock them <strong>of</strong>fline for several hours. What is especially frightening<br />

about this attack is that it comes from many servers; it is distributed.<br />

2001. The nimda virus/worm is discovered on 18 September. This virus<br />

(which affects Windows 95, 98, Me, NT 4, and 2000) has a worm component<br />

that spreads by sending email messages with an attachment called<br />

readme.exe. Nimda (whose name is the reverse <strong>of</strong> “admin”) is a first in two<br />

areas (1) it infects files in Web sites and (2) it employs zombies to scan for<br />

vulnerable sites. The affected Web sites send the infected files to anyone<br />

downloading the files, and the zombies make it possible for nimda to reach<br />

Web sites located behind firewalls.<br />

Nimda employs as many as five different methods <strong>of</strong> replicating and infecting<br />

computers, which makes it one <strong>of</strong> the most sophisticated viruses to date.<br />

Once Nimda infects a computer, it proceeds in four steps as follows:<br />

• Infection. Nimda locates .exe files in the computer and infects them. The<br />

infected files spread the infection when they are later uploaded and exchanged<br />

between computers.<br />

• Mass mailing. Nimda locates email addresses in the address book <strong>of</strong> the<br />

computer’s email client. It then searches local HTML files for more addresses.<br />

When done, it sends a message with the readme.exe attachment to each<br />

addressee.


312 C Virus Timeline<br />

• Web worm. Nimda scans the Internet in an attempt to locate Web servers.<br />

Once a server is found, the worm tries to infect it by exploiting several known<br />

security holes. If this succeeds, the worm selects Web pages at random on the<br />

site and infects them. Visitors downloading these files and executing them<br />

will get infected by the virus.<br />

• LAN propagation. The worm component searches for file shares in the local<br />

network, either from file servers or from user computers. Once file sharing<br />

is found, the worm places an invisible file in any directory that has DOC<br />

and EML files. When users later try to open DOC or EML files from these<br />

directories, Word, Wordpad, or Outlook will execute the invisible file, thereby<br />

infecting the computer.<br />

On 12 February, the infamous “Anna Kournikova” worm (xVBS.SST@mm)<br />

starts its rounds. It arrives as an attachment named AnnaKournikova.jpg.vbs.<br />

When a hapless email reader clicks it, the worm searches the Micros<strong>of</strong>t Outlook<br />

address book and emails itself to every address found in it. On 26<br />

January, the worm attempts to direct the computer’s Web browser to an<br />

Internet address in The Netherlands, which may point detectives looking for<br />

its perpetrator in the right direction. An important feature <strong>of</strong> this worm is<br />

that it’s written with a virus kit, a tool that makes it easy for beginners to<br />

write rogue s<strong>of</strong>tware. The messages sent by this worm have the subject line<br />

“Here you have, ;o)” and the message body “Hi: Check This!”.<br />

In one <strong>of</strong> those rare success stories that warms everyone’s heart, the creator<br />

<strong>of</strong> this virus, 20-year old Jan de Wit <strong>of</strong> Sneek, The Netherlands, gives himself<br />

up, is tried and sentenced, but only to 150 hours community service because<br />

he is a first-time <strong>of</strong>fender.<br />

The verdict stated that de Wit “was not a layman in the field <strong>of</strong> computer<br />

viruses. He works in a computer store and collected viruses—about 7,200,<br />

according to himself. [The collection was confiscated.] The defendant must<br />

have been very aware <strong>of</strong> the consequences <strong>of</strong> his acts. The virus he spread was<br />

a hindrance, causing worry and annoyance among Internet users worldwide.”<br />

Three worms, Sircam, CodeRed, and BadTrans, create headaches for virus<br />

workers (and revenues for anti-virus companies).<br />

Sircam spreads as attachments to email messages sent through Windows Network<br />

shares. A typical message has one <strong>of</strong> many sender names and subject<br />

lines, but the message body is either Hi! How are you? I send you this<br />

file in order to have your advice, or something similar. The main innovation<br />

<strong>of</strong> this virus is the way it modifies the default EXE file startup<br />

registry key from HKCR\exefile\shell\open\command to<br />

""[windows_drive]\recycled\SirC32.exe" "%1" %*". This results in an<br />

activation <strong>of</strong> the worm (from its location in folder recycled) whenever an<br />

.exe file is launched; ingenious!<br />

Sircam has two payloads, but because <strong>of</strong> a bug neither <strong>of</strong> them works. The<br />

first payload is to delete all the files from the startup drive (this occurs on<br />

16 October and in one <strong>of</strong> 20 cases). The second payload is to create a file


Virus Timeline 313<br />

and append text to it until it fills up the entire drive. This text contains the<br />

string SirCam, which is the reason for the particular name <strong>of</strong> this worm.<br />

In July, CodeRed appears and expands at a terrific rate, much faster than<br />

any worm preceding it, infecting approximately 360,000 hosts in its first 12<br />

hours <strong>of</strong> activity. This worm spreads by exploiting a security hole in the<br />

popular Micros<strong>of</strong>t Internet Information Server (IIS) s<strong>of</strong>tware. Once it infects<br />

a server, it starts scanning the Internet in an attempt to locate other<br />

vulnerable servers. Once a month, the worm becomes active. For a few<br />

hours it only spreads, then it starts a Denial-<strong>of</strong>-Service (DoS) attack against<br />

www1.whitehouse.gov (the White House Web site), and finally it goes back<br />

to sleep.<br />

A variant appears in 2002.<br />

In April, the BadTrans worm (formal name W95/Badtrans.B@mm) is brought<br />

to life. This is a worm that spreads in attachments to email messages sent<br />

from computers running any 32-bit version <strong>of</strong> Windows. Once an email user<br />

clicks on the attachment, the worm executes. It places three files in the computer<br />

that act as an email worm and a Trojan horse. The worm component<br />

spreads itself by automatically sending infected answers to all the unread<br />

email messages in the user’s inbox. The Trojan horse (file HKK32.EXE) is a<br />

variant <strong>of</strong> an older Trojan that steals passwords. It sends all the information<br />

it obtains to email address ld8dl1@mailandnews.com.<br />

Lots <strong>of</strong> activity for one year!<br />

2002. January marks the birth <strong>of</strong> SWF/LFM-926, the first virus to infect<br />

Macromedia Flash files (those with extension .swf). Flash is a popular program<br />

to display animation and special graphics effects. These files can execute<br />

scripts, a feature that makes it easy to develop complex animation, but<br />

is now found to be a security trap. As it infects .swf files, the virus displays<br />

the message Loading.Flash.Movie, which contributes the LFM in its name.<br />

David L Smith, the creator <strong>of</strong> Melissa (Section 5.5), is sentenced to 20 months<br />

in prison.<br />

The success <strong>of</strong> the Anna Kournikova worm in 2001 has encouraged hackers to<br />

continue with worms using celebrity names as a social engineering technique<br />

to lure victims, and at least three worms thus named are released in 2002.<br />

• Shakira worm. Released in June, this worm (formal name VBSWG.AQ,<br />

where VB stands for Visual Basic) starts spreading through mIRC chats<br />

and email messages sent through Outlook. The subject line is Shakira’s<br />

Pictures and the message body is Hi: i have sent the photos via attachment,<br />

have funn... The infected attachment is a file titled ShakiraPics.jpg.vbs.<br />

This worm is written in Visual Basic Script and was generated with the VBSWG<br />

virus kit.<br />

• Britney Spears is a very similar worm (appears in March) with the subject<br />

line RE:Britney Pics, message text Take a look at these pics..., and<br />

infected attachment BRITNEY.CHM.


314 C Virus Timeline<br />

• Jennifer Lopez worm (named Loveletter.CN with VBS.Lopez.A@mm as an<br />

alias) appears to have been written in Algeria. It arrives in an email with<br />

the subject line Where are you?, a message body This is my pic in the<br />

beach, and an infected attached file titled JENNIFERLOPEZ_NAKED.JPG.VBS.<br />

As part <strong>of</strong> its payload, this worm places in the Windows registry a key that<br />

causes it to execute each time Windows is started.<br />

The Klez worm (actually, a worm/virus combination, dubbed W95/Klez@mm)<br />

arrives in October, probably from Asia, perhaps from China. Like many<br />

other worms, it enters the computer in an email message. It places in the<br />

computer a polymorphic .exe virus called ElKern. The Klez worm employs<br />

a variety <strong>of</strong> subject lines, such as Hi, Hello, How are you?, Can you help<br />

me?, We want peace, Where will you go?<br />

As part <strong>of</strong> its payload, Klez removes autostarting registry keys <strong>of</strong> security and<br />

anti-virus s<strong>of</strong>tware. As a result, this s<strong>of</strong>tware or parts <strong>of</strong> it are disabled next<br />

time Windows starts. The virus also stops many processes and corrupts many<br />

files, most notably anti-virus checksum files and integrity checker databases.<br />

This worm/virus has several variants.<br />

The month <strong>of</strong> September sees the arrival <strong>of</strong> the Bugbear worm, formally<br />

designated W32.Bugbear@mm. It attempts to place a keystroke logger and<br />

a backdoor in the computer and tries to terminate the processes <strong>of</strong> various<br />

antivirus and firewall programs.<br />

The backdoor installed by Bugbear opens port 36794 and waits for commands<br />

from its author. The commands can order the worm to perform several<br />

actions as follows:<br />

• Copy files.<br />

• List files and deliver the list to the hacker.<br />

• Delete files.<br />

• Start processes.<br />

• Terminate processes.<br />

• List processes and deliver the list to the author.<br />

• Deliver saved keystrokes to the owner in encrypted form.<br />

• Deliver the following items <strong>of</strong> information to the owner: (1) Username. (2)<br />

Type <strong>of</strong> processor. (3) Version and build number <strong>of</strong> Windows. (4) Memory<br />

size and availability. (5) Types and physical characteristics <strong>of</strong> input/output<br />

volumes. (6) Network resources and their types.<br />

2003. The slammer worm (W32.Slammer, alias Sapphire) appears out <strong>of</strong><br />

the blue in January. This menace is different from the run-<strong>of</strong>-the-mill worm<br />

because it infects only computers running Micros<strong>of</strong>t SQL Server 2000 or<br />

MSDE 2000, i.e., servers. It uses UDP port 1434 to exploit a buffer overflow<br />

weakness in MS SQL servers. End-user machines are not affected. Another<br />

uncommon feature is that slammer does not write itself to the disk; it stays<br />

in memory until the computer is restarted (but if the computer hasn’t been


Virus Timeline 315<br />

patched against slammer, it is likely to catch the worm again). However, the<br />

worm generates a massive amount <strong>of</strong> data packets, affecting Internet traffic<br />

all over the world.<br />

The Blaster worm (W32.Blaster.C.Worm) surfaces in August. It exploits<br />

a certain vulnerability (with the technical name <strong>of</strong> DCOM RPC, described<br />

in Micros<strong>of</strong>t <strong>Security</strong> Bulletin MS03-026) and uses TCP port 135 to target<br />

computers running Windows 2000 and XP. In contrast to most other worms,<br />

Blaster does not search for email addresses and doesn’t mail itself en masse.<br />

Blaster is triggered by the following complex timing condition. From January<br />

to July it is triggered every day from the 16th until the end <strong>of</strong> the month.<br />

From 16 August until 31 December, it is triggered every day. The payload is<br />

a Denial <strong>of</strong> Service (DoS) attack on www.windowsupdate.com. The obvious<br />

aim is to prevent victims from downloading a security patch from Micros<strong>of</strong>t.<br />

Another fast-spreading worm this year is sobig (W32.Sobig.F@mm). This is<br />

another mass-mailing worm that looks at many files (more precisely, files<br />

with extensions .dbx, .eml, .hlp, .htm, .html, .mht, .wab, and .txt) for<br />

addresses and mails itself to every address. It also spo<strong>of</strong>s the sender’s address<br />

in these messages, using addresses found in the victim’s computer. Thus, this<br />

worm becomes a source <strong>of</strong> spam. A short review <strong>of</strong> this malware can be found<br />

in [sobig 10].<br />

Sobig deactivates itself (an unusual feature) on 10 September 2003. However,<br />

if the computer clock is out <strong>of</strong> date, it (the computer) may contribute to the<br />

worm’s spread past the deactivation date.<br />

Experts estimate that the Blaster and Sobig worms have turned August 2003<br />

into the worst month ever for virus incidents. Obviously, things are getting<br />

worse.<br />

2004. January. The MyDoom threat is unleashed. Known as either mydoom<br />

or novarg (W32.Mydoom.A@mm or W32.Novarg.A), this is an email worm<br />

that carries an infected attachment with one <strong>of</strong> the extensions .bat, .cmd,<br />

.exe, .pif, .scr, or .zip. Mydoom becomes the most widely-spread worm<br />

to date. It is estimated that at its peak, one quarter <strong>of</strong> all email messages<br />

carried this menace.<br />

Mydoom is a sophisticated worm that installs a backdoor by opening TCP<br />

ports 3127 through 3198, through which the worm’s owner can connect to the<br />

computer and to its network resources. The owner can also send any files to<br />

the affected computer through these ports. Several pieces <strong>of</strong> rogue s<strong>of</strong>tware,<br />

among them doomjuice, deadhat, and mitglieder, infect computers through<br />

this method.<br />

The worm is triggered on 1 February 2004. There is a 25% chance that<br />

the worm will start a DoS attack on that date and continue this until 12<br />

February 2004. If this happens, the worm does not mail itself from the<br />

infected computer, but the backdoor stays in the computer indefinitely.<br />

The DoS attack is aimed at the SCO Group, a company that tried to sue<br />

several entities for illegally using an open-source version <strong>of</strong> its UNIX pro-


316 C Virus Timeline<br />

gramming language. SCO <strong>of</strong>fers a $250,000 reward to anyone helping in the<br />

arrest and conviction <strong>of</strong> Mydoom’s originator(s).<br />

January. The bagle worm (W32/Bagle-mm) starts spreading. This is a typical<br />

worm that arrives as an email attachment, scans the computer for email<br />

addresses and sends itself to all the addresses found. It is sent as a message<br />

with a subject line Hi, a body that includes the words Test, yep, and an<br />

attachment with extension .exe. Bagle floods computer networks all over<br />

the world, but does not have any other destructive payload. Several variants<br />

appear in 2005.<br />

March. The Netsky worm (w32.netsky.d@mm) pops up. This version and<br />

its variant W32.Netsky.C@mm are mass-mailing worms. They scan drives C<br />

through Z <strong>of</strong> a PC for email addresses and email themselves with an infected<br />

attachment to all addresses found. The subject, body, and attachment names<br />

are selected at random from a set <strong>of</strong> names, except that the attachment has<br />

the extension .pif.<br />

In late March, the Witty worm is unleashed to infect Macintosh computers.<br />

The worm exploits a vulnerability in BlackICE/RealSecure, firewall s<strong>of</strong>tware<br />

from Internet <strong>Security</strong> Systems [ISS 05]. The vulnerability is discovered on<br />

8 March with a patch issued by ISS the following day. The details <strong>of</strong> the<br />

vulnerability are published by eEye Digital <strong>Security</strong> on 18 March, and the<br />

worm appears about three days later. It infects every vulnerable Macintosh<br />

(about 12,000 computers) within 45 minutes (which translates to about 4.45<br />

computers infected each second).<br />

The witty worm is small, less than 700 bytes, which enables it to send a copy<br />

<strong>of</strong> itself in a single ethernet packet. Once arriving at a computer, it repeats<br />

the following two steps: (1) It attempts to replicate itself by generating 20,000<br />

such packets and sending them to random IP addresses with random ports.<br />

(2) It locates a point on the hard disk at random and rewrites 65 Kb <strong>of</strong> data.<br />

After several repetitions, the artificial data written by the worm causes a<br />

freeze or a crash, and the computer has to be restarted.<br />

Many viruses and worms fail in their destructive mission because <strong>of</strong> bugs in<br />

their code, but the Witty worm is bug free. This implies that it was written<br />

by an expert, and from scratch, not from a virus kit. This expert knows how<br />

to write Macintosh programs, is willing to wait for the right moment when<br />

a vulnerability is discovered, and doesn’t mind if his creation infects only a<br />

small number <strong>of</strong> machines. These sad but true conclusions are summarized<br />

here.<br />

• Some malware writers are experts, not bored teenagers.<br />

• A worm can be fast propagating and also destructive, not being satisfied<br />

with just launching a DoS attack.<br />

• Anti-virus s<strong>of</strong>tware is useful and important, but it cannot identify new, asyet-unrecognized<br />

malware and therefore does not guarantee a clean computer.<br />

• There will always be users who ignore news and messages about new security<br />

patches, or are just too lazy to install them.


Virus Timeline 317<br />

• Macintosh computers are relatively, but not absolutely, safe from malware.<br />

May. This is the month <strong>of</strong> the sasser worm (W32.Sasser.Worm). This is<br />

a fast-spreading worm that exploits the MS04-011 (LSASS) vulnerability, a<br />

security weakness caused by a buffer overrun in the Local <strong>Security</strong> Authority<br />

Subsystem Service (LSASS). This becomes the major security hole <strong>of</strong> 2004.<br />

Because <strong>of</strong> it, sasser enters a computer through this vulnerability and not as<br />

an email attachment. Copy cats hear <strong>of</strong> the LSASS hole and immediately<br />

release a stream <strong>of</strong> rogue worms with names such as Korgo, Bobax, Cycle,<br />

Kibuv, and Plexus.<br />

Upon infecting a computer, sasser starts 128 scanning threads that generate<br />

random IP addresses in an attempt to find vulnerable computers. <strong>Computer</strong>s<br />

are probed on port 445 which is the default port for Windows SMB<br />

communication on NT-based PCs.<br />

Sasser affects computers running Windows XP or Windows 2000 that are<br />

connected to the Internet without a firewall. A security patch is quickly<br />

issued by Micros<strong>of</strong>t.<br />

It seems that the only damage this worm inflicts is crashing the computer<br />

(probably because <strong>of</strong> a bug in its code). An 18-year-old German high school<br />

student confesses to being the author <strong>of</strong> the worm. He’s suspected <strong>of</strong> releasing<br />

another version <strong>of</strong> sasser.<br />

A first in 2004 is malicious s<strong>of</strong>tware that infects cell telephones running<br />

the Symbian operating system. Examples <strong>of</strong> such worms are Toquimos.A,<br />

Skulls.A, and the Cabir family (see year 2005).<br />

Another first in 2004 is vulnerable jpeg images (Section 2.11). Normally,<br />

an image file has no executable code, and so cannot be infected. However,<br />

Micros<strong>of</strong>t has a s<strong>of</strong>tware product that displays such images, and it had a<br />

security flaw in the form <strong>of</strong> buffer overrun. This flaw makes it possible,<br />

at least in principle, to construct a jpeg image that when viewed with this<br />

s<strong>of</strong>tware will install a malicious program that can take over the computer<br />

and convert it to a zombie. Two malicious programs that take advantage <strong>of</strong><br />

this flaw appear almost immediately. They are dubbed JPGDownloader and<br />

JPGTrojan. Micros<strong>of</strong>t very quickly issues a security patch to fix this buffer<br />

overrun.<br />

2005. A Bagle variant Bagle.AY is found in January. Like its older relative<br />

Bagle.AX the new variant is polymorphic and arrives in email with randomly<br />

selected subject and attachment. It also has Peer-to-Peer spreading capabilities<br />

and contains a backdoor that waits for commands on TCP port 81. It<br />

is programmed to cease its activity on 25 April 2006.<br />

A new variant <strong>of</strong> the MyDoom worm, MyDoom.AI appears in January and<br />

uses social engineering to entice readers to open attachments. It arrives<br />

in email messages with infected exe, scr, pif, or zip attachments. Some<br />

messages contain sexually explicit images and claim that the attachment<br />

contains passwords for adult Websites.


318 C Virus Timeline<br />

A new cell telephone virus, lasco (alias SymbOS/Lasco.A and EPOC/Lasco.A),<br />

also appears in January and infects mobile telephones that run the Symbian<br />

operating system, support bluetooth, and are in discoverable mode (see also<br />

page 47).<br />

This virus replicates over bluetooth connections and arrives in the message<br />

inbox <strong>of</strong> the telephone hidden inside a file called velasco.sis. When the user<br />

clicks on this file and agrees to install it, the virus is invoked. It immediately<br />

starts looking for new telephones to infect over bluetooth. It also inserts itself<br />

into other sis files it finds in the telephone. If such infected files are later<br />

copied into another telephone, the virus installer will be invoked with the<br />

first installation task, and ask the user to accept the installation <strong>of</strong> Velasco.<br />

Cabir (aliases SymbOS/Cabir.A, EPOC/Cabir.A, Worm.Symbian.Cabir.a, and<br />

Caribe virus) also infects mobile telephones by exploiting the same vulnerability<br />

and is generally very similar to lasco.<br />

A first this year is the Duts.1520 virus (aliases WinCE/Duts.1520, WinCE.Duts,<br />

and Dust) a file infector that attacks the PocketPC platform. Duts affects<br />

ARM-based devices only. This is a short program (1520 bytes), apparently<br />

written in assembler for the ARM processor and assembled manually. When<br />

an infected file is executed, the virus displays a dialog box with the following<br />

two-line message asking for permission to infect:<br />

WinCE4.Dust by Ratter/29A<br />

Dear User, am I allowed to spread?<br />

If granted permission, Duts attempts to infect all .exe files in the current<br />

directory. It only infects large files (larger than 4096 bytes) that are still<br />

uninfected. As an infection marker, the virus writes the string atar in the<br />

Version field <strong>of</strong> the .exe file header.<br />

The virus infects a file by appending itself to the file and making the last<br />

section <strong>of</strong> the file readable and executable. The entry point <strong>of</strong> the .exe file<br />

is set to the beginning <strong>of</strong> the virus code. Duts contains two messages that<br />

are not displayed:<br />

This is pro<strong>of</strong> <strong>of</strong> concept code. Also, i wanted to make avers happy.<br />

The situation when Pocket PC antiviruses detect only EICAR file had to end ...<br />

The second message refers to the science-fiction novel Permutation City by<br />

Greg Egan, where the following sentence appears This code arose from<br />

the dust <strong>of</strong> Permutation City.<br />

The Samy XSS worm (alias JS.Spacehero) appears on 13 October and in<br />

early 2006 it becomes the fastest-spreading virus ever (depending on how<br />

the speed <strong>of</strong> spreading is measured). This Worm is developed specifically<br />

to propagate over MySpace (the social-networking site) and it very quickly<br />

gains much attention from the media and the computer users community.<br />

(XSS is short for cross site scripting. This is a vulnerability that may exist in<br />

a Web site. This type <strong>of</strong> vulnerability is <strong>of</strong>ten exploited by worms designed to


Virus Timeline 319<br />

prey on visitors to popular social or commercial Web sites, such as MySpace,<br />

Yahoo!, Orkut, Justin.tv, and Twitter. An XSS worm can enable an attacker<br />

to steal personal information, cookies, and other data specific to the website<br />

or to the infected visitor.)<br />

The damage inflicted by the Samy worm (its payload) was minimal. It included<br />

the message “but most <strong>of</strong> all, Samy is my hero” on its victims’ pr<strong>of</strong>iles.<br />

When a visitor viewed an infected pr<strong>of</strong>ile, the worm would propagate to their<br />

page. Only 20 hours after its initial release, over one million users became<br />

infected, making Samy one <strong>of</strong> the fastest spreading worms ever.<br />

The author <strong>of</strong> this worm was identified as 19-year-old Samy Kamkar. He<br />

was sentenced to three years probation, 90 days community service and an<br />

undisclosed amount <strong>of</strong> restitution.<br />

The Zlob Trojan, also known as Trojan.Zlob, is a trojan horse, released in<br />

late 2005, which masquerades as a video codec that is allegedly required to<br />

watch certain video formats.<br />

Also in late 2005, Bandoo, alias Bandook Rat (remote administration tool),<br />

is launched. This is a backdoor trojan horse that infects the Windows family<br />

<strong>of</strong> operating systems.<br />

2006.<br />

On 20 January the Nyxem worm (aka Blackmal, W32 Nyxem, VB.BI, and<br />

other aliases) is discovered. This worm (whose variants are designated A,<br />

E, and D) spreads by remote share and mass-mailing. Its payload attempts<br />

to disable certain anti-virus and security s<strong>of</strong>tware it locates on the infected<br />

computer. This is done by deleting registration keys and files used by these<br />

programs. It also closes application windows whose caption title contains<br />

any <strong>of</strong> the strings Symantec, Scan, Kaspersky, Virus, McAfee, Trend Micro,<br />

Norton, Removal, or Fix. It also damages Micros<strong>of</strong>t Office files and copies<br />

itself to files rundll16.exe, scanregw.exe, Update.exe, and Winzip.exe.<br />

An interesting feature is that the payload becomes active on the 3rd <strong>of</strong> each<br />

month. Variant E is considered very dangerous. It may cause serious damage<br />

to the Windows operating system and destroys and steals data. It should be<br />

removed as soon as discovered.<br />

Th 16 February marks the release <strong>of</strong> the first malware for version X <strong>of</strong> the<br />

Macintosh operating system (OS X). This Trojan horse, which is dubbed<br />

OSX/Leap-A or OSX/Oompa-A, turns out to be a very low threat. It arrives<br />

at a new computer as an attachment to an instant message sent by the video<br />

chat program iChat. When the attachment (which looks like a jpeg image) is<br />

opened, it is executed and tries to send copies <strong>of</strong> itself to all the addresses in<br />

the iChat buddy list <strong>of</strong> the infected computer. This malware behaves like a<br />

worm, but is classified by some experts as a Trojan horse because it doesn’t<br />

self-propagate externally.<br />

On 15 August, the Stration worm (aka Warezov) is discovered. This worm<br />

spreads through email. It collects email addresses from the infected computer<br />

and sends them messages. It selects one <strong>of</strong> several built-in message texts


320 C Virus Timeline<br />

and subject lines. It may claim to be a failed or rejected message or it may<br />

masquerade as a “worm elimination” update. It stores itself in an attachment<br />

(with an .exe, .scr, or .zip extension) and infects a new computer when<br />

the email receiver opens the attachment.<br />

2007.<br />

On 17 January the Storm Worm is discovered and is identified as a fastspreading<br />

email spamming threat to computers running Micros<strong>of</strong>t Windows.<br />

Two days after its discovery, it begins gathering infected computers into<br />

the Storm botnet by sending an e-mail message with a subject line about a<br />

fictional disastrous storm, “230 dead as storm batters Europe.” Two days<br />

after that, this worm accounts for 8% <strong>of</strong> all malware infections on the planet.<br />

By the end <strong>of</strong> June it has infected 1.7 million computers, and three months<br />

later this number rises to perhaps as high as ten million. The worm, which<br />

is believed to have originated in Russia, tries to get the user to download an<br />

attachment which it claims is a film.<br />

When the user opens the attachment, the worm installs the wincom32 service,<br />

and uses it to send a payload to addresses that are hard coded in the worm.<br />

The botnet created and maintained by Storm consists <strong>of</strong> a network <strong>of</strong> zombie<br />

computers that are controlled remotely by the worm’s author(s). In contrast<br />

with other botnets, this one is decentralized, each <strong>of</strong> its member computers<br />

is connected to a small subset <strong>of</strong> the entire botnet, perhaps 30–35 other<br />

members. This feature makes it virtually impossible to destroy the botnet<br />

by locating and disinfecting its members. In addition to other types <strong>of</strong> direct<br />

global harm, such a botnet causes indirect disruption by slowing down the<br />

entire Internet. The least that a worm such as Storm can do with the botnet<br />

is to collect a huge number <strong>of</strong> email addresses from its “members,” which are<br />

later sold to spammers.<br />

2008.<br />

On 17 February, the Mocmex trojan horse is discovered in a digital photo<br />

frame. Such a frame is a small display with enough memory to hold several<br />

small images. The images are downloaded from a computer and can be<br />

displayed either as in a conventional photo frame or in a slide show. This<br />

piece <strong>of</strong> malware is particularly robust because it is able to recognize and<br />

block anti-virus protection from more than a hundred security sources and<br />

from the built-in firewall <strong>of</strong> Windows.<br />

Mocmex is also difficult to remove because it downloads files from many<br />

locations and hides randomly-named files on an infected computer. As if<br />

this is not enough, Mocmex invades any portable storage devices that are<br />

plugged into an infected computer, thereby increasing its chances <strong>of</strong> spreading.<br />

Because <strong>of</strong> these features, Mocmex is described by some experts as a<br />

“nuclear bomb <strong>of</strong> malware.” One way to detect Mocmex is to check a digital<br />

photo frame on a Macintosh computer, which this Trojan cannot infect. If no<br />

signs <strong>of</strong> Mocmex are found, the frame can safely be plugged into a Windows<br />

computer.


Virus Timeline 321<br />

It is suspected that Mocmex originated in China, because this is were many<br />

digital photo frames are made and because many other toxic, defective, or<br />

harmful Chinese products had been imported in the past.<br />

On March 3, another Trojan, known alternately as Torpig, Sinowal, and<br />

Mebroot, starts its operations. It knows how to turn <strong>of</strong>f various anti-virus<br />

applications, it maliciously modifies data files, and steals passwords and other<br />

personal data. It also lets others into the infected computer.<br />

In October, security researchers discover that Torpig may have stolen the<br />

login data <strong>of</strong> as many as 300,000 online bank accounts in addition to email<br />

and FTP account login details. It seems that the number <strong>of</strong> bank, credit,<br />

and debit card numbers stolen by this Trojan is the largest ever discovered.<br />

In May 2009, researchers finally infiltrate the Torpig botnet, one <strong>of</strong> the most<br />

notorious zombie networks. Once inside, they tracked 70 GB <strong>of</strong> data stolen<br />

in just ten days. This data included more than 8300 login passwords to 410<br />

different financial institutions (mostly paypal). Later, these experts found<br />

close to 300,000 login passwords taken by the malware from more than 52,000<br />

infected machines.<br />

On 6 May, a new type <strong>of</strong> malware, dubbed a spambot, is discovered. This particular<br />

spambot is named W32/Rustock.C and it is not new. It has managed<br />

to hide itself since at least October 2007. It becomes clear that Rustock.C<br />

is in fact a family <strong>of</strong> rootkit-enabled backdoor Trojans whose job is to send<br />

large quantities <strong>of</strong> spam from infected computers.<br />

Such a Trojan typically consists <strong>of</strong> three parts, the dropper (which runs in<br />

user mode), the driver’s installer, and the actual rootkit driver, (both <strong>of</strong><br />

which run in kernel mode). The rootkit driver is dropped into the \drivers<br />

folder (inside the operating system) as files lzx32.sys or xpdx.sys and is<br />

installed there as a service (by modifying the registry).<br />

On 6 July, the Bohmini.A Trojan horse is released. It exploits several vulnerabilities<br />

in Adobe Flash, a multimedia platform commonly used for adding<br />

animation and interactivity to Web pages. At the time <strong>of</strong> release, version 9 <strong>of</strong><br />

Flash is used by the popular Web browsers Internet Explorer 7.0 and Firefox<br />

2.0 under Windows XP.<br />

Bohmini.A is a configurable Trojan. Its controller(s) can send it updates<br />

to create robust variants that are immune to anti-virus detectors. When it<br />

invades a computer and is executed, this Trojan copies itself into the system<br />

folder with a filename that it generates at random. It then generates 24 tasks,<br />

to be executed one per hour, and attempts to launch copies <strong>of</strong> the Trojan. It<br />

then connects to IP address 194.126.193.157 to receive instructions from its<br />

owner/operator.<br />

This malware works by integrating itself into the currently active programs.<br />

Most <strong>of</strong> its payload is deleting files. Files whose names are mentioned on<br />

the command line are the most likely to be deleted. The other part <strong>of</strong> the<br />

payload is data theft. At the very least it can send to its controller technical<br />

information about the computer (items such as disk serial numbers and the<br />

OS version).


322 C Virus Timeline<br />

On 31 July, the Koobface worm targets users <strong>of</strong> Facebook, Twitter, Myspace,<br />

and a few other social networks. The name Koobface is an anagram<br />

<strong>of</strong> Facebook. Koobface is a worm that spreads from an infected computer<br />

by sending Facebook messages to all the Facebook friends found in the computer.<br />

A message attempts to direct its receiver to a Web site where they<br />

can download a free update <strong>of</strong> Adobe Flash. This update turns out to be<br />

the worm which, when opened, infects the computer and sends similar messages<br />

to more friends. It also tries to locate credit card numbers and other<br />

sensitive data from the infected computer. The worm also installs a DNS<br />

filter that prevents an infected computer from reaching several well-known<br />

security Web sites. A more sophisticated veriant appeared in March 2009.<br />

On 21 November, the conficker worm very quickly infects several million Micros<strong>of</strong>t<br />

server computers running several versions <strong>of</strong> Windows. It propagates<br />

by exploiting a vulnerability in network service (MS08-067), part <strong>of</strong> several<br />

versions <strong>of</strong> Windows. Many sensitive sites in Europe are affected. Micros<strong>of</strong>t<br />

sets a prize <strong>of</strong> $250,000 for information leading to the capture <strong>of</strong> the author(s).<br />

Five main variants <strong>of</strong> the worm have been identified (the last one<br />

in April 2009) and dubbed Conficker A, B, C, D, and E. These variants can<br />

spread themselves over a local-area network through removable media such<br />

as external disks and flash memories.<br />

Conficker exploits flaws in Windows s<strong>of</strong>tware as well as dictionary attacks on<br />

administrator passwords. Once the worm has taken control <strong>of</strong> a computer,<br />

it includes it in its huge botnet. This worm has been unusually difficult to<br />

identify because it employs many advanced stealth techniques.<br />

The payload varies between variants, but includes blocking DNS lookups<br />

(so the user cannot connect to security sites for help), deleting anti-virus<br />

programs, and disabling auto-update.<br />

2009.<br />

In July, a series <strong>of</strong> cyber attacks are aimed at 27 important Web sites (government,<br />

financial, and news media) in the United States and South Korea.<br />

It is suspected, but never proved, that these attacks came from North Korea.<br />

The hijacked members <strong>of</strong> a large botnet were instructed to send a flood <strong>of</strong><br />

messages to the targeted Web sites, to create bottlenecks in what came to be<br />

known as a DDoS (distributed denial <strong>of</strong> service) attack. About one-third <strong>of</strong><br />

the attacked sites were successfully jammed for at least several hours. The<br />

precise size <strong>of</strong> the botnet used in this attack is unknown, and estimates range<br />

from 20,000 to 166,000 zombie computers.<br />

The attacks came in three waves, on 4, 7, and 9 <strong>of</strong> July. The disruption<br />

caused by them has prevented online users and shoppers from completing<br />

transactions and conducting business, which led some experts to claim that<br />

the attacks were unsophisticated and their major goal was to cause disruption.<br />

Others, however, believe that stealing data was the chief aim <strong>of</strong> the<br />

attackers.<br />

A few days after the attacks started, it became clear that they were driven<br />

by a new worm, quickly dubbed W32.Dozer. This new danger was pro-


Virus Timeline 323<br />

grammed to delete (on 10 July) crucial system files as well as certain data<br />

files on infected computers. In addition, the worm modifies the master boot<br />

records, which makes it impossible to boot the computer. The worm propagates<br />

by sending scam email messages with attachments containing copies <strong>of</strong><br />

W32.Dozer. The point is that the hijacked members <strong>of</strong> the botnet are also<br />

vulnerable to the worm and were being crippled in large numbers, thereby<br />

causing the attack to subside.<br />

2010.<br />

On 18 February came an announcement from Micros<strong>of</strong>t. A BSoD (blue screen<br />

<strong>of</strong> death) problem on some Windows computers was caused by the Alureon<br />

trojan horse. This threat is a family <strong>of</strong> Trojans programmed to steal data.<br />

Once infecting a computer, the Trojan intercepts all network traffic to and<br />

from the computer and saves it for future transmission to its controller. The<br />

aim is to collect personal and sensitive data such as passwords, names (both<br />

real and usernames), and credit card numbers. In order to keep himself<br />

anonymous, the controller modifies the DNS settings on the infected computer,<br />

which is why these settings have to be reconfigured once the Trojan<br />

has been removed.<br />

Micros<strong>of</strong>t recommends the following as general precaution against this and<br />

other threats: Turn on the Windows firewall. Use up-to-date anti-virus s<strong>of</strong>tware.<br />

Use caution when opening attachments and accepting file transfers.<br />

Use caution when clicking on links to Web pages. Avoid downloading pirated<br />

s<strong>of</strong>tware. Protect yourself from social engineering attacks. Use strong<br />

passwords.<br />

Exercise C.2: What conclusion can be drawn from this timeline?<br />

“Can you run over the timeline again for us?” Williams asked.<br />

—David Baldacci, Hour Game (2004)


Concluding Remarks<br />

This short appendix starts with a number <strong>of</strong> tips for increased security. It<br />

continues with a summary <strong>of</strong> malware and its most important features. The<br />

discussion ends with a few final conclusions.<br />

This book has tried to instill in the reader both an awareness <strong>of</strong> and<br />

respect for computer security. Many computer users are aware <strong>of</strong> security<br />

problems simply because <strong>of</strong> what happened to them, but relatively few have<br />

a real respect for security and even fewer give this topic the time and effort<br />

it deserves. We therefore start with a short reminder, in the form <strong>of</strong> a list <strong>of</strong><br />

security tips. These tips can be found elsewhere in the book but have been<br />

collected here as a parting gift from the author to those readers who have<br />

got so far in the book.<br />

Use strong passwords. Section 8.3 discusses passwords, their applications,<br />

and their weaknesses. It describes the features that a strong password<br />

should have and it presents examples <strong>of</strong> weak passwords. Also, passwords<br />

should be memorized, not written down, and they should be replaced <strong>of</strong>ten.<br />

Backup all your data regularly. Backups are discussed on page 155 as well<br />

as in other places in the book. This author would like to take this opportunity<br />

to stress again the importance <strong>of</strong> regular and full backups. All files should<br />

be backed up, including personal data, application programs, utilities, and<br />

operating system files. Those who have sensitive data should keep several<br />

generations <strong>of</strong> backup files, in case corrupted or infected files are discovered<br />

in the near future. One last word. If at all possible, check your backups. This<br />

is especially true for a large organization (government or commercial) that<br />

has sensitive or critical data whose loss may affect many users, customers, or<br />

citizens. Checking a backup is time consuming and requires extra equipment.<br />

The ideal setup for checking a backup is to have another computer, identical<br />

to the one whose files are backed up, and to actually run that computer on<br />

the backed-up data, executing programs and looking at data. This does not<br />

fully guarantee a clean backup, but will catch most corrupt files and data<br />

that had been diddled with. The popular option <strong>of</strong> paying for <strong>of</strong>fline data<br />

backup is highly recommended.


326 Concluding Remarks<br />

Obtain anti-virus s<strong>of</strong>tware, update it, and use it regularly. Anti-virus<br />

s<strong>of</strong>tware is mentioned in Section 6.3 and in many other places in the book.<br />

While not 100% effective, this s<strong>of</strong>tware is still the easiest and most costeffective<br />

way to check for, discover, and delete viruses and other types <strong>of</strong><br />

malware. However, as this book says in several places, it is important to have<br />

the latest versions <strong>of</strong> both the program itself and the virus update, and to run<br />

this s<strong>of</strong>tware regularly (or at least every time a new virus update is released,<br />

which is typically 2–3 times a month). If the computer has a removable<br />

drive, it is important to set the anti-virus s<strong>of</strong>tware to automatically check<br />

every volume inserted into the drive.<br />

Install a firewall and always use it, updating its rules as necessary. Even<br />

a simple firewall, just a small piece <strong>of</strong> s<strong>of</strong>tware, considerably increases your<br />

chances <strong>of</strong> survival in the Internet jungle. Firewalls are discussed in Section<br />

7.6 and are useful even to those who have a modem and have to dial a<br />

number to connect to the Internet.<br />

Be suspicious <strong>of</strong> email attachments. Section 2.4 lists tests that an attachment<br />

should pass before a careful user will consider opening it. Email<br />

attachments are regularly exploited as carriers <strong>of</strong> viruses and worms, and no<br />

one can count (or even estimate) the number <strong>of</strong> innocent computer users who<br />

became victims <strong>of</strong> malware by the simple act <strong>of</strong> clicking on an email attachment<br />

(<strong>of</strong>ten a love letter purportedly from a known and trusted friend).<br />

(A related principle is to close the preview pane <strong>of</strong> all email programs.<br />

Such a pane permits the user to read a message before it is opened, but can<br />

be abused by hackers.)<br />

Download all security patches available from s<strong>of</strong>tware makers. When<br />

a security vulnerability is discovered in a widely-used program or operating<br />

system routine, its maker <strong>of</strong>ten issues a patch to correct the flaw in the<br />

s<strong>of</strong>tware. It is important to use such patches because the existence <strong>of</strong> a<br />

patch doesn’t deter hackers from trying to exploit a vulnerability. They<br />

know that many users don’t install security patches (because <strong>of</strong> ignorance,<br />

laziness, apathy, or sheer plain stupidity) and they exploit this fact to achieve<br />

their aims.<br />

Finally, try to get in the habit <strong>of</strong> disconnecting your computer from the<br />

Internet as much as possible. Whenever you don’t need your computer for<br />

communications, physically unplug it from your telephone, your modem, or<br />

your router. Many owners <strong>of</strong> personal computers run their computers continuously,<br />

and this may also contribute to security breaches. It is a good idea<br />

to either put the computer to sleep (a mode <strong>of</strong>fered by all modern operating<br />

systems) or to turn it <strong>of</strong>f completely when not in use (but see Section 4.2<br />

about operating system maintenance done automatically late at night). Many<br />

computer users believe that a hard drive lasts longer if allowed to spin continuously,<br />

but consider the following: Magnetic disk prices (as well as prices<br />

<strong>of</strong> CD and DVD drives) are coming down all the time, while security risks,<br />

attacks, and threats are on the rise. With this in mind, a computer user<br />

should answer the following question: Is it better to have a long-lasting disk


Concluding Remarks 327<br />

drive or to have complete backups and turn <strong>of</strong>f the computer as much as<br />

reasonably possible?<br />

User, n. The word computer pr<strong>of</strong>essionals use when they mean “idiot.”<br />

Malware: Summary<br />

—Dave Barry.<br />

The discussion <strong>of</strong> malware in this book can be summarized by looking<br />

at the many differences between rogue s<strong>of</strong>tware and other types <strong>of</strong> s<strong>of</strong>tware.<br />

There are three main areas where malware exhibits significant differences <strong>of</strong><br />

behavior.<br />

Generality. An attack (on a computer or a network) that does not<br />

involve a virus must be based on a weakness or a flaw in the object attacked.<br />

The attacker discovers that a certain security mechanism does not perform<br />

the right checks in certain cases, so the attacker creates such a case and<br />

thereby gains access to or control <strong>of</strong> the object. Such an attack generally<br />

allows the hacker limited access, so the damage must depend on the amount<br />

<strong>of</strong> access the attacker has.<br />

A virus, however, spreads without exploiting any flaws or bugs in the<br />

protection mechanism <strong>of</strong> the computer, network, or operating system. The<br />

virus spreads when users share programs or other resources, and because the<br />

virus is a program it can cause any type <strong>of</strong> damage. We can think <strong>of</strong> a virus<br />

as a team <strong>of</strong> s<strong>of</strong>tware installers that distribute a piece <strong>of</strong> s<strong>of</strong>tware quickly and<br />

automatically. The s<strong>of</strong>tware being distributed can be benign or malevolent,<br />

but the distribution mechanism is the same.<br />

Range. The range <strong>of</strong> effect <strong>of</strong> a malicious program is much greater than<br />

that <strong>of</strong> other s<strong>of</strong>tware. When an attacker breaks into a computer, he can read<br />

and delete all the files on that computer. The attacker may steal passwords<br />

and use them to break into other computers, but this has to be done manually,<br />

computer by computer. When an attacker breaks into a computer and installs<br />

a virus, the virus can infect many files on the computer and may propagate<br />

itself into other computers either by email, by files sent on the Internet, or by<br />

files written on disks and distributed to other computer owners. This feature<br />

implies that the range <strong>of</strong> effect <strong>of</strong> a virus is far greater than that <strong>of</strong> other<br />

(conventional) s<strong>of</strong>tware. This feature also applies to benign viruses, which is<br />

why such viruses can be very useful.<br />

Persistence. A program is easily deleted, but a virus may be difficult<br />

and time consuming to locate, delete, and completely eradicate. When a<br />

virus code starts executing, it may check the date, and set itself a target<br />

date <strong>of</strong>, say, three months in the future for releasing its payload. When<br />

the time comes to do its damage, the infected program (or programs) may<br />

have been backed up, perhaps several times, on several backup devices, for<br />

three months. The result is that many copies <strong>of</strong> the virus may have found<br />

their way into all the backups <strong>of</strong> the computer owner, with the unfortunate<br />

consequence that just deleting the virus from the computer is not enough.


328 Concluding Remarks<br />

Keeping up-to-date backups is important, but the backup device itself should<br />

be checked for viruses before it is used to restore any infected files.<br />

Perhaps the first thing that comes to mind when an infected program is<br />

discovered is to delete it and replace it with a clean copy. Often, this step is<br />

performed after the virus has already spread throughout the computer and<br />

has infected other programs, with the result that the clean copy is going to<br />

be infected soon.<br />

A virus is also persistent because it may find its way to external storage,<br />

such as external drives and DVDs. In the not-too-distant past, in an environment<br />

such as a university, it was common to have a computer lab where<br />

the computers were connected in a local-area network. It was also common<br />

for users to keep files on removable disks and insert the disks into different<br />

computers to run programs. Once a virus appears in a file in a computer in<br />

such a lab, it will propagate into other files, then into other computers on the<br />

network, and then into removable disks. A security person may spend much<br />

time cleaning all the computers in the lab, only to have the virus appear<br />

again as soon as a user inserts a removable disk into a drive.<br />

A policy that should be adopted in such an environment is to keep<br />

the important files (applications, utilities, and operating system) in a locked<br />

(read-only) part <strong>of</strong> the hard drive <strong>of</strong> each computer, and let the users store<br />

their data files temporarily in the unlocked part <strong>of</strong> the disk. When those files<br />

get infected, the unlocked part is simply erased. Another solution is to have<br />

computers with no hard drive, and to serve files from a central server that is<br />

well-protected by a firewall and by experienced security personnel.<br />

An Internet search unearths real examples <strong>of</strong> viruses that persisted in an<br />

environment for months and kept coming back after each thorough cleaning<br />

<strong>of</strong> the computers involved. An example is the Scores virus (Section 5.6).<br />

Over the years, computer users have noticed that viruses written for<br />

old versions <strong>of</strong> an operating systems linger on in the computer even after<br />

several newer versions <strong>of</strong> the operating system have been installed. It is<br />

common for computer makers to base a new computer on older models, in<br />

order to maintain upward compatibility. This is a useful feature that allows<br />

old s<strong>of</strong>tware, which represents a substantial investment, to run on a new<br />

computer, but it also means that viruses written for the old computer may<br />

find their way into the new computer and continue their destructive mission<br />

for years.<br />

Exercise Conc.1: What are well-known examples <strong>of</strong> computer families with<br />

upward compatibility?<br />

Persistence is perhaps the most important feature <strong>of</strong> benign viruses.<br />

Once such a virus enters the environment <strong>of</strong> a computer or a network, it does<br />

its job for years without any supervision or maintenance.<br />

Final Conclusions<br />

<strong>Computer</strong> security is a vast area that affects the performance <strong>of</strong> businesses,<br />

the quality <strong>of</strong> services provided by governments, and the daily lives <strong>of</strong>


Concluding Remarks 329<br />

many on Earth (and perhaps elsewhere in the universe). <strong>Security</strong> is steadily<br />

becoming both more complex and a bigger threat. <strong>Security</strong> is getting more<br />

complex because more security holes are being discovered and because operating<br />

systems are becoming more complicated. <strong>Security</strong> is becoming a bigger<br />

headache because <strong>of</strong> the prevalence <strong>of</strong> computer networks. The root <strong>of</strong> all<br />

computer security problems is the inability <strong>of</strong> computers to distinguish good<br />

from bad. On a slightly lower level, security threats exist because <strong>of</strong> the existence<br />

<strong>of</strong> networks and the complexity <strong>of</strong> modern s<strong>of</strong>tware. <strong>Computer</strong> security<br />

threats normally arrive at a computer from the outside through a network<br />

and they (the problems) thrive on s<strong>of</strong>tware vulnerabilities.<br />

One natural conclusion from the previous paragraph is that an organization<br />

that decides to connect a local-area network <strong>of</strong> computers to the Internet<br />

should first consider the security aspects <strong>of</strong> this step and how best to handle<br />

them. Similarly, an individual wanting to connect their personal computer<br />

to the Internet should first study the security ramifications <strong>of</strong> this step and<br />

be prepared to deal with threats when they arise. Another conclusion is<br />

that s<strong>of</strong>tware users have to balance the advantage <strong>of</strong>fered by new, complex<br />

s<strong>of</strong>tware with the increased security threat that it poses.<br />

Malware, spam, email dangers, and spyware are bad, but not all bad,<br />

as the following quotation shows (by an anonymous writer identified only<br />

as Floydian_99@yahoo.com and referring to what that writer did while his<br />

computer had to be cleaned from viruses or spyware, I forget which).<br />

Things are not so sad after all, because this break gave me<br />

the time to come up with this document. I hope this will stand<br />

as a must read for network administrators and security experts out<br />

there. As new technologies and new viruses will emerge, some <strong>of</strong><br />

the information may soon be obsolete, but I think. . .<br />

Another important conclusion from this book is that all security is compromise.<br />

It is possible to be very secure, but this can be achieved only at<br />

the cost <strong>of</strong> making the computer less convenient to use. Every security measure,<br />

technique, and device results in a slower, less responsive, and clumsier<br />

computer. Once this is realized, each computer user has to decide how much<br />

security they need. Performing a virus check and file backup every day increases<br />

security, but is time consuming. Looking at each email attachment,<br />

examining it, thinking about it, and applying tests to it likewise increases<br />

security, at the cost <strong>of</strong> time spent (and higher blood pressure <strong>of</strong> the user).<br />

Installing an activity monitor that detects suspicious or unusual activities also<br />

beefs up security, but decreases the user’s “quality <strong>of</strong> life” at the keyboard<br />

because <strong>of</strong> the need to respond to the monitor’s discoveries and questions and<br />

to constantly make decisions. Even the process <strong>of</strong> reading this book boosts<br />

security by giving the reader confidence, but has the downside <strong>of</strong> taking time.<br />

(Unless you listen to it while you sleep. Ask the publisher to come up with<br />

an audio version <strong>of</strong> the book. Just kidding.)<br />

Exercise Conc.2: The phrase “all security is compromise,” implies that<br />

compromise is an attribute <strong>of</strong> any type <strong>of</strong> security. Show an example <strong>of</strong><br />

compromise in a non-computer situation.


330 Concluding Remarks<br />

The goal <strong>of</strong> this book is to familiarize you, the reader, with the reasons for<br />

security threats and with the best security procedures and practices currently<br />

available. You should worry about the security <strong>of</strong> your computer, and this<br />

book is trying to teach you to worry correctly. Whether or not this goal is<br />

ever reached in your environment is up to the individual reader (but you can<br />

still complain to this author when something goes wrong, just to get it <strong>of</strong>f<br />

your chest).<br />

Final conclusion: Practice safe computing.<br />

A self test. The following questions will help you decide whether you<br />

have read this book carefully.<br />

1. What is the human factor <strong>of</strong> computer security? (See page x.)<br />

2. What does the word “system” mean? (See page xii.)<br />

3. Why does the problem <strong>of</strong> computer security exist? (See page 4.)<br />

4. What is the worst thing that can happen to computer security? (See<br />

page 10.)<br />

5. How should a computer user/owner start each day? (See page 10.)<br />

6. How should we look at security? (See page 12.)<br />

7. What is the best line <strong>of</strong> defense against all types <strong>of</strong> computer security<br />

threats? (See page 16.)<br />

8. Does the sentence “people are nosy and machines are noisy” sound familiar?<br />

(page 17.)<br />

9. What are the various types <strong>of</strong> malware?<br />

10. How does a computer virus make sure it gets executed in an infected<br />

computer?<br />

11. How can an international organization help in the war against malware?<br />

(See Section 3.3.)<br />

12. How safe am I if I have a complete backup? (See Section 6.4.)<br />

13. Why are virus hoaxes bad? (See Section 6.6.)<br />

14. How do spammers obtain so many valid email addresses? (See Section<br />

7.4.)<br />

15. Can spammers be defeated by legal means? (See case study on page 195.)<br />

16. Does a firewall consist <strong>of</strong> hardware or s<strong>of</strong>tware? (See Section 7.6.)<br />

17. What is the most secure biometric authentication technique? (See Section<br />

8.2.)<br />

18. Why is a shredder such a useful tool in the computer security war? (See<br />

Section 10.2.)<br />

19. What are the main security concerns <strong>of</strong> parents? (See Section 11.3.)<br />

20. Why do we trust certain Web sites and mistrust others? (See Section<br />

11.5.)<br />

21. What does the security <strong>of</strong> an encrypted message depend on? (See document<br />

on cryptography in the book’s Web site.)<br />

It’s a rash man who reaches a conclusion before he gets to it.<br />

—Jacob Levin


Glossary<br />

Access control. Safeguards that prevent unauthorized access to a computer<br />

or a computing facility. An access control can be physical, such as a lock or<br />

guard, or s<strong>of</strong>tware-based, such as a password or a firewall.<br />

Account harvesting. The process <strong>of</strong> collecting account names and passwords<br />

on a computer or a data base.<br />

Active content. Executable code (<strong>of</strong>ten in Java) embedded in a Web page.<br />

When the page is read, downloaded, and displayed by a Web browser, the<br />

embedded code is executed and may release a harmful payload.<br />

ActiveX. A technology that extends the capabilities <strong>of</strong> a Web browser (from<br />

Micros<strong>of</strong>t).<br />

Activity monitor. Techniques that attempt to prevent malware infection by<br />

looking for suspicious or unusual activity in the computer.<br />

AES. Advanced Encryption Standard, adopted by NIST as a replacement<br />

for the DES.<br />

Anti-virus s<strong>of</strong>tware. S<strong>of</strong>tware that searches for viruses and other malware.<br />

(See also Heuristic scanner.)<br />

Applet. A small application. This term normally refers to Java applets.<br />

(See also Java applet, Sandbox.)<br />

ASCII code. The standard character code on all modern computers (although<br />

Unicode is becoming a competitor). ASCII stands for American<br />

Standard Code for Information Interchange. It is a (1 + 7)-bit code, meaning<br />

1 parity bit and 7 data bits per symbol. As a result, 128 symbols can be<br />

coded. They include the upper- and lowercase letters, the ten digits, some<br />

punctuation marks, and control characters. (See also Byte, Unicode.)<br />

Asymmetric algorithm. A cryptographic algorithm where different keys are<br />

used for encryption and decryption. Most <strong>of</strong>ten a public-key algorithm. (See<br />

also Public-key algorithm.)


332 Glossary<br />

Attachment. Any file, data or executable, attached to an email message.<br />

Attack. (1) An approach used by a codebreaker to decrypt encrypted data<br />

or to reveal hidden data. An attack may use brute force, where every key<br />

is tried, or a sophisticated approach such as differential cryptanalysis. An<br />

attacker may use only known ciphertext or known ciphertext and plaintext.<br />

(2) An attempt to break into a computer or a network or to hamper their<br />

operations.<br />

Audit Trail. A record <strong>of</strong> all <strong>of</strong> a computer’s activities during a certain time<br />

period. A trail is produced automatically by an operating system routine or a<br />

special utility and is saved as a log file. It can later be used by administrators<br />

or security experts to identify improper or unauthorized use <strong>of</strong> the computer.<br />

Auditing. The process <strong>of</strong> collecting and analyzing information in order to<br />

ensure a proper level <strong>of</strong> security, as well as compliance with the policies <strong>of</strong> an<br />

organization.<br />

Authentication. The process <strong>of</strong> verifying a user’s identity or authority. Alternatively,<br />

the process <strong>of</strong> establishing the validity <strong>of</strong> a message. (See also<br />

Biometrics.)<br />

Authorization. The process <strong>of</strong> empowering someone to perform an operation<br />

or to have access to restricted resources.<br />

Availability. A computing resource (such as a file server <strong>of</strong> an organization)<br />

should be available to legitimate users. It <strong>of</strong>ten happens that malicious persons<br />

attack the availability <strong>of</strong> a resource thereby making it unusable without<br />

damaging the resource itself. (See also DoS, DDoS.)<br />

Backdoor. A hidden feature in a piece <strong>of</strong> s<strong>of</strong>tware that gives certain people<br />

special privileges denied to others. A typical example is a backdoor placed in<br />

an encryption algorithm by its author. The author can use the backdoor to<br />

decrypt messages without knowing the encryption key. In 1997 the American<br />

Senate approved a bill that would have banned the manufacture, distribution,<br />

or import <strong>of</strong> any encryption product that did not include a backdoor for the<br />

federal government, but that bill never became a law.<br />

Backdoor Trojan. A Trojan horse that enables a remote user to access and<br />

control a computer. This constitutes unauthorized access.<br />

Bacterium. Another name for a computer virus that’s not a rabbit. (See<br />

also Virus, Rabbit.)<br />

Backup. The process <strong>of</strong> creating a true copy <strong>of</strong> a set <strong>of</strong> data files.<br />

Bandwidth. The capacity <strong>of</strong> a communications channel. Measured in<br />

amount <strong>of</strong> data per unit time, such as bits per second (baud).<br />

Bayesian filtering. A statistical method that determines whether email is<br />

spam. It is based on Bayesian probability theory that computes the probability<br />

<strong>of</strong> an event A given that another event B has occurred.


Glossary 333<br />

Biometrics. Identifying or authenticating a person by checking certain physical<br />

characteristics such as fingerprints or eye and facial features. (See also<br />

Authentication.)<br />

BIOS. An acronym that stands for Basic Input/Output System. BIOS is<br />

the lowest level <strong>of</strong> the operating system routines that control input/output<br />

operations. It interfaces directly with hardware.<br />

Bitrate. Bits per second. A measure <strong>of</strong> the speed <strong>of</strong> a process such as encrypting<br />

or decrypting a file.<br />

Blackhole list. A published list, usually commercial, <strong>of</strong> addresses known to<br />

be sources <strong>of</strong> spam. (See also Real-time blackhole list.)<br />

Blacklist. A list <strong>of</strong> email addresses and domains from which no email will<br />

be accepted. Used by firewalls and email filters.<br />

Block cipher. A symmetric cipher that encrypts a message by breaking it<br />

down into blocks and encrypting each block separately. DES, IDEA, and<br />

AES are block ciphers.<br />

Boot sector. The part <strong>of</strong> the operating system that is first read into memory<br />

from disk when a computer is turned on or restarted. The program in the<br />

boot sector is then executed, which in turn loads the rest <strong>of</strong> the operating<br />

system. (See also Booting.)<br />

Boot sector virus. A virus that resides in the boot sector <strong>of</strong> a disk.<br />

Booting. The process <strong>of</strong> turning a computer on. The main task <strong>of</strong> booting<br />

is to load the operating system from disk. (See also Boot sector.)<br />

Browser. A computer program that locates a Web site (a server), downloads<br />

data from it in html format, and displays it as text and graphics. (See also<br />

Web browser.)<br />

Brute-force attack. An attempt to break an encrypted message by trying<br />

every possible key.<br />

Buffer overflow. An unusual situation that occurs when a program tries to<br />

store data past the end <strong>of</strong> a buffer (an array). Such data overwrites the<br />

instructions or data located past the array, and so may cause unexpected<br />

results. This is a common technique exploited by hackers to corrupt or infect<br />

executable code. To eliminate this type <strong>of</strong> weakness, the program has to<br />

check every index used to store data in the array and make sure indexes<br />

never point outside the array.<br />

Bug. An error in the design or implementation <strong>of</strong> a computer program.<br />

Byte. A set <strong>of</strong> 8 bits. This is <strong>of</strong>ten the smallest addressable unit in a computer’s<br />

memory. The number 8 was chosen because one character (ASCII)<br />

code or two decimal digits can be stored in 8 bits. (See also ASCII.)<br />

Caesar cipher. A cipher where each letter is replaced by the letter located<br />

cyclically n positions in front <strong>of</strong> it in the alphabet. (See also Affine cipher.)


334 Glossary<br />

CGI. An acronym for Common Gateway Interface. A standard employed<br />

by a Web server to run programs or scripts and send the output to a user’s<br />

Web browser.<br />

Checksum. The result <strong>of</strong> a computation that involves all the bits <strong>of</strong> a piece<br />

<strong>of</strong> data (a file or a message). The checksum is later used to verify the validity<br />

<strong>of</strong> the data, because virtually any modification <strong>of</strong> the data will change its<br />

checksum.<br />

Cipher. An encryption algorithm that depends on a key.<br />

Ciphertext. The encrypted result produced by a cipher. (See also Plaintext.)<br />

Client. S<strong>of</strong>tware that requests and uses a service provided by another program<br />

(a server). Often, the server may itself be a client <strong>of</strong> some other server.<br />

(See also Server.)<br />

Code. A symbol that represents another symbol (also a set <strong>of</strong> symbols that<br />

represent other symbols). The ASCII code, for example, represents a set <strong>of</strong><br />

128 characters by a set <strong>of</strong> 128 8-bit codes.<br />

Code (in cryptography). A cryptographic technique that uses a codebook<br />

to replace words and letters in the plaintext with symbols from the codebook.<br />

Companion virus. A virus that exploits a feature in certain operating systems<br />

that allows for two programs with the same name but different extensions.<br />

The operating system uses the file extension to decide which program to<br />

execute.<br />

Complex dictionary checking. A feature <strong>of</strong> anti-spam s<strong>of</strong>tware that locates<br />

(in a dictionary) words <strong>of</strong>ten used in spam, even if letters are replaced with<br />

lookalike numerals or characters (such as “1nterest r@te”).<br />

<strong>Computer</strong> Emergency Response Team (CERT). An organization that responds<br />

to attacks on computers and networks. CERT publishes alerts concerning<br />

vulnerabilities and threats, and <strong>of</strong>fers other information to help improve<br />

computer and network security.<br />

<strong>Computer</strong> Network. See Network.<br />

Cookie. A small amount <strong>of</strong> data that stores information in a computer<br />

with the user’s permission. Cookies are normally used to enable a Web site<br />

to track visits and remember visitors’ information.<br />

Corruption. An accidental or intentional modification <strong>of</strong> computer programs<br />

or data.<br />

Covert channels. Physical means by which information is sent between two<br />

parties secretly using normal network and computing procedures.<br />

Cryptanalysis. The science and art <strong>of</strong> breaking encryption (recovering plaintext<br />

from ciphertext when the key is unknown). (See also Attack.)


Glossary 335<br />

Cryptanalyst. One who tries to break encrypted codes.<br />

Cryptographer. One who develops encryption methods.<br />

Cryptography. The art and science <strong>of</strong> using mathematics to obscure the<br />

meaning <strong>of</strong> data by applying transformations to the data that are impractical<br />

or impossible to reverse without the knowledge <strong>of</strong> some key. The term comes<br />

from the Greek for “hidden writing.”<br />

Cryptology. The branch <strong>of</strong> mathematics concerned with secret writing in all<br />

its forms. It includes cryptography, cryptanalysis, and steganography.<br />

CSV. An acronym for Comma Separated Values. CSV is a file format where<br />

values (for example, the values from an Excel spreadsheet) are displayed<br />

separated by commas. The format does not support macros, so that it cannot<br />

spread macro viruses.<br />

Daemon. An operating system routine that runs continuously and forwards<br />

input/output requests to other programs or processes as appropriate. The<br />

term daemon originated in UNIX. The Windows operating system refers to<br />

daemons as system agents and services.<br />

Data diddling. Alteration <strong>of</strong> data. This term refers to what a malicious virus<br />

may do to data files it locates in an infected computer.<br />

Data encryption standard (DES). A block cipher based on the work <strong>of</strong> Horst<br />

Feistel in the 1970s that is widely used in commercial systems. DES is a 64-bit<br />

block cipher with a 56-bit key organized in 16 rounds <strong>of</strong> operations.<br />

Data leakage. The theft <strong>of</strong> data (including s<strong>of</strong>tware).<br />

DDoS. See Distributed denial <strong>of</strong> service.<br />

Decryption. The process <strong>of</strong> converting ciphertext back to plaintext by<br />

means <strong>of</strong> a key. The inverse <strong>of</strong> encryption. (See also Ciphertext, Encryption,<br />

Plaintext.)<br />

Denial <strong>of</strong> service attack. An attempt to prevent the use <strong>of</strong> a Web server<br />

by sending a vast number <strong>of</strong> simultaneous messages or requests. (See also<br />

Distributed denial <strong>of</strong> service.)<br />

Dictionary attack. Brute-force s<strong>of</strong>tware that bombards a mail server with<br />

email addresses that are generated alphabetically, looking for valid addresses.<br />

The same method can be used to guess passwords.<br />

Diffie–Hellman (DH). A public-key cryptography algorithm that generates<br />

a shared secret key between two entities after they publicly share some<br />

randomly-generated data.<br />

Digital. An approach where all types <strong>of</strong> data—text, images, audio, and<br />

video—are represented in terms <strong>of</strong> digits (normally bits).<br />

Digital signature. Data value generated by a public-key algorithm based<br />

on the content <strong>of</strong> a block <strong>of</strong> data and on a private key. It generates an<br />

individualized checksum.


336 Glossary<br />

Digram. A pair <strong>of</strong> consecutive symbols.<br />

Disassembly. The process <strong>of</strong> translating a program in machine language to<br />

assembler language.<br />

Disaster-recovery plan (DRP). A procedure developed and periodically rehearsed<br />

and revised to ensure quick and complete recovery <strong>of</strong> an organization<br />

from various disasters.<br />

Distributed denial <strong>of</strong> service. A denial <strong>of</strong> service attack coming from many<br />

computers. (See also Denial <strong>of</strong> service.)<br />

Domain hijacking. An attack where a hacker takes over a domain by first<br />

blocking access to the domain’s name server and then replacing it with his<br />

own name server.<br />

DoS. See Denial <strong>of</strong> service.<br />

Downloading. The transfer <strong>of</strong> data into one’s computer. The opposite <strong>of</strong><br />

uploading. (See also Uploading.)<br />

Dumpster diving. Obtaining private and personal data by searching through<br />

discarded documents, disks, and other media. (See also Scavenging.)<br />

DVD. An optical disc, similar to a CD but with seven times the data capacity.<br />

A DVD can have 1, 2, or 4 tracks (or layers), with capacities <strong>of</strong> up to<br />

17.08 Gb. The acronym may either refer to “digital video disc” or “digital<br />

versatile disc,” or may stand for nothing.<br />

Eavesdropping. Unauthorized interception <strong>of</strong> data being transmitted.<br />

Electronic fund transfer (EFT). A computerized transaction that can quickly<br />

and securely transfer funds electronically between organizations without the<br />

need to fill out paper documents.<br />

Emanations analysis. Spying on computer operations by collecting and<br />

analyzing signals that are emitted by hardware components.<br />

Encryption. The process <strong>of</strong> converting plaintext back to ciphertext by means<br />

<strong>of</strong> a key. The inverse <strong>of</strong> decryption. (See also Ciphertext, Decryption, Plaintext.)<br />

Ethernet. A technology for avoiding message collisions in a local area network<br />

(LAN). The formal designation <strong>of</strong> the ethernet standard is IEEE 802.3.<br />

Eve. A term used in cryptography discussions and examples for the ubiquitous<br />

eavesdropper.<br />

Exclusive-OR (XOR). A logical (Boolean) operation that is also its own<br />

inverse, which makes it useful in cryptography. It is identical to adding two<br />

bits modulo 2. (See also XOR.)<br />

Exploit. A ready-to-run program that takes advantage <strong>of</strong> a known weakness.<br />

These can <strong>of</strong>ten be found in hackers’ newsgroups. (See also Hoax.)


Glossary 337<br />

Factor. Given an integer N, a factor is any integer that divides it without<br />

a remainder.<br />

Factoring. The process <strong>of</strong> finding the prime factors <strong>of</strong> an integer.<br />

False positive. A report about a virus or a source <strong>of</strong> spam that turns out<br />

to be wrong.<br />

File infector. A virus that infects executable files and runs each time an<br />

infected file is executed. (See also Parasitic virus.)<br />

File server. A computer where data is stored that can be downloaded by<br />

authorized computers. (See also Client, Server.)<br />

Firewall. <strong>Security</strong> s<strong>of</strong>tware that is placed between the Internet and an organization’s<br />

local network, or between a network and a computer. The firewall<br />

s<strong>of</strong>tware is governed by rules and passes only network traffic authorized by<br />

the rules.<br />

Gateway. A computer that either serves for the transfer <strong>of</strong> data (for example,<br />

a mail gateway that handles all the mail coming into an organization),<br />

or a computer that converts data from one protocol to another.<br />

Giga. The quantity giga is defined as 2 30 = 1,073,741,824. In contrast, a<br />

billion is defined (in the United States) as 10 9 . (See Mega.)<br />

Greylist. Email senders who are not blacklisted (excluded) or whitelisted<br />

(accepted) can be placed on a greylist and requested to prove that they are<br />

sending legitimate mail.<br />

Hacker. Someone who tries to break into computers. A more lenient term<br />

is “a computer enthusiast.”<br />

Ham. Email that a recipient believes isn’t spam.<br />

Harvesting. Scanning the internet for email addresses that can be added to<br />

spammers’ mailing lists.<br />

Heuristic scanner. A program that detects viruses by using general rules<br />

about what viruses are like or how they behave. Conventional anti-virus<br />

s<strong>of</strong>tware looks for known signatures <strong>of</strong> viruses and is therefore much slower<br />

a heuristic scanner. (See also Anti-virus s<strong>of</strong>tware.)<br />

Hoax. A report about viruses or other security threats, <strong>of</strong>ten spread by<br />

email, that is intended to deceive. (See also False positive.)<br />

Honeypot. A computer on the internet that used specifically to attract and<br />

trap spammers and hackers.<br />

HTML. An acronym for Hypertext Markup Language. The standard for<br />

text and images on a Web site.<br />

HTTP. An acronym for Hypertext Transport Protocol. A protocol used by<br />

Web servers and clients (browsers) to transfer data to Web browsers.


338 Glossary<br />

HTTP scanning. Real-time scanning <strong>of</strong> HTTP traffic for viruses.<br />

Hypertext. Text that has links to other texts and images.<br />

Integrity. The correctness <strong>of</strong> a piece <strong>of</strong> data. An attack on integrity tries<br />

to damage data by changing bits. This is why a checksum, normally in the<br />

form <strong>of</strong> CRC, is important.<br />

Internet. THE network that connects many networks and computers all<br />

over the world.<br />

Internet protocol (IP). A set <strong>of</strong> rules governing how data is sent from one<br />

computer to another on the Internet.<br />

Interrupt. The way the computer responds to urgent or unusual events.<br />

Interrupts involve both hardware and s<strong>of</strong>tware.<br />

IP Address. A unique 32-bit number assigned to each computer on the Internet.<br />

It is used as the unique address <strong>of</strong> the computer by Internet protocols.<br />

There can be 2 32 IP addresses (about four billion).<br />

ISO. The International Standards Organization. This is one <strong>of</strong> the organizations<br />

responsible for developing standards. Among other things, it is<br />

responsible (together with the ITU) for the JPEG and MPEG compression<br />

standards. (See also ITU.)<br />

ITU. The International Telecommunications Union, the new name <strong>of</strong> the<br />

CCITT, is a United Nations organization responsible for developing and recommending<br />

standards for data communications.<br />

Java. A platform-independent higher-level programming language designed<br />

specifically for the Web. Programs written in Java are either applications or<br />

applets. (See also Applet, Java applet, Sandbox.)<br />

Java applet. A small application normally used to display text and graphics<br />

on Web pages. Applets are run by the browser in a safe environment and<br />

cannot make changes to the client’s computer. (See also Java, Sandbox.)<br />

JFIF. An acronym for JPEG File Interchange Format. JFIF is a graphics<br />

file format that makes it possible to exchange JPEG-compressed images between<br />

different computers. The main features <strong>of</strong> JFIF are the use <strong>of</strong> the<br />

YCbCr triple-component color space for color images (only one component<br />

for grayscale images) and the use <strong>of</strong> markers to specify features missing from<br />

JPEG, such as image resolution, aspect ratio, and features that are application<br />

specific.<br />

JPEG. A sophisticated lossy compression method [Salomon 07] for color or<br />

grayscale still images (not movies). It also works best on continuous-tone<br />

images, where adjacent pixels have similar colors.<br />

The main idea behind JPEG is that an image exists for people to look at,<br />

so when the image is compressed, it is acceptable to lose image features to<br />

which the human eye is not sensitive.


Glossary 339<br />

The term JPEG is an acronym that stands for Joint Photographic Experts<br />

Group. This was a joint effort by the CCITT and the ISO that started in<br />

June 1987. The JPEG standard has proved successful and has become widely<br />

used for image presentation, especially in Web pages.<br />

Kerckh<strong>of</strong>fs’s principle. An important principle in cryptography. It states<br />

that the security <strong>of</strong> an encrypted message must depend on keeping the key<br />

secret and should not depend on keeping the encryption algorithm secret.<br />

Key (cryptographic). A string <strong>of</strong> bits used to encrypt and decrypt messages.<br />

In noncomputer cryptography the key is a string <strong>of</strong> any symbols. (See also<br />

Key distribution.)<br />

Key distribution. The process <strong>of</strong> distributing a secret cryptographic key<br />

to all the members and locations <strong>of</strong> an organization. [See also Key (cryptographic).]<br />

Key space. The number <strong>of</strong> possible key values. For example, there are 2 64<br />

key values for a 64-bit key.<br />

Leet. Slang used by hackers to obfuscate discussions in newsgroups and other<br />

“gathering places” on the Internet. Examples <strong>of</strong> leet are “warez” (for pirated<br />

s<strong>of</strong>tware), “pr0n” for pornography, and “sploitz” (for exploits).<br />

Link virus. A virus that corrupts directory entries so that they point to the<br />

virus file, allowing it to execute when the user types the name <strong>of</strong> a legitimate<br />

application.<br />

Logic bomb. Malicious s<strong>of</strong>tware, normally a Trojan horse, left in a disk or<br />

inside another file to be triggered by a certain event. A disgruntled employee<br />

about to be sacked can plant such a bomb in a central file server, waiting<br />

to damage files when the employee’s id number is deleted from the list <strong>of</strong><br />

employees. (See also Rogue S<strong>of</strong>tware, Time Bomb.)<br />

Macro. A set <strong>of</strong> instructions and/or data that’s assigned a name. When<br />

the user types the name, the macro is expanded. Certain applications, such<br />

as Micros<strong>of</strong>t Word and Excel, support a macro facility.<br />

Macro virus. A virus disguised as a macro and infecting data files.<br />

Mail drop. An email address set up by a spammer specifically to receive<br />

responses to spam. The spammer opens and closes such accounts frequently.<br />

Malicious s<strong>of</strong>tware. See Rogue S<strong>of</strong>tware.<br />

Malware. See Rogue S<strong>of</strong>tware.<br />

Mantrap. A device to prevent unauthorized access to a room without employing<br />

a guard. A small booth between two doors where a door can open<br />

only when the other door is closed.<br />

Master boot record. The boot sector on a bootable disk. Also known as the<br />

partition sector. The first sector that’s read and executed when a computer<br />

is booted or is restarted.


340 Glossary<br />

Mega. Mega is defined as 2 20 = 1,048,576. In contrast, a million is defined<br />

as 10 6 . (See Giga.)<br />

Memory-resident virus. A virus that copies itself in memory when it is first<br />

executed. It modifies certain interrupt handling routines, so it is executed<br />

each time any <strong>of</strong> the routines is invoked.<br />

Modem. An acronym that stands for MOdulator/DEModulator. Modem is<br />

hardware that converts data (bits) between computer form and a form that<br />

can propagate through telephone lines, television cable, or radio or satellite<br />

link.<br />

Monoalphabetic substitution cipher. A cryptographic algorithm with a<br />

fixed substitution rule.<br />

Multipartite virus. A virus that infects both boot sectors and executable<br />

files.<br />

Munging. Disguising email addresses so that they cannot be harvested.<br />

Recipients are told how (or use their intelligence) to decode the address.<br />

National <strong>Computer</strong> <strong>Security</strong> Center (NCSC). A United States government<br />

organization that evaluates computing equipment for high-security applications.<br />

National Institute <strong>of</strong> Standards and Technology (NIST). An agency <strong>of</strong><br />

the United States government that establishes national standards.<br />

National <strong>Security</strong> Agency (NSA). A branch <strong>of</strong> the United States Department<br />

<strong>of</strong> Defense responsible for intercepting foreign communications and for<br />

ensuring the security <strong>of</strong> United States government communications.<br />

Network. A set <strong>of</strong> computers or computer installations connected by communication<br />

channels.<br />

Newsgroup. An electronic forum where users post articles, questions, and<br />

followup messages on specific topics.<br />

Obfuscation. A term that refers to (1) disguising email addresses so that<br />

spammers cannot harvest them and (2) spammers’ attempts to hide messages<br />

so that they will not be detected.<br />

One-time pad. An encryption method that employs a large key (as long<br />

as the message) to securely encrypt and decrypt a single message. Each<br />

encrypted message has to use a fresh key.<br />

Open relay. An SMTP email server that allows the third-party relay <strong>of</strong><br />

email messages. Spammers and other hackers can hijack such servers and<br />

use them to send spam and malicious s<strong>of</strong>tware.


Glossary 341<br />

Operating system. A set <strong>of</strong> programs that provide important services to the<br />

user. In a multiuser computer, the operating system also supervises users.<br />

The most common services an operating system provides are file handling<br />

(display, save, rename, move, and delete), data handling (editing text and<br />

compiling programs), and input/output (high-level routines that handle interrupts<br />

and simplify the transfer <strong>of</strong> data).<br />

Packet. Long messages transmitted over a network are broken up into small<br />

chunks called packets (or data packets). This is why a computer network is<br />

<strong>of</strong>ten referred to as a packet-switching network. The advantage <strong>of</strong> packets is<br />

reliability. If one packet is lost on its way or arrives garbled, only that packet<br />

has to be resent. All the packets <strong>of</strong> a long message contain the same destination<br />

address, same identification number, and individual serial numbers.<br />

The serial number are used to combine the packets into one message at the<br />

destination.<br />

Parasitic virus. See File infector.<br />

Password. A string <strong>of</strong> symbols (normally letters, digits, and certain punctuation<br />

marks) used to identify an authorized computer user. It is important<br />

to select strong passwords, keep them secret, and change them periodically.<br />

Password sniffing. Wiretapping a network in order to harvest passwords.<br />

Patch. An update released by a s<strong>of</strong>tware maker to eliminate bugs and<br />

security holes in existing programs.<br />

Phishing. Tricking users into submitting confidential information or passwords<br />

by creating a replica <strong>of</strong> a legitimate Web site or by social engineering<br />

methods.<br />

Phreaking. Hacking telephones. Manipulating the way telephones work to<br />

avoid paying for telephone use.<br />

Piggybacking. Sneaking into a restricted facility by following someone while<br />

a door is open. Same as Tailgating.<br />

Plaintext. An as-yet unencrypted message. (See also Ciphertext.)<br />

Polyalphabetic substitution. A cryptographic technique where the rule <strong>of</strong><br />

substitution changes all the time.<br />

Polymorphic virus. Self-modifying virus that changes its code in an attempt<br />

to make itself difficult to detect. (See also Virus.)<br />

Port. A port is similar to a door in that accessing a network opens up a<br />

port in the computer. Each packet <strong>of</strong> data that arrives at the computer has<br />

a port number and certain ports are dedicated to certain network protocols.<br />

A port can be thought <strong>of</strong> as an integer that identifies the endpoint <strong>of</strong> a<br />

communications channel. Once a port is opened on a computer, only one<br />

process can listen on it for input.


342 Glossary<br />

Port scan. Each port is associated with a process (a program) that listens for<br />

input arriving to the port from the outside. Imagine a hacker who discovers<br />

a weakness in a certain program that’s used to listen to port P . The hacker<br />

may decide to send probing messages to port P in all the computers whose<br />

IP numbers are in a certain interval. When a computer responds, the hacker<br />

adds its IP to the list <strong>of</strong> potential victims that can later be attacked.<br />

Program. A set <strong>of</strong> instructions that specifies actions a computer should<br />

perform. A program is normally written in a higher-level language and is<br />

translated by a compiler into a set <strong>of</strong> machine instructions. (See also S<strong>of</strong>tware.)<br />

Program virus. See File infector.<br />

Protocol. A set <strong>of</strong> rules, <strong>of</strong>ten to standardize procedures for computer<br />

communications.<br />

Proxy server. A server that makes requests to the Internet on behalf <strong>of</strong><br />

another computer. It sits between a local network and the internet and can<br />

be used for security purposes.<br />

Public-key algorithm. A cipher that uses a pair <strong>of</strong> keys, a public key and<br />

a private key, for encryption and decryption. Also called an asymmetric<br />

algorithm. (See also Asymmetric algorithm.)<br />

Public-key cryptography. Cryptography based on methods involving a public<br />

key and a private key.<br />

Public-key cryptography standards (PKCS). Standards published by RSA<br />

Data <strong>Security</strong> that describe how to use public-key cryptography in a reliable,<br />

secure, and interoperable fashion.<br />

Rabbit. A computer virus that does not attach itself to another piece <strong>of</strong><br />

s<strong>of</strong>tware and does its damage by monopolizing some computing resource,<br />

such as CPU time, memory, or disk space. (See also Bacterium, Virus.)<br />

RAM. Acronym for Random Access Memory, but a misnomer. RAM is<br />

really read/write memory. Currently, most computer memories are <strong>of</strong> this<br />

type, which is volatile. It loses its content when power is turned <strong>of</strong>f. (See<br />

also ROM.)<br />

Real-time blackhole list (RBL). A list that rejects all email, valid or not,<br />

from addresses that are blacklisted because they are known to send spam or<br />

to host spammers. Such a list can be employed by ISPs to take anti-spam<br />

measures and thereby greatly help their users. (See also Blackhole list.)<br />

Reverse DNS check. Checking an email’s sender address against the data<br />

base <strong>of</strong> a domain name server to ensure that it originated from a valid domain<br />

name or Web address.<br />

Rogue s<strong>of</strong>tware. A computer program specifically written to damage computing<br />

resources. (See also Malicious s<strong>of</strong>tware, Malware, Virus, Worm, Trojan<br />

horse, Logic bomb.)


Glossary 343<br />

ROM. Acronym for Read Only Memory. ROM is nonvolatile and is therefore<br />

used to store permanent data such as the bootstrap loader, Section 2.6. (See<br />

also RAM.)<br />

Root kit. A program that’s specially designed to hide the fact that a computer’s<br />

security has been compromised. A root kit may replace an operating<br />

system program, thereby making it impossible for the user/owner to detect<br />

the presence <strong>of</strong> the intruder by looking at activity inside the computer.<br />

Router. A hardware device that receives messages for computers in a network<br />

and forwards them to the individual computers in the network based<br />

upon IP addresses.<br />

RSA Data <strong>Security</strong>, Inc. (RSADSI). A company [RSAsecurity 04] primarily<br />

engaged in selling and licensing public-key cryptography for commercial<br />

purposes.<br />

Sandbox. A mechanism for executing programs in a controlled environment,<br />

<strong>of</strong>ten used with Java applets. (See also Java.)<br />

Scavenging. Probing a computer (or even discarded old disks and DVDs)<br />

at random for data useful to a hacker. (See also Dumpster diving.)<br />

Secure socket layer (SSL). A protocol enabling the secure transfer <strong>of</strong> sensitive<br />

information on the Internet. The sensitive data is encrypted by a block<br />

cipher, and the SSL protocol is used to select a random key for each transfer<br />

and communicate it securely through unsecured channels.<br />

<strong>Security</strong> (computer). The field that has to do with guaranteeing the availability,<br />

confidentiality, and integrity <strong>of</strong> computing systems.<br />

Server. A program that provides data in response to requests from other<br />

programs called clients. If a computer is dedicated to running servers, it is<br />

also called a server. (See also Client, File server.)<br />

Session. A process where an entire network protocol is executed between<br />

two computers (hosts).<br />

Session hijacking. The process <strong>of</strong> taking over a session that someone else<br />

has started.<br />

SHS. A three-letter file extension for Windows “scrap object” files. These<br />

files can include virtually any code and execute when clicked on. The extension<br />

itself may be hidden.<br />

Smart card. A plastic card with a chip embedded. The chip is either a microprocessor<br />

or memory. The smart card authenticates its owner and permits<br />

certain transactions such as using a pay telephone or public transportation,<br />

or withdrawing money from an ATM.<br />

SMTP. An acronym for Simple Mail Transport Protocol. The protocol for<br />

delivering Internet email.


344 Glossary<br />

Sniffer. A program that captures passwords and other data while it (the<br />

data) is in transit either within the computer or between computers or routers<br />

on a network<br />

Social engineering. A general term for methods that exploit human weaknesses.<br />

A hacker may obtain someone’s password by calling and pretending<br />

to be an <strong>of</strong>ficial, by looking over someone’s shoulder while they type their<br />

password, or by sending email that poses as an <strong>of</strong>ficial notice asking for sensitive<br />

information. Even though no special s<strong>of</strong>tware may be needed and no<br />

s<strong>of</strong>tware weakness is exploited, this is still a tool used by many wrongdoers.<br />

S<strong>of</strong>tware. A set <strong>of</strong> instructions (in assembler) or statements (in a higherlevel<br />

language) that carry out a task on the computer. <strong>Computer</strong>s are useful<br />

because the same computer can execute many programs and thus perform<br />

many different tasks. However, without a program, a computer can do nothing.<br />

(See also Program.)<br />

Spam. Commercial and bulk email sent unsolicited and in large quantities<br />

in an attempt to trap a small percentage <strong>of</strong> the receivers into buying useless<br />

products and services.<br />

Spambot. S<strong>of</strong>tware used by spammers to find and harvest email addresses<br />

from the Internet.<br />

Spo<strong>of</strong>ing. The term spo<strong>of</strong> means to pretend to be someone else. Spo<strong>of</strong>ing<br />

is forging the sender’s address in email. It is used mostly to hide the origin<br />

<strong>of</strong> spam, or to convince recipients that the email came from a familiar or<br />

reliable source.<br />

Spyware. S<strong>of</strong>tware that tracks user activity without the user’s knowledge<br />

and reports this information to its “owner.”<br />

Surge suppressor. See UPS.<br />

Tarpitting. Any technique to monitor email in order to discover sources <strong>of</strong><br />

large quantities <strong>of</strong> email that may be spam.<br />

Tarpit. An email server that’s kept intentionally slow in order to trap spammers<br />

that employ harvesting robots.<br />

TCP/IP. Acronyms for Transmission Control Protocol/Internet Protocol.<br />

The collective name for the two chief Internet protocols.<br />

Threat. A potential for a security violation. A threat exists when someone<br />

discovers a security weakness and attempts to exploit it for harmful purposes.<br />

Time bomb. A logic bomb triggered at a certain point in time. (See also<br />

Logic bomb, Rogue s<strong>of</strong>tware.)<br />

Trapdoor. See Back door.<br />

Trojan horse. Malicious (rogue) s<strong>of</strong>tware that hides itself in the computer<br />

in an attempt to harm. A typical Trojan horse may collect keystrokes and<br />

transmit them to its owner who may be looking for passwords and other<br />

personal information typed by the user. (See also Rogue s<strong>of</strong>tware.)


Glossary 345<br />

Trust. The process <strong>of</strong> determining who gets what permissions and who can<br />

perform certain actions on a computer.<br />

Unicode. A new international standard code, the Unicode, has been proposed,<br />

and is being developed by the international Unicode organization<br />

(www.unicode.org). Unicode allocates 16-bit codes to characters, so it provides<br />

for 2 16 = 64K = 65,536 codes. (Some characters can have longer codes,<br />

thereby increasing the total number <strong>of</strong> codes to more than a million.) Unicode<br />

includes all the ASCII codes in addition to codes for characters in foreign<br />

languages (including complete sets <strong>of</strong> Korean, Japanese, and Chinese characters)<br />

and many mathematical and other symbols. As <strong>of</strong> late 2009, about<br />

107,000 codes have been assigned, so there is much room for adding more<br />

symbols in the future. (See also ASCII.)<br />

Uninterrupted Power Supply (UPS). A device that “cleans” the power<br />

supplied by the power grid. A UPS employs special circuits to suppress power<br />

surges and includes a high-voltage battery to temporarily supply electrical<br />

power when the voltage drops.<br />

UNIX. A popular multiuser, multitasking operating system that originated<br />

at Bell Labs in the late 1960s by a handful <strong>of</strong> programmers. UNIX was<br />

originally envisioned as a small, flexible operating system used exclusively<br />

by programmers, but has developed over the years in response to changing<br />

demands and technological innovations. Today, UNIX is the operating system<br />

<strong>of</strong> choice <strong>of</strong> many unsophisticated computer users.<br />

Uploading. The transfer <strong>of</strong> data from one’s computer. The opposite <strong>of</strong><br />

downloading. (See also Downloading.)<br />

URL. An acronym for Uniform Resource Locator. A Web address.<br />

User. A person, an organization, or a process that accesses a computer. A<br />

user can be authorized or not.<br />

VBS. Acronym for Visual Basic Script. VBS is executable code embedded<br />

in an application, document, or a Web page that can run as soon as the page<br />

is viewed.<br />

Vernam cipher. Cipher developed for encrypting teletype traffic by computing<br />

the exclusive OR <strong>of</strong> the data bits and the key bits. This is a common<br />

approach to constructing stream ciphers. (See One-time pad.)<br />

Virus. Malicious (rogue) s<strong>of</strong>tware that infects other programs. In practice,<br />

viruses tend to harm the computer they are in, and also replicate themselves<br />

and send copies outside. (See also Rogue S<strong>of</strong>tware.)<br />

Virus identity. A detailed description <strong>of</strong> virus features used by anti-virus<br />

s<strong>of</strong>tware for virus recognition.<br />

Virus scanner. Anti-virus s<strong>of</strong>tware. Most scanners are virus-specific, they<br />

identify and delete only viruses that are already known. (See also Anti-virus<br />

s<strong>of</strong>tware, Heuristic scanner.)


346 Glossary<br />

Vulnerability. A flaw or weakness in the design, implementation, or operation<br />

<strong>of</strong> a piece <strong>of</strong> hardware or s<strong>of</strong>tware that could be exploited to violate<br />

security.<br />

Vulnerability scanner. A program especially designed to quickly check computers<br />

on a network for known weaknesses. A port scanner is a special case.<br />

It’s a program that attempts to find open ports on a target computer or ports<br />

that are available to access the computer. A firewall is a piece <strong>of</strong> hardware<br />

or s<strong>of</strong>tware that defends computers from intruders by closing <strong>of</strong>f all unused<br />

ports.<br />

WAP: Wireless Application Protocol. Internet-type protocol that provides<br />

information to mobile telephones.<br />

Web. See World Wide Web.<br />

Web browser. Client s<strong>of</strong>tware to access and display the html content <strong>of</strong><br />

Web sites. The HTTP protocol is used to transfer html documents. (See<br />

also Browser.)<br />

Web bug. A small image inserted in an email or Web page that alerts a<br />

spammer when a message is read or previewed.<br />

Web server. A computer connected to the Internet that stores a Web site<br />

in html format and can make it accessible with the HTTP protocol.<br />

Whitelist. A list <strong>of</strong> trusted email addresses from which email is accepted<br />

without checking it for spam and/or viruses.<br />

Wiretapping. Intercepting data as it moves along a communications channel.<br />

Workstation. A single-user computer, <strong>of</strong>ten connected to a network. Nowadays,<br />

there is no difference between a workstation and a personal computer,<br />

but in the past workstations were more powerful.<br />

World Wide Web. The collection <strong>of</strong> Web servers all over the world.<br />

Worm. Rogue s<strong>of</strong>tware that replicates and transmits copies <strong>of</strong> itself through<br />

a network. A worm may damage its host, or is designed to use the host’s<br />

computing resources for the benefit <strong>of</strong> its owner. (See also Rogue s<strong>of</strong>tware.)<br />

WWW. See World Wide Web.<br />

XOR. See Exclusive OR.<br />

Zombie. A computer that has been hijacked and is under the remote control<br />

<strong>of</strong> a hacker. Zombies are used to send spam or launch a denial <strong>of</strong> service<br />

attack.<br />

Nicole returned to the main menu and called up the Glossary to<br />

refresh her memory about the definitions <strong>of</strong> IE and SC.<br />

—Arthur C Clarke and Gentry Lee, Rama Revisited


Bibliography<br />

3M (2004) is http://cms.3m.com/cms/US/en/2-68/iclcrFR/view.jhtml.<br />

absolute (2005) is absolute.com/products/lojackforlaptops.<br />

ACA (2005) is http://www.und.nodak.edu/org/crypto/crypto/.<br />

Aegean Park Press (2001) is http://www.aegeanparkpress.com/.<br />

AFAC (2005) is http://www-vips.icn.gov.ru/.<br />

Agrawal, Rakesh, and Ramakrishnan Srikant (2000) “Privacy-Preserving Data<br />

Mining,” ACM SIGMOD, 29(2):439–450, June.<br />

Akamai (2004) is www.akamai.com.<br />

Anderson, Ross, Roger Needham, and Adi Shamir (1998) “The Steganographic<br />

File System,” in David Aucsmith (ed.) Proceedings <strong>of</strong> the Second<br />

Information Hiding Workshop, IWIH, pp. 73–82, April. Also available from<br />

http://citeseer.nj.nec.com/anderson98steganographic.html.<br />

annualcreditreport (2010) is www.annualcreditreport.com.<br />

anonymizer (2005) is www.anonymizer.com.<br />

antispyware (2009) is antispywarecoalition.org/events/may2009.php.<br />

apsa (2009) is http://www.adobe.com/support/security/advisories<br />

apsa09-01.html.<br />

APWG (2004) is http://www.antiphishing.org/.<br />

Arnold, Michael, Martin Schmucker, and Stephen D. Wolthusen (2003) Techniques<br />

and Applications <strong>of</strong> Digital Watermarking and Content Protection,<br />

Boston, Artech House.<br />

Asonov, Dmitri and Rakesh Agrawal (2004) “Keyboard Acoustic Emanations,”<br />

IEEE Symposium on <strong>Security</strong> and Privacy, Oakland, California, pp. 3–<br />

11, May. almaden.ibm.com/s<strong>of</strong>tware/quest/Publications/papers/ file<br />

ssp04.pdf.


348 Bibliography<br />

attrition (2004) is http://www.attrition.org/.<br />

attrition-mirror (2005) is attrition.org/mirror/attrition/.<br />

Aura, Tuomas (1996) “Practical Invisibility in Digital Communication,” in<br />

Proceedings <strong>of</strong> the Workshop on Information Hiding, Cambridge, England,<br />

May 1996, pp. 265–278, Lecture Notes in <strong>Computer</strong> Science 1174, New York,<br />

Springer-Verlag. http://www.tcs.hut.fi/Personnel/tuomas.html.<br />

avenger (2005) is http://www.research.ibm.com/antivirus/<br />

SciPapers/Gordon/Avenger.html.<br />

Backes, Michael, et al. (2010) Compromising Reflections, or How to Read<br />

LCD Monitors Around the Corner, available at http://www.infsec.cs.unisb.de/~unruh/publications/reflections.pdf.<br />

badguys (2005) is http://www.badguys.org/.<br />

Bamford, James (2002) Body <strong>of</strong> Secrets: Anatomy <strong>of</strong> the Ultra-Secret National<br />

<strong>Security</strong> Agency, New York, Anchor Books (Random House).<br />

Bar-El, Hagai (2010) Introduction to Side Channel Attacks, available at<br />

http://www.hbarel.com/Misc/side_channel_attacks.html.<br />

Barker, Wayne G. (1984) Cryptanalysis <strong>of</strong> Shift-Register Generated Stream<br />

Cipher Systems, Laguna Hills, Calif., Aegean Park Press, vol. C-39.<br />

Barker, Wayne G. (1989) Introduction to the Analysis <strong>of</strong> the Data Encryption<br />

Standard (DES), Laguna Hills, Calif., Aegean Park Press, vol. C-55.<br />

Barker, Wayne G. (1992) Cryptanalysis <strong>of</strong> the Single Columnar Transposition<br />

Cipher, Laguna Hills, Calif., Aegean Park Press, vol. C-59.<br />

Bauer, Friedrich Ludwig (2002) Decrypted Secrets: Methods and Maxims <strong>of</strong><br />

Cryptology 3rd edition, Berlin, Springer-Verlag.<br />

bbbseal (2005) is www.bbbonline.org.<br />

bbc (2004) is http://www.bbc.co.uk/dna/h2g2/A787917.<br />

Bell, D. E., and L. J. LaPadula (1974) “Secure <strong>Computer</strong> Systems: Mathematical<br />

Foundations and Model,” Technical report, MITRE.<br />

Blakley, G. R. (1979) “Safeguarding Cryptographic Keys,” in AFIPS Conference<br />

Proceedings, 48:313–317.<br />

Blowfish (2005) is http://www.schneier.com/blowfish.html.<br />

Boneh D., and D. Brumley (2004) “Remote Timing Attacks Are Practical,”<br />

available at crypto.stanford.edu/%7Edabo/abstracts/ssl-timing.html.<br />

BPCS (2003) is http://www.know.comp.kyutech.ac.jp/BPCSe/<br />

file BPCSe-principle.html.<br />

Brenner, Susan W. (2002) “Organized Cybercrime? How Cyberspace May<br />

Affect the Structure <strong>of</strong> Criminal Relationships,” North Carolina Journal <strong>of</strong><br />

Law and Technology, 4(1).


Bibliography 349<br />

business.com (2004) is business.com/directory/computers_and_s<strong>of</strong>tware<br />

/security/hardware/tracking_and_theft_prevention/.<br />

CA (2004) is www3.ca.com/securityadvisor/virusinfo/default.aspx.<br />

Calif-gov (2005) “Your Social <strong>Security</strong> Number: Controlling the Key to Identity<br />

Theft,” online at http://www.privacy.ca.gov/cis4english.htm.<br />

Campbell, K. W., and M. J. Wiener (1993) “DES Is Not a Group,” Advances<br />

in Cryptology, CRYPTO ’92, pp. 512–520, New York, Springer-Verlag.<br />

Casanova, Giacomo (1757) Histoire de Ma Vie, in 12 volumes. Translated<br />

by Willard R. Trask as The History <strong>of</strong> My Life, Baltimore, Johns Hopkins<br />

University Press, 1967, reissued 1997.<br />

CDC (2004) is http://www.cdc.gov/.<br />

CERT (2004) is http://www.cert.org/other_sources/viruses.html.<br />

chatdanger (2005) is http://www.netfamilynews.org/index.shtml.<br />

Chomsky, Noam, and George A. Miller (1958) “Finite State Languages,”<br />

Information and Control, 1(2)91–112, May.<br />

Code Red II (2001) “Code Red II: Another Worm Exploiting Buffer Overflow<br />

In IIS Indexing Service DLL,” CERT Incident Note IN-2001-09, Aug.<br />

6. Available online at http://www.cert.org/incident_notes/IN-2001-<br />

09.html.<br />

Cohen, Fred (1987) “A cryptographic checksum for integrity protection,’<br />

<strong>Computer</strong>s and <strong>Security</strong>, 6(6)505–510, December 1.<br />

Cohen, Frederick B. (1994a) A Short Course on <strong>Computer</strong> Viruses, 2nd edition,<br />

New York, NY, John Wiley & Sons.<br />

Cohen, Frederick B. (1994b) It’s Alive! The New Breed <strong>of</strong> Living <strong>Computer</strong><br />

Programs, New York, NY, John Wiley & Sons.<br />

comscore (2004) is http://www.comscore.com/.<br />

Conceptlabs (2004) is http://www.conceptlabs.co.uk/alicebob.html.<br />

cookiecentral (2004) is http://www.cookiecentral.com/faq/#2.9.<br />

Coppersmith, Donald, and Philip Rogaway (1994) “A S<strong>of</strong>tware-Optimized<br />

Encryption Algorithm,” Fast S<strong>of</strong>tware Encryption, Cambridge <strong>Security</strong> Workshop<br />

Proceedings, pp. 56–63, New York, Springer-Verlag.<br />

Coppersmith, Donald, and Philip Rogaway (1995) “S<strong>of</strong>tware-Efficient Pseudorandom<br />

Function and the Use There<strong>of</strong> for Encryption,” United States<br />

Patent 5,454,039, 26 September.<br />

copy machines (2010) is http://www.youtube.com/watch?v=y01xLquSIrc.<br />

corallos<strong>of</strong>tware (2005) is http://www.corallos<strong>of</strong>tware.com/index.html.<br />

Cox, Ingemar J. (2002) Digital Watermarking, San Francisco, Morgan Kaufmann.


350 Bibliography<br />

Crap (2005) is mat.dtu.dk/people/Lars.R.Knudsen/crap.html.<br />

creditexpert (2005) is https://www.creditexpert.com/.<br />

creditreporting (2005) is http://affiliates.creditreporting.com/.<br />

Cryptologia (2005) is dean.usma.edu/math/pubs/cryptologia/.<br />

Cryptology (2005) is link.springer.de/link/service/journals/00145/.<br />

CSE (2005) is http://www.cse.dnd.ca/.<br />

csrc (2004) is http://csrc.nist.gov/groups/ST/toolkit/index.html.<br />

CVE (2001) is CVE-2001-0500, Buffer overflow in ISAPI extension, available<br />

online at http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2001-<br />

0500.<br />

cyberpatrol (2005) is http://www.cyberpatrol.com/.<br />

CyberSitter (2005) is http://www.cybersitter.com/.<br />

cypherpunks (2004) is ftp://ftp.csua.berkeley.edu/pub/cypherpunks/<br />

file steganography/.<br />

davidlebovitz (2005) is davidlebovitz.com/archives/2005/10/#000131.<br />

Dawkins, Richard (2006) The Selfish Gene, 3rd Edition, New York, Oxford<br />

University Press.<br />

Day (2010) is http://www.enigma.id.au/securing_mac_os_x.pdf.<br />

Denning, Peter J. (1990) <strong>Computer</strong>s Under Attack: Intruders, Worms, and<br />

Viruses, New York, ACM Press and Addison Wesley.<br />

DES2 (1993) is http://www.itl.nist.gov/fipspubs/fip46-2.htm.<br />

DES3 (1999) is csrc.nist.gov/publications/fips/fips46-3/<br />

file fips46-3.pdf.<br />

DFA (2010) ishttp://www.digitalforensicsassociation.org/.<br />

digitalenvoy (2004) is www.digitalenvoy.net/.<br />

digitaltampering (2010) is<br />

http://www.cs.dartmouth.edu/farid/research/digitaltampering/.<br />

dodgeit (2004) is http://www.dodgeit.com/.<br />

DSD (2005) is http://www.dsd.gov.au/.<br />

dslreports (2004) is http://www.dslreports.com/scan.<br />

Dunham W. (1990) Journey Through Genius: The Great Theorems <strong>of</strong> Mathematics,<br />

New York, John Wiley & Sons.<br />

dvdbook (2005) is http://www.dvdforum.org/tech-dvdbook.htm.<br />

eBates (2005) is https://www.ebates.com/.


eeggs (2005) is http://www.eeggs.com/.<br />

Bibliography 351<br />

eff (2010) is http://www.eff.org/cases/lexmark-v-static-control-casearchive.<br />

EICAR (2004) is http://www.eicar.org/.<br />

Encyc1 (2004) is www3.ca.com/securityadvisor/virusinfo/browse.aspx.<br />

Encyc2 (2004) is securityresponse.symantec.com/avcenter/<br />

file vinfodb.html.<br />

ensuretech (2004) is http://www.ensuretech.com/.<br />

equifax (2005) is http://www.equifax.com/.<br />

FBI (2008) is losangeles.fbi.gov/dojpressrel/pressrel08/<br />

file la041608usa.htm.<br />

Feige, Uriel, Amos Fiat, and Adi Shamir (1988) “Zero Knowledge Pro<strong>of</strong>s <strong>of</strong><br />

Identity,” Journal <strong>of</strong> Cryptology, 1(2)77–94.<br />

Feistel, Horst (1973) “Cryptography and <strong>Computer</strong> Privacy,” Scientific American,<br />

228(5) 15–23, May.<br />

FIPS-180 (2005) is http://www.itl.nist.gov/fipspubs/fip180-1.htm.<br />

FIPS-185 (2005) is http://www.itl.nist.gov/fipspubs/fip185.htm.<br />

FIPS-186 (2005) is http://www.itl.nist.gov/fipspubs/fip186.htm.<br />

Flannery, Sarah, and David Flannery (2001) In Code: A Mathematical Journey,<br />

Workman Publishing Company.<br />

FreeBSD (2005) is ftp://www.freebsd.org/usr/share/dict/words.<br />

Friedman, William F. (1996) The Index <strong>of</strong> Coincidence and Its Applications<br />

in Cryptanalysis, Laguna Hills, Calif., Aegean Park Press, vol. C-49.<br />

f-secure (2005) is http://www.f-secure.com/.<br />

ftc (2004) is http://www.ftc.gov/opa/2003/09/idtheft.htm.<br />

FTC-CONT (2005) is ftc.gov/bcp/edu/pubs/consumer/tech/tec04.pdf.<br />

FTC-work (2005) is ftc.gov/bcp/workshops/spyware/index.htm.<br />

fundrace (2010) is http://fundrace.huffingtonpost.com/.<br />

Gaines, Helen Fouché (1956) Cryptanalysis: A Study <strong>of</strong> Ciphers and Their<br />

Solutions, New York, Dover.<br />

Garfinkel, Simson (1995) PGP: Pretty Good Privacy, Sebastopol, CA, O’Reilly.<br />

GCHQ (2003) is http://www.gchq.gov.uk/.<br />

gemalto (2010) is gemalto.com/companyinfo/smart_cards_basics/.<br />

Gerrold, David (1988) When HARLIE Was One, Bantam Spectra (Random<br />

House), Updated edition.


352 Bibliography<br />

getnetwise (2005) is www.getnetwise.org/.<br />

getnetwise-ctrct (2005) is www.getnetwise.org/tools/toolscontracts.php.<br />

GnuPG (2004) is http://www.gnupg.org/.<br />

Golomb, Solomon W. (1982) Shift Register Sequences, 2nd edition, Laguna<br />

Hills, Calif., Aegean Park Press.<br />

Google (2005) is desktop.google.com.<br />

Gordon, Sarah (2005) “Virus Writers: The End <strong>of</strong> The Innocence?” available<br />

at research.ibm.com/antivirus/SciPapers/VB2000SG.htm.<br />

Grampp, F. T., and R. H. Morris (1984) “UNIX Operating System <strong>Security</strong>,”<br />

Bell Laboratories Technical Journal, 63(8)1649–1672, October.<br />

gregorybraun (2005) is http://www.gregorybraun.com/PassKeep.html.<br />

Guillou, Louis, and Jean-Jacques Quisquater (1988) “A Practical Zero Knowledge<br />

Protocol Fitted to <strong>Security</strong> Microprocessors Minimizing Both Transmission<br />

and Memory,” in Advances in Cryptology, Eurocrypt ’88 Proceedings,<br />

pp. 123–128, Berlin, Springer-Verlag.<br />

Guinness (2004) is www.guinnessworldrecords.com/.<br />

Gutenberg (2005) is http://www.gutenberg.net/.<br />

Guthke, Karl S. and Robert C. Sprung (1991) Traven: The Life Behind the<br />

Legends, Chicago, IL, Lawrence Hill Books.<br />

Harley, David, Robert Slade, and Urs Gattiker (2001) Viruses Revealed,<br />

Berkeley, CA, Osborne/McGraw-Hill.<br />

Hart-Davis, Guy (2009) Word 2007 Macros & VBA Made Easy, Berkeley,<br />

CA, Osborne/McGraw-Hill.<br />

HastaLaVista (2004) is http://www.hastalavista.com (but don’t use it,<br />

even at your own risk).<br />

Hinsley, F. H., and Alan Stripp (eds.) (1992) The Codebreakers: The Inside<br />

Story <strong>of</strong> Bletchley Park, Oxford, Oxford University Press.<br />

homograph (2005) is the PDF document at<br />

http://www.cs.technion.ac.il/~gabr/papers/homograph_full.pdf.<br />

House (2004) “Spyware: what you don’t know can hurt you.” Hearing before<br />

the subcommittee on commerce, trade, and consumer protection, April 29,<br />

2004, serial no. 108-89. Also at<br />

access.gpo.gov/congress/house/house05ch108.html.<br />

Hydan (2005) is http://www.crazyboy.com/hydan/.<br />

IANA port (2004) is iana.org/assignments/port-numbers.<br />

IbmAntiVirus (2005) http://www.research.ibm.com/antivirus/.<br />

idtheftcenter (2004) is http://www.idtheftcenter.org.


IIS (2004) is www.micros<strong>of</strong>t.com/iis.<br />

Bibliography 353<br />

Information Week (2004) is<br />

informationweek.com/story/showArticle.jhtml?articleID=52601698.<br />

insecure (2004) is http://nmap.org/.<br />

intelius (2005) is http://find.intelius.com/.<br />

IOCCC (2004) is http://www.ioccc.org/.<br />

ISIS (2005) http://isisaccreditation.imrg.org/.<br />

ISS (2005) is www.iss.net.<br />

ITU (2005) is http://www.itu.int/home/index.html.<br />

Jargon (2004) is http://www.catb.org/~esr/jargon/.<br />

Johnson, Neil F., et al. (2001) Information Hiding: Steganography and<br />

Watermarking—Attacks and Countermeasures, Advances in Information <strong>Security</strong>,<br />

volume 1, Boston, Kluwer Academic.<br />

Kahn, David (1996) The Codebreakers: The Comprehensive History <strong>of</strong> Secret<br />

Communications from Ancient Times to the Internet, revised edition, New<br />

York, Scribner.<br />

Katzenbeisser, Stefan, and Fabien A. P. Petitcolas (eds.) (2000) Information<br />

Hiding Techniques for Steganography and Digital Watermarking, Norwood,<br />

Mass., Artech House.<br />

Kerckh<strong>of</strong>fs, Auguste (1883) “La Cryptographie Militaire,” Journal des Sciences<br />

Militaires, 9:5–38, 161–191, January–February. Also at<br />

petitcolas.net/fabien/kerckh<strong>of</strong>fs/la_cryptographie_militaire_i.htm.<br />

Knowspam (2004) is http://www.Knowspam.net/.<br />

knowyourloanrate (2005) is https://www.knowyourloanrate.com/.<br />

Knuth, Donald E. (1984) The TEXBook, Reading, Mass., Addison-Wesley.<br />

Konheim, Alan G. (1981) Cryptography: A Primer, New York, John Wiley<br />

& Sons.<br />

Kuhn (2004) is cl.cam.ac.uk/TechReports/UCAM-CL-TR-577.pdf.<br />

Larson, P. ˚A., and A. Kajla (1984) “Implementation <strong>of</strong> a Method Guaranteeing<br />

Retrieval in One Access,” Communications <strong>of</strong> the ACM, 27(7)670–677,<br />

July.<br />

Lavas<strong>of</strong>t (2004) is lavas<strong>of</strong>tusa.com/ or http://www.lavas<strong>of</strong>t.de/.<br />

Levy, Steven (2002) Crypto: How the Code Rebels Beat the Government<br />

Saving Privacy in the Digital Age, Penguin Putnam.<br />

mac-hack (2010a) is http://www.zdnet.com.au/news/security/soa/ Mac-<br />

OS-X-hacked-under-30-minutes/0,130061744,139241748,00.htm.


354 Bibliography<br />

mac-hack (2010b) is http://www.youtube.com/watch?v=98XUSYIBM6k.<br />

Mailblocks (2004) is http://www.mailwasher.net/.<br />

MailFrontier (2004) is http://www.exclaimer.com.<br />

mailinator (2004) is http://www.mailinator.net.<br />

Maiwald, Eric and William Sieglein (2002) <strong>Security</strong> Planning and Disaster<br />

Recovery, Berkeley, CA, Osborne/McGraw-Hill.<br />

malware (2010) is http://www.malware.org/.<br />

maporama (2004) is http://www.maporama.com/share/.<br />

mapquest (2004) is http://www.mapquest.com/maps/latlong.adp.<br />

MathWorld (2005) is html file Gram-SchmidtOrthonormalization.html in<br />

http://mathworld.wolfram.com/.<br />

McAfee (2004) is http://www.mcafee.com/us/.<br />

McDonald, Andrew D., and Markus G. Kuhn (1999) “StegFS: A Steganographic<br />

File System for Linux,” in Proceedings <strong>of</strong> Information Hiding, pp.<br />

463–477, Lecture Notes in <strong>Computer</strong> Science 1768, New York, Springer-<br />

Verlag. Also available from<br />

http://www.mcdonald.org.uk/StegFS/.<br />

MD5 (2004) is http://www.ietf.org/rfc/rfc1321.txt.<br />

melissavirus (2005) is www.melissavirus.com/.<br />

Merkle, R. C., and M. Hellman (1981) “On the <strong>Security</strong> <strong>of</strong> Multiple Encryption,”<br />

Communications <strong>of</strong> the ACM, 24(7)465–467.<br />

missingkids (2005) is http://www.missingkids.com/.<br />

Mitnick, Kevin D. and William Simon (2002) The Art <strong>of</strong> Deception: Controlling<br />

the Human Element <strong>of</strong> <strong>Security</strong>, New York, John Wiley.<br />

Moore, Dan Tyler and Martha Waller (1965) Cloak and Cipher, Indianapolis,<br />

IN, Bobbs-Merrill, 1962; London, Harrap.<br />

MS04 (2004) is micros<strong>of</strong>t.com/technet/security/bulletin/<br />

file MS04-028.mspx.<br />

MS<strong>of</strong>fice (2005) is http://<strong>of</strong>fice.micros<strong>of</strong>t.com/en-us/<strong>of</strong>ficeupdate/.<br />

MSsecurity (2005) is http://www.micros<strong>of</strong>t.com/security/.<br />

MStechnet (2005) is http://www.micros<strong>of</strong>t.com/technet/security/.<br />

MTX (2005) is http://www.f-secure.com/v-descs/mtx.shtml.<br />

mutemail (2010) is http://www.mutemail.com/.<br />

NCM (2005) is http://www.nsa.gov/museum/.<br />

netnanny (2005) is http://www.netnanny.com/.


Bibliography 355<br />

Network solutions (2004) is<br />

http://www.networksolutions.com/en_US/whois/index.jhtml.<br />

Newton, David E. (1997) Encyclopedia <strong>of</strong> Cryptology, Santa Barbara, Calif.,<br />

ABC-Clio.<br />

Nicetext (2005) is http://www.nicetext.com/.<br />

NIST (1992) “The Digital Signature Standard, proposal and discussion,”<br />

Communications <strong>of</strong> the ACM, 35(7):36–54.<br />

NIST (2004) is http://csrc.nist.gov/virus/.<br />

NIST Handbook (2004) is available at<br />

csrc.nist.gov/publications/nistpubs/800-12/handbook.pdf.<br />

NISTunits (2004) is http://physics.nist.gov/cuu/Units/binary.html.<br />

NSA (2004) is http://www.nsa.gov/.<br />

NSA-SEC (2005) is http://www.nsa.gov/snac/.<br />

nsa.tempest (2010) TEMPEST: A Signal Problem, also at<br />

http://www.nsa.gov/public/pdf/tempest.pdf.<br />

NSA-venona (2004) is nsa.gov/about/_files/cryptologic_heritage/<br />

publications/coldwar/venona_story.pdf.<br />

onion-router (2005) is http://www.onion-router.net/.<br />

openmarket (2010) is openmarket.org/2008/05/23/<br />

fingerprint-registry-in-housing-bill/.<br />

OpenPGP (2005) is http://www.openpgp.org/.<br />

opensecrets (2005) is http://www.opensecrets.org/indivs/.<br />

OpenSSL (2004) is the OpenSSL project, located at http://www.openssl.org.<br />

Orebaugh, Angela D. and Gilbert Ramirez (2004) Ethereal Packet Sniffing,<br />

Rockland, Mass., Syngress.<br />

packet-sniffing (2004) is http://www.packet-sniffing.com/.<br />

parenting (2010) is parenting.com/article/Child/Relationships/<br />

file How-to-Spy-on-Your-Child-Online.<br />

pchell (2005) is http://www.pchell.com/virus/mtx.shtml.<br />

PCPhoneHome (2004) is http://www.pcphonehome.com/.<br />

per-capita (2010) is http://www.nationmaster.com/<br />

graph/med_per_com_percap-media-personal-computers-per-capita.<br />

performics (2010) is performics.com/assets/File/<br />

file Affiliate-Marketing-Code-<strong>of</strong>-Conduct.pdf.<br />

Petitcolas (2003) is http://www.petitcolas.net/fabien/steganography/<br />

bibliography/.


356 Bibliography<br />

Pfitzmann, B. (1996) “Information Hiding Terminology,” in Information Hiding,<br />

pp. 347–350, Lecture Notes in <strong>Computer</strong> Science, 1174, New York,<br />

Springer-Verlag.<br />

ping (2004) is http://ftp.arl.mil/~mike/ping.html.<br />

PKCS (2004) is http://www.rsa.com/rsalabs/node.asp?id=2124.<br />

Pohlmann, Ken (1992) The Compact Disc Handbook, 2nd edition, Middleton,<br />

Wisconsin, A-R Editions.<br />

privacyalliance (2005) is http://www.privacyalliance.org/.<br />

privacyrights (2005) is privacyrights.org/fs/fs21-children.htm.<br />

protectkids (2005) is http://www.protectkids.com/.<br />

purityscan (2005) is http://www.purityscan.com/.<br />

qspace (2005) is http://qspace.iplace.com/.<br />

Quova (2004) is www.quova.com/.<br />

Raymond (2004) is http://www.catb.org/~esr/faqs/.<br />

Reiter, Michael K. and Aviel D. Rubin (1998) “Crowds: Anonymity for<br />

Web Transactions,” ACM Transactions on Information and System <strong>Security</strong>,<br />

1(1)66–92.<br />

remotelyanywhere (2004) is http://www.remotelyanywhere.com/.<br />

Rescorla, Eric (2000) SSL and TLS: Designing and Building Secure Systems,<br />

Reading, Mass., Addison Wesley.<br />

RFC-862 (2004) is at www.faqs.org/rfcs/rfc862.html.<br />

RFC-864 (2004) is at www.faqs.org/rfcs/rfc864.html.<br />

rfc1321 (2005) is http://www.ietf.org/rfc/rfc1321.txt.<br />

RFC-1738 (2004) is at www.faqs.org/rfcs/rfc1738.html.<br />

RIAA (2010) is riaa.com/<br />

file aboutus.php?content_selector=aboutus_members.<br />

Ritter (2005) is http://www.ciphersbyritter.com/ARTS/PRACTLAT.HTM.<br />

Ritter, Terry (1990) “Substitution Cipher with Pseudo-Random Shuffling:<br />

The Dynamic Substitution Combiner,” Cryptologia 14(4)289–303. An updated<br />

version is available at http://www.ciphersbyritter.com/DYNSUB.HTM.<br />

Rivest, R. (1991) “The MD4 Message Digest Algorithm,” in Menezes, A. J.,<br />

and S. A. Vanstone, (eds.), Advances in Cryptology: CRYPTO ’90 Proceedings,<br />

pp. 303–311, New York, Springer-Verlag.<br />

Rivest, R. (1992) “The MD4 Message Digest Algorithm,” RFC 1320, MIT<br />

and RSA Data <strong>Security</strong>, Inc., April.


Bibliography 357<br />

Rochlis, J., and M. Eichin (1989) “With Microscope and Tweezers: The<br />

Worm from MIT’s Perspective,” Communications <strong>of</strong> the ACM, 32(6):689–<br />

698, June.<br />

Roman, Steven (1999) Writing Word Macros, Sebastopol, CA, O’Reilly Assoc.<br />

Rossner, Mike and Kenneth M. Yamada (2004) “What’s in a Picture? The<br />

Temptation <strong>of</strong> Image Manipulation,” The Journal <strong>of</strong> Cell Biology, 166(1):11–<br />

15.<br />

RSA (2010) is http://www.rsa.com/rsalabs/node.asp?id=2092.<br />

RSA-MD4 (2005) is http://www.rsa.com/rsalabs/node.asp?id=2253.<br />

RSASecurID (2004) is http://www.rsa.com/node.aspx?id=1157.<br />

RSAsecurity (2004) is http://www.rsa.com/.<br />

safekids (2005) is http://www.safekids.com/.<br />

SaftLite (2005) is http://haoli.dnsalias.com/.<br />

Salomon, David (2003) Data Privacy and <strong>Security</strong>, New York, Springer Verlag.<br />

Salomon, David (2005) Coding for Data and <strong>Computer</strong> Communications,<br />

New York, Springer-Verlag.<br />

Salomon, David (2007) Data Compression: The Complete Reference, 4th<br />

edition, New York, Springer-Verlag.<br />

sarn<strong>of</strong>f (2010) is http://www.sarn<strong>of</strong>f.com.<br />

Savard (2005) is http://home.ecn.ab.ca/~jsavard/crypto/jscrypt.htm.<br />

Schneier, Bruce (1993) “Fast S<strong>of</strong>tware Encryption,” in Cambridge <strong>Security</strong><br />

Workshop Proceedings, pp. 191–204. New York, Springer-Verlag. Also available<br />

from<br />

http://www.counterpane.com/bfsverlag.html.<br />

Schneier, Bruce (1995) Applied Cryptography: Protocols, Algorithms, and<br />

Source Code in C, 2nd edition, New York, John Wiley & Sons.<br />

Schneier, Bruce (2003) is http://www.counterpane.com/crypto-gram.html.<br />

Schneier, Bruce (2004) Secrets and Lies: Digital <strong>Security</strong> in a Networked<br />

World, Hoboken, NJ, John Wiley & Sons.<br />

Schnorr, Claus Peter (1991) “Efficient Signature Generation for Smart Cards,”<br />

Journal <strong>of</strong> Cryptology, 4(3)161–174.<br />

Schotti, Gaspari (1665) Schola Steganographica, Jobus Hertz, printer. Some<br />

page photos from this old book are available at<br />

http://www.cl.cam.ac.uk/~fapp2/steganography/steganographica/<br />

file index.html.


358 Bibliography<br />

SDattacks (2010) is http://www.sidechannelattacks.com/.<br />

SearchAndDestroy (2004) is http://www.SearchAndDestroy.com/.<br />

searchcio (2010) is searchcio-midmarket.techtarget.com/sDefinition/<br />

0,,sid183_gci1075399,00.html.<br />

send-safe (2005) is http://www.send-safe.com.<br />

Shamir, Adi (1979) “How to Share a Secret,” Communications <strong>of</strong> the ACM,<br />

22(11)612–613, November.<br />

Shamir, Adi and Eran Tromer (2004) “Acoustic cryptanalysis,” available<br />

online at wisdom.weizmann.ac.il/~tromer/acoustic/.<br />

Shannon, Claude E. (1949) “Communication Theory <strong>of</strong> Secrecy Systems,”<br />

Bell System Technical Journal, 28:656–715, October.<br />

Shannon, Claude E. (1951) “Prediction and Entropy <strong>of</strong> Printed English,”<br />

Bell System Technical Journal, 30:50–64, January.<br />

Shoch, John and Jon Hupp (1982) “The Worm Programs—Early Experience<br />

With a Distributed Computation,” Communications <strong>of</strong> the ACM, 25(3)172–<br />

180. Reprinted in [Denning 90].<br />

Simovits, Mikael J. (1996) The DES, an Extensive Documentation and Evaluation,<br />

Laguna Hills, Calif., Aegean Park Press, vol. C-68.<br />

Singh, Simon (1999) The Code Book, New York, Doubleday.<br />

Sinkov, A. (1980) Elementary Cryptanalysis: A Mathematical Approach (New<br />

Mathematical Library, No. 22), Washington, D.C., Mathematical Assn. <strong>of</strong><br />

America.<br />

smartcardalliance (2005) is<br />

http://www.smartcardalliance.org/pages/smart-cards.<br />

snapfiles (2004) is http://www.snapfiles.com/.<br />

sobig (2010) is http://en.wikipedia.org/wiki/Sobig_(computer_worm)<br />

sophos (2005) is www.sophos.com/virusinfo/hoaxes.<br />

Sorkin, Arthur (1984) “Lucifer, A Cryptographic Algorithm,” Cryptologia,<br />

8(1):22–41, January. An addendum is in 8(3)260–261.<br />

spam (2004) is http://www.spam.com/about/history/default.aspx.<br />

spam abuse (2004) is http://spam.abuse.net/others/sites.shtml.<br />

SpamArrest (2004) is http://www.SpamArrest.com.<br />

spambob (2004) is http://spambob.net.<br />

spamcop (2005) is http://www.spamcop.com/.<br />

spamgourmet (2004) is http://www.spamgourmet.com/.<br />

Spamhaus (2005) is http://www.spamhaus.org/.


Bibliography 359<br />

spamhauslasso (2005) is http://readerszone.com/security/top-10-spamfriendly-isps.html.<br />

SpectorS<strong>of</strong>t (2004) is http://www.SpectorS<strong>of</strong>t.com/.<br />

spendonlife (2010) is http://www.spendonlife.com/guide/identity-theftstatistics.<br />

Spybot (2010) is http://www.safer-networking.org/en/index.html.<br />

SpyOnYourKids (2010) is http://www.spyonyourkids.net/.<br />

Spy Sweeper (2005) is http://www.webroot.com/.<br />

spywareguide (2004) is http://www.spywareguide.com/.<br />

spywareguide-country (2004) is<br />

spywareguide.com/articles/country_code_extensions_look_u_45.html.<br />

spywareinfo (2004) is http://www.spywareinfo.com/.<br />

squidoo (2010) is http://www.squidoo.com/personalInformation.<br />

ssa-form (2004) is http://www.ssa.gov/online/ssa-7004.pdf.<br />

ssa-stat (2005) is https://s044a90.ssa.gov/apps6a/isss/main.html.<br />

Stallings, William (1998) Cryptography and Network <strong>Security</strong>: Principles and<br />

Practice, Englewood Cliffs, N.J., Prentice-Hall.<br />

Staniford, Stuart, Vern Paxson, and Nicholas Weaver (2002) “How to Own<br />

the Internet in Your Spare Time,” Proceedings <strong>of</strong> the 11th USENIX <strong>Security</strong><br />

Symposium (<strong>Security</strong> ’02). Available online at<br />

http://www.icir.org/vern/papers/cdc-usenix-sec02/index.html.<br />

Steganosaurus (2004) is http://www.fourmilab.to/stego/.<br />

Stego (2005) is http://www.stego.com/.<br />

Stoll, Clifford (1988) “Stalking the Wily Hacker,” Communications <strong>of</strong> the<br />

ACM, 31(5)484–497, May.<br />

Stoll, Clifford (1990) The Cuckoo’s Egg, Bodley Head.<br />

Stoll, Clifford (2004) http://www.ocf.berkeley.edu/~stoll/.<br />

storagereview (2000) is<br />

http://www.storagereview.com/guide2000/ref/hdd/index.html.<br />

Strunk, William (1918) The <strong>Elements</strong> <strong>of</strong> Style, Ithaca, NY, W. P. Humphrey,<br />

(also NY, Bartleby.com 1999).<br />

sweetcocoa (2005) is http://homepage.mac.com/sweetcocoa/lapcop/.<br />

Symantec (2004) is http://www.symantec.com/index.htm.<br />

takedown (2004) is http://www.takedown.com/.<br />

technet (2004) is http://www.micros<strong>of</strong>t.com/technet/archive/<br />

community/columns/security/essays/10imlaws.mspx.


360 Bibliography<br />

Thomas, Steven A. (2000) SSL and TLS Essentials: Securing the Web, New<br />

York, John Wiley & Sons.<br />

Thompson, Ken (1984) “Reflections on Trusting Trust,” Communications Of<br />

The ACM, 27(8)172–180.<br />

Toynbee, Arnold J. (1952) Greek Historical Thought: A Mentor Book, New<br />

York, The New American Library <strong>of</strong> World Literature.<br />

TransUnion (2005) is https://www.freecreditpr<strong>of</strong>ile.com/.<br />

Trithemius, Johannes (1606) Steganographia. Available (for private use only)<br />

from URL http://www.esotericarchives.com/tritheim/stegano.htm.<br />

truste (2005) is http://www.truste.org/.<br />

Unicode (2005) is http://www.unicode.org.<br />

Unicode Standard (1996) The Unicode Standard, Version 2.0, Reading, Mass.,<br />

Addison-Wesley.<br />

van Eck, Wim (1985) “Electromagnetic Radiation from Video Display Units:<br />

An Eavesdropping Risk,” <strong>Computer</strong>s and <strong>Security</strong>, 4:269–286.<br />

Verisign (2004) is http://www.verisign.com/authentication/index.html.<br />

versiontracker (2005) is http://www.versiontracker.org/.<br />

Virus bulletin (2005) Virus Bulletin: The International Publication on <strong>Computer</strong><br />

Virus Prevention, Recognition, and Removal. Available online at<br />

http://www.virusbtn.com/magazine/.<br />

vmyths (2005) is http://www.vmyths.com/.<br />

vote-smart (2005) is http://www.votesmart.org/vsdm.html.<br />

Vupen (2009) is http://www.vupen.com/english/advisories/2009/2891.<br />

WatermarkingWorld (2005) is located at watermarkingworld.org/.<br />

wayback (2010) is http://www.archive.org/web/web.php.<br />

Wayner, Peter (1992) “Mimic Functions,” Cryptologia, XVI(3)193–214, July.<br />

Wayner, Peter (2002) Disappearing Cryptography, 2nd edition, London, Academic<br />

Press.<br />

Webopedia (2004) is http://www.webopedia.com/.<br />

webroot (2004) is http://www.webroot.com/.<br />

Western digital (2004) is<br />

http://www.wdc.com/en/products/Products.asp?DriveID=35.<br />

Wild List (2004) is http://www.wildlist.org/.<br />

Witten, Ian H. (1987) “<strong>Computer</strong> (In)security: Infiltrating Open Systems,”<br />

ABACUS, 4(4)7–25. Also available from cryptome.org/compinsec.htm and<br />

in [Denning 90].


Bibliography 361<br />

Wright, Peter (1989) Spycatcher: The Candid Autobiography <strong>of</strong> a Senior<br />

Intelligence Officer, New York, Random House.<br />

Wyatt, Allen (2004) Cleaning Windows XP for Dummies, 2nd edition, New<br />

York, John Wiley & Sons.<br />

Zalewski, Michal (2005) Silence on the Wire: A Field Guide to Passive Reconnaissance<br />

and Indirect Attacks, San Francisco, CA, No Starch Press.<br />

Zimmermann, Philip (1995) PGP Source Code and Internals, Cambridge,<br />

Mass., MIT Press.<br />

Zimmermann, Philip (2001) is http://www.philzimmermann.com/.<br />

When you re-read a classic you do not see in the book more than<br />

you did before. You see more in you than there was before.<br />

—Clifton Fadiman


Index<br />

This long index reflects this author’s belief that a detailed index is invaluable<br />

in a scientific/technical book. Any mistakes, inaccuracies, and omissions<br />

found in the index and reported to the author will be included in the errata<br />

list and corrected in any future editions <strong>of</strong> the book.<br />

acoustic keyboard eavesdropping, 20–22,<br />

294<br />

activity monitor (and viruses), 90<br />

activity monitor (anti-virus s<strong>of</strong>tware),<br />

xiv, 163–165<br />

Ad-Aware (anti-spyware s<strong>of</strong>tware), 243<br />

Adams, Douglas (1952–2001), xix<br />

add-on virus, 59<br />

Advanced Encryption Standard (AES),<br />

331, 333<br />

adware, xiv, 233, 237, 248–249<br />

and children, 282<br />

definition <strong>of</strong>, 248<br />

spyware, xiv, 250–252<br />

AES, see advanced encryption standard<br />

affiliate network, 240<br />

Agrawal, Rakesh, 34<br />

Alureon trojan horse, 323<br />

Anna Kournikova worm, 312, 313<br />

anonymizer.com (useful internet service),<br />

260, 278<br />

anonymizers, 278–279<br />

anonymous proxy server, 238, 260–261<br />

anti-phishing toolbars, 267<br />

anti-phishing working group, see APWG<br />

anti-spyware s<strong>of</strong>tware, 243<br />

anti-virus s<strong>of</strong>tware, xiv, 157–168, 316,<br />

326<br />

activity monitor, 163–165<br />

and polymorphic engines, 44<br />

as preventive measure, 167<br />

behavior blocker, 159<br />

behavior checkers, 163–165<br />

BSI, 55<br />

checks CRC, 86<br />

compressed files, 158, 163<br />

decompress .com files, 146<br />

defeated by stealth, 91<br />

disassembled, 87<br />

disinfecting, 163<br />

file size modified, 86<br />

firewall, 167<br />

fooled, 84<br />

generic, 163–165<br />

integrity checker, 159<br />

modified file size, 84<br />

MTX malware, 148<br />

mutating viruses, 88<br />

not transparent, 160<br />

preventive techniques, 165–168<br />

scanner, 345<br />

specific, 80


364 Index<br />

tail chasing, 89<br />

updates, 10, 151<br />

virus signatures, 337<br />

virus specific, 161–163<br />

antibody, 80<br />

Apple virus, 303<br />

APWG (anti-phishing working group),<br />

267<br />

Aristotle (384–322 b.c., no hacker), 291<br />

ASCII (character code), 331, 345<br />

Asonov, Dmitri, 22<br />

attachments to email, 49, 50, 72, 89, 157,<br />

166, 226, 326<br />

identity theft, 227<br />

keystroke loggers, 244<br />

macro, 141, 309<br />

MTX, 148<br />

SirCAM, 140<br />

spyware, 257<br />

attack (on encrypted or hidden data),<br />

332<br />

audit<br />

anti-virus tool, 144, 155<br />

network traffic control, 120, 205<br />

Austen, Jane (1775–1817), v<br />

authentication, xiv, 209–231, 332<br />

biometrics, xiv, 209–216, 330<br />

consumer, 209, 269<br />

passwords, 216–228<br />

author’s email address, xiv<br />

backdoor, 293<br />

code red II, 102<br />

definition <strong>of</strong>, 38, 332<br />

in a campus, 230<br />

in literature, 243<br />

in MTX, 148<br />

in spyware, 242<br />

into an organization, 230<br />

opener virus, 146<br />

backup (files), xiv, 26, 73–75, 90, 127,<br />

155–156, 168, 325, 327<br />

bacterium (computer virus), 332<br />

Baez, Joan Chandos (1941–), 87<br />

Baggins, Frodo, 305<br />

bagle worm, 316, 317<br />

Baldacci, David (1960–), 323<br />

Bandoo (Trojan horse), 319<br />

Banks, Iain Menzies (1954–), 299<br />

Barry, Dave, 327<br />

basic input/output system, see BIOS<br />

Bates, Jim, 116<br />

baza virus, see boza virus<br />

bcc field in email, 198<br />

behavior blocker (anti-virus s<strong>of</strong>tware),<br />

159<br />

behavior checker (anti-virus s<strong>of</strong>tware),<br />

163–165<br />

Bell-LaPadula model, 77–78<br />

Bernanke, Ben Shalom (1953–), 258<br />

Bertillon, Alphonse (1853–1914), 210<br />

biometric authentication, xiv, 209–216,<br />

330, 333<br />

BIOS (basic input/output system), 53,<br />

83<br />

bitrate (definition <strong>of</strong>), 333<br />

BlackBerry (flaw in certificate handling),<br />

ix<br />

Blackmal, see Nyxem worm<br />

Blair, Eric Arthur (George Orwell, 1903–<br />

1950), 299<br />

Blaster worm, 315<br />

Bohmini.A Trojan horse, 321<br />

boot sector infector, see BSI<br />

boot sector viruses, 52, 54–57, 83–84<br />

booting a computer, 38, 54, 63, 94, 96,<br />

139, 167, 333<br />

bootstrap loader, 54–55, 70, 343<br />

botnets, 75, 173–175<br />

bouncing ball virus, see ping-pong virus<br />

boza virus, 307<br />

brain virus, 40, 56, 138–139, 303<br />

detection <strong>of</strong>, 305<br />

break interrupt, 94, 164<br />

Britney Spears worm, 313<br />

Brunner, John, 99, 303<br />

BSI (boot sector infector), 52, 54–57, 83–<br />

84<br />

buffer overflow, see buffer overrun (security<br />

weakness)<br />

buffer overflow vulnerability, 67, 317,<br />

333<br />

buffer overrun (security weakness), 66–<br />

69, 101, 118, 207, 333<br />

Bugbear worm, 242, 314<br />

bugging a compiler, xiii, 127–135


BugMeNot.com (useful internet service),<br />

260<br />

Buonarroti, Miguel Angel (Michelangelo<br />

1475–1564), 139–140<br />

Burch, Frank (and iris scan), 213<br />

Burger virus, 304<br />

Burgess, Anthony (John Anthony Burgess<br />

Wilson, 1917–1993), 299<br />

Burton, Robert (1577–1640), xv<br />

cabir worm, 318<br />

Caesar cipher, 333<br />

Campbell, Robert, 156<br />

Card, Orson Rega, 297, 301<br />

Carter, David L., 308<br />

Carvalho, David Nunes (1848–1925), 231<br />

Casanova, Giacomo Girolamo (1725–<br />

1798), 54<br />

cascade virus, 305<br />

Catlett, Jason, 275<br />

CCS (cryptographic checksum), 173<br />

cell telephone security threats, 317–318<br />

chain letters, 176–177<br />

Chargen (and DoS), 200<br />

Chernobyl virus, see CIH virus<br />

children’s online privacy, 279–284, 330<br />

Christmas card virus, 144, 155<br />

CIH virus, 59, 309<br />

ciphers<br />

monoalphabetic substitution, 340<br />

one-time pad, 340<br />

polyalphabetic substitution, 341<br />

public-key, 342<br />

Vernam, 345<br />

Clancy, Thomas Leo Jr. (1947–), 253<br />

Clarke, Arthur Charles (1917–2008), 346<br />

classification <strong>of</strong> viruses, 51–54<br />

click <strong>of</strong> allegiance, 240, 246, 252<br />

code red I worm, 101–102, 313<br />

code red II worm, 102–103<br />

Cohen, Frederick B. (origins <strong>of</strong> virus),<br />

42, 303<br />

Commanger, Henry Steele (1902–1998),<br />

3<br />

companion virus, 43, 51, 61–62, 334<br />

compiler (rigging or bugging), xiii, 127–<br />

135<br />

computer crime, viii<br />

Index 365<br />

computer emergency response team<br />

(CERT), 14<br />

computer operations, audit, and security<br />

technology (COAST), 14<br />

computer security (laws <strong>of</strong>), 6–12, 290,<br />

325–327<br />

Concept virus, 307<br />

concluding remarks, 325–330<br />

conficker worm, vii, 322<br />

consumer sentinel network (CSN), 255<br />

continuous-tone image, 338<br />

cookies (Internet), 263–264<br />

anonymizing, 279<br />

coregistration (email addresses), 190–<br />

191<br />

Cornwall, Hugo (Peter Sommer), 263<br />

Counterpane Internet <strong>Security</strong>, 14<br />

covert channels, 77–80<br />

CRC (cyclic redundancy code), 86, 173,<br />

338<br />

credit and bank monitoring services,<br />

266–267<br />

Crichton, John Michael (1942–2008),<br />

243<br />

cross site scripting (XSS), 318<br />

cruncher virus, 86, 145–146, 158<br />

cryptanalysis (definition <strong>of</strong>), 334<br />

cryptanalyst (definition <strong>of</strong>), 335<br />

cryptographer (definition <strong>of</strong>), 335<br />

cryptographic checksum, see CCS<br />

cryptography<br />

definition <strong>of</strong>, 335<br />

public-key, 342<br />

rules <strong>of</strong>, 339<br />

cryptology (definition <strong>of</strong>), 335<br />

cyclic redundancy code, see CRC<br />

daemon (a background process), 118,<br />

335<br />

DAME, see polymorphic engine<br />

Dark Avenger.1800 virus, 305<br />

data diddling, 74, 78, 305, 335<br />

data encryption standard (DES), 333,<br />

335<br />

data wiping, 262<br />

Daugman, John, 213<br />

Day, Paul, 31


366 Index<br />

DDoS (distributed denial <strong>of</strong> service),<br />

193, 195, 239, 240, 322<br />

defacing web sites, 184, 228–229<br />

degaussing, 261<br />

denial <strong>of</strong> service, see DoS<br />

dictionary attack (password cracking), 9,<br />

147, 219, 221–222, 322<br />

Diffie–Hellman–Merkle key exchange,<br />

335<br />

digital forensics, 285–286<br />

digital photo frame (a source <strong>of</strong> malware),<br />

320<br />

digital signature, 87<br />

digrams, 300, 301, 336<br />

direct mail sender (spamware), 187<br />

direct memory access (DMA), 95<br />

disassembler, 115<br />

definition <strong>of</strong>, 161<br />

disassembling<br />

a program, 115, 128<br />

a virus, 52, 161–162<br />

a worm, 112, 115<br />

anti-virus s<strong>of</strong>tware, 87<br />

rogue s<strong>of</strong>tware, 114<br />

disaster recovery planning, 26, 32<br />

disinfecting files, 163<br />

disk directory, 39<br />

and boot sector, 54<br />

and brain virus, 138<br />

damaged, 127<br />

modified by viruses, 55, 59, 85<br />

search rules, 61<br />

disposable email address (DEA), 33<br />

DNS<br />

attacked, 193–195<br />

poisoning, 184, 228<br />

domain name server, see DNS<br />

DoS (denial <strong>of</strong> service), viii, xiv, 2, 73,<br />

75, 193, 199–202, 204, 311, 313<br />

blaster, 315<br />

MIM attack, 184<br />

mydoom, 315<br />

stone age, 7<br />

drive-by download, 242, 244, 257<br />

dual-infection virus, see multipartite<br />

virus<br />

duh (iPhone worm), 121<br />

dumpster diving, 27, 226, 294, 336<br />

Dunaway, Sean, 196<br />

duts virus, 318<br />

easter eggs (surprise s<strong>of</strong>tware), 81<br />

eavesdropping spying, 294<br />

eBlaster (spy s<strong>of</strong>tware), 8<br />

Echo (and DoS), 200<br />

Egan, Greg, 318<br />

Elk Cloner virus, 303<br />

email address <strong>of</strong> author, xiv<br />

email attachments (and malware), 49,<br />

50, 72, 89, 157, 166, 226, 326<br />

identity theft, 227<br />

keystroke loggers, 244<br />

macro, 141, 309<br />

MTX, 148<br />

SirCAM, 140<br />

spyware, 257<br />

email obfuscation, 192<br />

encryption<br />

one-way, 218–219<br />

reasons for, 12<br />

entry point obscuring, see EPO<br />

EPO (entry point obscuring), 59<br />

in MTX, 148<br />

error-control codes, 28, 171<br />

ethernet, 336<br />

ethical issues, 189, 214, 275<br />

EULA (end user license agreement), see<br />

s<strong>of</strong>tware license<br />

examples <strong>of</strong> malware, xiii, 137–149<br />

exclusive OR (XOR), 336, 346<br />

exploit, 294, 336<br />

extension <strong>of</strong> a file name (as a security<br />

measure), 168<br />

face recognition (biometric authentication),<br />

214<br />

Fadiman, Clifton (1902–1999), 361<br />

false authority syndrome, 176<br />

Federal Trade Commission (FTC), 233,<br />

244<br />

file infector viruses, 57–61, 84–90, 337,<br />

341, 342<br />

file permission in UNIX, 75, 76<br />

finger (UNIX utility), 99, 118, 304<br />

fingerprints (biometric authentication),<br />

211–212


firewalls, 180, 202–205, 242, 246, 259,<br />

326<br />

as preventive measure, 167<br />

Flash security weakness, 207–208<br />

flip virus, 305, 306<br />

flip-2343 virus, 305<br />

floppy disks (obsolete), 42, 137<br />

Ford, Richard, 15<br />

Franklin, Benjamin (1706–1790), 9<br />

free gifts, 191, 277<br />

Friday the 13th (origins <strong>of</strong>), 304<br />

Frodo lives virus, 305<br />

Gabrilovich, Evgeniy, 270<br />

Galilei, Galileo (1564–1642, a hacker?),<br />

291<br />

Garbo, Greta (Greta Lovisa Gustafsson<br />

1905–1990), 274<br />

Gauss, Karl Friedrich (1777–1855), 262<br />

Gay, Jonathan, 207<br />

general application virus, 52<br />

geolocation, 274–276<br />

Gerrold, David (1944–), 41, 42<br />

giga (definition <strong>of</strong>), 337<br />

glass eye, 213<br />

Gontmakherm, Alex, 270<br />

good time virus, 176<br />

Goodin, Jeffrey Brett, 269<br />

google desktop search, 249–250<br />

Gordon, Sarah (virus researcher), 45,<br />

306<br />

Grampp, F. T., 221<br />

Grant, David, 34<br />

grayscale image, 338<br />

GT-Spo<strong>of</strong> virus, 176<br />

Guzman, Onel de (LoveLetter writer?),<br />

46<br />

hacker, x, 291–297<br />

hackers tools<br />

dumpster diving, 294<br />

eavesdropping spying, 294<br />

exploit, 294, 336<br />

optical spying, 294<br />

root kit, 295, 343<br />

scavenging, 294<br />

shoulder spying, 294<br />

side-channel attacks, 294<br />

Index 367<br />

sniffer, 294, 344<br />

social engineering, 294, 344<br />

Trojan horse, 293, 344<br />

virus, 293, 345<br />

vulnerability scanner, 294, 346<br />

worm, 293, 346<br />

hacktivist, 293<br />

halon (fire extinguisher gas), 23<br />

Hardy, Thomas (1840–1928), 307<br />

Harley, David, 4<br />

harvesting email addresses, 191<br />

Havel, Václav (1936–), 299<br />

Heinlein, Robert Anson (1907–1988), 27<br />

Hess, Markus (the wily hacker, 1972–),<br />

295<br />

hiding data (how to), 12–13<br />

hiding methods for viruses, 83–87<br />

hoaxes, xiv, 175–177, 308<br />

Clinton, 308<br />

Clipper, 308<br />

Gingrich, 308<br />

good times, 307<br />

Lecture, 308<br />

SPA, 309<br />

Homer (Oµηρoς, Greek poet), 123<br />

homograph threat, 270–271<br />

honeypot, 295<br />

hooks, see interrupts (and viruses)<br />

how to hide data, 12–13<br />

Howard, Jane, 208<br />

Hughes, Howard Robard (1905–1976),<br />

11<br />

I/O interrupt, 94<br />

Ibragimov, Ruslan, 187<br />

ICMP (Internet control message protocol),<br />

201<br />

IDEA (block cipher), 333<br />

identity theft, xiv, 3, 11, 236, 255–271<br />

iframe security flaw, 68–69<br />

ikee (iPhone worm), 121<br />

ILOVEYOU virus, see love bug virus<br />

image<br />

continuous-tone, 338<br />

grayscale, 338<br />

infomediaries, 278–279<br />

Ing-hau Chen (CIH virus creator), 309


368 Index<br />

integrity checker (anti-virus s<strong>of</strong>tware),<br />

159<br />

intelligence<br />

artificial, 4, 67, 214, 283, 288<br />

artificial (lack <strong>of</strong>), 6<br />

human, 166<br />

military, 17<br />

natural, 21, 224, 340<br />

international standards organization, see<br />

ISO<br />

Internet control message protocol, see<br />

ICMP<br />

Internet relay chat (IRC), 174<br />

Internet research provider (IRP), 251<br />

Internet worm, xiii, 40, 76, 80, 99, 117–<br />

120, 155, 221, 304<br />

interrupts, 39<br />

activity monitor, 164–165<br />

and viruses, 49, 52–54, 60, 70–71, 91–<br />

96<br />

break, 94, 164<br />

I/O, 94<br />

invalid instruction, 58, 94<br />

memory protection violation, 93<br />

timer, 39, 93<br />

interstitials (ads), 248<br />

intrusive virus, 52, 60<br />

invalid instruction interrupt, 94<br />

iPhone (and worms), 120<br />

IRC, see Internet relay chat<br />

iris scan (biometric authentication),<br />

212–213<br />

ISO, 338, 339<br />

ISO 7816 smart card standard, 215<br />

Italian virus, see ping-pong virus<br />

jailbreaking (iPhone or iPod), 121<br />

Java applets (and Trojans), 128<br />

Jaynes, Jeremy, 195<br />

Jennifer Lopez worm, 314<br />

Jerusalem virus, 304<br />

JFIF, 66, 67, 338<br />

Johnson, Lyndon Baines (1908–1973),<br />

290<br />

jokes, xii, 16, 40, 47, 124, 140, 266, 271,<br />

288, 296, 329<br />

JPEG, 338<br />

vulnerability to viruses, 65–67, 167,<br />

317<br />

JPGDownloader virus, 66, 317<br />

JPGTrojan virus, 66, 317<br />

Jurassic Park (novel), 243<br />

Kahn, David A. (1930–), 22<br />

Kaiser, Henry John (1882–1967), 95<br />

Kamkar, Samy (worm author), 319<br />

Kaspersky, Eugene (Evgeniy Valentinovich,<br />

1965–), 125, 197, 242<br />

Katz, Andra J., 308<br />

Kerckh<strong>of</strong>fs’ principle, 10, 339<br />

Kerckh<strong>of</strong>fs, Auguste, see Nieuwenh<strong>of</strong>f<br />

Kernell, David C., 223<br />

key (in cryptography)<br />

asymmetric, 331, 342<br />

key space, 339<br />

Keychain (Macintosh utility), 220<br />

keystroke loggers, 20, 21, 96, 125, 233,<br />

235, 237, 242, 244, 264, 293<br />

Klez worm, 314<br />

Kneber botnet, xi–xii<br />

Knuth, Donald Ervin (1938–), 374<br />

Koobface worm, 322<br />

Krause, Doug, 140<br />

laptop security, 8, 29–31<br />

laroux virus, 308<br />

lasco worm, 47, 318<br />

laws <strong>of</strong> computer security, 6–12, 290,<br />

325–327<br />

Lee, Bert Gentry (1942–), 346<br />

l33t Speak, xiv, 295, 299–301, 339<br />

LeGuin, Ursula Kroeber (1929–), 299<br />

Lehigh virus, 137–138, 304<br />

Levin, Jacob, 330<br />

Li, Hao (author <strong>of</strong> Saft Lite), 271<br />

license (s<strong>of</strong>tware), 246, 248<br />

link virus, 339<br />

logic bomb, 339<br />

definition <strong>of</strong>, 38, 41<br />

love bug virus, 310<br />

LoveLetter virus, 46<br />

Luján, Rosa Elena, 11<br />

lying (how to), 33<br />

Müller-Uri, Ludwig, 213


Macintosh<br />

file forks, 84<br />

file permissions, 76<br />

FireWire target disk mode, 76<br />

opener virus, 146–147<br />

viruses, 142–143, 328<br />

vulnerability to viruses, 31, 62, 72,<br />

308, 317<br />

Witty worm, 316<br />

macro<br />

definition <strong>of</strong>, 52, 63<br />

security weakness, 64<br />

macro virus, 43, 50, 52, 63–65, 77, 82,<br />

141, 167, 307, 309, 339<br />

malware<br />

definition <strong>of</strong>, 37, 293<br />

examples, xiii, 137–149<br />

man in the middle, see MIM<br />

mantrap (secure access), 24<br />

marketscore (researchware), 250–252<br />

McLuhan, Herbert Marshall (1911–<br />

1980), 229<br />

McMahon, Edward Peter Leo (6 March<br />

1923–2009), 140<br />

Mebroot, see Torpig trojan horse<br />

mega (definition <strong>of</strong>), 340<br />

Melissa virus, 48, 64, 141–142, 309, 313<br />

memory protection interrupt, 93<br />

memory resident virus, 53, 70, 95, 340<br />

Michaelangelo virus, 74, 139–140, 306<br />

Michelangelo (Michaelangelo), see Buonar-<br />

roti<br />

Micros<strong>of</strong>t Word (and macro viruses), 63–<br />

65<br />

Miller, Henry (1891–1980), 35<br />

MIM (man in the middle), 183–184<br />

misdirection virus, 59, 85<br />

Mitnick, Kevin David (1963–), 182–183<br />

Mocmex trojan horse, 320<br />

monoalphabetic substitution ciphers,<br />

340<br />

Morris R. H., 221<br />

Morris, Robert Tappan (1965–), 120<br />

Motta, Giovanni (1965–), xv<br />

MtE (polymorphic engine), 306<br />

MTX virus/worm, 89, 148–149<br />

multipartite virus, 52, 62–63, 340<br />

mutating viruses, 88–89, 158, 162<br />

Index 369<br />

Muuss, Mike (ping author), 202<br />

MyDoom worm, 315, 317<br />

National Institute <strong>of</strong> Standards and<br />

Technology (NIST), 331, 340<br />

National Rifle Association (NRA), 46,<br />

289<br />

national security agency, see NSA<br />

netsky worm, 316<br />

network security, xiv, 179–271<br />

nimda virus/worm, 103, 311<br />

Nineteen Eighty-Four (novel), 299<br />

NIST, see national institute <strong>of</strong> standards<br />

and technology<br />

nonoverwriting virus, 51, 60, 84<br />

North, Oliver (1943–), 261<br />

Norton AntiVirus, 306<br />

novarg worm, 315<br />

NOVEC 1230 (fire extinguisher fluid), 23<br />

NSA (national security agency), 340<br />

Nyxem worm, 319<br />

obfuscation, 340<br />

<strong>of</strong> email, 192<br />

Odysseus (son <strong>of</strong> Laertes), 123<br />

one-time pad cipher, 340<br />

one-time password, 269<br />

one-way encryption, 218–219<br />

online<br />

privacy, xiv, 273–284<br />

trust, xiv, 286–290, 330<br />

online data backup, 26, 155<br />

opener virus, 146–147<br />

operating system, 38–40<br />

definition <strong>of</strong>, 7, 38, 90, 341<br />

its maintenance, 127, 326<br />

open source, 165<br />

protection provided by, 8, 75, 76<br />

operating system virus, 52<br />

optical spying, 294<br />

OSX/Leap-A trojan horse, 319<br />

OSX/Oompa-A, see OSX/Leap-A<br />

overwriting virus, 52, 57–59, 84, 91<br />

Palin, Sarah Louise (1964–), 223<br />

Panov, Alexey, 187<br />

parasiteware (definition <strong>of</strong>), 240<br />

parasitic virus, 337, 341<br />

Pareto principle, 58


370 Index<br />

password cracking, xiv, 3, 9, 216–228<br />

dictionary attack, 9, 147, 219, 221–<br />

222, 322<br />

password encryption, 216–220<br />

password keeper (Windows utility), 220<br />

passwords, 216–228, 325<br />

bad, 220–221<br />

default, 221<br />

secure, 222–225<br />

Paxson, Vern, 100<br />

payload (<strong>of</strong> rogue s<strong>of</strong>tware), 41, 73–81,<br />

108, 109, 111, 115, 145, 172<br />

PDF JBIG2 flaw, 207<br />

perturbed data (and privacy), 34, 237<br />

pest control (and security), 12<br />

pestware, 237<br />

PGP s<strong>of</strong>tware (pretty good protection),<br />

244<br />

phishing, xiv, 264–271, 341<br />

<strong>of</strong> passwords, 118<br />

phreaker, 230<br />

physical threats, 22–29<br />

data integrity, 27<br />

data protection, 25<br />

disaster-recovery plan, 26<br />

electrical power, 22<br />

fire, 23<br />

hard copy, 27<br />

magnetic fields, 24<br />

mantrap, 24<br />

principles <strong>of</strong> security management, 28<br />

spies, 27<br />

static electricity, 25<br />

theft, 23<br />

user tracking, 25<br />

pif (program information file), 148<br />

Pile, Christopher (virus author), 307<br />

ping <strong>of</strong> death, 201–202<br />

ping-pong virus, 305<br />

PocketPC security threats, 318<br />

political contributions (and privacy),<br />

241<br />

polyalphabetic substitution ciphers, 341<br />

polymorphic engine, 44, 306<br />

MtE, 306<br />

polymorphic virus, 341<br />

polymorphism in viruses, 44, 88–89, 305,<br />

306<br />

pop-ups (ads), 248<br />

port scanner, xiv, 3, 180–181<br />

Postini (Google email services), 186<br />

Powell, Anthony Dymoke (1905–2000),<br />

(Colophon)<br />

PowerPoint (security flaw in), x<br />

privacy (children), 279–284, 330<br />

privacy (online), xiv, 273–284<br />

privacy protection, 33–35<br />

processor status flag (and activity monitor),<br />

164<br />

program counter (PC), 92<br />

program information file, see pif<br />

program virus, 342<br />

programs (self printing), 40, 129<br />

proxy server, 260–261<br />

PS-MPC, see virus code generation<br />

rabbit (computer virus), 38, 73, 342<br />

Ralsky, Alan (c.1945–), 188, 190<br />

Ramdhani, Denny Yanuar (good-virus<br />

writer), 305<br />

Raymond, Eric Steven (1957–), 291, 297<br />

Recording Industry Association <strong>of</strong> America,<br />

see RIAA<br />

redundancy and error-control codes, 171<br />

remote reporting, xiv, 245–248<br />

remote-access Trojan (RAT), 195<br />

renepo, see opener virus<br />

Reno, Janet (1938–), 292<br />

replay (network attack), 184–185<br />

researchware (spyware), xiv, 233, 237,<br />

250–252<br />

resident virus, 96<br />

retina scan (biometric authentication),<br />

213–214<br />

retrovirus, 160<br />

RIAA (and spyware), 238–239<br />

Rifkin, Stanley Mark (1946–), x<br />

rigging a compiler, xiii, 127–135<br />

Ritchie, Dennis MacAlistair (1941–), 127<br />

Rochefoucauld, François de La (1613–<br />

1680), 149<br />

Rogers, William Penn Adair (1879–<br />

1935), 135<br />

rogue s<strong>of</strong>tware, 37–177, 342<br />

cell telephones, 317–318<br />

defenses against, xiii, 151–177


definition <strong>of</strong>, 293<br />

easter eggs, 81<br />

payload, 41, 73–81, 108, 109, 111, 115,<br />

145, 172<br />

PocketPC, 318<br />

prevention <strong>of</strong>, xiii, 151–177<br />

root kit, 295, 343<br />

router security, 205–206<br />

RSA cryptography<br />

encryption (and timing attacks), 20<br />

RSA SecurID, 269<br />

RSA <strong>Security</strong>, 14, 342, 343<br />

Rush Hour virus, 304<br />

Rush-Killer virus alert, 176<br />

Rustock.C spambot, 321<br />

salt (in a password), 217, 219<br />

Samy XSS worm, 318<br />

Sandmaier, Marian, 271<br />

sasser worm, 317<br />

Scarfo, Nicodemo, 237<br />

scavenging, 294<br />

Schneier, Bruce (1963–), 14<br />

scores virus, 142–143, 328<br />

screen capture, 20, 125, 293<br />

script virus, 63–65<br />

secure passwords (guidelines for), 222–<br />

225<br />

secure socket layer, see SSL<br />

security (definition <strong>of</strong>), 1<br />

security weakness<br />

and CCDC, 116<br />

Bell-LaPadula model, 78<br />

buffer overrun, 66–69, 101, 118, 207,<br />

333<br />

finger, 99<br />

iframe, 68–69<br />

in BIND, 184<br />

in TCP, 181<br />

in UNIX, 117<br />

JPEG, 65<br />

list <strong>of</strong>, 151<br />

macros, 64<br />

network vulnerability, 179<br />

open source s<strong>of</strong>tware, 165<br />

social engineering, 225<br />

spyware, 252<br />

war dialing, 230<br />

Index 371<br />

worms looking for, 103<br />

security weakness (examples <strong>of</strong>), ix–x<br />

self-printing programs, 40, 129<br />

self-referencing s<strong>of</strong>tware, 132<br />

sendmail (UNIX utility), 99, 118, 304<br />

Shakira worm, 313<br />

shareware viruses, 154<br />

shell virus, 51, 57<br />

Shimomura, Tsutomu, 182–183<br />

shoulder spying, 294<br />

shredding, 24, 27, 226, 258, 261–263, 330<br />

side-channel attacks, 17–22, 294<br />

timing attacks, 20<br />

Simenon, Georges (1903–1989), 304<br />

simple virus, 52, 60<br />

Sinowal, see Torpig trojan horse<br />

Sircam worm, 140–141, 312<br />

Sklodowska-Curie, Maria (1867–1934),<br />

291<br />

Skulls.A worm, 317<br />

slammer worm, 314<br />

smart card (biometric authentication),<br />

214–216, 268<br />

Smathers, Jason, 196<br />

Smith, David L. (Melissa writer), 48,<br />

142, 313<br />

smurf attack, 202<br />

Snepscheut, Jan L. A. van de, 159<br />

sniffer, 344<br />

sniffing, 179, 226–227, 294<br />

snoopware, 255<br />

sobig worm, 186, 315<br />

social engineering, 225–226, 278, 294,<br />

344<br />

definitions, 226<br />

in worms, 313<br />

mydoom, 317<br />

social security number, 221, 258, 262<br />

and identity theft, 256–257<br />

and passwords, 222<br />

on checks, 259<br />

s<strong>of</strong>tware capable <strong>of</strong> damaging hardware,<br />

43<br />

s<strong>of</strong>tware license, 246, 248<br />

Sommer, Peter, see Cornwall, Hugo<br />

spam, 75, 186–198<br />

spam proxie (hijacked computer), 186<br />

spamware (malware), 186


372 Index<br />

spawning virus, see companion virus<br />

spider, see Web crawling<br />

spo<strong>of</strong>s, xiv, 3, 181–183, 344<br />

sobig, 315<br />

SPYBLOCK (spyware legislation), 233–<br />

234<br />

Spybot (anti-spyware s<strong>of</strong>tware), 243<br />

spyware, xiv, 3, 20, 27, 73, 125, 233–253,<br />

344<br />

adware, xiv, 233, 248–249<br />

and terrorism, 239–240<br />

definition <strong>of</strong>, 234–235, 293<br />

google desktop search, 249–250<br />

legislation, 233–235<br />

political contributions, 241<br />

remote reporting, xiv, 245–248<br />

researchware, xiv, 233, 237, 250–252<br />

ten basic facts, 252–253<br />

users <strong>of</strong>, 235–237<br />

Srikant, Ramakrishnan, 34<br />

SSH (secure shell), 121<br />

SSL (secure socket layer), 184, 343<br />

stages worm, 310<br />

Staniford, Stuart, 100<br />

staog virus, 308<br />

statistical distribution (and privacy), 34<br />

stealth iBot PC monitor, 8<br />

stealth technique <strong>of</strong> viruses, 84, 90–91<br />

Stoll, Clifford, xiii, 221, 225<br />

stoned virus, 304<br />

Storm Worm, 320<br />

StrangeBrew virus, 309<br />

Stration worm, 319<br />

Strunk, William Jr. (1869–1946), xiii<br />

Sutton, Willie (bank robber 1901–1980),<br />

xi<br />

Swiss Amiga virus, 143–144<br />

system (a vague term), xii, 118<br />

system administration, networking, and<br />

security (SANS), 14<br />

tail-chasing effect, 89<br />

Tempest (NSA keyboard eavesdropping),<br />

22<br />

tequila virus, 306<br />

ternary digit, see trit<br />

terrorism (and spyware), 239–240<br />

The Dispossessed (novel), 299<br />

The Lord <strong>of</strong> the Rings (novel), 299, 305<br />

The Memorandum (novel), 299<br />

The Player <strong>of</strong> Games (novel), 299<br />

Thompson, Kenneth (1943–), 127<br />

time bomb, 344<br />

definition <strong>of</strong>, 38, 41<br />

time slices, 94<br />

timeline <strong>of</strong> viruses, xii, xiv, 303–323<br />

timer interrupt, 39, 93<br />

timing attacks, 20<br />

Tippett, Peter, ix<br />

Tolkien, John Ronald Reuel (1892–<br />

1973), 299, 305<br />

Toquimos.A worm, 317<br />

Torpig trojan horse, 321<br />

Torvalds, Linus Benedict (1969–), 292<br />

trapdoor, 96–97, 344, see also backdoor<br />

definition <strong>of</strong>, 97<br />

traps, see interrupts (and viruses)<br />

Traven, B. (1890?–1969), 11<br />

tridecaphobia (fear <strong>of</strong> 13), 304<br />

tristate virus (macro), 310<br />

Trojan horse, xiii, 43, 123–135, 271, 293,<br />

344<br />

definition <strong>of</strong>, 38, 41<br />

living, x<br />

ultimate parasite, 133<br />

trust (online), xiv, 286–290, 330<br />

Unicode (character code), 331, 345<br />

UNIX, 345<br />

permissions, 75<br />

vulnerability to viruses, 71<br />

unsolicited commercial email (UCE),<br />

186<br />

unsolicited email, 177, 186, 196, 198<br />

URL-shortening, 206–207<br />

user (meaning <strong>of</strong> the term), xiii, 327<br />

users <strong>of</strong> spyware, 235–237<br />

vaccine for viruses, 170<br />

VBS.KAK worm, 50, 145<br />

VBSWG virus kit, 313<br />

Velasco, Marcus (virus writer), 47<br />

VeriSign unified authentication scheme,<br />

269<br />

Vernam cipher (one-time pad), 345<br />

Vienna virus, 304


Virdem virus, 304<br />

virus, xiii, 37–96, 293, 345<br />

add-on, 59<br />

and interrupts, 49, 52–54, 60, 70–71,<br />

91–96<br />

antibody, 80<br />

Apple, 303<br />

bacterium, 332<br />

boot sector infector, 52, 54–57, 83–84<br />

boza, 307<br />

brain, 40, 56, 138–139, 303, 305<br />

Burger, 304<br />

cascade, 305<br />

Christmas card, 144, 155<br />

CIH, 59, 309<br />

classification, 51–54<br />

companion, 43, 51, 61–62, 334<br />

cruncher, 86, 145–146, 158<br />

Dark Avenger.1800, 305<br />

definition <strong>of</strong>, 38, 43, 62<br />

disassembling <strong>of</strong>, 161–162<br />

dual-infection, 62<br />

duts, 318<br />

Elk Cloner, 303<br />

file infector, 57–61, 84–90<br />

flip, 305, 306<br />

flip-2343, 305<br />

Frodo lives, 305<br />

general application, 52<br />

good time, 176<br />

GT-Spo<strong>of</strong>, 176<br />

hidden in an extra track, 55, 83<br />

hiding, 83–87<br />

hoaxes, xiv, 175–177, 307, 308<br />

in shareware, 154<br />

infect only large files, 84<br />

intrusive, 52, 60<br />

Jerusalem, 304<br />

jpeg vulnerability, 65–67, 167, 317<br />

JPGDownloader, 66, 317<br />

JPGTrojan, 66, 317<br />

laroux, 308<br />

Lehigh, 137–138, 304<br />

link, 339<br />

love bug, 310<br />

LoveLetter, 46<br />

Macintosh, 142–143, 328<br />

Index 373<br />

macro, 43, 50, 52, 63–65, 77, 82, 141,<br />

167, 309, 339<br />

Concept, 307<br />

Melissa, 48, 64, 141–142, 309, 313<br />

memory resident, 53, 70, 95, 340<br />

Michaelangelo, 74, 139–140, 306<br />

misdirection, 59, 85<br />

MTX, 89, 148–149<br />

multipartite, 52, 62–63, 340<br />

mutating, 88–89, 158, 162<br />

nimda, 311<br />

nonoverwriting, 51, 60, 84<br />

opener, 146–147<br />

operating system, 52<br />

overwriting, 52, 57–59, 84, 91<br />

parasitic, 337, 341<br />

ping-pong, 305<br />

plural <strong>of</strong>, 40<br />

polymorphic, 341<br />

polymorphism, 44, 88–89, 305, 306<br />

program, 342<br />

psychological factor, 84<br />

rabbit, 38, 73, 342<br />

resident, 96<br />

retrovirus, 160<br />

Rush Hour, 304<br />

Rush-Killer alert, 176<br />

scores, 142–143, 328<br />

script, 63–65<br />

shell, 51, 57<br />

simple, 52, 60<br />

SirCAM, 140–141<br />

spawning, 61<br />

special case <strong>of</strong> a Trojan horse, 43<br />

staog, 308<br />

stealth technique, 84, 90–91<br />

stoned, 304<br />

StrangeBrew, 309<br />

survives rebooting, 96<br />

Swiss Amiga, 143–144<br />

tequila, 306<br />

timeline, xii, xiv, 303–323<br />

tristate, 310<br />

vaccine, 170<br />

Vienna, 304<br />

Virdem, 304<br />

writers, 45–48<br />

virus code generation (PS-MPC), 306


374 Index<br />

virus construction lab (VCL), 306<br />

virus construction set (VCS), 306<br />

virus kit, 44, 160, 306, 312, 316<br />

PS-MPC, 306<br />

VBSWG, 313<br />

VCL, 306<br />

VCS, 306<br />

virus writers, 45–48<br />

voting principle (in hardware), 173<br />

vulnerability scanner, 294, 346<br />

W32.Dozer worm, 322<br />

Waledac bot, xi<br />

Walton, Gertrude, 239<br />

war dialers, 229–231<br />

origin <strong>of</strong> name, 230<br />

War Games (movie), 230<br />

warhead, see payload (<strong>of</strong> rogue s<strong>of</strong>tware)<br />

warm colors<br />

harder to read, 287<br />

preferred by readers, 287<br />

Warren, Francesca, xv<br />

Weaver, Nicholas C., 100<br />

Web crawling, 276–277<br />

Web site <strong>of</strong> this book, xiv<br />

webcamgate, 295<br />

Wheeler, Wayne, xv, (Colophon)<br />

Wilde, Oscar (1854–1900), 29<br />

Wit, Jan de (author <strong>of</strong> Anna Kournikova<br />

virus), 312<br />

Witten, Ian Hugh (1947–), 16<br />

Witty worm, 316<br />

worms, 99–121, 346<br />

Anna Kournikova, 312, 313<br />

bagle, 316<br />

Bagle.AY, 317<br />

Blaster, 315<br />

Britney Spears, 313<br />

Bugbear, 242, 314<br />

cabir, 318<br />

code red I, 101–102, 313<br />

code red II, 102–103<br />

conficker, vii, 322<br />

definition <strong>of</strong>, 38, 41, 99, 293<br />

ikee (iPhone, 121<br />

Internet, xiii, 40, 76, 80, 99, 117–120,<br />

155, 221, 304<br />

Jennifer Lopez, 314<br />

Klez, 314<br />

Koobface, 322<br />

lasco, 318<br />

Lasco.A, 47<br />

MyDoom, 315<br />

MyDoom.AI, 317<br />

netsky, 316<br />

nimda, 103<br />

novarg, 315<br />

Nyxem, 319<br />

Samy, 318<br />

sasser, 317<br />

Shakira, 313<br />

Sircam, 312<br />

Skulls.A, 317<br />

slammer, 314<br />

sobig, 186, 315<br />

stages, 310<br />

Storm, 320<br />

Toquimos.A, 317<br />

VBS.KAK, 50, 145<br />

W32.Dozer, 322<br />

Witty, 316<br />

www (Web), 339<br />

XSS, see cross site scripting<br />

Zanders, Leonardo Darnell, 258<br />

zero-day vulnerability (in Adobe Flash,<br />

208<br />

Zlob (Trojan horse), 319<br />

zombie computer, 75, 104, 193–195, 240<br />

spam proxie, 186<br />

I try to make the indexes to my books as complete as<br />

possible, or at least to give the illusion <strong>of</strong> completeness.<br />

—Donald E. Knuth<br />

http://www-cs-faculty.stanford.edu/˜knuth/help.html


Colophon<br />

The idea for this book was proposed to this author in early 2010 by Wayne<br />

Wheeler, the computer science editor <strong>of</strong> Springer Verlag. This book is based<br />

on Foundations <strong>of</strong> <strong>Computer</strong> <strong>Security</strong> which was written in late 2004 and<br />

early 2005. The material has been brought up to date and is based on the<br />

author’s own experience with computer security issues, on topics discussed<br />

in many books on computer security, and on material found on the Internet<br />

about recent problems and attacks and how to fight them. The chapter on<br />

cryptography has improved and extended material from [Salomon 03]. The<br />

many inserts with quotations have been included to liven up the book and<br />

also to push the text up or down in order to improve the page breaks.<br />

The book was designed by the author and was typeset by him<br />

in plain TEX (plus about 150 macros). The figures and diagrams<br />

were drawn in Adobe Illustrator. The following numbers convey<br />

an idea <strong>of</strong> the amount <strong>of</strong> work that went into the book:<br />

The book contains about 201,500 words, consisting <strong>of</strong> about 1,200,000<br />

characters.<br />

The text is typeset mainly in font cmr10, but about 30 other fonts were<br />

used.<br />

The raw index file has about 1900 items.<br />

There are about 190 cross references in the book.<br />

As the Preface promises, this is not a fact-free book.<br />

Nothing is more common (or inept) than blaming a novelist for not<br />

writing a book <strong>of</strong> a different sort from that he has actually produced.<br />

—Anthony Powell, Daily Telegraph, (26 January 1967)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!