home *** CD-ROM | disk | FTP | other *** search
/ HaCKeRz KrOnIcKLeZ 3 / HaCKeRz_KrOnIcKLeZ.iso / chibacity / strange.doc < prev    next >
Text File  |  1996-04-22  |  8KB  |  198 lines

  1. The Strange Virus
  2.  
  3.  
  4. Notes on Disassembly
  5.  
  6.      by Evgeny Kaspersky and Vadim Bogdanov
  7.  
  8.      from Virus Bulletin April 1993
  9.  
  10.      Virus Bulletin Ltd,
  11.      21 The Quadrant,
  12.      Abingdon Science Park,
  13.      Oxon,
  14.      OX14 3YS,
  15.      England
  16.  
  17.  
  18. Stealth viruses have been around for a very long time,
  19. and are one of the principal reasons why manufacturers
  20. insist that users execute a clean boot before using
  21. anti-virus software.  Many software vendors attempt to
  22. circumvent this problem by gaining "clean" access to
  23. both INT 13h and INT 21h, the idea being that if clean
  24. disk access can be achieved, the effects of any stealth
  25. virus will be negated.
  26.  
  27. The STRANGE virus calls into question the logic of such
  28. techniques, as it illustrates a new way for a virus to
  29. avoid detection by a scanner.  By moving to increasingly
  30. low-level interception of hard disk read requests, the
  31. virus authors appear to be attempting that users who
  32. forego elementary safety precautions pay the price.
  33.  
  34. The STRANGE virus is a master boot sector virus three
  35. sectors long.  However, here its similarity with other
  36. boot sector viruses ends.  When an infected machine is
  37. booted, the virus loads itself into memory and becomes
  38. resident.  The virus decreases the word at address
  39. 0040:0013, which specifies the amount of available
  40. conventional memory and then hooks INT 08h ( the timer
  41. interrupt ) rather than the "standard" boot sector virus
  42. interrupt, INT 13h.
  43.  
  44. The virus uses INT 08h to monitor the bootstrap
  45. procedure of the PC.  When the interrupt vector table is
  46. set up ( this happens when DOS is loaded ) it restores
  47. the original INT 08h handler and hooks INT 21h.  The INT
  48. 21h handler simply intercepts the DOS Load and Execute
  49. function.
  50.  
  51. The rather tortuous route above enables the STRANGE
  52. virus to intercept the loading of the command
  53. interpreter.  This is done immediately after the device
  54. drivers are loaded.  At this point the virus installs
  55. itself as a device driver and restores the original INT
  56. 21h handler.  INT 13h is finally hooked, as is INT 09h (
  57. the keyboard interrupt ).  If the virus is unable to
  58. install itself as a device driver, it displays the
  59. message:
  60.  
  61. Hmm... Strange drivers you have, very strange... ;-)
  62.  
  63. At first glance this highly complex loading procedure
  64. seems completely unnecessary - after all, the virus
  65. could have picked up INT 13h as soon as the system was
  66. booted.  However, there is a subtle difference between
  67. intercepting this vector now rather than at boot time.
  68. By the time the command interpreter is loaded ( usually
  69. COMMAND.COM ) all the relevant device drivers have been
  70. installed.  Therefore any driver software required to
  71. access the DOS partition of the disk will be installed
  72. and already hooked to INT 13h.
  73.  
  74. !!! This means that the virus can access the disk at a
  75. sector by sector level safely and reliably even in the
  76. presence of disk compression software....!!!
  77.  
  78. The virus carefully checks whether another program is
  79. attempting to tunnel the true INT 13h address.  It does
  80. this by comparing the contents of the stack before and
  81. after a PUSH and POP instruction.  While the contents of
  82. the stack are not altered by tracing, the contents of
  83. the memory just above the top of the stack will be, when
  84. the return address is PUSHed.  If this test shows that
  85. tracing of the executable path is occurring, the virus
  86. issues an IRET with the registers containing the error
  87. code for a "disk write protect" error.
  88.  
  89. !!! Apart from its unusual installation process, the
  90. virus uses a previously unseen method of avoiding
  91. detection - it makes use of hardware interrupts in an
  92. attempt to hide its presence.... !!!
  93.  
  94. Whenever data is read from the disk drive, a hardware
  95. interrupt occurs which indicates that a read is ready to
  96. take place.  These interrupt requests are handled
  97. differently on the XT and AT, and therefore the first
  98. thing the virus needs to do is to ascertain the
  99. processor type.
  100.  
  101. There is no built-in method of determining the processor
  102. type; Intel did not include any simple processor ID
  103. instruction in the i8086, and therefore no such function
  104. was built into newer processors.
  105.  
  106. The virus determines the type of processor by using five
  107. assembler instructions:
  108.  
  109.      MOV    AX,2
  110.      MOV    CL,41h
  111.      SHR    AX,CL
  112.      TEST   AX,1
  113.      JZ     xt_class_computer
  114.  
  115. The above example works because of a difference between
  116. the i8086 and more modern Intel chips.  The Intel 80386
  117. Programmers Reference Manual states that " To reduce the
  118. maximum execution time, the 80386 does not allow shift
  119. counts of greater than 31.  If a shift count greater
  120. than 31 is used, only the bottom five bits of the shift
  121. count are used.  ( The 8086 uses all eight bits of the
  122. shift count. )"
  123.  
  124. The above routine will therefore have different results
  125. when executed on an XT rather than an AT.
  126.  
  127. XT routine.
  128. On an XT, the virus hooks INT 0Dh - this corresponds to
  129. the hardware interrupt IRQ5 ( the hard disk controller
  130. interrupt ).  Whenever a disk read is requested, the
  131. virus checks the contents of the disk buffer for its own
  132. code. If it is found, it substitutes the contents of the
  133. buffer with the contents of the original master boot
  134. sector.
  135.  
  136. AT routine.
  137. The INT 76h handler routine is somewhat more
  138. complicated. When a disk access is about to take place
  139. the disk controller issues a hardware interrupt.  This
  140. causes the virus code to be executed.  On the AT, the
  141. virus checks the contents of ports 1F3h to 1F6h.  These
  142. ports contain the data which the hard disk controller
  143. will use for the forthcoming disk access.
  144.  
  145. If these numbers correspond to a read of the master boot
  146. sector of the hard drive, the STRANGE virus alters the
  147. contents of these ports so that the original master boot
  148. sector is read instead.
  149.  
  150. This means that even if an anti-virus program has clean
  151. INT 13h access, it is still entirely capable of being
  152. "stealthed".  This serves as yet another illustration of
  153. the danger of not clean booting the machine.
  154.  
  155. The virus contains a number of different trigger
  156. routines.  Firstly, if the virus encounters an error
  157. during installation it displays a silly text message (
  158. see above ).
  159.  
  160. In addition, the virus uses INT 09h to add occasional
  161. mistyped keystrokes.  By far the strangest trigger
  162. however is the fact that the virus intercepts disk
  163. writes which start with the letters 'MZ', which are used
  164. to indicate that a file has an EXE format.
  165.  
  166. When the virus encounters such a sector, the disk write
  167. is allowed to pass unmolested except for the first two
  168. letters, which are swapped about.  This is a bizarre
  169. action to take, as EXE files edited in this way should
  170. still function correctly, since 'ZM' is also a valid EXE
  171. file qualifier.
  172.  
  173. The virus is not particularly difficult to disinfect:
  174. the original master boot record is stored in sector 11
  175. of the hard disk and can easily be copied back to its
  176. original position.
  177.  
  178. However, the way this virus uses stealth is particularly
  179. interesting, as the manipulation the virus employs in
  180. order to avoid detection is at a lower level than usual.
  181. The author of the virus appears to have an in-depth
  182. knowledge of the IBM PC and it is lamentable that a
  183. reasonably competent programmer would wish to waste his
  184. time on such a pointless ( and malicious ) project as
  185. this virus.
  186.  
  187. The new method of stealth does have some repercussions
  188. for those who insist that a clean boot is an unnecessary
  189. luxury.
  190. Anyone advocating such a technique had better be sure
  191. that they have considered all the ways to subvert their
  192. product - or else risk users ire when they find
  193. themselves the victim of the next crop of stealth
  194. viruses.
  195.  
  196.  
  197.  
  198.