home *** CD-ROM | disk | FTP | other *** search
- From: woodside@ttidca.TTI.COM (George Woodside)
- Newsgroups: comp.sys.atari.st,comp.sys.apple,comp.sys.mac,comp.sys.ibm.pc
- Subject: Virus 101: Chapter 3
- Date: 13 Mar 89 14:24:23 GMT
-
- First, the mail:
-
- Addressing a controversial topic is sure to generate some strong responses,
- and this one is no exception. Mail of the "Thank You" flavor outweighs the
- "You Idiot" flavor by about 4-1, so I'll be pressing on. The majority of
- the "You Idiot" mail is from senders who either admit, or display, limited
- programming ability. For the benefit of those individuals: I appreciate
- your concern. I am not attempting to aid in the spread of viruses, but in
- your own understanding of them, and ability to defend yourself. People with
- the ability to create a working virus will have found little or nothing
- they didn't already know in the preceeding postings. There is certainly
- nothing in them that isn't already available in the most fundamental books
- about personal computers. The preceeding postings are also written at a
- superficial level, and are missing quite a few specific things necessary to
- make a real working virus. Those missing items would add nothing to the
- layman's understanding of how a virus spreads or works, so are not
- included. You need not take my word for this; contact anyone you know who
- is knowledgeable in the system software field, and they will confirm it.
-
- Sin of omission:
-
- Part of a message received from Forrest Gehrke (feg@clyde.att.com):
-
- ...One method for a virus finding enough space to hide itself, that I have
- seen, you have not mentioned. I have noticed that the so-called Pakastani
- virus uses non-standard sectoring at tracks 37 and 38 for IBM PC
- diskettes...
-
- Mr. Gehrke is quite right. I did forget to mention this technique. While I
- had heard rumors of it being in use, I hadn't seen it in any of the virus
- code I've captured (again, I'm in the Atari ST world).
-
- I have responded to all mail I have recieved (if it requested a response)
- including mailing out copies of missed chapters. Several responses have
- been returned by various mailers. If you requested something, and haven't
- heard from me, either your request or my response failed.
-
- Now, Chapter 3:
-
- Once a virus has installed itself, and replicated as frequently as it has
- found the opportunity, it will eventually launch whatever form of attack it
- was originally designed to do. That attack is the real purpose of the
- existance of the virus. Everything up to this point has been for the sake
- of getting to this stage.
-
- What will it do? Almost anything. The limits are imagination and code
- space. The most benign virus I've seen claims to be an anti-virus. It
- blinks the screen on boot-up. The idea is that if you see the screen blink,
- you know that the benign virus is on the disk, rather than a more malicious
- one. It does, however, spread itself just like any other virus. From there,
- things proceed through the prank levels, time-triggered, messages, ones
- which try to simulate hardware failures, to ones which destroy files and
- disks. The actions vary from virus to virus. And, of course, there is a
- whole different library of viruses for each machine type. Attempting to detect
- a virus by describing or recognizing the symptoms is not only a task of
- limitless proportions, it is too little too late. When the symptoms appear,
- the damage has already been done.
-
- Several viruses attempt to simulate hardware problems. (Conversly, I've had
- several pleas for help with a virus that proved to be other types of
- failures.) Frequently these viruses use timers to delay their actions until
- the system has been running for some time, and to spread out their
- activities to make the problem appear intermittent. Such virus induced
- glitches include occasionally faking succesful disk I/O, while actually not
- performing the read or write, altering the data being read or written, and
- (more commonly) screen display glitches. It is very difficult for anyone to
- determine whether such incidents are the results of a virus, or a real
- hardware problem. When such incidents start to occur on your system, start
- executing whatever virus detection software you have available, before
- lugging your system off to a service firm.
-
- Previously, I mentioned the use of write protected disks as a step in the
- right direction to protect yourself. A large percentage of personal
- computer systems now use hard disk systems. Floppy disks are more often a
- backup media, or offline storage of files not needed on the hard disk for
- day to day use. Backing up requires the disks to be writeable, as does
- archiving off the infrequently used files. It is good practice to write
- protect the archived disks as soon as the files are copied to them. Run
- whatever virus checking software you have on the archive disks, write
- protect them, and then file them away.
-
- (When reading the following suggestions about protecting your system from
- attacks, keep in mind that not all techniques can be applied to all systems
- or all software. Read the documentation accompanying the software before
- your first attempt to use it. Be familiar with what it is expected to do
- before you run it, and you'll be more able to recognize unexpected activity.)
-
- The next step is to apply write protection to whatever disks you recieve
- software distributed on, before ever inserting them into a computer. Be
- they Public Domain, User Group Libraries, Commercial Software, or whatever,
- write protect them before you first read them. Then, make a backup copy if
- possible. Finally, when first executing the new software, have only write
- protected disks in your system. You should be well aware of any legitimate
- attempt to write to a disk by the software before it happens, and have
- adequate opportunity to insert a writeable disk when the proper time comes.
- This will not only give you a clue to the presence of a virus in the new
- software, but also protect the new software from a virus already resident
- in your system.
-
- If your system supports the use of a RAM disk, copy new software into the
- RAMdisk before executing it the first time. Put write protected disks in
- the drives, then execute the software from the RAMdisk. If the software has
- no reason to access other disks, especially when starting itself up, be
- very suspicious of any disk activity. The most common time for a virus or
- trojan horse program to do it's dirty work is at startup, when it is
- impossible to tell whether disk access is part of program loading, or some
- clandestine operation. By having the software loaded into and executing
- from memory, you will be able to detect any disk I/O which occurs.
-
- Finally, backup everything. Hard disks, floppy disks, tapes, whatever. Make
- backup copies, write protect them, and store them in a safe place off-line.
- If you are attacked by a dstructive virus, your first problem is to rid
- your system of the virus. Do not go to your off-line backups until you have
- determined if your problem came from a virus, and if so, that you have
- removed it from the system. A backup is useless if you give a virus a
- chance to attack it as well as your working copy.
-
- A significant portion of these three chapters have been related to boot
- sector viruses. While the most common type in the Atari and MS-DOS world,
- they are certainly not the only type.
-
- What follows is next is mostly a re-phrasing of an article from "Los
- Angeles Computer Currents", June, 1988. There are a few direct quotes from
- the copyrighted article. While I do not agree with all that this article
- states, I can not disprove the items from a position of experience. Since
- my efforts here are to inform, you may judge for yourself. A significant
- portion of my remarks are oriented to the Atari ST, but the concept is true
- to most all personal computers.
-
- An article in that issue, by Lewis Perdue, outlined the problems he faced
- when the IBM PC running Ventura Publisher he was using to create the first
- issue of PC Management Letter became infected. I won't begin to copy all
- that, but the most interesting part of the recovery task was when they used
- a normal (high-level) format program to clear the hard drive. It didn't
- kill the virus. They had to resort to a low level format, and rebuild from
- all original distribution disks. Their backups had been infected as well as
- their working copies of the software. They relied on a PC specific tool
- called Data Physician, by Digital Dispatch, to aid in the detection of the
- virus. It implements techniques to diagnose infections, but it has to be
- installed before the virus strikes.
-
- Another, more interesting aspect of the article, was categorizing viruses
- into four groups: Shell, Intrusive, Operating System, and Source.
-
- Shell - these "wrap themselves around a host program and do not modify the
- original program." In laymen's terms, such a virus would tack itself onto a
- program file, so it would get loaded with the program. It would have to do
- this in a manner that would cause itself to be executed before the host,
- since the host certainly would not pass control to the virus.
-
- This would be quite a complex task on an Atari ST (and on systems with a
- similar structure for executable program files). The virus program would
- have to be quite large in order to deal with the structure of an executable
- file on the ST. In simple terms, an executable file (a program) is a series
- of unique sections: a header, the code, data, a relocation map, and
- possibly a symbol table. The header specifies the size of each of the
- following segments. The code is the program, but in a form which will not
- run until it has been relocated. The data is constants, literals, messages,
- graphic data, etc. The relocation map tells the ST what changes to make to
- the code before it can be run. The symbol table is not usually present,
- except during program development. The reason behind this structure is that
- when a program is created, it does not know where in memory it will reside
- when it is executed. Things like RAMdisks, device drivers, accessories,
- printer buffers, spelling checkers, and so on, may or may not be present in
- the computer when the program is run. Since each of those things require
- memory, the place where the program will wind up being loaded is unknown.
- So, when it does get loaded, it has to be told where it is. And, since the
- program will almost always contain references to itself (subroutines,
- variables, etc.) it has to be modified so that those references point to
- the right place. That's what the relocation map is for. It details how the
- program has to be modified. Once the program is loaded into memory, and
- fixed up, the relocation map and symbol table are discarded. So, to hook
- into a program file, a virus would have to split the program file, attach
- itself to the beginning of the code segment, (that's where execution
- begins), re-attach the data, relocation, and (possibly) symbol table
- segments, update the relocation map (all the original references would now
- have moved), update the header, then re-write itself to the original disk,
- assuming there was room on the disk for the (now bigger) file and that the
- disk was not write-protected. That's a large amount of work to develop, and
- a large amount of code to sneak into a system for the original infection.
-
- I should mention here that it is not difficult to write "position
- independant" code on most micro-processors. You have to set out to do that,
- though, and take the necessary steps along the way to keep everything
- position independant. Boot sector code is a well known example. The
- address where the boot sector will be loaded into memory is unknown, and
- there is no relocation done on the code. It has to be position independant.
- It also has to fit in the boot sector. If it needs more than the amount of
- space in the boot sector, it has to determine its own location, and load
- the additional code itself. Of course, that means that it had to have a
- place to store the additional code, and it had to know where to find it.
- Those items were covered previously.
-
- Detecting a "Shell" type virus is not difficult. When it attaches itself to
- the target program, it must increase the size of the file. While it would
- be a real nusiance to check file sizes on a regular basis, there are
- programs available to do this for you. An "alteration detection" program
- will typically accept a list of programs to recognize. It will write a data
- file of its own, noting characteristics of each file in the list, such as
- length and date, and then run a numeric algorithm across the file. The
- numeric algorithm (typically a Cyclic Redundancy Check, or CRC) will yield
- a value which is stored in the alteration detection program's own data
- file. Then, on each subsequent execution of the alteration detection
- program, it checks the recorded characteristics of each file in its list,
- and re-executes the algorithm on the files. It reports back any file which
- has been changed since it last executed. Needless to mention, such a
- program must be run on the files to be monitored before any virus has an
- opportunity to attach itself to those files. Then, it must be run frequently
- to have a chance to detect altered files.
-
- (Back to the types of viruses defined in the article)...
-
- Intrusive - Intrusive viruses work by patching themselves into an existing
- program. This type of virus has two possibilities - either it is willing to
- render the host program useless, or it will attempt to co-exist with the
- host. If it is willing to corrupt the host, this is not too difficult a
- task. It would replace a part of the host program, modify the relocation
- map, and wait to get run. When it did, it would abandon the original task
- of the host program, and launch its attack. An example of this would be the
- virus bearing version of a word processor which struck the IBM compatible
- market some years ago. It signed on, looking just like a popular shareware
- program, but it was busy re-formatting the hard disk while the user waited
- for it to load and get ready to accept input.
-
- The other flavor of intrusive virus, which attempts to co-exist with the
- host program, is terribly difficult to create. It has to modify the host in
- a manner that either accomplishes the host's task while also doing it's
- own, or find a part of the host that is infrequently or no longer used, and
- hide there. It would then have to modify some other part of the host in
- order to get itself executed. In either case, a virus of this type has to
- be aimed at one specific host program. There's no way it could perform the
- analysis necessary to locate such portions of a randomly selected program.
- For that reason, an intrusive virus has to target some program that resides
- on a large portion of the target computer's installations, and that it is
- certain will be available to tamper with when the virus introduction
- occurs. That normally means either the Operating System, or some utility
- program so common that it is found virtually every where.
-
- Operating System viruses work by replacing a portion of the Operating
- System with their own code. This is similar to the intrusive type, except
- that it can use a new trick (and there are ones that do this on the
- IBM/MS-DOS computers). As a part of the operating system, it can sneak out
- to a hard disk, find an unused part, mark it as defective, and hide there.
- That would mean only a very small part of the code would have to be hooked
- into the operating system (possibly as an entry in a list of device
- initializing routines). That small segment could then allocate adequate
- memory for the real routine, and load it from wherever.
-
- Source Code viruses - I found this type of virus to be a bit unbelievable.
- The article reads (I quote):
-
- Source code viruses are intrusive programs that are inserted into a source
- program such as those written in Pascal prior to the program being
- compiled. These are the least-common viruses because they are not only hard
- to write, but also have a limited number of hosts compared to other types.
- (end quote)
-
- Sounds to me like this would be nearly impossible to accomplish in
- after-market software. If, on the other hand, they mean a part of the
- program added by a devious member of a development team, then, it is
- credible. It brings to mind the story (which I can't verify, but I've heard
- it from enough different sources to believe it is true) about what may well
- have been the first virus. In case you're not familiar with "C" compilers,
- they are usually several different programs, which must be run in proper
- sequence, passing files and options from one to the next. Usually, this is
- all done by a another program, a "compiler driver", which is almost always
- called "cc". You execute "cc", passing it the necessary flags, and the
- name(s) of the program(s) you want compiled, and it drives all the
- necessary tasks to do it.
-
- This was reported to have been done by one of the originators of the UNIX
- operating system, (name deleted), back in the development days at Bell
- Labs. Well, the story goes, he wrote the first versions of UNIX, "C", and
- "cc". He had a "back door" to get into a system running UNIX. He built the
- back door code into "cc". The code in "cc" checked to see what it was
- compiling. If it was the module "login", it incorporated the back door into
- the module, so that he could get into the system. If, on the other hand, it
- was compiling "cc", it included the code both to re-create itself, and the
- code to build the back door into "login". So, every "cc" had the code, and
- consequently every UNIX system included the back door. Eventually, it was
- discovered, and removed. There followed a frantic rebuilding of every UNIX
- system in existance, so the story goes.
-
- This is the final chapter which will be distributed via cross-posting.
- Chapter 4 will relate specifically to viruses captured in the Atari ST
- environment, and will be posted only to comp.sys.atari.st. It will come out
- about 1 week after this one. This article was posted on March 13, 1989, so you
- can determine the approximate delay to your receipt, in case you don't read
- that newsgroup, but wish to locate the fourth chapter in comp.sys.atari.st.
-
- End of Chapter 3.
- --
- *George R. Woodside - Citicorp/TTI - Santa Monica, CA
- *Path: ..!{philabs|csun|psivax}!ttidca!woodside
-
-