home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1993 May / SIMTEL_0593.ISO / msdos / virus / virus101.003 < prev    next >
Internet Message Format  |  1989-03-14  |  19KB

  1. From: woodside@ttidca.TTI.COM (George Woodside)
  2. Newsgroups: comp.sys.atari.st,comp.sys.apple,comp.sys.mac,comp.sys.ibm.pc
  3. Subject: Virus 101: Chapter 3
  4. Date: 13 Mar 89 14:24:23 GMT
  5.  
  6. First, the mail: 
  7.  
  8. Addressing a controversial topic is sure to generate some strong responses,
  9. and this one is no exception. Mail of the "Thank You" flavor outweighs the
  10. "You Idiot" flavor by about 4-1, so I'll be pressing on. The majority of
  11. the "You Idiot" mail is from senders who either admit, or display, limited
  12. programming ability. For the benefit of those individuals: I appreciate
  13. your concern. I am not attempting to aid in the spread of viruses, but in
  14. your own understanding of them, and ability to defend yourself. People with
  15. the ability to create a working virus will have found little or nothing
  16. they didn't already know in the preceeding postings. There is certainly
  17. nothing in them that isn't already available in the most fundamental books
  18. about personal computers. The preceeding postings are also written at a
  19. superficial level, and are missing quite a few specific things necessary to
  20. make a real working virus. Those missing items would add nothing to the
  21. layman's understanding of how a virus spreads or works, so are not
  22. included. You need not take my word for this; contact anyone you know who
  23. is knowledgeable in the system software field, and they will confirm it. 
  24.  
  25. Sin of omission: 
  26.  
  27. Part of a message received from Forrest Gehrke (feg@clyde.att.com): 
  28.  
  29. ...One method for a virus finding enough space to hide itself, that I have
  30. seen, you have not mentioned. I have noticed that the so-called Pakastani
  31. virus uses non-standard sectoring at tracks 37 and 38 for IBM PC
  32. diskettes... 
  33.  
  34. Mr. Gehrke is quite right. I did forget to mention this technique. While I
  35. had heard rumors of it being in use, I hadn't seen it in any of the virus
  36. code I've captured (again, I'm in the Atari ST world). 
  37.  
  38. I have responded to all mail I have recieved (if it requested a response)
  39. including mailing out copies of missed chapters. Several responses have
  40. been returned by various mailers. If you requested something, and haven't
  41. heard from me, either your request or my response failed.
  42.  
  43. Now, Chapter 3: 
  44.  
  45. Once a virus has installed itself, and replicated as frequently as it has
  46. found the opportunity, it will eventually launch whatever form of attack it
  47. was originally designed to do. That attack is the real purpose of the
  48. existance of the virus. Everything up to this point has been for the sake
  49. of getting to this stage. 
  50.  
  51. What will it do? Almost anything. The limits are imagination and code
  52. space. The most benign virus I've seen claims to be an anti-virus. It
  53. blinks the screen on boot-up. The idea is that if you see the screen blink,
  54. you know that the benign virus is on the disk, rather than a more malicious
  55. one. It does, however, spread itself just like any other virus. From there, 
  56. things proceed through the prank levels, time-triggered, messages, ones 
  57. which try to simulate hardware failures, to ones which destroy files and 
  58. disks. The actions vary from virus to virus. And, of course, there is a 
  59. whole different library of viruses for each machine type. Attempting to detect
  60. a virus by describing or recognizing the symptoms is not only a task of 
  61. limitless proportions, it is too little too late. When the symptoms appear, 
  62. the damage has already been done. 
  63.  
  64. Several viruses attempt to simulate hardware problems. (Conversly, I've had
  65. several pleas for help with a virus that proved to be other types of
  66. failures.) Frequently these viruses use timers to delay their actions until
  67. the system has been running for some time, and to spread out their
  68. activities to make the problem appear intermittent. Such virus induced
  69. glitches include occasionally faking succesful disk I/O, while actually not
  70. performing the read or write, altering the data being read or written, and
  71. (more commonly) screen display glitches. It is very difficult for anyone to
  72. determine whether such incidents are the results of a virus, or a real
  73. hardware problem. When such incidents start to occur on your system, start
  74. executing whatever virus detection software you have available, before
  75. lugging your system off to a service firm. 
  76.  
  77. Previously, I mentioned the use of write protected disks as a step in the
  78. right direction to protect yourself. A large percentage of personal
  79. computer systems now use hard disk systems. Floppy disks are more often a
  80. backup media, or offline storage of files not needed on the hard disk for
  81. day to day use. Backing up requires the disks to be writeable, as does
  82. archiving off the infrequently used files. It is good practice to write
  83. protect the archived disks as soon as the files are copied to them. Run
  84. whatever virus checking software you have on the archive disks, write
  85. protect them, and then file them away. 
  86.  
  87. (When reading the following suggestions about protecting your system from
  88. attacks, keep in mind that not all techniques can be applied to all systems
  89. or all software. Read the documentation accompanying the software before
  90. your first attempt to use it. Be familiar with what it is expected to do 
  91. before you run it, and you'll be more able to recognize unexpected activity.)
  92.  
  93. The next step is to apply write protection to whatever disks you recieve
  94. software distributed on, before ever inserting them into a computer. Be
  95. they Public Domain, User Group Libraries, Commercial Software, or whatever,
  96. write protect them before you first read them. Then, make a backup copy if
  97. possible. Finally, when first executing the new software, have only write
  98. protected disks in your system. You should be well aware of any legitimate
  99. attempt to write to a disk by the software before it happens, and have
  100. adequate opportunity to insert a writeable disk when the proper time comes. 
  101. This will not only give you a clue to the presence of a virus in the new
  102. software, but also protect the new software from a virus already resident
  103. in your system.
  104.  
  105. If your system supports the use of a RAM disk, copy new software into the
  106. RAMdisk before executing it the first time. Put write protected disks in
  107. the drives, then execute the software from the RAMdisk. If the software has
  108. no reason to access other disks, especially when starting itself up, be
  109. very suspicious of any disk activity. The most common time for a virus or
  110. trojan horse program to do it's dirty work is at startup, when it is
  111. impossible to tell whether disk access is part of program loading, or some
  112. clandestine operation. By having the software loaded into and executing
  113. from memory, you will be able to detect any disk I/O which occurs. 
  114.  
  115. Finally, backup everything. Hard disks, floppy disks, tapes, whatever. Make
  116. backup copies, write protect them, and store them in a safe place off-line.
  117. If you are attacked by a dstructive virus, your first problem is to rid
  118. your system of the virus. Do not go to your off-line backups until you have
  119. determined if your problem came from a virus, and if so, that you have
  120. removed it from the system. A backup is useless if you give a virus a
  121. chance to attack it as well as your working copy. 
  122.  
  123. A significant portion of these three chapters have been related to boot
  124. sector viruses. While the most common type in the Atari and MS-DOS world,
  125. they are certainly not the only type. 
  126.  
  127. What follows is next is mostly a re-phrasing of an article from "Los
  128. Angeles Computer Currents", June, 1988. There are a few direct quotes from
  129. the copyrighted article. While I do not agree with all that this article
  130. states, I can not disprove the items from a position of experience. Since
  131. my efforts here are to inform, you may judge for yourself. A significant
  132. portion of my remarks are oriented to the Atari ST, but the concept is true
  133. to most all personal computers. 
  134.  
  135. An article in that issue, by Lewis Perdue, outlined the problems he faced
  136. when the IBM PC running Ventura Publisher he was using to create the first
  137. issue of PC Management Letter became infected. I won't begin to copy all
  138. that, but the most interesting part of the recovery task was when they used
  139. a normal (high-level) format program to clear the hard drive. It didn't
  140. kill the virus. They had to resort to a low level format, and rebuild from
  141. all original distribution disks. Their backups had been infected as well as
  142. their working copies of the software. They relied on a PC specific tool
  143. called Data Physician, by Digital Dispatch, to aid in the detection of the
  144. virus. It implements techniques to diagnose infections, but it has to be
  145. installed before the virus strikes. 
  146.  
  147. Another, more interesting aspect of the article, was categorizing viruses
  148. into four groups: Shell, Intrusive, Operating System, and Source. 
  149.  
  150. Shell - these "wrap themselves around a host program and do not modify the
  151. original program." In laymen's terms, such a virus would tack itself onto a
  152. program file, so it would get loaded with the program. It would have to do
  153. this in a manner that would cause itself to be executed before the host,
  154. since the host certainly would not pass control to the virus. 
  155.  
  156. This would be quite a complex task on an Atari ST (and on systems with a 
  157. similar structure for executable program files). The virus program would
  158. have to be quite large in order to deal with the structure of an executable
  159. file on the ST. In simple terms, an executable file (a program) is a series
  160. of unique sections: a header, the code, data, a relocation map, and
  161. possibly a symbol table. The header specifies the size of each of the
  162. following segments. The code is the program, but in a form which will not
  163. run until it has been relocated. The data is constants, literals, messages,
  164. graphic data, etc. The relocation map tells the ST what changes to make to
  165. the code before it can be run. The symbol table is not usually present,
  166. except during program development. The reason behind this structure is that
  167. when a program is created, it does not know where in memory it will reside
  168. when it is executed. Things like RAMdisks, device drivers, accessories,
  169. printer buffers, spelling checkers, and so on, may or may not be present in
  170. the computer when the program is run. Since each of those things require
  171. memory, the place where the program will wind up being loaded is unknown.
  172. So, when it does get loaded, it has to be told where it is. And, since the
  173. program will almost always contain references to itself (subroutines,
  174. variables, etc.) it has to be modified so that those references point to
  175. the right place. That's what the relocation map is for. It details how the
  176. program has to be modified. Once the program is loaded into memory, and
  177. fixed up, the relocation map and symbol table are discarded. So, to hook
  178. into a program file, a virus would have to split the program file, attach
  179. itself to the beginning of the code segment, (that's where execution
  180. begins), re-attach the data, relocation, and (possibly) symbol table
  181. segments, update the relocation map (all the original references would now
  182. have moved), update the header, then re-write itself to the original disk,
  183. assuming there was room on the disk for the (now bigger) file and that the
  184. disk was not write-protected. That's a large amount of work to develop, and 
  185. a large amount of code to sneak into a system for the original infection. 
  186.  
  187. I should mention here that it is not difficult to write "position
  188. independant" code on most micro-processors. You have to set out to do that,
  189. though, and take the necessary steps along the way to keep everything
  190. position independant.  Boot sector code is a well known example. The
  191. address where the boot sector will be loaded into memory is unknown, and
  192. there is no relocation done on the code. It has to be position independant.
  193. It also has to fit in the boot sector. If it needs more than the amount of
  194. space in the boot sector, it has to determine its own location, and load
  195. the additional code itself. Of course, that means that it had to have a
  196. place to store the additional code, and it had to know where to find it. 
  197. Those items were covered previously.
  198.  
  199. Detecting a "Shell" type virus is not difficult. When it attaches itself to
  200. the target program, it must increase the size of the file. While it would
  201. be a real nusiance to check file sizes on a regular basis, there are
  202. programs available to do this for you. An "alteration detection" program
  203. will typically accept a list of programs to recognize. It will write a data
  204. file of its own, noting characteristics of each file in the list, such as
  205. length and date, and then run a numeric algorithm across the file. The
  206. numeric algorithm (typically a Cyclic Redundancy Check, or CRC) will yield
  207. a value which is stored in the alteration detection program's own data
  208. file. Then, on each subsequent execution of the alteration detection
  209. program, it checks the recorded characteristics of each file in its list,
  210. and re-executes the algorithm on the files. It reports back any file which
  211. has been changed since it last executed. Needless to mention, such a
  212. program must be run on the files to be monitored before any virus has an
  213. opportunity to attach itself to those files. Then, it must be run frequently
  214. to have a chance to detect altered files.
  215.  
  216. (Back to the types of viruses defined in the article)... 
  217.  
  218. Intrusive - Intrusive viruses work by patching themselves into an existing
  219. program. This type of virus has two possibilities - either it is willing to
  220. render the host program useless, or it will attempt to co-exist with the
  221. host. If it is willing to corrupt the host, this is not too difficult a
  222. task. It would replace a part of the host program, modify the relocation
  223. map, and wait to get run. When it did, it would abandon the original task
  224. of the host program, and launch its attack. An example of this would be the
  225. virus bearing version of a word processor which struck the IBM compatible
  226. market some years ago. It signed on, looking just like a popular shareware
  227. program, but it was busy re-formatting the hard disk while the user waited
  228. for it to load and get ready to accept input. 
  229.  
  230. The other flavor of intrusive virus, which attempts to co-exist with the
  231. host program, is terribly difficult to create. It has to modify the host in
  232. a manner that either accomplishes the host's task while also doing it's
  233. own, or find a part of the host that is infrequently or no longer used, and
  234. hide there. It would then have to modify some other part of the host in
  235. order to get itself executed. In either case, a virus of this type has to
  236. be aimed at one specific host program. There's no way it could perform the
  237. analysis necessary to locate such portions of a randomly selected program.
  238. For that reason, an intrusive virus has to target some program that resides
  239. on a large portion of the target computer's installations, and that it is
  240. certain will be available to tamper with when the virus introduction
  241. occurs. That normally means either the Operating System, or some utility
  242. program so common that it is found virtually every where. 
  243.  
  244. Operating System viruses work by replacing a portion of the Operating
  245. System with their own code. This is similar to the intrusive type, except
  246. that it can use a new trick (and there are ones that do this on the
  247. IBM/MS-DOS computers). As a part of the operating system, it can sneak out
  248. to a hard disk, find an unused part, mark it as defective, and hide there.
  249. That would mean only a very small part of the code would have to be hooked
  250. into the operating system (possibly as an entry in a list of device
  251. initializing routines). That small segment could then allocate adequate
  252. memory for the real routine, and load it from wherever. 
  253.  
  254. Source Code viruses - I found this type of virus to be a bit unbelievable.
  255. The article reads (I quote): 
  256.  
  257. Source code viruses are intrusive programs that are inserted into a source
  258. program such as those written in Pascal prior to the program being
  259. compiled. These are the least-common viruses because they are not only hard
  260. to write, but also have a limited number of hosts compared to other types.
  261. (end quote) 
  262.  
  263. Sounds to me like this would be nearly impossible to accomplish in
  264. after-market software. If, on the other hand, they mean a part of the
  265. program added by a devious member of a development team, then, it is
  266. credible. It brings to mind the story (which I can't verify, but I've heard
  267. it from enough different sources to believe it is true) about what may well
  268. have been the first virus. In case you're not familiar with "C" compilers,
  269. they are usually several different programs, which must be run in proper
  270. sequence, passing files and options from one to the next. Usually, this is
  271. all done by a another program, a "compiler driver", which is almost always
  272. called "cc". You execute "cc", passing it the necessary flags, and the
  273. name(s) of the program(s) you want compiled, and it drives all the
  274. necessary tasks to do it. 
  275.  
  276. This was reported to have been done by one of the originators of the UNIX
  277. operating system, (name deleted), back in the development days at Bell
  278. Labs. Well, the story goes, he wrote the first versions of UNIX, "C", and
  279. "cc". He had a "back door" to get into a system running UNIX. He built the
  280. back door code into "cc". The code in "cc" checked to see what it was
  281. compiling. If it was the module "login", it incorporated the back door into
  282. the module, so that he could get into the system. If, on the other hand, it
  283. was compiling "cc", it included the code both to re-create itself, and the
  284. code to build the back door into "login". So, every "cc" had the code, and
  285. consequently every UNIX system included the back door. Eventually, it was
  286. discovered, and removed. There followed a frantic rebuilding of every UNIX
  287. system in existance, so the story goes. 
  288.  
  289. This is the final chapter which will be distributed via cross-posting.
  290. Chapter 4 will relate specifically to viruses captured in the Atari ST
  291. environment, and will be posted only to comp.sys.atari.st. It will come out
  292. about 1 week after this one. This article was posted on March 13, 1989, so you
  293. can determine the approximate delay to your receipt, in case you don't read
  294. that newsgroup, but wish to locate the fourth chapter in comp.sys.atari.st. 
  295.  
  296. End of Chapter 3. 
  297. -- 
  298. *George R. Woodside - Citicorp/TTI - Santa Monica, CA 
  299. *Path:       ..!{philabs|csun|psivax}!ttidca!woodside
  300.