Overwrite( sobre escritura)

Este método consiste simplemente en sobreescribir el Host con el código del virus.

El huésped queda inutilizado, pero lo que ocultará la presencia del virus con vertiendo el método de infección playload el cual permite que el huésped siga funcionando

Un símil en Shell Scripts podría ser el siguiente ( figura 19)

 

$> cat virus > host

 

figura 19

 

 

 

Prependig (copia el principio)

 

El objetivo es que el virus se copie justo antes que el código del huésped, para asegurarse que el código verídico se  ejecute y no interferir en el funcionamiento del huésped

Este método tiene un inconveniente, es costoso en cuanto a tiempo y variables, ejemplo si un virus quiere instalarse en un huésped que es un ejecutable de 500 KB de tamaño, para ello deberá almacenar el equivalente al tamaño del virus en un buffer, posteriormente copiarse al principio e ir repitiendo este proceso de desplazamiento del código huésped hasta el final.

O se podría crear un fichero temporal en el que se copiará el código del virus y luego concatenar el huésped para mover el fichero temporal sobre el fichero que contenía al huésped.

Ejemplo:

shell Script el método de copia al principio (prepending) podría entenderse de la siguiente manera :

$> cat virus> tmp

$> cat host >>tmp

$> mv tmp host

 

figura 20 proceso de copia al principio

 

 

 

 

                         

Postpending (copia al final)

Las dos primeras técnicas están limitadas la primera Overwrite( sobre escritura) es básicamente sobrescribe el host con el código del virus haciendo que ocultar al virus para un antivirus es prácticamente  imposible.

La segunda técnica prependig( copia al principio) es altamente efectivo, pero es limitante en el tiempo de entrada /salida

Los programadores del malware han creado una nueva técnica la mejora el tiempo y la Entrada/Salida. Para lo cual:

El virus se copia al huésped hasta el principio del código y cuando termine el virus, otro saltará hasta el comienzo del huésped

Situación inicial:

Virus, huésped  (separados)

Situación final:

[saltar a virus]Huésped[fin]virus[saltara a Huésped]

Ejecución:

  1. saltamos a virus
  2. virus
  3. saltamos a Huésped
  4. Huésped
  5. fin

 

figura 21 proceso de copia al final

 

 

 

 

 

Companion

 

Acompaña al fichero “huésped” sin modificarlo. Lo que  suele hacer es mover el fichero original a otro (generalmente oculto) y escribe el código malicioso en un fichero con el nombre del original.

Este tipo de infección tiene el inconveniente de que si alguien intenta mover o copiar el fichero original todo el efecto se perderá, Ya que se romperá la “compañía” y el código vírica difícilmente encontrará al “huésped” original 

Multipartite ( multiplataforma)

 

Tiene como peculiaridad la posibilidad de infectar diferentes plataformas. Capaz de infectar diferentes microprocesadores…

Técnicas anti-bat

 

Muchos Antivirus crean ficheros “cebo”(bait o goat files) con el propósito de detectar virus en el sistema y comprobar como ha cambiado ese fichero

la técnica anti-bait pretende detectar estos ficheros y no infectarlos escapando de la trampa montada por el antivirus

Residencia (+ per-process)

Para lograr que un virus logre extenderse en el sistema operativo logrando infectar fichero a fichero o directorio a directorio.  éste método es efectivo, pero demasiado lento.

Una alternativa a este método de diseminación es permanecer residente e infectar los ficheros a los que se vaya accediendo

Esto en MSDOS  o las primeras versiones de        Mac era algo fácil de hacer (TSRs) pero conforme al tiempo los sistemas mejoran la protección.

Ahora es altamente difícil conseguir una residencia en RING-0 (el nivel mas alto de privilegios dentro del procesador) y lo que se utiliza bastante es la residencia en RING-3 (nivel de usuario) “per-process” esta técnica inventada por Jacky Qwerty, ex-29 a la cual consiste en parchear una determinada API (ejemplo CreateProcess) y así suplanta toda las llamadas a esa API por parte de los procesos hijos que se crean a partir del ejecutable infectado.

 

figura 22 Residencia “per-process

 

a 22

                         

                         

                         

                         

Encriptación  (cifrado)

 

