home *** CD-ROM | disk | FTP | other *** search
/ Hacker Chronicles 1 / HACKER1.ISO / phrk2 / phrack23.8 < prev    next >
Text File  |  1992-09-26  |  13KB  |  251 lines

  1.  
  2.                                 ==Phrack Inc.==
  3.  
  4.                       Volume Two, Issue 23, File 8 of 12
  5.  
  6.                      ____________________________________
  7.                     |                                    |
  8.                     |  Getting Serious About VMS Hacking |
  9.                     |                                    |
  10.                     |     by VAXbusters International    |
  11.                     |                                    |
  12.                     |            January 1989            |
  13.                     |____________________________________|
  14.  
  15. The VAX/VMS operating system is said to be one of the most secure systems
  16. currently available.  It has been massively extended in the past to provide
  17. features which can help system managers getting their machines locked up to
  18. abusers and to trace back any attempts to indiscriminate system security.  As
  19. such, it is not easy getting into VMS machines now without having insider
  20. information, and it's even harder to stay in.
  21.  
  22. The following article describes some of the internals which make up the VMS
  23. security features, and tries to give hints what to do to remain undiscovered.
  24. The reader should be familiar with the VMS system from the programmer's point
  25. of view.
  26.  
  27. Some of the things mentioned are closely related to the internal workings of
  28. the VAX/VMS operating system.  All descriptions are held as general as
  29. possible.  It is tried to point out where weak points in the system are
  30. located, not to give step-by-step instructions on how to hack VMS machines.
  31. The main reason for this is, that it is very hard to remain undiscovered in a
  32. VMS system without having good knowledge of the whole system.  This knowledge
  33. is only aquireable by experience.
  34.  
  35. To use some of the techniques described herein, some literature is recommended:
  36.  
  37.      "The VAX Architecture Handbook," published by DEC.  This book describes
  38.      the VAX processor, it's instruction set and it's hardware.  It is a good
  39.      book to have on your desk, since it costs nothing (just go to your local
  40.      DEC store and ask for it) and is only in paperback format.
  41.  
  42.      "MACRO and Instruction Set," part of the VMS documentation kit.  This is
  43.      needed only if you want to program bigger things in MACRO.  It's
  44.      recommended reading, but you don't need to have it on your own normally.
  45.  
  46.      "VAX/VMS Internals and Data Structures" by L.Kenah and S.Bate.  This is
  47.      the bible for VMS hackers.  It describes the inner workings of the system
  48.      as well as most of the data structures used within the kernel.  The
  49.      Version published always is one version number behind the current VMS
  50.      release, but as the VAX architecture doesn't change, it is the best source
  51.      on a description how the system works.  After you've read and understood
  52.      this book, the VAX won't look more mysterious than your C64.  You can
  53.      order this book from DEC, the order number for the V3.0 version of the
  54.      book is EY-00014-DP.  The major drawback is the price, which is around
  55.      $70-$100.
  56.  
  57. A good source of information naturally is the source code of the VMS system.
  58. The easiest way to snoop around in it is to get the microfiche set, which is
  59. delivered by DEC to all bigger customers of the system. The major disadvantage
  60. is that you need a fiche reader to use it.  intended, unless you plan to disassemble
  61. everything you need.  The VMS system is written in BLISS-32 and FORTRAN.  BLISS
  62. is quite readable, but it might be worthwile having a FORTRAN hacker around if
  63. you intend to do patch any of the programs implemented in FORTRAN.  The source
  64. fiche always contains the current release, so it's useful to check if the
  65. information in "Internals and Data Structures" is still valid.
  66.  
  67.  
  68. Hacker's Tools
  69. ~~~~~~~~~~~~~~
  70. There are several programs which are useful when snooping around on a VMS
  71. system.
  72.  
  73. The most important utility might be the System Dump Analyzer (SDA), which is
  74. started with the command ANALYZE/SYSTEM.  Originally, SDA was developed to
  75. analyze system crash dumps, which are created every time the machine crashes in
  76. a 'controlled' manner (bugcheck or opcrash).  SDA can also be used to analyze
  77. the running system, which is the more useful function.  A process which wants
  78. to run SDA needs the CMKRNL privilege.  With SDA, you can examine any process
  79. and find out about accessed files and devices, contents of virtual memory (like
  80. typeahead and recall buffers), process status and more.  SDA is a watching
  81. tool, so you normally can't destroy anything with it.
  82.  
  83. Another helpful tool is the PATCH utility, called up by the command PATCH.  As
  84. VMS is distributed in a binary-only fashion, system updates are normally
  85. distributed as patches to binaries.  PATCHES can be entered as assembler
  86. statements directly.  Combined with the source fiche, PATCH is a powerful tool
  87. for your modifications and improvementsto the VMS operating system.
  88.  
  89.  
  90. Privileges
  91. ~~~~~~~~~~
  92. To do interesting things on the VMS system, you normally need privileges.  The
  93. following lists describes some of the privileges which are useful in the
  94. onliner's daily life.
  95.  
  96. CMKRNL
  97. CMEXEC  These two privileges enable a user to execute arbitary routines with
  98.         KERNEL and EXECUTIVE access mode.  These privileges are needed when one
  99.         plans to access kernel data structures directly.  CMKRNL is the most
  100.         powerful privilege available, everything which is protected can be
  101.         accessed utilizing it.
  102.  
  103. SYSPRV  A process which holds this privilege can access objects via the system
  104.         protection.  A process holding the this privilege has the same access
  105.         rights as a process running under a system UIC.
  106.  
  107. SHARE   This allows a process to assign channels to nonshareable devices which
  108.         already have channels assigned to them.  This can be used to prevent
  109.         terminal hangups and to assign channels to system mailboxes.
  110.  
  111.  
  112. Process States And The Process Control Block
  113. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  114. When you get into kernel hacking, you should pay special attention to the field
  115. PCB$L_STS.  This field tells about the process status.  Interesting bits are
  116. PCB$V_DELPEN, PCB$V_NOACNT and PCB$V_BATCH.  There can be achived astounishing
  117. effects by setting these bits.
  118.  
  119.  
  120. Hideout
  121. ~~~~~~~
  122. A nice possiblity to have is to be unseen by a system manager.  There are many
  123. ways to get invisible to SHOW USERS, but hiding fros it doesn't even use standard system calls to get a list of the
  124. currently running processes.  And in fact, hiding from SDA is even harder,
  125. since it directly peeks kernel data structures.  Anyways, being invisible to
  126. SHOW USERS is useful on small systems, where one user more could ring the alarm
  127. bell of the system operator.
  128.  
  129. One possibility to do this is to become a subprocess of some non-interactive
  130. job (like a BATCH or NETWORK process).  The other way is to patch the PCB to
  131. become a BATCH process or to delete the terminal name (which makes SHOW USERS
  132. think you are non-interactive as well).  Patching the PCB has a disadvantage:
  133. The system global variable SYS$GW_IJOBCNT which contains the number of
  134. interactive users must be directly decremented before you hide, and MUST be
  135. incremented before you log out.
  136.  
  137. If you forget this, the interactive job count will be wrong.  If it becomes
  138. negative, strange effects will show up, which will confuse every system
  139. manager.
  140.  
  141.  
  142. Accounting And Audits
  143. ~~~~~~~~~~~~~~~~~~~~~
  144. The most nasty thing about VMS since release 4.2 is the security auditing
  145. feature.  It enables the system manager to log almost every security relevant
  146. event he desires.  For example, access to files, login failures and
  147. modification user authorisation data base can all be monitored, logged and
  148. written to the system printer.  The first thing to find out in a new, unknown
  149. system is the awareness of the system management.  The status of the accounting
  150. system is easily determinable by the command SHOW ACCOUNTING.  Normally,
  151. everything except IMAGE accounting is enabled.  When IMAGE accounting is also
  152. enabled, this is the first hint to be careful.  The second thing to check out
  153. is the status of the security auditing system.  You need the SECURITY privilege
  154. to execute the command SHOW AUDIT.
  155.  
  156. If no audits are enabled, and image accounting is not turned on, the system
  157. normally is not set up to be especially secure.  Such systems are the right
  158. playground for a system hacker, since one doesn't have to be as careful as one
  159. has to be on a correctly managed system.
  160.  
  161.  
  162. Accounting
  163. ~~~~~~~~~~
  164. The main intention for running accounting on a system is the need to charge
  165. users for resources (cpu time, printer usage etc.) they use on the machine.  On
  166. the other hand, accounting can be very useful to track down invaders.  Luckily,
  167. accounting information is being logged in the normal file system, and as such
  168. one can edit out information which isn't supposed to be seen by sneaky eyes.
  169. The most important utily to handle accounting files is, naturally, the
  170. ACCOUNTING utility.  It has options to collect information which is stored in
  171. accounting files, print it in a human readable manner, and, most importantly,
  172. edit accounting files.  That is, you can edit all information out of an
  173. accounting file which you don't want to appear in reports anymore.  The
  174. imporant qualifier to the ACCOUNTING command is /BINARY.
  175.  
  176.  
  177. File Access Dates
  178. ~~~~~~~~~~~~~~~~~
  179. One way for system managers to discover unwanted guests is to look out for
  180. modified system files.  Fo the modification
  181. dates in a file's header.  This can be done with RMS system calls, but there is
  182. no easy way to do that with pure DCL.  There are several utilities to do this
  183. kind of things in the public domain, so look out in the DECUS catalog.
  184.  
  185.  
  186. OPCOM
  187. ~~~~~
  188. OPCOM is a process which loggs system and security relevant events (like tape
  189. and disk mount transactions, security auditing messages etc.).  OPCOM receives
  190. messages via a mailbox device, formats them, loggs the event in the operator
  191. logfile (SYS$MANAGER:OPERATOR.LOG) and notifies all operators.  Additionally,
  192. it sends all messages to it's standard output, which normally is the system
  193. console device _OPA0:.  When OPCOM is started, one message is sent to the
  194. standard output announcing that the operator logfile has been initialised.
  195. Thus, it's not recommended to kill OPCOM to remain undiscovered, since the
  196. system manager most likely will get suspicous if the operator logfile has been
  197. initialised without an obvious reason.  The elegant solution to suspend OPCOM,
  198. for the time where no operator messages shall come through.  While OPCOM is
  199. suspended, all messages will be buffered in the mailbox device, where every
  200. process with sufficient privilege can read them out, thus avoiding that OPCOM
  201. reads those messages after it is restarted.
  202.  
  203. There is one problem with this solution though:  OPCOM always has a read
  204. pending on that mailbox, and this read will be there even if the OPCOM process
  205. is suspended.  Unless you're heavily into kernel hacking, there is no way to
  206. get rid of this read request.  As such, the easy solution is to generate an
  207. unsuspicious operator message as soon as OPCOM is suspended.  Afterwards, your
  208. own process (which can be a DCL procedure) reads all subsequent messages off
  209. the OPCOM mailbox until you feel save enough to have OPCOM resume it's work. By
  210. the way, the OPCOM message mailbox is temporary and has no logical name
  211. assigned to it.  You'll need SDA to get information about the device name.
  212.  
  213.  
  214. Command Procedures
  215. ~~~~~~~~~~~~~~~~~~
  216. Timely, you'll need DCL procedures to have some routine work done
  217. automatically.  It is important not to have strange command procedures lying
  218. around on a foreign system, since they can be easily read by system managers.
  219. Fortunately, a command file may be deleted while someone is executing it.  It
  220. is good practice to do so, utilizing the lexical function F$ENVIRONMENT.  If
  221. you need access to the command file itself from the running procedure, just
  222. assign a channel to it with OPEN.
  223.  
  224.  
  225. Piggy-Backing
  226. ~~~~~~~~~~~~~
  227. It's not normally a good idea to add new, possibly privileged accounts to a
  228. foreign system.  The better approach is to to use accounts which have been
  229. unused for some months and to hide privileged programs or piggybacks which gain
  230. privilege to the caller by some mechanism.  A piggyback is a piece of code
  231. which is added to a privileged system program, and which gives privileges
  232. and/or special capabilities to callers which have some kind of speciality (like
  233. a special process name, for example).  Be careful not to changs makes people suspicious.
  234.  
  235.  
  236. Conclusion
  237. ~~~~~~~~~~
  238. This file just tries to give an impression how interesting VMS kernel hacking
  239. can be, and what possibilties there are.  It of course is not complete, and
  240. many details have been left out.  Hopefully, it has been useful and/or
  241. interesting lecture.
  242.  
  243.  
  244.  
  245.                (C)opyright 1989 by the VAXBusters International.
  246.    You may give around this work as long as you don't pretend you wrote it.
  247. _______________________________________________________________________________
  248.  EOF
  249.  
  250. Downloaded From P-80 International Information Systems 304-744-2253 12yrs+
  251.