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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Que es el EstablisherFrame y el Exception Dispatcher Stack?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Que es el EstablisherFrame y el Exception Dispatcher Stack?  (Leído 6,913 veces)
cuentanegra1990

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Que es el EstablisherFrame y el Exception Dispatcher Stack?
« en: 20 Julio 2015, 15:27 pm »

Pues eso que es el EstablisherFrame cuando se trata de un exploit basado en SEH?

Leyendo el tutorial 3a que habla de SEH aparece un concepto llamado EstablisherFrame y
no se exactamente a que se refiere.

Se que una función/método reserva su propio espacio en la pila para hacer uso de ella, según dice Vivek  Ramachandran y Corelan comenta que los propios manejadores de excepciones SE HANDLER también reservan su propio espacio en la pila y es hay donde habla de este termino ademas del "Exception Dispatcher Stack".

Un saludo!



 El funcionamiento de las excepciones lo entiendo, el problema viene cuando Corelan dice que los Exception-Registration_Record del hilo o proceso están en posiciones de la pila mas altas, es decir abajo del todo, ademas dice que una función/método tiene su propio espacio en la pila(hasta aquí todo normal) el problema viene cuando dice que el Exception-Registration_Record tiene su propio espacio de pila, cosa que da a entender que esta en un marco de pila aislado del marco de la función(con su propio prologo/epilogo), cosa que Vivek Ramachandran dice en sus vídeos, que estos registros Exception-Registration_Record están dentro del mismo espacio de pila que la función que lo contiene y para ser mas exactos entre las variables locales y el registro EBP salvado de la función llamadora.

Y que hay de esos dos términos que mencionan los cuales hay poca información sobre ellos:

    EstablisherFrame
    Exception Dispatcher Stack



Nadie puede ayudarme? :-\


[MOD] No se debe hacer doble, triple post, usa el botón "modificar" para añadir comentarios.

« Última modificación: 23 Julio 2015, 09:48 am por simorg » En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Que es el EstablisherFrame y el Exception Dispatcher Stack?
« Respuesta #1 en: 22 Julio 2015, 19:04 pm »

En Google hay informacion.

EstablisherFrame is the address of the base of the fixed stack allocation for this function.
https://msdn.microsoft.com/en-us/library/b6sf5kbd.aspx

Exception Dispatcher Stack: el mismo nombre lo dice, no es la pila original donde se produjo la excepcion, sino la que se usa para manejar la misma.

¿Tres mensajes consecutivos? ¿En serio? ¿Hace falta?
« Última modificación: 22 Julio 2015, 19:06 pm por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
cuentanegra1990

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: Que es el EstablisherFrame y el Exception Dispatcher Stack?
« Respuesta #2 en: 23 Julio 2015, 08:42 am »

Hola  Eternal Idol,

Exception Dispatcher Stack: el mismo nombre lo dice, no es la pila original donde se produjo la excepción, sino la que se usa para manejar la misma.

Con la pila te refieres a otro marco(contexto) de pila no? es decir al stack frame generado por el SEH HANDLER no?




En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Que es el EstablisherFrame y el Exception Dispatcher Stack?
« Respuesta #3 en: 23 Julio 2015, 09:22 am »

No, me refiero a una Duracell con pila. ¿Queres entender como funcionan las cosas? Ya te dijeron lo que tenes que hacer: DEPURALAS. Asi verias rapidamente como en el momento de la excepcion hay una pila del programa y cuando se la maneja hay otra.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
cuentanegra1990

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: Que es el EstablisherFrame y el Exception Dispatcher Stack?
« Respuesta #4 en: 23 Julio 2015, 11:18 am »

Te aseguro que estoy haciendo las pruebas oportunas Eternal Idol,

Por ejemplo me dirijo al SEH handler(tras habiendo provocado una excepción) y hago clic derecho y selecciono la opción "Follow in Disassembler" se me abre un marco(contexto) arriba a la izquierda del debugger lo cual tiene su propio prologo/epilogo. Este stack frame forma parte de la pila principal o es verdad que existe otra pila. Y de ser otra pila independiente esta es lo que se   llama "Exception Dispatcher Stack" ?

 
Porfavor os pido, si me podeis ayudar os lo agradeceria, tengo esa duda.

Un saludo!!!
« Última modificación: 24 Julio 2015, 17:51 pm por cuentanegra1990 » En línea

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

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: Que es el EstablisherFrame y el Exception Dispatcher Stack?
« Respuesta #5 en: 27 Julio 2015, 07:55 am »

Lo que ocurre es que SEH Structured exception handler, es la estructura que se utiliza para manejar las excepciones de un ejecutable, si mal no me equivoco, leyendo rápidamente cuando este manejador es instalado por hilos, para entender el manejador de excepciones debemos entender la estructura ERR:

Exception registration record:
- Puntero a la siguiente estructura ERR.
- Puntero al manejador de excepciones.

Esta estructura se encuentra en la pila, por lo menos eso es apreciable en los depuradores, además lo podemos corroborar por el rango, además de ello para obtener el SEH del marco actual, podemos obtenerlo a través de TIB:
https://es.wikipedia.org/wiki/Win32_Thread_Information_Block

específicamente en:
fs:[0]


En cuanto a los conceptos que mencionas no estoy muy seguro a que se refiere pero a podrías darnos ejemplos de su contexto, saludos.



Aquí unos apuntes que encontré:
Citar
Tipos de manejador de excepciones:

Por proceso:
SetUnhandledExceptionFilter
Devuelve la dirección en donde retornará un programa cuando ocurra una excepción
siempre y cuando este no esté siendo depurado y no posea un SEH propio instalado

Por thread:
Este manejador de excepciones devuelve la dirección en donde retornará un programa
cuando ocurra una excepción, este SEH solo es instalado en thread's y no en todo el programa

para instalar un Manejador de excepciones por Thread
se debe localizar la tabla TIB Thread Information Block
una vez localizada nos enfocaremos en el primer valor de la tabla ERR(exception registration record) contiene el actual manejador de excepciones SEH (Structured Exception Handling)
dentro de ella contiene dos valores
1-puntero hacia el siguiente SEH (si el programa no tiene instalado uno este nos mostrará FFFFFF ya que es el genérico)
2-address en donde se redirigirá el programa al haber una excepción

Para instalar un SEH propio

se debe empujar (push) el valor hacia donde se dirigirá el programa en caso de una excepción y el puntero a la anterior SEH

push xxx
push fs:[0]

y modificar el valor de fs:[0] por el SEH actual
mov fs:[0],esp

Para desinstalar:
pop fs:[0] (saca el primer valor del stack y lo guarda en fs:[0])
add esp,4 (si no se le suma a esp el valor 4, el stack quedará apuntando al segundo valor que se empujó cuando se instaló el manejador de excepciones)


Sé que no suple tus dudas pero quizás pueda orientarte en algo, saludos.
« Última modificación: 27 Julio 2015, 07:59 am por .:UND3R:. » En línea


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

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: Que es el EstablisherFrame y el Exception Dispatcher Stack?
« Respuesta #6 en: 27 Julio 2015, 11:44 am »

Hola .:UND3R:. antes de nada gracias por responder,

Mira como bien dices cuando implementamos una función que haga uso de excepciones que manejen estas son introducidas en la pila de forma de estructura Exception Registration Record, los cuales podemos verlos en la pila entre las variables locales y el registro EBP salvado de la función anterior, estos registros tienen la siguiente estructura:

  • Next SEH(Puntero al siguiente SEH)
  • SEH Handler(Puntero al manejador de excepciones propiamente dicho)

Ahora bien cuando se genera una excepción se crea un prologo/epilogo como el contexto que hace uso una función para sus variables locales, ret adrress... esto lo podemos ver si hacemos click derecho sobre el SEH handler y en el menú contextual seleccionamos la opción que dice "Follow in Disassembler" veremos en la parte superior izquierda donde empieza el prologo del Exception Handler.

Aquí viene mi duda, este contexto es lo que se llama Excetion Dispatcher Stack?
Es una pila aparte o es un contexto como el que suele hacer uso una función normal?

Lo que si que se es que esta fuera del entorno de pila de programa principal(e aquí mi gran duda).
« Última modificación: 27 Julio 2015, 11:48 am por cuentanegra1990 » En línea

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

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: Que es el EstablisherFrame y el Exception Dispatcher Stack?
« Respuesta #7 en: 27 Julio 2015, 16:54 pm »

Hola .:UND3R:. antes de nada gracias por responder,

Mira como bien dices cuando implementamos una función que haga uso de excepciones que manejen estas son introducidas en la pila de forma de estructura Exception Registration Record, los cuales podemos verlos en la pila entre las variables locales y el registro EBP salvado de la función anterior, estos registros tienen la siguiente estructura:

  • Next SEH(Puntero al siguiente SEH)
  • SEH Handler(Puntero al manejador de excepciones propiamente dicho)

Ahora bien cuando se genera una excepción se crea un prologo/epilogo como el contexto que hace uso una función para sus variables locales, ret adrress... esto lo podemos ver si hacemos click derecho sobre el SEH handler y en el menú contextual seleccionamos la opción que dice "Follow in Disassembler" veremos en la parte superior izquierda donde empieza el prologo del Exception Handler.

Aquí viene mi duda, este contexto es lo que se llama Excetion Dispatcher Stack?
Es una pila aparte o es un contexto como el que suele hacer uso una función normal?

Lo que si que se es que esta fuera del entorno de pila de programa principal(e aquí mi gran duda).


El segundo campo apunta a una dirección X y al parecer esta dirección depende de la programación del manejador, ya que como exploit writer podrías modificar el segundo campo para que apunte a la pila o darte cuenta que el manejador por defecto de las aplicaciones apunta a una dirección con comienzo 0x7. Ahora como lo dices claro que está fuera de la pila (normalmente) pero si haces una escritura del stack, la dirección debería apuntar a una de la pila que controles.

Todo esto te lo comento bajo mi supuestos pero no estoy seguro 100% debido a que desconozco de los conceptos pero si lo que te he comentado es verídico, ahora si esos conceptos se refieren a lo que te comento, excelente, si no, sigamos buscando.

Saludos
En línea


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

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: Que es el EstablisherFrame y el Exception Dispatcher Stack?
« Respuesta #8 en: 29 Julio 2015, 14:33 pm »

No te entendí bien lo que quisiste decir...El registro que comento Exception_Registration_Record es puesto en la pila pero el segundo campo que es la dirección al manejador propiamente dicho no se donde apunta. Mencionas que apunta a una dirección de la pila por que empieza por 0x7.

Mira te dejo un vídeo que es el que comenta todo a la perfección pero no lo llego a entender...



En este vídeo lo explica al detalle, el concepto esta en el minuto 8 pero me confunde ya que no se si se refiere a otro stack frame o otra pila independiente.

Espero su respuesta, un saludo.
En línea

cuentanegra1990

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: Que es el EstablisherFrame y el Exception Dispatcher Stack?
« Respuesta #9 en: 4 Agosto 2015, 14:35 pm »

Por favor un empujoncito  :(
En línea

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

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
System Call Dispatcher
Programación Visual Basic
cobein 2 1,985 Último mensaje 29 Septiembre 2010, 19:28 pm
por cobein
Tutorial - Stack overflow bypassing SEH "Structured Exception Handler"
Bugs y Exploits
soez 5 5,395 Último mensaje 10 Marzo 2012, 17:02 pm
por jackgris
Exception NullPointerException
Java
bertamax 2 2,369 Último mensaje 9 Septiembre 2012, 16:57 pm
por bertamax
Exception en codeblocks
Dudas Generales
m@o_614 4 4,061 Último mensaje 26 Octubre 2013, 02:52 am
por Mister12
Implementar Stack Trace (Walk through stack)
ASM
kub0x 5 3,677 Último mensaje 16 Marzo 2014, 19:21 pm
por Arkangel_0x7C5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines