lunes, 28 de marzo de 2016

Abusando la caché de sudo con LD_PRELOAD

¡Saludos!

    Trasteando con LD_PRELOAD para hacerme un pequeño rootkit he estado probando esos pequeños trucos para escalar privilegios localmente sin utilizar ningún exploit -únicamente tirar de "picaresca"-. Me he topado con este post https://blog.maleadt.net/2015/02/25/sudo-escalation/ donde explican uno de estos trucos.

    Basicamente consiste en abusar de la caché que utiliza sudo para almacenar los credenciales y no estar continuamente solicitandotelas cada vez que lo ejecutes. Por defecto si hacemos un "sudo apt-get upgrade" y después un "sudo id", la segunda vez no nos pedirá la contraseña y ejecutará el comando "id" como root. Pero... ¿qué pasa si después del "sudo apt...." hago un "./foo", y dentro de ese foo se ejecuta un "sudo id" ? ¿pide o no pide la contraseña? :)

    Pues ahí está la trampa. Suponiendo un escenario donde podemos editar ficheros del usuario (por ejemplo, editar el .bashrc/.zshrc/whatever) podremos hacer que automáticamente setee la variable LD_PRELOAD a nuestra librería maliciosa. Lo que tendrá que hacer nuestra librería será hookear una función que se llame bastante (open(), por ejemplo) y comprobar contínuamente si la contraseña sigue estando en la caché. En caso afirmativo procede a ejecutar "sudo algo-muy-malo" (por ejemplo, añade un usuario backdoor al sistema), o en caso contrario no hagas nada.


    Un PoC funcional (basado en el del post que puse más arriba) podría ser este (añadid cabeceras :) ):






   Básicamente forkeamos, el hijo comprueba si nos va a pedir password o no, si no pide password forkeate y ejecutame un "id" con sudo. Por último hacemos un return con lo que estan esperando para no romper la funcionalidad:



  El truco probablemente sea muy viejo, pero me parece que es una de esas cosas que es bueno dejar por el blog para tenerlo en la mochila por si alguna vez fuera necesario.


Byt3z!





5 0verl0ad Labs: Abusando la caché de sudo con LD_PRELOAD ¡Saludos!     Trasteando con LD_PRELOAD para hacerme un pequeño rootkit he estado probando esos pequeños trucos para escalar privilegios l...
< >