Cómo funciona un exploit

Moderadores: largeroliker, Kravenbcn, fidelcastro, cerealkiller, pspCaracas, dark_sasuke, m0skit0, LnD, ka69, zacky06

Avatar de Usuario
gokuhs
Experto
Experto
Mensajes: 1073
Registrado: 23 Sep 2009, 15:16
PSN ID: gokuhs
Steam ID: gokuhss
Twitter: gokuhss
Ubicación: Alicante
Contactar:

Re: Cómo funciona un exploit

Mensajepor gokuhs » 03 Feb 2010, 15:38

Vamos que si no te he entendido mal el único juego que hay en realidad es con la pila de llamadas. En realidad le provocamos un overflow como tu dices con un char por ejemplo de modo que reescribamos la pila cambiando la dirección en de retorno al finalizar la función por la dirección en memoria de nuestro código.

Reflexionando un poco sobre lo que dices hombre me parece asta difícil que a la hora de leer de un soporte no se controle, en el ejemplo que tu me dices del nombre, leñe es raro que como maximo son 20 leas mas de 20 registros en el archivo. Claro si ya hablamos de que ha sido serializado el objeto o estructura supongo que esto da mas juego (creo yo).

Gracias por la info me has resuelto también varias dudas que tenia también. A ver si cuando salga luego de la facultad le echo un vistazo a los tutoriales.

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5586
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: Cómo funciona un exploit

Mensajepor m0skit0 » 03 Feb 2010, 16:43

gokuhs escribió:el único juego que hay en realidad es con la pila de llamadas

Sí, pero ten en cuenta que en la pila no hay sólo llamadas, sino también otros datos. Cuando un programa crea un buffer, generalmente lo hace en la pila y con un tamaño estático (fijo). De ahí que podamos sobreescribir la dirección de retorno, ya que datos y llamadas están ambos en la pila.

gokuhs escribió:cambiando la dirección en de retorno al finalizar la función por la dirección en memoria de nuestro código

Eso es. Ten en cuenta que el código puede ser el mismo char. Por ejemplo:

Código: Seleccionar todo

char code[] = "\x08\x00\xE0\x03";

Eso sería un jr $ra en caso de que la PSP llegara por casualidad a ejecutarlo ;)

gokuhs escribió:me parece asta difícil que a la hora de leer de un soporte no se controle, en el ejemplo que tu me dices del nombre, leñe es raro que como maximo son 20 leas mas de 20 registros en el archivo

Bueno, no sé qué conocimientos de programación tendrás, pero estos errores se deben a la incompetencia de los programadores. Por ejemplo la función strcpy() en C copia una cadena de caracteres en otra, pero no se rige por ningún tamaño, esto es, a strcpy() se le dice "copia esta cadena de caracteres que se encuentra en la dirección X a esta otra en la dirección Y". Y strcpy() copia hasta que se encuentra con un carácter nulo (un byte 0x00). Al usar esta función de manera descuidada, puede darse el caso de un desbordamiento de buffer. Tienes un ejemplo para PSP en el cursillo que mencioné anteriormente, concretamente en la 4ª parte.
Imagen

Avatar de Usuario
karac
Enteradillo
Enteradillo
Mensajes: 48
Registrado: 29 Sep 2009, 17:53

Re: Cómo funciona un exploit

Mensajepor karac » 03 Feb 2010, 18:19

Grande profeeee...!!!

Sigue instruyendonos con tu sabiduria.. :adora: :adora:

Saludox

Avatar de Usuario
gokuhs
Experto
Experto
Mensajes: 1073
Registrado: 23 Sep 2009, 15:16
PSN ID: gokuhs
Steam ID: gokuhss
Twitter: gokuhss
Ubicación: Alicante
Contactar:

Re: Cómo funciona un exploit

Mensajepor gokuhs » 03 Feb 2010, 19:56

Madre mía m0skit0, me gustaría saber de donde has aprendo tu todas estas cosas ;-) jeje

Desconocía por completo que en un Array Char pudiéramos insertar codigo de ese modo, que llegue a ejecutar o no pero aí está.

Sobre lo del '\0' o el carácter nulo en el tema de cadenas, la verdad que sería un fallo bastante gordo, pues luego como se manejarían con la cadena? Vamos me refiero en el caso de que utilicen funciones ANSI como la que me pones. Aunque bueno si trabajan con un tamaño fijo... En fin chapuzas como muchas veces se ven en las grandes compañías, no se si has tenido la ocasión de trabajar en alguna empresa de desarrollo pero si, hay cosas que madre mía, pa quitarte el sombrero y darle un par de leches con el al que lo ha escrito ;-).

En fin a ver si tengo tiempo y me meto a empaparme unos cuantos manuales de Ensamblador, que me resulta muy atractivo después de todo lo que me cuentas.

Gracias por las molestias m0skit0. :oki:

davidgf
Desarrollador
Desarrollador
Mensajes: 65
Registrado: 26 Feb 2010, 23:53

Re: Cómo funciona un exploit

Mensajepor davidgf » 03 Mar 2010, 00:43

Hola!

Oye moskito, no se mucho de hacking pero tu parece que si sabes.
No es más difícil corromper el registro ra en un procesador tipo RISC que uno CISC?
Lo digo por que en los RISC al usarse JumpAndLink, tenemos que la función hoja retorna a una función válida (ya que ra no lo podemos modificar) y entonces al desapilar el anteriror ra y saltar ejecutamos código. Es decir, hemos de esperar a que retornen dos funciones y no una como suele hacerse en un IA32.

No añade eso dificultad al asunto?

Ya que estamos maestro, los MIPS tienes algun tipo de mecanismo de hardware (rollo NX de AMD) para evitar eso? Como veo que hay areas de RAM protegidas por permisos pues digo yo que cosas más avanzadas tendrán no?

Saludos!

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5586
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: Cómo funciona un exploit

Mensajepor m0skit0 » 03 Mar 2010, 02:50

davidgf escribió:No es más difícil corromper el registro ra en un procesador tipo RISC que uno CISC?

Bueno, ten en cuenta que el registro $ra sólo existe en MIPS, de todos los procesadores que conozco (que tampoco son muchos: Motorola, Intel (y clones tipo AMD) y MIPS xD).

davidgf escribió:Lo digo por que en los RISC al usarse JumpAndLink, tenemos que la función hoja retorna a una función válida (ya que ra no lo podemos modificar) y entonces al desapilar el anteriror ra y saltar ejecutamos código. Es decir, hemos de esperar a que retornen dos funciones y no una como suele hacerse en un IA32.

No sé si te he entendido bien. Creo que te refieres a que en MIPS al tener el registro $ra, si la función llamada no hace otra llamada no hay necesidad de meter la dirección de retorno en la pila, por tanto no se puede corromper. ¿He entendido bien?

davidgf escribió:los MIPS tienes algun tipo de mecanismo de hardware (rollo NX de AMD) para evitar eso?

El bit NX es relativamente reciente en AMD. En todo caso, yo tampoco conozco todos los MIPS, pero apostaría a que no implementan dicho mecanismo. La filosofía RISC tiende a simplificar lo máximo posible. En todo caso, eso se puede implementar por software. De hecho creo recordar que el kernel Linux tenía opción para deshabilitar la ejecución de código en pila.

davidgf escribió:Como veo que hay areas de RAM protegidas por permisos pues digo yo que cosas más avanzadas tendrán no?

Eso en realidad no tiene nada que ver con el procesador, pues supongo que hablas del controlador de memoria. Ten en cuenta que la PSP tiene una interfaz entre eel MIPS y la RAM. En realidad abres/cierras la memoria mediante registros (como un controlador hardware cualquiera, vamos). Lo que sí implementa MIPS internamente es la memoria de usuario (bit 31 de la dirección = 0) y memoria kernel (bit 31 de la dirección = 1).

EDITO: vale, ya entendí lo que me preguntabas sobre la dificultad. Realmente te da igual qué dirección de retorno sea la que sea corrompida, siempre y cuando tu código esté cargado en memoria y puedas saltar a ejecutarlo. Ten en cuenta también que muchas veces los compiladores generan código ensamblador estándar, y por tanto siempre guardan $ra en la pila incluso si no hace falta.
Imagen

Avatar de Usuario
nosfheratux
Enteradillo
Enteradillo
Mensajes: 41
Registrado: 24 Ene 2010, 00:07

Re: Cómo funciona un exploit

Mensajepor nosfheratux » 06 Mar 2010, 05:57

con ke programa crean los xploits oe ke usan

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5586
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: Cómo funciona un exploit

Mensajepor m0skit0 » 06 Mar 2010, 14:24

Los exploits no se crean con programas, sino con cabeza.
Imagen

Avatar de Usuario
UsuarioX
Enteradillo
Enteradillo
Mensajes: 43
Registrado: 22 Feb 2010, 20:17

Re: Cómo funciona un exploit

Mensajepor UsuarioX » 08 Mar 2010, 03:26

Los exploits no se crean con programas, sino con cabeza. - m0skit0 :adora:

Avatar de Usuario
nosfheratux
Enteradillo
Enteradillo
Mensajes: 41
Registrado: 24 Ene 2010, 00:07

Re: Cómo funciona un exploit

Mensajepor nosfheratux » 08 Mar 2010, 04:02

y kon que programa creo xploits

-- Doble Post --

mi pregunta es ke a una imagen le agregan todo lo que tu explicaste anteriormente como hacen eso

-- Doble Post --

y x ejemplo como es ke si ya tienen detectado algunos crash no se pueden trabajar con ellos


Volver a “Desarrollo”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado