martes, 21 de octubre de 2008

Shellcode

Un shellcode es basicamente una serie de ordenes en ensamblador que hace algo de lo que podemos sacar provecho: ejecutar /bin/sh para obtener una shell, copiar una shell y ponerle un suid root, etc. Tienen características de programacion un tanto especiales.

Se usa para poder ejecutar código después de haber sobreescrito la direccion de retorno de un programa/función mediante un overflow, o mediante cualquier otro método válido. Es decir, el valor de la dirección de retorno que se sobreescribira será la de nuestra shellcode. Simplemente decir que cuando se produzca el desbordamiento y el salto se ejecutará nuestra shellcode.

Aquí les dejo algunos links de los códigos de algunos shellcodes y una breve descripción de lo que hacen.

  • Shellcode que deja una shell abierta en el puerto 8721. Funciona en NT, 2000 y XP:

http://www.terra.es/personal3/fistror/e/win32_bind.c

  • Shellcode que te conecta al puerto 8721 y te manda shell. Necesitas poner Netcat a la escucha y modificar la scode para poner tu IP.

http://www.terra.es/personal3/fistror/e/win32_reverse.asm

  • Shellcode que crea un usuario "X" con password "X" y lo une al grupo "Administrators".

http://www.terra.es/personal3/fistror/e/win32_adduser.asm

No hay comentarios: