9 de julio de 2022

Windows-Suggester: Una forma rápida, sencilla y para todo pentester, de escalar privilegios.

En diversas ocasiones (las más que menos), al obtener nuestra primera sesion METERPRETER, suele ser sobre usuario de perfil bajo, o dicho en otras palabras, de privilegios limitados. Bueno, a modo test de intrusión ya tenemos comprobado que existe una vulnerabilidad que permite iniciar una sesión meterpreter. ¿Pero qué ocurre si dicho test trata sobre el alcance que podemos obtener sobre dicho equipo o red interna? Es aquí donde entra en juego la razón de ser de este artículo, necesitamos escalar privilegios.

Para las PoC de este articulo trabajaremos con dos máquinas virtualizadas (ParrotOS como equipo atacante y Windows 7 Ultimate como equipo víctima). Procederemos a realizar la escalada con la obtención de exploits mediante modulo MSF y posteriormente mediante la ejecución de una herramienta escrita en python.

¿Qué tal si refrescamos un poco la memoria?

La escalada de privilegios consiste en, una vez obtenida una sesión, estos puede ser de un usuario de privilegios alto o bajo.Si el usuario tiene control total de la máquina o usamos un exploit que nos permita impersonar o duplicar token (caso de Eternal Blue) obtendremos una sesión de privilegios altos. Si por el contrario, obtenemos sesión donde el usuario tenga restringidas funcionalidades, nos encontramos con usuario de perfil bajo. Vamos a ver un poco más de a qué me refiero. Nos referimos a nivel bajo, cuando se permite ejecutar ciertas funciones sobre la máquina, pero no tenemos acceso a determinados archivos o no se permite la ejecución de ciertas funcionalidades que nos permita el control total de la máquina vulnerada.

Ahora un poco de controversia

A riesgo de ser lanzado a los pies de los caballos o condenado a galeras de por vida, voy a tocar un aspecto que choca con la visión general que se tiene de la escalada de privilegios. Encontraremos mucha informacion donde un pivoting, o movimiento lateral sobre usuarios con el mismo perfil de privilegios, se le otorga en nombre de escalada horizontal. Bajo mi punto de vista es un error llamar escalada al movimiento de un usuario vulnerado a otro, el cual, por configuración del administrador de sistemas o por mala configuración del mismo, este último sí tenga privilegios elevados en algunos aspectos que no debería, o tiene por razón de desempeño (un claro ejemplo de ello es la de tener privilegios de modificación de archivos o ejecución de aplicaciones de alto nivel de un empleado, porque el jefe delega la modificación o envío de archivos por ausencia, o por motivos que sólo la mente poderosa de un jefe puede comprender, o también para que comparta directamente con él archivos). Para que quede clara mi postura en este tema, si necesito de otro usuario al inicial para escalar privilegios, primero hago un movimiento lateral o pivoto y a continuación, si procedo con la escalada. Ahora sí, vamos al tema que nos interesa de este artículo.

¿Que es Windows-sugestter?

Bien, este exploit/módulo compara los parches instalados en un sistema operativo con la base de datos de Microsoft, detectando los parches restantes e imprimiendo en pantalla un listado de cuales son, con el fin de poder escalar privilegios. Es en esta explicación donde la frase MANTENER EL SISTEMA OPERATIVO ACTUALIZADO cobra todo su sentido.

(Imagen boletín de seguridad)

Si las dos técnicas son iguales, ¿cuáles son las diferencias?

Efectivamente los dos realizan la misma función, pero no trabajan igual. La primera diferencia radica en que el módulo suggester de Metasploit, lógicamente sólo arroja aquellos que pueden ser usados para MSf a fin de agilizar el trabajo. El exploit Windows-Exploit-Suggester, nos listará todos los exploits públicos así como los módulos que pueden ser usados por MSF. La segunda diferencia se encuentra en que para ser usado correctamente el exploit Windows-Exploit-Suggester, debemos proporcionarle la información exacta y necesaria del host vulnerado (Esto que parece harto difícil no es más que crear un archivo txt en el directorio del exploit).

Con exploits públicos me refiero a exploits que no se integran en MSF, esto es muy interesante para los que no quieren, o no pueden usar Metasploit durante el pen-test.

Y tras esta breve introducción, vamos a meternos en harina e intentaré explicar lo mejor que pueda cómo realizar estas técnicas.

