11 dic 2014

Bypass UAC x64 con Metasploit y paciencia ninja!

Durante el desarrollo de la Navaja Negra de 2014 desvirtualicé a Ignacio Sorribas, el cual es un crack profesionalmente y como persona. Me comentó una forma con la que conseguía saltarse el UAC y elevar privilegios en sistemas operativos Windows de 64 bits, y tras probarlo en Windows 7 y 8 me gustó la idea. Yo pensaba que el módulo de bypassuac que trae Metasploit valdría, pero ciertamente no, en algunos entornos hay que moverse un poco más para conseguir elevar los privilegios. 

¿Cuál es el punto de partida? Comenzamos ya con una sesión abierta en Metasploit, con un Meterpreter. En la imagen podemos ver que somos el usuario pablo, ejecutando una sesión sobre una máquina Microsoft Windows 7 de 64 bits

Figura 1: Usuario sin privilegios
Es importante tener algunos comandos claros con Meterpreter, ya que este payload está en continuo crecimiento en lo que a funcionalidades se refiere. Necesitamos subir un binario que se encuentra en la ruta data/post, dónde Metasploit se encuentre instalado. En la imagen podemos visualizar que realizamos la subida del binario a través del comando upload, y lo dejamos en el escritorio del usuario. El nombre del fichero a subir es bypassuac-x64.exe

Figura 2: Subida de fichero bypassuac-x64.exe
Una vez subimos el fichero al equipo de la víctima, debemos recapitular y ver cual es la estrategia. La estrategia para lograr una elevación de privilegio es subir un fichero que nos permita bypassear el UAC. Este punto ya lo tenemos, pero ¿Cómo conseguimos que dicho exploit local devuelva el control en remoto? Es fácil, debemos generar un binario que dentro disponga de un Meterpreter inverso, el cual al ejecutarlo nos devuelva la conexión. Este fichero también deberemos subirlo mediante la ejecución del comando upload

¿Cómo generamos el binario con el Meterpreter inverso dentro? Es fácil, cargamos el módulo payload/windows/meterpreter/reverse_tcp y lo configuramos con la dirección IP a la que el binario debe devolver el control. Una vez hecho esto, utilizamos el comando generate para generar el fichero, tal y como puede verse en la imagen.

Figura 3: Generar binario con Meterpreter
Ahora que tenemos los dos binarios en la máquina remota, vamos a ejecutar a través de la shell de Meterpreter el binario bypassuac-x64.exe. Para ejecutar este binario, como puede verse en la imagen, debemos indicar que comando queremos lanzar con elevación. Tras la ejecución del fichero obtenemos una shell con privilegio de System, por lo que podemos ejecutar desde esa shell el binario que hemos subido, en este caso se denomina post.exe, y obtener el control remoto. Hay que tener en cuenta que antes de ejecutar post.exe, debemos configurar el handler para recibir la conexión.

Figura 4: Ejecución de bypassuac-x64.exe
Antes de lanzar el binario post.exe debemos configurar el handler, por lo que debemos cargar el módulo exploit/multi/handler, y configurar el atributo PAYLOAD, en este caso con el valor windows/meterpreter/reverse_tcp. En la siguiente imagen se puede ver como debemos configurar el módulo. Es importante resaltar la ejecución de exploit -j.

Figura 5: Configuración de exploit/multi/handler
Una vez se ejecuta el fichero post.exe se recibe la nueva sesión, la que tiene privilegios de System. Para interactuar con la nueva sesión debemos ejecutar sessiones -i [identificador de la sesión], tal y como puede verse en la imagen. Una vez dentro de la sesión, debemos ejecutar el comando de Meterpreter getsystem, con el que conseguir el uid deseado.

Figura 6: Obtención del privilegio
Tal y como podemos ver, en algunas ocasiones necesitamos ejecutar otras vías para conseguir una sesión con privilegio, y aunque pueda parecer tedioso, no hay más que tener paciencia. Para aprender más sobre Metasploit y sus secretos os recomiendo el libro de Metasploit para Pentesters.


No hay comentarios:

Publicar un comentario