jueves, 28 de abril de 2011

Vulnerabilidad - Metasploitable *distccd - udev + Escalación de Privilegios*

En la siguiente entrada pretendo dar a conocer los pasos que debemos seguir para la explotación de una vulnerabilidad en METASPLOITABLE, esto con el fin de estar informados acerca de un posible ataque al cual podriamos estar expuestos. Con el conocimiento de estas, podemos proteger nuestros sistemas informáticos detectando a tiempo estos errores de administracion. Para este caso vamos obtener informacion con un programa por medio de scripts para llegar a ser el superusuario del sistema "root".



Pasos para la explotación de la vulnerabilidad:

1.
Conectividad: Vamos a probar que efectivamente tenemos conexión con la maquina que vamos a vulnerar (Metasploitable), esta acción la vamos a realizar con el comando Ping, como lo podemos observar en la siguientes dos imagenes.



2. Scanneo y reconocimiento de Puertos y Servicios: En este paso vamos a scanear los puertos y servicios que tiene disponible Metasploitable, con el comando nmap y algunas opciones que este tiene; aquí vamos a realizar un scaneo completo (1-65535) para que también nos liste los puertos comunescomo lo que podremos ver en la siguiente imagen.


  • La vulnerabilidad:

Como podemos verificar, la anterior imagen nos muestra todos los puertos que este tiene abiertos, para este caso vamos a vulnerar el puerto 6332, en el cual esta corriendo el protocolo TCP con el programa distccd, el cual está directamente relacionado con udev y la escalabilidad de privilegios en un sistema determinado; también nos muestra si el puerto está abierto o cerrado y la versión de los mismos.
2.
Ejecucion de metasploit: En la siguiente imagen podemos observar que nos vamos a situar en la maquina Backtrack4, esta ISO contiene una herramienta llamada METASPLOIT, la cual nos va a proporcionar información acerca de las vulnerabilidades que tenga este sistema. Estando allí nos dirigimos a la ruta donde vamos a ejecutar el script de este programa.



3. Búsqueda del exploit: Estando en el matasploit, con el comando search + nombre del software vamos a buscar los módulos o exploits existentes para el que vamos a vulnerar. Para este caso unicamente obtuvimos un EXPLOIT, este nos muestra el nombre que lo identifica y la descripción del mismo; esto lo podemos observar en la siguiente imagen.



4. Configuración de los parámetros para el exploit: El metasploit tiene múltiples opciones con las culaes le podemos dar siertas configuraciones a los módulos que estemos implementando y que son requisitos previos para poder que se lleve a cabo satisfactoriamente, para ello con la opción use y la ruta del exploit estamos seleccionando este módulo para la finalidad de la vulnerabilidad; con el comando show options verificamos cuales son los parámetros que nos hacen falta, para este caso debemos configurar el RHOST (nombre o dirección Ip del host remoto que vamos a vulnerar) y el PAYLOAD (que es lo que se quiere o se espera obtener con la ejecución de este exploit).


  • Configuración:
En la siguiente imagen podemos observar que con la opción set vamos a agregar el RHOST y nuevamente con el comando show options podemos verificar que efectivamente este parámetro ha sido añadido.


  • Selección del PAYLOAD:

Para esto vamos a implentar el comando show payloads, este nos muestra automáticamente los payloads disponibles para ese exploit; para este caso usaremos la shell via Ruby y con la opción set payloads + la ruta vamos a agregar este parámetro, nuevamente con show options verificamos que la configuración ha quedado correctamente. Esto lo podemos observar en las siguientes dos imagenes.




5. Ejecución del Exploit: Después de haber configurado todo lo anterior, ahora pasamos a ejcutar el exploit, estando en la ruta del mismo lanzamos la opción exploit e inmediatamente nos muestra que efectivamente se abrió una sesión con una shell remota, estando allí con el comando uname -a podemos ver la versión del kernel, con ifconfig la dirección IP y con whoami podemos visualizar que estamos como un usuario llamado daemon; esto lo podemos observar en las siguientes dos imagenes.




ESCALACIÓN DE PRIVILEGIOS:

1. Como se pudo observar en los pasos anteriormente realizados, el ususario en el cual estamos logeados no tiene los privilegios para ejecutar cualquier cosa en el sistema, es por ello que vamos a descargar y compilar un exploit local (gcc es un compilador y también tiene múltiples opciones), esto lo podemos observar en la siguiente imagen.



2. Preparar la maquina atacante para el exploit: Para este paso vamos a habrir otra shell en el backtrak, allí vamos a ejecutar el comando netcat + un puerto que este escuchando; una vez que ejecutemos el exploit local, se conectará hacia nuestra maquina permitiendonos ejecutar comandos remotos en ella; esto lo podemos visualizar en la siguiente imagen.



3. Ejecución del exploit: Para la ejecución de este exploit se requiere de dos cosas elementales, la primera es el PID del proceso udev y que el PAYLOAD que será puesto en /tmp/run, a continuacion en la imagen podemos observar con hacemos el script, tambien debemos editar el comando ps -edf | grep udev para que nos muestre el PID de los procesos asociados con cada usuario y por ultimo ejecutamos el exploit con ./.



4. Resultados: Inmediatamente hemos ejecutado el script, en la otra shell debe aparecer la conexión al host remoto exitosamente, con el comando whoami verificamos que efectivamente ahora somos el superusuario del sistema (root). Es debido recordar que estando logeados con este usuario podemos ejecutar cualquier cosa en la maquina, es decir, tenemos el control total y todos los privilegios como por ejemplo poder visualizar el archivo del shadow en el cual se encuentran todos los usuarios que están registrados en el sistema con sus respectivos passwords; esto lo podemos observar en las siguientes dos imagenes.




  • CONTRAMEDIDA
La contramedida que se puede tomar para que no seamos vulenrables a este ataque es actualizar la versión del kernel o no permitir las conexiones a estos puertos, esta última sería una media muy drástica pero puede ser válida mientras se requiera de protección al sistema. Es de gran importancia tener en cuenta que este tipo de ataques son iligales en un entorno real, por esta razón esta práctica se realizó a modo de prueba localmente implementado máquinas virtuales para exponer que estos ataques se realizan frecuentemente de parte de muchas personas maliciosas o no éticas que utilizan la información para dañar y causar perjuicios.



No hay comentarios:

Publicar un comentario