SOSVirus » Hacking » Manipulación en memoria de los tokens de servicios Windows

Manipulación en memoria de los tokens de servicios Windows

Cuando estamos en un pentesting y tenemos que conseguir el máximo privilegio en una máquina es importante tener conocimientos sobre las vulnerabilidades actuales que permitan la elevación de privilegio, por ejemplo la de MS16-135 o el Hot Potato o Tater, conocer herramientas, como Windows Exploit Suggester, que nos permitan relacionar o localizar posibles vulnerabilidades que permitan elevar privilegios, técnicas de bypass de UAC o pequeños trucos que debidos a fallos de configuración puedan acabar permitiendo dicha elevación de privilegio como, por ejemplo, la de los servicios y la falta de comillas en la ruta de los binarios.
manipulacion en memoria de los tokens de servicios windows - Manipulación en memoria de los tokens de servicios Windows
Figura 1: Manipulación en memoria de los tokens de servicios Windows

Sea como sea, existen diversas formas y vías que debemos conocer. También es interesante entender cómo funciona el entorno Windows y sus tokens en memoria. Hoy hablaremos de la manipulación de los tokens en entornos Windows. Es cierto, que siempre podremos utilizar los otros métodos para lograr la escalada, pero una vez lograda ésta, hay que tocar y cambiar los tokens que nos pueden proporcionar acceso a recursos a los que, a priori, no teníamos.

Gestión de Tokens en Windows

En primer lugar, si nos fijamos en los servicios que se ejecutan en un sistema Windows nos encontramos con la cuenta Servicio de red. Esta cuenta tiene un menor privilegio, por lo que, si el proceso es comprometido, no se podrá acceder a datos tan sensibles, como si el proceso se estuviera ejecutando como Administrador o SYSTEM.

manipulacion en memoria de los tokens de servicios windows - Manipulación en memoria de los tokens de servicios Windows
Figura 2: Servicio arrancado con la cuenta «Network Service»

Podemos pasar de un nivel de privilegios proporcionado por Network Service a SYSTEM. Una vez tenemos una sesión sobre la máquina remota, podemos ver con el comando getuid en Meterpreter, a que cuenta pertenece el proceso. Como se ve en la imagen, en este caso, tenemos la cuenta de servicio de red. Con el comando getprivs podemos echar un ojo a los privilegios o acciones que puede realizar el proceso.

1496743090 42 manipulacion en memoria de los tokens de servicios windows - Manipulación en memoria de los tokens de servicios Windows
Figura 3: Usuario co que corre la sesión de Meterpreter

Si nos fijamos en los tokens disponibles, en primera instancia no tenemos el token de SYSTEM disponible. El módulo incognito que viene con Metasploit nos permite hacer este listado de tokens y poder manipularlos. Hay otras opciones como el script Invoke-TokenManipulation que viene en Powersploit para Powershell.

1496743090 286 manipulacion en memoria de los tokens de servicios windows - Manipulación en memoria de los tokens de servicios Windows
Figura 4: Powersploit en GitHub

En este punto podríamos intentar buscar una vulnerabilidad o aprovecharnos de las técnicas conocidas o tricks para lograr ejecutar código en un contexto de SYSTEM. Una opción, la cual ya hemos visto en el pasado con Tater, es utilizar RottenPotato.

1496743090 36 manipulacion en memoria de los tokens de servicios windows - Manipulación en memoria de los tokens de servicios Windows
Figura 5: Listado de tokens disponibles

La idea es sencilla y podríamos hacerlo a través de Tater u otra vulnerabilidad, debilidad o trick que pueda afectar y permitir la elevación de privilegio en Windows. En este caso, utilizamos RottenPotato con el objetivo de lograr la escalada. Si hiciéramos un listado de tokens disponibles aparecería el de SYSTEM y podríamos impersonalizarle.

1496743090 690 manipulacion en memoria de los tokens de servicios windows - Manipulación en memoria de los tokens de servicios Windows
Figura 6: RottenPotato en GitHub

Por último, nos quedaría lanzar el comando execute –f –Hc, dónde –f indica la ruta al binario y –H indica que el proceso se ejecutará de forma oculta.

1496743090 780 manipulacion en memoria de los tokens de servicios windows - Manipulación en memoria de los tokens de servicios Windows
Figura 7: Subida del exploit de Rottenpotato

Otro ejemplo, sería si un servicio se ejecuta como administrador de la máquina. Es un caso, prácticamente ideal, ya que tenemos todo lo necesario para ejecutar un getsystem y obtener el token de SYSTEM, ya que lo podríamos impersonalizar por permisos.

1496743090 993 manipulacion en memoria de los tokens de servicios windows - Manipulación en memoria de los tokens de servicios Windows
Figura 8: Servicio corriendo como Administrador

De nuevo, utilizando el módulo incognito listamos los tokens disponibles y podemos observar que SYSTEM se encuentra entre ellos. Utilizando el comando impersonate_token podemos impersonalizar al usuario SYSTEM. Este comando es similar a utilizar la opción getsystem, famosa en Metasploit. Este escenario es un caso muy favorable para el pentester y que radica en un fallo de configuración o en una debilidad, aunque en escenarios como un SQL Server dónde se permite nos lo podemos encontrar en un proyecto de ethical hacking real.

1496743090 105 manipulacion en memoria de los tokens de servicios windows - Manipulación en memoria de los tokens de servicios Windows
Figura 9: Elevación a SYSTEM

Os dejamos un video resumiendo este escenario y la facilidad para conseguir la manipulación de tokens debido al uso de estas herramientas. Técnicas y herramientas a tener a mano en el día a día para hacer pentesting.

Figura 10: PoC de manipulación de tokens en Windows

En el vídeo tienes un ejemplo completo de todo lo explicado en este artículo, para que lo puedas ver funcionando.

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros «Metasploit para Pentesters«, «Ethical Hacking«, «Got Root» y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths

FUENTE

1 Star2 Star3 Star4 Star5 Star (1 votes, average: 5,00 out of 5)
SOSVirusCargando...

Deja un comentario