elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Es posible crear una shellcode a partir de un binario programado en C?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Es posible crear una shellcode a partir de un binario programado en C?  (Leído 2,259 veces)
Percontex

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Es posible crear una shellcode a partir de un binario programado en C?
« en: 8 Abril 2012, 08:25 am »

A partir de este link:

http://es.wikipedia.org/wiki/Shellcode

Dan como ejemplo este código en C:

Código:
#include <stdio.h>

int main() {
   char *scode[2];
   scode[0] = "/bin/sh";
   scode[1] = NULL;
   execve (scode[0], scode, NULL);
}

Luego del debug de únicamente la funcion main se tiene esto:

Código:
 80483a4:       55                      push   %ebp
 80483a5:       89 e5                   mov    %esp,%ebp
 80483a7:       83 e4 f0                and    $0xfffffff0,%esp
 80483aa:       83 ec 20                sub    $0x20,%esp
 80483ad:       c7 44 24 18 a0 84 04    movl   $0x80484a0,0x18(%esp)
 80483b4:       08
 80483b5:       c7 44 24 1c 00 00 00    movl   $0x0,0x1c(%esp)
 80483bc:       00
 80483bd:       8b 44 24 18             mov    0x18(%esp),%eax
 80483c1:       c7 44 24 08 00 00 00    movl   $0x0,0x8(%esp)
 80483c8:       00
 80483c9:       8d 54 24 18             lea    0x18(%esp),%edx
 80483cd:       89 54 24 04             mov    %edx,0x4(%esp)
 80483d1:       89 04 24                mov    %eax,(%esp)
 80483d4:       e8 ff fe ff ff          call   80482d8 <execve@plt>
 80483d9:       c9                      leave  
 80483da:       c3                      ret    
 80483db:       90                      nop    

Y por último al "extraer" la shellcode queda así:

Código:
\x55\x89\xe5\x83\xe4\xf0\x83\xec\x20\xc7\x44\x24\x18\xa8\xf3\x0a\x08\xc7\x44\x24\x1c\x00\x00\x00\x00\x8b\x44\x24\x18\xc7\x44\x24\x08\x00\x00\x0\x00\x8d\x54\x24\x18\x89\x54\x24\x04\x89\x04\x24\xe8\x1b\xac\x00\x00\xc9\xc3\x90

Y al agregarla a algún script en C para compilar y probarla:

Código:
// shellcode.c 
// compilar con gcc shellcode.c -o shellcode
void main()
{
((void(*)(void))
{
"\x55\x89\xe5\x83\xe4\xf0\x83\xec\x20\xc7"
"\x44\x24\x18\xa8\xf3\x0a\x08\xc7\x44\x24"
"\x1c\x00\x00\x00\x00\x8b\x44\x24\x18\xc7"
"\x44\x24\x08\x00\x00\x00\x00\x8d\x54\x24"
"\x18\x89\x54\x24\x04\x89\x04\x24\xe8\x1b"
"\xac\x00\x00\xc9\xc3\x90"
}
)();
}

Al momento de hacer ./shellcode arroja una violación de segmento y no se ejecuta sh :(

Al menos en la Wikipedia parece permitir la posibilidad de crear una shellcode desde un binario programado en C, pero leyendo otra documentación me parece que únicamente se logra crear en lenguajes de bajo nivel como asm.

Entonces amigos, es posible crear una shellcode desde un programa binario en C?, o únicamente se pude obtener de archivos asm?


En línea

Sagrini

Desconectado Desconectado

Mensajes: 107


Ver Perfil WWW
Re: Es posible crear una shellcode a partir de un binario programado en C?
« Respuesta #1 en: 8 Abril 2012, 15:22 pm »

No es posible hacerlo directamente, ya que una shellcode no puede contener bytes nulos (y el binario tiene muchísimos). La idea es escribir en ensamblador una a una todas las líneas que ejecutan la shellcode.


En línea

Percontex

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Es posible crear una shellcode a partir de un binario programado en C?
« Respuesta #2 en: 9 Abril 2012, 01:52 am »

No es posible hacerlo directamente, ya que una shellcode no puede contener bytes nulos (y el binario tiene muchísimos). La idea es escribir en ensamblador una a una todas las líneas que ejecutan la shellcode.

Eso me temía, bueno tocará comenzar a estudiar a fondo ensamblador :)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
crear un DVD a partir de un avi
Multimedia
eco2001 3 2,299 Último mensaje 13 Noviembre 2004, 06:39 am
por eco2001
Crear CD a partir de .iso, que hago mal?? « 1 2 »
Software
^Sephiroth^ 10 14,297 Último mensaje 28 Mayo 2005, 06:45 am
por xiyu
Crear VCD a Partir de video DVD.. VOb?
Multimedia
kichan 1 2,213 Último mensaje 11 Junio 2007, 21:14 pm
por Songoku
¿crear un evento programado para un procedimiento almacenado MYSQL?
Bases de Datos
efreway 1 5,710 Último mensaje 10 Noviembre 2011, 20:31 pm
por Shell Root
¿es posible saber el ssid de una red a partir de su bssid?
Hacking Wireless
norberto_yo 1 4,021 Último mensaje 16 Enero 2012, 21:07 pm
por pianista
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines