Ataques a GNU/Linux con alias maliciosos de su y sudo
A principios de este año nos enteramos de que en mi centro de estudios iban a poner Linux en los laboratorios de electrónica. En concreto estaban metiendo GNU/Linux Manjaro, una derivada de Arch Linux
en la que por seguridad, los usuarios utilizarían cuentas no
privilegiadas para trabajar y cuando fuera necesario pasarían a modo super usuario con un comando "su", para gestionar software o hacer configuraciones.
Figura 1: Cómo hacer ataques a sistemas GNU/Linux con alias maliciosos
El reto que se nos planteó era ver si sería complejo o no robar las cuentas de los super usuarios
en los sistemas de este entorno, para ver si esto podía generar muchos
problemas de soporte o no. Con esto en mente, se me ocurrió que una
forma de robar las contraseñas sería usar un comando alias de los sistemas *NIX* para crear un falso "su" que me permitiera acceder a las contraseñas cuando se teclearan en una sesión de usuario no privilegiado para pasar a super usuario. Os cuento el ataque paso a paso.
Paso 1: Control de la sesión no privilegiada
El primer objetivo es conseguir el acceso a una sesión no privilegiada
del sistema. Esto puede hacerse de muchas formas que van desde
aprovechar un descuido de la sesión hasta "te paso este ejercicio en este pendrive, ejecuta este programa que te copia todos los ficheros de esta práctica" - para lo que yo me creé un pequeño script bash que descarga de Internet todo - , o cualquier forma de conseguir una ejecución de un script en el sistema. Un buen truco podría ser utilizar un USB Rubber Ducky para ejecutarlo en un descuido de la víctima.
Figura 2: USB Rubber Ducky simula ser un pendrive pero es un teclado programado
Paso 2: Ejecución del script que crea el falso alias de su
El script inicial, al que llamé "aliasliado" crea un falso aliasmalicioso para su que simula un fallo en la autenticación cuando se introduce la contraseña que se requiere al ejecutar el autentico comando "su". La idea es que cuando se ejecute el comando "su", realmente se ejecutará el alias malicioso de "su". Éste pedirá la contraseña de super usuario,
la robaría, me la enviaría, mostraría un error de autenticación y
borraría todo. El script que crea este falso alias es el siguiente:
Como se puede ver, una vez que se ejecuta el comando "su" vía el alias malicioso,
la contraseña que se haya introducido ha volado a manos del atacante y
se ha eliminado cualquier rastro de infección dejando que el equipo
funcione como estaba funcionando antes.
Paso 3: Una evolución del ataque gracias a "melasudo"
Hablando ayer con Chema Alonso sobre la publicación de este artículo, descubrí que el equipo de auditoría web de Informática 64 - ahora en Eleven Paths - hace un par de años había hecho lo mismo, pero con el comando sudo, mucho más efectivo para algunas distribuciones de GNU/Linux como Ubuntu. En esos casos es script lo aprovechaban para ownear
servidores web en los que habían conseguido acceso no privilegiado con
la cuenta del servidor web y querían hacer una elevación de privilegios.
Figura 3: Script de melasudo que crea un alias malicioso para sudo
El paso a paso está explicado en el artículo: "Melasudo: robar la password a un sudoer con ingenio" En este alias malicioso, utilizan una llamada a un script oculto en el directorio $HOME de la víctima que me ha gustado, así que he mezclado ambas ideas en el siguiente alias malicioso para que sea mi "Chevrolet Camaro" en este tipo de ataques.
El siguiente vídeo muestra este script funcionando en un ataque. En él se puede ver cómo se crea el alias malicioso, se roba la contraseña y luego todo queda igual que antes.
Figura 4: Vídeo demostración de ataque con alias malicioso Conclusiones
Cualquier punto de entrada sigue siendo potencialmente peligroso, ya sea un fichero Excel, un USB Rubber Ducky
que se conecta o un programa camuflado de cualquier forma. Conseguir la
ejecución en un entorno no privilegiado sería el primer paso para
conseguir luego la elevación de privilegios, aun con ayuda de un
usuario.
Figura 5: Como conseguir una elevación en Windows con infección de enlaces a aplicaciones no privilegidas
Hace tiempo, cuando Windows Vista implantó UAC por defecto con el máximo nivel de seguridad, ya se publicó en el año 2007 una forma similar para lograr la elevación de privilegios infectando los enlaces a aplicaciones que el usuario no privilegiado tenía, así que como veis, el ataque se puede hacer igualmente en sistemas Windows.