Escalada mediante módulo MSF

Bien, como podemos observar en la imagen inferior, ya hemos obtenido nuestra primera sesión meterpreter de un usuario, pero no podemos escalar privilegios ni por suplantacion de un cliente de canalización por nombre, ni por duplicación de token.

Es hora de hacer uso del modulo, para ello ponemos nuestra primera sesión en segundo plano mediante el comando bg (background) en METERPRETER y buscamos suggester en MSF.

A ver, se que estaréis pensando, «Pero si ha usado ETERNAL, ¿cómo qué no tiene privilegios el tio moñas?» Pues porque he migrado proceso a un usuario a fin de poder realizar la PoC. Pero si no os importa, continuamos con ello ;).

Como siempre es de buenas prácticas ver la información del módulo del cual haremos uso.

Basandonos en la información obtenida procedemos a configurar el módulo y ejecutarlo.

Podemos ver que el módulo nos imprime una serie de exploits disponiibles que nos permitirá escalar privilegios…..¡¡¡OJO!!! A veces, da falsos positivos, así que no desesperéis si no obtenemos la segunda sesión a la primera.

Configuramos el exploit, debemos siempre tener en cuenta de configurar en función al host sobre el que estamos trabajando y revisar las opciones que el exploit nos cubre por defecto, así tendremos más porcentaje de éxito de obtener nuestras sesiones.

Bien, ya hemos obtenido nuestra segunda sesión de meterpreter. Podemos ver que nuestro usuario continúa siendo el mismo, ejecutemos «getsystem» para ver si es posible obtener nuestra escalada.

¡¡¡¡Éxito!!!!

Pues bien, vemos que como todo en MSF es bastante intuitivo y rápido. Pasemos pues a ver la siguiente técnica.

Escalada mediante uso de Windows-Exploit-Suggester.py

Como ya he comentado a lo largo de este artículo, esta técnica tiene su parte buena y menos buena. La buena la cantidad de exploits que nos arroja, la menos buena, que es un poco más tedioso ya que nos mostrará exploit que son validos por arquitectura pero no por versión. ¿¿¿Cómo??? Os estaréis preguntando, bien esta maravillosa herramienta nos comparará nuestro host vulnerado (en nuestro caso Win7Ult) con la base de datos de Microsoft hasta el boletín más actual, el cuál incluirá exploits para versiones posteriores.

Lo primero que haremos será descargar la herramienta desde su github.

Guardamos en un directorio creado para este fin y ejecutamos ( para KALI debemos ejecuttar con sudo), al ejecutar observamos que descarga el archivo 2022-07-03-mssb.xls desde la BD de windows, el boletín más actual.

Bien, esta es una herramienta donde debemos tener xlrd instalado, porque si no obtendremos mensajes de error de instalacion «please install or update python-xlrd». Procedamos a ello.

Bien, pues a pesar de actualizar nos continuará emitiendo el mismo error. Aquí las soluciones serán variadas y más válidas que la mostrada a continuación. Descargamos get-pip.py.

Instalamos get-pip , para a continuación instalar el dichoso paquete xlrd (que la version sea xlrd==1.1.0).

Bien, con todo ya resuelto, procedemos a la ejecución de la herramienta. Podemos ver en la imagen inferior los parámetros necesarios –database hace referencia al boletín de seguridad de windows y –systeminfo es el archivo .txt.

Dicho archivo lo obtentremos de nuestra primera sesión mediante shell.

Procedemos a copiar la info y la pegamos en dicho archivo.

Aquí es donde entra en juego nuestra capacidad para filtrar, lo que viene siendo leer enlaces ;). Para ver la diferencia entre las dos técnicas, he elegido hacer uso de un exploit que no fue arrojado mediante el uso del módulo suggester MSF.

Volvemos a nuestro MSF y bucamos el exploit.

Anteriormente comentaba las bondades de leer la info del exploit seleccionado y de comprobar las configuraciones que MSF nos cumplimentaba por defecto, pues bien este un buen ejemplo de ello. Si ejecutamos el exploit con el payload por defecto no obtendremos nuestra ansiada sesión. Como vemos, obtenemos nuestra nueva sesion.

Observamos las sessiones que hemos obtenido.

Espero que hos haya gustado.

Happy Hack!!!!