Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: makitos666 en 20 Marzo 2018, 14:02 pm



Título: TLS Callbacks en ejecutables unix ELF
Publicado por: makitos666 en 20 Marzo 2018, 14:02 pm
Hola, buenas tardes a todos!

Estoy empezando a aventurarme en las entrañas de los ejecutables para Linux. Creía que serian parecidos a los PE, pero madre mía que follón!

En los PE había las famosas TLS Callbacks que permitían añadir código ejecutable antes del entry point del PE, lo que los hacia un poco mas reacios a ser reverseados.

La pregunta que me trae hoy aquí es: hay algún símil para los ELF?
Ya he visto que esto del TLS callback no existen en este mundo, pero hay algún otro modo de ejecutar código antes del entry point?

Muchas gracias a todos!


Título: Re: TLS Callbacks en ejecutables unix ELF
Publicado por: Geovane en 20 Marzo 2018, 22:32 pm
¡Hola

la solución que conozco es editando el encabezado ELF en HEXA.
añadir una dependencia (biblioteca), a continuación, escribir lo deseado en este nuevo ejecutable.

SALUDOS


Título: Re: TLS Callbacks en ejecutables unix ELF
Publicado por: makitos666 en 21 Marzo 2018, 14:30 pm
Buenas,

Si que he leído por ahí que se pueden modificar los imports, para, como en Windows, inyectar código a través de las librerías.
Pero eso me asegura que ese código que yo pondré se ejecutara antes del código que se encuentra en el Entry Point del ELF?

Gracias!


Título: Re: TLS Callbacks en ejecutables unix ELF
Publicado por: MCKSys Argentina en 21 Marzo 2018, 15:09 pm
Pero eso me asegura que ese código que yo pondré se ejecutara antes del código que se encuentra en el Entry Point del ELF?

No trabajo mucho en Linux, pero si funciona como en Windows, el main de cada DLL importada se ejecuta antes del EP del ejecutable.

Saludos!


Título: Re: TLS Callbacks en ejecutables unix ELF
Publicado por: makitos666 en 21 Marzo 2018, 15:14 pm
Tiene sentido, supongo que lo mejor sera probar con un "Hello World" y debugear

Gracias a todos!


Título: Re: TLS Callbacks en ejecutables unix ELF
Publicado por: makitos666 en 22 Marzo 2018, 17:12 pm
No trabajo mucho en Linux, pero si funciona como en Windows, el main de cada DLL importada se ejecuta antes del EP del ejecutable.

Saludos!

Pues he probado, con este código sencillo:

(https://i.imgur.com/G2bNLzQ.jpg)

He compilado la librería foo para luego importarla como dinámica en el main.

Tras analizar el main compilado con radare2, he identificado el Entry Point, he abierto el ejecutable con EDB Debugger, he puesto un breakpoint. El resultado es el siguiente:

(https://i.imgur.com/mPsKxcg.jpg)

Puedo así concluir que, como bien decías, los constructores de las librerías se ejecutan antes del Entry Point del ejecutable.

Gracias!