Corresponde a una técnica en la cual el virus se cifran o encriptan a si mismo para no ser detectado por los antivirus.

Cuando el virus  esta en Payload se desencripta infecta y vuelve a encriptar para lo cual para tratar de ocultar el código malicioso el virus se divide en dos códigos, el

Primero en una rutina de desencriptado y el resto del código encriptado con el mismo algoritmo

Encriptación simple

El sistema más habitual de Encriptación consiste en la utilización de una función

Xor o de una combinación ADD/SUB

“la puerta logica o-exclusiva, mas conocida por su nombre en ingles, Xor, realiza la función booleana A'B+AB' su símbolo es el mas (+) inscrito en un circulo.”

el cual se basa en el hecho de que cuando un numero se aplica dos veces la operación Xor con el mismo numero, el resultado acaba siendo el mismo que el principio

Ejemplo

 

A = 10101101 y B = 11011011.

 

AXORB=10101101XOR11011011=01110110


(AXORB)XORB=01110110XOR11011011=10101101

 

 

Siendo éste uno de los modelo de encriptación mas sencillo que encontramos.

Xor respecto de B se obtiene un nuevo valor que es byte encriptada y de nuevo haciendo un XOR con B se vuelve al original .

Por lo cual para llevar adelantar la técnica solo tendrá que almacenar un determinado valor (preferente mente aleatorio) que sea este B e interara por todos bytes del virus para encriptarlo un ejemplo de este código seria:

[inicio_encriptado+ebp] mov ecx,tamanyo_encriptado call Generar_Num_Aleatorio ; nos podria devuelve en AL mov byte ptr ds:[llave_encriptado+ebp],al Loop_Encriptacion: xor byte ptr ds:[esi],al inc esi loop Loop_Encriptacion

en lo general, la parte del virus a ser encriptada no puede ser su totalidad, tiene que tener un trozo que no este encriptado para lograr desencriptar el código y ejecutarlo

Podría copiar el virus al fichero infectado mediante  memory file mapping (direccionamiento de memoria) y encriptarlo el fichero, pero no en la zona que el creador del código malicioso quiere al inicio del virus seria algo similar a:

call Delta Delta: pop ebp sub ebp, offset Delta lea esi, [inicio_encriptado+ebp] mov ecx,tamanyo_encriptado mov al, byte ptr ds:[llave_encriptado+ebp] Loop_Desencriptacion: xor byte ptr ds:[esi],al inc esi loop Loop_Desencriptacion

Esta linea podrá desencriptar en la siguiente ejecución la totalidad del virus

Generación de números aleatorios

Un éxito de un sistema de incriptacion o un engine polimórfico se basan en el  buen sistema de generación de números aleatorios.

En la práctica es casi imposible, generalmente números aleatorios dado a su complejidad 

El sistema más usado consiste en usar un valor aleatorio, el cual se utilizará como se pueda usar como semilla (cuando necesite un número aleatorio lo sacará de la semilla realizando la operación sobre ese valor) la metodología para crear la semilla 

Encriptación Avanzada

Este método presenta ventajas y desventajas,Falta anotar las técnicas  de Encriptación

Poly (polimorfismos)

La técnica de Encriptación  se basan en el ocultamiento del virus para ejecutar el código malicioso generando el mismo código.

Una de las diferencias radicales con el encriptamiento a diferencia del polimorfismo es que la rutina de encriptado y desencritado serán distinta cada vez con respecto a la clave para  encriptar el código malicioso , será variable

Esto origina un sin fin de rutinas de encriptado e infinitas claves posibles, el cogido malicioso va mutando por cada infección

Epo ( Entry Point Obscuring)

Cuando un código malicioso cumple su objetivo de infectar la máquina, es normal que cambie ENTRY POINT o puntero a la dirección de memoria que contiene el comienzo del código ejecutable. A este tipo de infección se denomina  postpending Su  comportamiento:

El virus cambia el puntero que apunta al comienzo del código malicioso por un Puntero que apunta al comienzo de su código, para asegurarse que se ejecuta Primero.

Para lo cual oculta el salto del código malicioso dentro del código del fichero infectado (se ejecuta normalmente durante unas intrusiones  de esta forma logra burlar el antivirus figura 23 )