Codigo Abstracto

Páginas: 6 (1290 palabras) Publicado: 2 de abril de 2012
CODIGO ABSTRACTO

Antivirus, PE, backdoor y otras cosas (segunda parte)
En la primera parte de este artículo revisé cómo es posible modificar la estructura y el flujo de un programa con el fin de colocar en él código malicioso que permita a un atacante tomar control del sistema donde se ejecuta dicho programa. En esta segunda parte trataré de explicar algunas de las técnicas que se usan paralograr evadir las restricciones de seguridad de los antivirus.
La mayoría de los antivirus trabajan en dos formas:
* Detección por firmas: existe una base de datos que contiene firmas o fragmentos de código malicioso; cuando un usuario abre un programa, el antivirus valida que no exista una  firma asociada a parte del contenido del programa, en caso contrario se genera una alerta.
*Detección heurística: cuando no se cuenta con una firma para un código malicioso, el antivirus puede detectar patrones de comportamiento que relaciona con alguna de las firmas existentes y por lo tanto asume que representa una amenaza.
Si se entienden las dos maneras en que trabajan los antivirus, podremos alterar el  flujo o datos de los programas con el fin de evitar que sean detectados. Paraexplicar cómo hacerlo continuaré trabajando con el archivo nc4.exe que ya fue modificado:
* A la sección que se creó “.Nueva”,  le daré el atributo de writepara permitir su modificación en memoria y tiempo de ejecución.
* Buscaré espacio libre en el archivo para colocar un codificador.
* Crearé un codificador simple XOR para nuestro shellcode.
* Codificaré el shellcode.
Empecemosentonces agregando el atributo de write a la sección .Nueva desde LordPE:

.
Ahora que ya es posible modificar en tiempo de ejecución el programa, se debe identificar el segmento de memoria de inicio y fin en los cuales se encuentran las instrucciones que se van a codificar, esto es, el primer JMP que agregamos y la última instrucción que regresa al flujo original el programa:

.
Ahora se abre elarchivo ncV4.exe con Immunity Debbuger y buscamos espacio que no tenga código que se ejecute:

A partir del segmento de memoria 0040A97D comenzará la codificación y queda de la siguiente manera:

.
MOV EAX,            00410000       | Movemos el registro EAX al inicio de memoria a codificar. |
| |
XOR
BYTE PTR DS:[EAX],30 | Se aplica una función XOR al valor del registro de EAX; el 30representa la llave para la función. |
| |
INC EAX |  Se incrementa EAX para ir al siguiente registro. |
| |
CMP EAX,0041013A | Se compara si ya se llegó al fin de las instrucciones a codificar. |
| |
JLE SHORT 0040A982 | Se regresa a la instrucción del XOR hasta que se cumpla la condición de llegar al final de las instrucciones. |
.
Al añadir estas sentencias, en el momento enque se ejecutan codifican de manera muy simple las instrucciones inyectadas. Estas nuevas instrucciones codificadas se guardan en el archivo ejecutable. En la siguiente imagen se puede ver la diferencia entre los códigos:

.
El paso que sigue es cambiar el flujo del programa para que vaya a este segmento de memoria y, al terminar la codificación, continúe con el flujo normal del programa. Conesto, el nuevo nc4.exe queda así:

.
Nota: Recuérdese que siempre que se hace un cambio hay que guardarlo.
.
Si ahora se analiza el nuevo ejecutable con los diversos antivirus el resultado es:

.
Como puede observarse, muchos de los antivirus captan el archivo como NetCat, y han dejado de detectar el código malicioso.[i]
¿Qué sigue ahora? Pensemos que si con una simple codificación XOR seha logrado ocultar código malicioso ¿Será  posible que incluso el archivo no se detecte como nc.exe?
La técnica más común es buscar el código con la firma que usan los antivirus, cada fabricante utiliza diversos segmentos de código de los programas. Una manera rápida de detectar dichos segmentos es dividir el archivo en dos, analizar cada parte por separado y validar cuál de ellas es detectada...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • abstracto
  • abstracto
  • Abstract
  • abstracto
  • Abstract
  • Abstract
  • Abstract
  • Abstract

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS