LinuxParty

Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 
En las entregas anteriores hemos visto cómo escribir código inyectable y cómo inyectar nuestro código en otros binarios sirviéndonos de diversos trucos. La siguiente fase lógica -la activación- ya no consistirá sólo  en saltar a nuestra rutina inyectada, si no también el devolverle el control al código original y no levantar sospechas.

La idea general será la siguiente: debemos encontrar algún puntero al que el ELF intente saltar en todo su tiempo de ejecución, ejecutar el código inyectado y devolver el control al puntero original. Esto se conoce popularmente como hooking: reemplazamos la dirección a la que cierto programa debe saltar en cierto momento para ejecutar nuestro código, y devolver el control a la dirección original a la que se quería llamar.
uando los sistemas operativos eran más burdos y no había APIs específicas para registrar más de un manejador para determinado evento del sistema, lo que las aplicaciones -normalmente controladores de dispositivo- hacían era guardar la dirección del manejador original, sustituir la dirección por la de un manejador propio y saltar después a la dirección guardada. Así se podían tener dos manejadores para la misma interrupción aunque el sistema no soportase nativamente una característica así. Un ejercicio muy clásico de Sistemas Operativos años antes era engancharse a la interrupción del teclado para hacer que a cada pulsación la CPU emitiese un pitido, muy vintage todo.

Obviamente, surgen algunas complicaciones. Por ejemplo, el código que estaba antes espera encontrar en la pila ciertas cosas (esto implica que tanto a la entrada como a la salida del código enganchado, el %esp debe permanecer inalterado, aunque entre tanto hagamos virguerías con él). Con los registros pasa lo mismo, por regla general debemos dejarlos como estaban (a menos que queramos hacer explícitamente algún cambio en el comportamiento del código que viene después). Son problemas atajables, pero que hay que tener en cuenta.

Continúa en "Security by Default", indicar que la página tiene un script que funciona bastante mal, por lo menos en Firefox.
Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Nos obligan a moslestarte con la obviedad de que este sitio utiliza Cookies. Ver política