Uso de Azazel: rootkit Open Source para Linux basado en preload
Para mejorar el rendimiento de los sistemas, las librerías compartidas permiten que varios programas accedan a la misma dirección de una función en lugar de cargar varias instancias de una misma en memoria. Estas librerías además pueden vincularse dinámicamente en tiempo de ejecución en lugar de forma estática durante la compilación.
Por defecto, un programa en Linux buscará las librerías compartidas necesarias en:
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
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