|
Mostrar Mensajes
|
Páginas: 1 [2] 3 4 5
|
15
|
Seguridad Informática / Bugs y Exploits / Re: Extraño salto técnica POP POP RET
|
en: 3 Abril 2014, 23:34 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? Pues estoy usando OllyDbg 1.10, y parece ser que las DLLs del sistema —como podría ser user32.dll— las detecta bien, pero quitándole el análisis a las DLLs externas, me ha detectado un "jmp esp", y con findjmp.exe muuuchos más... No tiene ASLR, no, jaja. Ahora estoy estudiando esas técnicas, pero la primera es POP-RET (la del exploit) y no me sale. Se ve que el EIP coge 3 bytes de la shellcode, además de un 65 que no sé de dónde sale, y no le encuentro el más mínimo sentido jah...
|
|
|
16
|
Seguridad Informática / Bugs y Exploits / Re: Extraño salto técnica POP POP RET
|
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 :/.
|
|
|
17
|
Seguridad Informática / Bugs y Exploits / Re: Extraño salto técnica POP POP RET
|
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?
|
|
|
18
|
Seguridad Informática / Bugs y Exploits / Re: Extraño salto técnica POP POP RET
|
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.
|
|
|
19
|
Seguridad Informática / Bugs y Exploits / Re: Extraño salto técnica POP POP RET
|
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:# Generated file: C:\Documents and Settings\Adminitrador\Escritorio\pop-ret.m3u # Technique used: POP + POP + RET + JMP ESP my $file= "pop-ret.m3u"; my $junk= "A" x 26061; my $eip = pack('V',0x01BD1111 ); # "pop pop ret" from MSRMCcodec02.dll my $jmpesp = pack('V',0x7E41A323 ); # "jmp esp" from user32.dll my $prependesp = "XXXX"; # add 4 bytes so ESP points at beginning of shellcode bytes my $shellcode = "\x90" x 8; #add more bytes $shellcode = $shellcode . $jmpesp; #address to return via pop pop ret ( = jmp esp) # Shellcode = 32 breakpoints $shellcode = shellcode . "\xcc" x (4*8); # 32 bytes print $FILE $junk.$eip.$prependesp.$shellcode; print "Archivo m3u creado con exito.\n";
Screenshot: http://www.subeimagenes.com/img/error-shellcode-908018.jpg
|
|
|
|
|
|
|