jueves, 27 de diciembre de 2012

Antivirus K.O. moviendo el Entry Point


Tengo tanto tiempo libre... como cuando tenía 17 años.

Sé lo que estáis pensando… “El mamarracho este, viene a mi RSS a reírse de mí, en mi cara y…  ¡yo sigo leyéndolo!”
Bueno, posiblemente no con 17 años tuviese tanto tiempo libre… la play, el deporte, las mujeres, los estudios para aquellos que estudiaron, las mujeres, ¿he dicho mujeres?.
Pero lo que son los 24, ¡menudo regalo de Dios!. En vacaciones, despertándome a las 2 de la tarde, de resaca, la novia trabajando, sin hijos… ¡oye! ¡Qué  hay tiempo de sobra para frikear!

Y nada mejor como volver a la juventud informática, desde mis inicios en aquel colegio de curas del que no quieren saber nada de mí, hasta las modificaciones de malware que a duras penas salían en indetectables, a golpe de martillo en algunos casos.
Hablando de modificaciones, la que vengo a contar hoy, es una de tantas técnicas utilizadas para conseguir esquivar, firmas antivirus de una sola estocada. Ya que actualmente funciona y la técnica, es más bien a cincel que a martillo, vengo a esculpiros.

El Entry Point, es la dirección de memoria, en la que se inicializa el código de una aplicación, siendo el punto de partida de ejecución. Si somos capaces de llevar a cabo la migración, de la dirección de memoria donde se encuentra el EIP,  junto a sus instrucciones, a otro lugar, estaremos modificando físicamente la cabecera PE de una forma correcta y dando lugar a la posibilidad de eludir firmas antivirus, que hayan sido colocadas en este tipo de zonas estratégicas para evitar que una simple modificación en hexadecimal, pueda romper la firma.

Yo he elegido el famoso Crypter BPC, por ser una de mis primeras modificaciones de hace unos años, para extraer el Stub de esta herramienta, necesitaremos un editor de recursos como puede ser Resource Hacker, para poder modificar el ejecutable con firmas, a nuestro antojo. En primer lugar, nos armaremos de Olly.

Una vez arrastrado nuestro stub.exe a Olly, podremos ver marcado en negro el Entry Point, detrás del a dirección de memoria 004010C4.


Copiaremos las dos primeras instrucciones ensambladas, que más tarde introduciremos en otra posición de memoria.


Y rellenaremos de NOPS, para por ejemplo, aplicar saltos con método RIT más adelante.


Bajaremos hasta la zona de la memoria donde no se encuentren instrucciones, en la cual podremos introducir nuestro código sin romper el ejecutable.


Seguidamente, introduciremos las dos instrucciones copiadas del antiguo Entry Point junto con una instrucción de retorno (RETN), la cual puede ser sustituida con un JMP como hicimos con el método RIT. Guardaremos el número de la izquierda marcado en rojo, donde se indica la nueva dirección de memoria, desde la cual partirá la ejecución de la aplicación.


Nos dirigiremos a "Copy to executable > All modifications", para guardar nuestro nuevo Stub.


Con todo esto realizado, tan solo nos queda utilizar un editor de cabeceras PE, como LordPE para realizar el cambio a la dirección del nuevo Entry Point. Incluiremos los últimos 4 dígitos de la dirección, generaremos el nuevo Checksum del archivo y guardaremos los cambios.


Podemos comprobar que la migración se hizo correctamente, introduciendo de nuevo el Stub en Olly.


Tan solo faltaría introducir el Stub, dentro del Crypter de nuevo utilizando Resource Hacker, reemplazando el original CUSTOM/101 por el nuestro. La zona marcada en negro, son las dos instrucciones migradas y C3 el RETN.


Comparando con un editor hexadecimal el Crypter BPC original, con el nuestro, encontraremos el cambio justo en la zona donde introducimos las instrucciones.


Con lo que ya estará preparado para pasar desapercibido a unos pocos.


Saludos 4n4les! ;)

7 comentarios:

  1. Buena !, es una de la tantas formas pero innteresante como se puede aplicar algo sencillo para pasar desapercibido , estaria bueno e interesante mostar en un pequeño escrito sobre los metodos que usan los antivirus para buscar firmas .. saludos

    ResponderEliminar
    Respuestas
    1. Gracias Alex! está muy chulo tu blog también! tienes buenas investigaciones!

      Saludos! :)

      Eliminar
  2. Esta es vijea ANO, sorprendenos como en los viejos tiempos!

    ResponderEliminar
  3. Hey Germán enhorabuena por tu blog aunque lo abandones un poquillo de vez en cuando... ;) ¿Podrías subir el crypter BPC a algún servidor estilo 4shared y publicar el enlace? Gracias de antemano

    ResponderEliminar
  4. Seria bueno que publicaras el archivo de ejemplo

    ResponderEliminar