home *** CD-ROM | disk | FTP | other *** search
/ Hacker Chronicles 1 / HACKER1.ISO / miscpub1 / phun202.txt < prev    next >
Text File  |  1992-09-26  |  17KB  |  327 lines

  1.  
  2. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3. =               Volume 1 , P/HUN Issue #2 , Phile #2 of 9                     =
  4. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  5.                               
  6.                      A REPORT ON THE INTERNET WORM
  7.  
  8.                                Bob Page
  9.                           University of Lowell
  10.                       Computer Science Department
  11.  
  12.                             November 7, 1988
  13.  
  14.      [Because of the many misquotes the media have been giving,
  15.      this report is Copyright (c) Bob Page, all rights reserved.
  16.      Permission is granted to republish this ONLY if you republish
  17.      it in its entirety.]
  18.  
  19. Here's the scoop on the "Internet Worm".  Actually it's not a virus -
  20. a virus is a piece of code that adds itself to other programs,
  21. including operating systems.  It cannot run independently, but rather
  22. requires that its "host" program be run to activate it.  As such, it
  23. has a clear analog to biologic viruses -- those viruses are not
  24. considered live, but they invade host cells and take them over, making
  25. them produce new viruses.
  26.  
  27. A worm is a program that can run by itself and can propagate a fully
  28. working version of itself to other machines.  As such, what was loosed
  29. on the Internet was clearly a worm.
  30.  
  31. This data was collected through an emergency mailing list set up by
  32. Gene Spafford at Purdue University, for administrators of major
  33. Internet sites - some of the text is included verbatim from that list.
  34. Mail was heavy since the formation of the list; it continues to be on
  35. Monday afternoon - I get at least 2-3 messages every hour.  It's
  36. possible that some of this information is incomplete, but I thought
  37. you'd like to know what I know so far.
  38.  
  39. The basic object of the worm is to get a shell on another machine so
  40. it can reproduce further.  There are three ways it attacks: sendmail,
  41. fingerd, and rsh/rexec.
  42.  
  43.  
  44. THE SENDMAIL ATTACK:
  45.  
  46. In the sendmail attack, the worm opens a TCP connection to another
  47. machine's sendmail (the SMTP port), invokes debug mode, and sends a
  48. RCPT TO that requests its data be piped through a shell.  That data, a
  49. shell script (first-stage bootstrap) creates a temporary second-stage
  50. bootstrap file called x$$,l1.c (where '$$' is the current process ID).
  51. This is a small (40-line) C program.
  52.  
  53. The first-stage bootstrap compiles this program with the local cc and
  54. executes it with arguments giving the Internet hostid/socket/password
  55. of where it just came from.  The second-stage bootstrap (the compiled
  56. C program) sucks over two object files, x$$,vax.o and x$$,sun3.o from
  57. the attacking host.  It has an array for 20 file names (presumably for
  58. 20 different machines), but only two (vax and sun) were compiled in to
  59. this code.  It then figures out whether it's running under BSD or
  60. SunOS and links the appropriate file against the C library to produce
  61. an executable program called /usr/tmp/sh - so it looks like the Bourne
  62. shell to anyone who looked there.
  63.  
  64.  
  65. THE FINGERD ATTACK:
  66.  
  67. In the fingerd attack, it tries to infiltrate systems via a bug in
  68. fingerd, the finger daemon.  Apparently this is where most of its
  69. success was (not in sendmail, as was originally reported).  When
  70. fingerd is connected to, it reads its arguments from a pipe, but
  71. doesn't limit how much it reads.  If it reads more than the internal
  72. 512-byte buffer allowed, it writes past the end of its stack.  After
  73. the stack is a command to be executed ("/usr/ucb/finger") that
  74. actually does the work.  On a VAX, the worm knew how much further from
  75. the stack it had to clobber to get to this command, which it replaced
  76. with the command "/bin/sh" (the bourne shell).  So instead of the
  77. finger command being executed, a shell was started with no arguments.
  78. Since this is run in the context of the finger daemon, stdin and
  79. stdout are connected to the network socket, and all the files were
  80. sucked over just like the shell that sendmail provided.
  81.  
  82.  
  83. THE RSH/REXEC ATTACK:
  84.  
  85. The third way it tried to get into systems was via the .rhosts and
  86. /etc/hosts.equiv files to determine 'trusted' hosts where it might be
  87. able to migrate to.  To use the .rhosts feature, it needed to actually
  88. get into people's accounts - since the worm was not running as root
  89. (it was running as daemon) it had to figure out people's passwords.
  90. To do this, it went through the /etc/passwd file, trying to guess
  91. passwords.  It tried combinations of: the username, the last, first,
  92. last+first, nick names (from the GECOS field), and a list of special
  93. "popular" passwords:
  94.  
  95. aaa          cornelius        guntis      noxious    simon
  96. academia      couscous        hacker      nutrition    simple
  97. aerobics      creation        hamlet      nyquist    singer
  98. airplane      creosote        handily      oceanography    single
  99. albany          cretin        happening      ocelot    smile
  100. albatross     daemon        harmony      olivetti    smiles
  101. albert          dancer        harold      olivia    smooch
  102. alex          daniel        harvey      oracle    smother
  103. alexander     danny        hebrides      orca        snatch
  104. algebra          dave        heinlein      orwell    snoopy
  105. aliases          december        hello      osiris    soap
  106. alphabet      defoe        help      outlaw    socrates
  107. ama          deluge        herbert      oxford    sossina
  108. amorphous     desperate        hiawatha      pacific    sparrows
  109. analog          develop        hibernia      painless    spit
  110. anchor          dieter        honey      pakistan    spring
  111. andromache    digital        horse      pam        springer
  112. animals          discovery        horus      papers    squires
  113. answer          disney        hutchins      password    strangle
  114. anthropogenic dog        imbroglio      patricia    stratford
  115. anvils          drought        imperial      penguin    stuttgart
  116. anything      duncan        include      peoria    subway
  117. aria          eager        ingres      percolate    success
  118. ariadne          easier        inna      persimmon    summer
  119. arrow          edges        innocuous      persona    super
  120. arthur          edinburgh        irishman      pete        superstage
  121. athena          edwin        isis      peter        support
  122. atmosphere    edwina        japan      philip    supported
  123. aztecs          egghead        jessica      phoenix    surfer
  124. azure          eiderdown        jester      pierre    suzanne
  125. bacchus          eileen        jixian      pizza        swearer
  126. bailey          einstein        johnny      plover    symmetry
  127. banana          elephant        joseph      plymouth    tangerine
  128. bananas          elizabeth        joshua      polynomial    tape
  129. bandit          ellen        judith      pondering    target
  130. banks          emerald        juggle      pork        tarragon
  131. barber          engine        julia      poster    taylor
  132. baritone      engineer        kathleen      praise    telephone
  133. bass          enterprise    kermit      precious    temptation
  134. bassoon          enzyme        kernel      prelude    thailand
  135. batman          ersatz        kirkland      prince    tiger
  136. beater          establish        knight      princeton    toggle
  137. beauty          estate        ladle      protect    tomato
  138. beethoven     euclid        lambda      protozoa    topography
  139. beloved          evelyn        lamination      pumpkin    tortoise
  140. benz          extension        larkin      puneet    toyota
  141. beowulf          fairway        larry      puppet    trails
  142. berkeley      felicia        lazarus      rabbit    trivial
  143. berliner      fender        lebesgue      rachmaninoff    trombone
  144. beryl          fermat        lee          rainbow    tubas
  145. beverly          fidelity        leland      raindrop    tuttle
  146. bicameral     finite        leroy      raleigh    umesh
  147. bob          fishers        lewis      random    unhappy
  148. brenda          flakes        light      rascal    unicorn
  149. brian          float        lisa      really    unknown
  150. bridget          flower        louis      rebecca    urchin
  151. broadway      flowers        lynne      remote    utility
  152. bumbling      foolproof        macintosh      rick        vasant
  153. burgess          football        mack      ripple    vertigo
  154. campanile     foresight        maggot      robotics    vicky
  155. cantor          format        magic      rochester    village
  156. cardinal      forsythe        malcolm      rolex        virginia
  157. carmen          fourier        mark      romano    warren
  158. carolina      fred        markus      ronald    water
  159. caroline      friend        marty      rosebud    weenie
  160. cascades      frighten        marvin      rosemary    whatnot
  161. castle          fun        master      roses        whiting
  162. cat          fungible        maurice      ruben        whitney
  163. cayuga          gabriel        mellon      rules        will
  164. celtics          gardner        merlin      ruth        william
  165. cerulean      garfield        mets      sal        williamsburg
  166. change          gauss        michael      saxon        willie
  167. charles          george        michelle      scamper    winston
  168. charming      gertrude        mike      scheme    wisconsin
  169. charon          ginger        minimum      scott        wizard
  170. chester          glacier        minsky      scotty    wombat
  171. cigar          gnu        moguls      secret    woodwind
  172. classic          golfer        moose      sensor    wormwood
  173. clusters      gorgeous        morley      serenity    yaco
  174. coffee          gorges        mozart      sharks    yang
  175. coke          gosling        nancy      sharon    yellowstone
  176. collins          gouge        napoleon      sheffield    yosemite
  177. commrades     graham        nepenthe      sheldon    zap
  178. computer      gryphon        ness      shiva        zimmerman
  179. condo          guest        network      shivers
  180. cookie          guitar        newton      shuttle
  181. cooper          gumption        next      signature
  182.  
  183. [I wouldn't have picked some of these as "popular" passwords, but
  184. then again, I'm not a worm writer.  What do I know?]
  185.  
  186. When everything else fails, it opens /usr/dict/words and tries every
  187. word in the dictionary.  It is pretty successful in finding passwords,
  188. as most people don't choose them very well.  Once it gets into
  189. someone's account, it looks for a .rhosts file and does an 'rsh'
  190. and/or 'rexec' to another host, it sucks over the necessary files into
  191. /usr/tmp and runs /usr/tmp/sh to start all over again.
  192.  
  193.  
  194. Between these three methods of attack (sendmail, fingerd, .rhosts)
  195. it was able to spread very quickly.
  196.  
  197.  
  198. THE WORM ITSELF:
  199.  
  200. The 'sh' program is the actual worm.  When it starts up it clobbers
  201. its argv array so a 'ps' will not show its name.  It opens all its
  202. necessary files, then unlinks (deletes) them so they can't be found
  203. (since it has them open, however, it can still access the contents).
  204. It then tries to infect as many other hosts as possible - when it
  205. sucessfully connects to one host, it forks a child to continue the
  206. infection while the parent keeps on trying new hosts.
  207.  
  208. One of the things it does before it attacks a host is connect to the
  209. telnet port and immediately close it.  Thus, "telnetd: ttloop: peer
  210. died" in /usr/adm/messages means the worm attempted an attack.
  211.  
  212. The worm's role in life is to reproduce - nothing more.  To do that it
  213. needs to find other hosts.  It does a 'netstat -r -n' to find local
  214. routes to other hosts & networks, looks in /etc/hosts, and uses the
  215. yellow pages distributed hosts file if it's available.  Any time it
  216. finds a host, it tries to infect it through one of the three methods,
  217. see above.  Once it finds a local network (like 129.63.nn.nn for
  218. ulowell) it sequentially tries every address in that range.
  219.  
  220. If the system crashes or is rebooted, most system boot procedures
  221. clear /tmp and /usr/tmp as a matter of course, erasing any evidence.
  222. However, sendmail log files show mail coming in from user /dev/null
  223. for user /bin/sed, which is a tipoff that the worm entered.
  224.  
  225. Each time the worm is started, there is a 1/15 chance (it calls
  226. random()) that it sends a single byte to ernie.berkeley.edu on some
  227. magic port, apparently to act as some kind of monitoring mechanism.
  228.  
  229.  
  230. THE CRACKDOWN:
  231.  
  232. Three main 'swat' teams from Berkeley, MIT and Purdue found copies of
  233. the VAX code (the .o files had all the symbols intact with somewhat
  234. meaningful names) and disassembled it into about 3000 lines of C.  The
  235. BSD development team poked fun at the code, even going so far to point
  236. out bugs in the code and supplying source patches for it!  They have
  237. not released the actual source code, however, and refuse to do so.
  238. That could change - there are a number of people who want to see the
  239. code.
  240.  
  241. Portions of the code appear incomplete, as if the program development
  242. was not yet finished.  For example, it knows the offset needed to
  243. break the BSD fingerd, but doesn't know the correct offset for Sun's
  244. fingerd (which causes it to dump core); it also doesn't erase its
  245. tracks as cleverly as it might; and so on.
  246.  
  247. The worm uses a variable called 'pleasequit' but doesn't correctly
  248. initialize it, so some folks added a module called _worm.o to the C
  249. library, which is produced from:
  250.         int pleasequit = -1;
  251. the fact that this value is set to -1 will cause it to exit after one
  252. iteration.
  253.  
  254. The close scrutiny of the code also turned up comments on the
  255. programmer's style.  Verbatim from someone at MIT:
  256.     From disassembling the code, it looks like the programmer
  257.     is really anally retentive about checking return codes,
  258.     and, in addition, prefers to use array indexing instead of
  259.     pointers to walk through arrays.
  260.  
  261. Anyone who looks at the binary will not see any embedded strings -
  262. they are XOR'ed with 81 (hex).  That's how the shell commands are
  263. imbedded.  The "obvious" passwords are stored with their high bit set.
  264.  
  265. Although it spreads very fast, it is somewhat slowed down by the fact
  266. that it drives the load average up on the machine - this is due to all
  267. the encryptions going on, and the large number of incoming worms from
  268. other machines.
  269.  
  270. [Initially, the fastest defense against the worm is is to create a
  271. directory called /usr/tmp/sh.  The script that creates /usr/tmp/sh
  272. from one of the .o files checks to see if /usr/tmp/sh exists, but not
  273. to see if it's a directory.  This fix is known as 'the condom'.]
  274.  
  275.  
  276. NOW WHAT?
  277.  
  278. None of the ULowell machines were hit by the worm.  When BBN staffers
  279. found their systems infected, they cut themselves off from all other
  280. hosts.  Since our connection to the Internet is through BBN, we were
  281. cut off as well.  Before we were cut off, I received mail about the
  282. sendmail problem and installed a patch to disable the feature the worm
  283. uses to get in through sendmail.  I had made local modifications to
  284. fingerd which changed the offsets, so any attempt to scribble over the
  285. stack would probably have ended up in a core dump.
  286.  
  287. Most Internet systems running 4.3BSD or SunOS have installed the
  288. necessary patches to close the holes and have rejoined the Internet.
  289. As you would expect, there is a renewed interest in system/network
  290. security, finding and plugging holes, and speculation over what
  291. will happen to the worm's creator.
  292.  
  293. If you haven't read or watched the news, various log files have named
  294. the responsible person as Robert Morris Jr., a 23-year old doctoral
  295. student at Cornell.  His father is head of the National Computer
  296. Security Center, the NSA's public effort in computer security, and has
  297. lectured widely on security aspects of UNIX.
  298.  
  299. Associates of the student claim the worm was a 'mistake' - that he
  300. intended to unleash it but it was not supposed to move so quickly or
  301. spread so much.  His goal (from what I understand) was to have a
  302. program 'live' within the Internet.  If the reports that he intended
  303. it to spread slowly are true, then it's possible that the bytes sent
  304. to ernie.berkeley.edu were intended to monitor the spread of the
  305. worm.  Some news reports mentioned that he panicked when, via some
  306. "monitoring mechanism" he saw how fast it had propagated.
  307.  
  308. A source inside DEC reports that although the worm didn't make much
  309. progress there, it was sighted on several machines that wouldn't be
  310. on its normal propagation path, i.e. not gateways and not on the same
  311. subnet.  These machines are not reachable from the outside.  Morris
  312. was a summer intern at DEC in '87.  He might have included names or
  313. addresses he remembered as targets for infesting hidden internal
  314. networks.  Most of the DEC machines in question belong to the group he
  315. worked in.
  316.  
  317. The final word has not been written - I don't think the FBI have even
  318. met with this guy yet.  It will be interesting to see what happens.
  319.  
  320.  
  321.  
  322. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  323.  
  324. DOWNLOADED FROM P-80 SYSTEMS 304-744-2253
  325.  
  326. Downloaded From P-80 International Information Systems 304-744-2253 12yrs+
  327.