Por defecto, un programa en Linux buscará las librerías compartidas necesarias en:
- la ruta indicada en la variable de entorno LD_LIBRARY_PATH
- las rutas contenidas en el fichero de caché /etc/ld.so.cache
- las rutas por defecto para las librerías: /lib y luego /usr/lib
Como resultado todo el espacio de usuario, salvo aplicaciones compiladas estáticamente (lo cual es poco frecuente), utilizará funciones precargadas que se "superponen" a las estándar.
Como podéis imaginar, esta técnica también puede utilizarse para el mal... Hace ya algunos años surgió un rootkit llamado Jynx que utilizaba LD_PRELOAD para hookear programas en tiempo de ejecución. Podemos decir que su sucesor es Azazel, un nuevo rootkit para Linux en modo usuario, escrito en C y que utiliza esta misma técnica. Eso sí, Azazel es más robusto y tiene características adicionales, y se centra en gran medida en métodos anti-debugging y anti-detección.
Contenido completo en fuente original Hack Players
Si entendí bien, esta técnica requiere privilegios para escribir a /etc./ld.so.preload, lo que quiere decir que tiene que ser ejecutado bajo root. Y con privilegios de root, es posible hacer todo. Lo más fácil sería recompilar initramfs con un backdoor, tan simple como insertar un par de líneas a scripts/cryptroot en la parte donde lee la contraseña y obtener así la clave de encriptación del disco. Y una vez que tenemos acceso root a los archivos no encriptados, podemos patchear cualquier librería del sistema. No me queda claro cuál es la ventaja de este rootkit.
ResponderBorrar