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:
- saltamos a virus
- virus
- saltamos a Huésped
- Huésped
- 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 )