1 mar 2014

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:
  • 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
Sin embargo, existe otra variable LD_PRELOAD en la que podemos especificar las librerías compartidas que se deben cargar antes que todas las demás. Esta característica se usa normalmente para depuración, aunque muchos programas como tsocks y checkinstall también la utilizan. De hecho en muchos sistemas existe el fichero /etc/ld.so.preload que contiene las rutas de acceso a las bibliotecas compartidas para precargar globalmente.

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

Suscríbete a nuestro Boletín

1 comentario:

  1. 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

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!