home *** CD-ROM | disk | FTP | other *** search
/ PCMania 64 / PCMania CD64_1.iso / phy / phy002 / files / articulo.021 < prev    next >
Encoding:
Text File  |  1997-01-27  |  5.4 KB  |  122 lines

  1. *cN                             TECNICAS VIRICAS
  2.                              ----------------
  3. *cG
  4.         Hey! ¿Qué es esto? ¡Efectiviwonder! Un cursillo de técnicas que utili-
  5. zan los virus: stealth, polimorfía, encriptación, etc. etc. etc.
  6.  
  7.         Pero, ¡que nadie se engañe! No vamos a enseñar a hacer virus, sino que
  8. vamos a destripar sus técnicas más comunes. Si, por alguna de aquellas quisie-
  9. ras aprender a hacer virus, léete la sección de "Virus comentado" y, si sabes
  10. ensamblador, encontrarás tú mismo la forma de hacerlo (por otra parte, NECESI-
  11. TAS saber ensamblador para hacer un virus). Si por alguna de aquellas no su-
  12. pieras ensamblador, lee atentamente la sección de Ensamblador en Programación.
  13.  
  14.         Y, para este número, empezaremos con la técnica más sencilla: la en-
  15. criptación.
  16.  
  17.         ¿Qué es la encriptación? Encriptar es cifrar, mediante una clave, una
  18. secuencia, de manera que nos dé una secuencia completamente diferente. Cono-
  19. ciendo la clave para deshacer el cifrado, podremos encontrar la secuencia ori-
  20. ginal.
  21.  
  22.         El encriptado de archivos y de secuencias ejecutables se basa en esto
  23. y, además, en la particularidad de que los bytes o words son "circulares", es
  24. decir, si a un byte con valor FEh le sumamos 3, por ejemplo, nos daría 101h,
  25. pero esto no se puede guardar en un byte, así que sólo se guardaría la última
  26. parte: 01h. Entonces tendríamos un byte encriptado, cuya clave sería BYTE + 3.
  27. Entonces, para deshacer el encriptado y encontrar el byte original, sólamente
  28. tendríamos que restarle 3.
  29.  
  30.         Pues esto es encriptar. Después hay varias formas de encriptar.
  31.  
  32.         Una es la expuesta antes, la de la suma. Un programa muy corto suma un
  33. determinado valor a cada byte o cada word. Para sacar la secuencia real, tan
  34. sólo hay que restar ese valor. Veámoslo con un programa:
  35.  
  36. *cB
  37.         MOV     DI, Offset Inicio_Código
  38.         MOV     CX, Longitud_Encriptado
  39. L1:     SUB     WORD PTR [DI], Clave_de_encriptado
  40.         INC     DI
  41.         INC     DI
  42.         LOOP    L1
  43. *cG
  44.         Esto hace lo siguiente:
  45.  
  46.         Tenemos la cadena original. Por ejemplo:
  47. *cB
  48.         45 54 7B 68 8A F7 95 2C 41 74 ...
  49. *cG
  50.         Y la criptamos sumándole a cada byte el valor 10h. Nos daría:
  51. *cB
  52.         55 64 8B 78 9A 07 A5 3C 51 84 ...
  53. *cG
  54.         Que es una cadena diferente. Al ejecutar los bytes de la cadena como
  55. si de instrucciones se tratase, nos encontraríamos que hace una cosa completa-
  56. mente diferente. Para que haga lo que realmente queremos que haga hay que vol-
  57. verla a dejar como estaba, y para ello le restaremos 10h, que fue lo que le
  58. sumamos. Y volvería a quedar:
  59. *cB
  60.         45 54 7B 68 8A F7 95 2C 41 74 ...
  61. *cG        
  62.         La cadena original.
  63.  
  64.         Pero podemos complicar un poco más el encriptado, y no hacerlo tan fá-
  65. cil de deshacer (o de detectar, puesto que la diferencia entre un byte y el
  66. siguiente de la cadena es la misma). Por ejemplo, podemos hacer un XOR (muy
  67. común).
  68.  
  69.         Me imagino que ya sabes lo que será el XOR, pero lo digo por si acaso
  70. hay alguno que no lo sabe (si está leyendo esto, extraño, extraño...). XOR es
  71. una instrucción que significa "eXtended OR". Es una instrucción de operación
  72. de bits, que compara dos números a este nivel y, si los bits son iguales, pone
  73. 0 en el destino, y si son distintos, pone 1. Así:
  74. *cB
  75.                 10100101  --> 1er. nº (A5h)
  76.                 01001110  --> 2o. nº  (4Eh)
  77.                 --------
  78.                 11101011  --> Resultado (EBh)
  79. *cG
  80.         Si criptáramos nuestra cadena con un XOR, la secuencia sería más com-
  81. pleja. Así:
  82. *cB
  83.         45 54 7B 68 8A F7 95 2C 41 74 ...
  84. *cG
  85.         Criptamos cada byte "XOReándolo" con 11h y da:
  86. *cB
  87.         01000101 01010100 01111011 01101000 10001010 11110111 10010101
  88.         00010001 00010001 00010001 00010001 00010001 00010001 00010001
  89.         -------- -------- -------- -------- -------- -------- --------
  90.         01010100 01000101 01101010 01111001 10011011 11100110 10000100
  91.  
  92.         00101100 01000001 01110100
  93.         00010001 00010001 00010001
  94.         -------- -------- --------
  95.         00111101 01010000 01100101
  96. *cG
  97.         Es decir:
  98. *cB
  99.         54 45 6A 79 9B E6 84 3D 50 65 ...
  100. *cG
  101.         Que es una cadena un pelín más difícil de desencriptar que la otra. Lo
  102. bueno del XOR es que, para deshacer el encriptado, no necesitamos otra instruc-
  103. ción, sino que haciéndole XOR a esa cadena con la misma clave de encriptado,
  104. obtendremos la original. Probadlo y veréis. Y si hacéis un XOR a la cadena
  105. criptada con la original, byte a byte respectivamente, obtendréis la clave de
  106. encriptación.
  107. *cB
  108.         11 11 11 11 11 11 11 11 11 11 ...
  109. *cG
  110.         Bueno, aquí tenéis tela para rato. Un virus se encripta para ocultar
  111. su código a posibles "estudiantes" de éste. Esto hoy ya no tiene sentido, y ac-
  112. tualmente el criptado se usa como complementación de otras técnicas más comple-
  113. jas, como el polimorfismo. Tampoco es del todo eficaz variar en cada infección
  114. la clave de encriptado, porque entonces lo único que tendría que hacer el anti-
  115. virus sería buscar el programita de desencriptación. Y para evitar precisamente
  116. eso los virus makers se calentaron la cabeza y crearon las rutinas y motores de
  117. polimorfía, cosa que veremos más adelante. De momento, el número que viene ve-
  118. remos las técnicas stealth más comunes. Hasta la vista!
  119. *cL
  120.                                                         Líyak el Oscuro
  121.  
  122.