home *** CD-ROM | disk | FTP | other *** search
/ HaCKeRz KrOnIcKLeZ 3 / HaCKeRz_KrOnIcKLeZ.iso / chibacity / anote.2 < prev    next >
Text File  |  1996-04-22  |  6KB  |  100 lines

  1.     Continuing with recent report off the Internet on the Mutating Engine:
  2.     Part 2/4
  3.                  *************************************
  4.                                  22 Jun 92
  5.  
  6.                             Mutation Engine Report
  7.             Copyright (c) 1992 by  VDS Advanced Research Group
  8.                            All Rights Reserved
  9.  
  10.       Though all this may sound ordinary, MtE got so much attention
  11. not because it is just another encryptive virus but because it can
  12. provide even simple viruses with a feature that makes it difficult
  13. to scan for them. MtE is just like a library routine that you link
  14. into your virus and call when needed. It is a little over 2K in an
  15. object module named MTE.OBJ. A person who calls himself "Dark
  16. Avenger" claims to have developed MtE, and distributes it by
  17. uploading to BBSes in Bulgaria. The archive contains a fairly
  18. detailed documentation on how to use MtE, and even includes a
  19. demonstration virus, a non-resident COM infector known as
  20. "Dedicated". Shortly after MtE made its appearance, a modified copy
  21. of this virus called "Fear" is also seen. Why this person is
  22. engaged in such potentially harmful activity, or how he/she gets
  23. away with it is not something we know about. Curious individuals
  24. who would like to learn more about the history of virus production
  25. in Bulgaria and other social as well as technical issues are
  26. invited to read an excellent paper written by anti-virus researcher
  27. Mr. Vesselin Bontchev of Virus Testing Center, University of
  28. Hamburg. The paper is titled "Bulgarian Virus Factory", and it is
  29. available via anonymous FTP. It provides insight into some of the
  30. cultural aspects of the virus underground in Bulgaria. Mr.
  31. Bontchev's contribution to anti-virus research is much appreciated;
  32. otherwise, we probably would have never known what goes on inside
  33. the Bulgarian virus factories.
  34.  
  35.             II. How to Catch Viruses and MtE-based Viruses
  36.  
  37.       Scanning for many  known viruses is usually a trivial task.
  38. You disassemble a sample, extract a sequence of bytes that would
  39. exist in each infected executable object, put it into a pattern
  40. matching engine, and then look for that pattern in executable
  41. objects that that virus is known to target. This method proved to
  42. be quite useful in fighting many viruses seen in the wild. Assuming
  43. a carefully chosen scan string, you can find the virus easily
  44. without too many false positives. Not so for polymorphic viruses.
  45.       These viruses try to defeat common scanning methods. They keep
  46. their body encrypted to defy analysis, and encrypt the new copy
  47. inserted into an executable object using a different key so that it
  48. will "look" as if a different virus infection has occurred.
  49. However, even these viruses require a plaintext code that will
  50. decrypt the rest of the virus. Scanners can use strings extracted
  51. from the plaintext portion of the virus to identify them. It is
  52. usually necessary to include wildcard bytes (don't-care bytes) to
  53. be able to deal with the varying parts of the decryption routine.
  54. Naturally, false alarms are more likely to occur. MtE is more
  55. advanced than such viruses seen before.
  56.       We would like to emphasize that the contents of each mutation
  57. and the corresponding decryption routine MtE generates is far too
  58. variable to extract a simple (or even wildcard) scan string. It is
  59. necessary to analyze the MtE itself as well as many sample
  60. mutations. After that, certain characteristics of the code MtE
  61. generates can be used as telltale signs to detect its presence.
  62. Avoiding false positives while maintaining 100% detection ratio is
  63. quite difficult.
  64.       Armed with an 80x86 instruction set guide (we used Turbo
  65. Assembler 3.0 Quick Reference Guide), and a good disassembler (we
  66. used Mr. Zandt's DIS86 available via anonymous FTP), and a few
  67. known viruses based on MtE (Pogue and Dedicated with payload
  68. removed), we analyzed the MtE code, and the mutations generated.
  69. Tests were conducted on a 40Mhz 386 with a 100 meg HD and MS-DOS
  70. 5.0, and a 4.77Mhz IBM/XT with a 30 meg HD and PC-DOS 3.3
  71. installed. A simple program that generated decoys (small, fully
  72. functional programs) was used to create a large number of samples.
  73. In the case of Pogue, the virus was allowed to remain resident and
  74. infect each decoy program as it is created. Since the Dedicated
  75. virus is not resident, it was necessary to create decoys first and
  76. then infect them by running the virus (infects in the current
  77. directory). After the tests, we archived the samples and stored
  78. them on floppy diskettes, and removed them from the hard drives of
  79. the test machines.
  80.       In the Intel 80x86 architecture, it is possible to express a
  81. computation in very dissimilar ways. This is possible because
  82. certain registers can be substituted in place of another one and
  83. still achieve the same result. For example, you can index an array
  84. by using SI, DI, BP or BX registers. Or you could XOR a certain
  85. value at a given memory location by loading that value in AX, BX,
  86. CX or DX first, and performing the XOR on that register, and then
  87. putting the result back into memory, etc. Even other possibilities
  88. exist. When stepping through elements in an array, you can
  89. increment the index register by ADDing to it, INCing it, or ADDing
  90. and then SUBtracting from it. It should be clear that such
  91. flexibility helps MtE significantly. Of course, variability is
  92. something string scanners do not handle too well, since there are
  93. many combinations to search for.
  94.       MtE goes even further than that. The size of the decryption
  95. routine is also variable, making it infeasible to assume certain
  96. things that would hold for many polymorphic viruses. It also sets
  97. up a lengthy sequence of redundant instructions before the
  98. decryptor enters the decryption loop.
  99.  
  100.