PrivescCheck, verifica si Windows es vulnerable a escalado de privilegios
No hace mucho me topé casualmente con una pequeña herramienta que he considerado útil como para comentarla brevemente. Gracias a PrivescCheck es posible verificar si nuestro sistema operativo Windows es susceptible a la elevación de privilegios.
Podría deberse, como suele pasar, a configuraciones inapropiadas en el sistema operativo (un hardening insuficiente) así como a fallos en el código de nuestro software, que podría desembocar en que un atacante obtenga privilegios de administrador en el sistema, a través de un fichero, un programa, un LoLbin, etc.
Esto lo podemos verificar desde la comodidad de una consola de comandos y con la rapidez de este script que podemos encontrar en el repositorio de Github.
Características
- Permite obtener información sobre el contexto del usuario actual (Current User)
- Permite listar servicios del sistema, permisos, etc
- Permite listar aplicaciones
- Permite revisar las tareas programadas de Windows
- Permite revisar almacenes y políticas de credenciales
- Revisa diferentes elementos relativos al hardening o bastionado del equipo
- Otros parámetros como aconfiguración, redes, actualizaciones, etcétera son también revisados
PrivescCheck emplea lo que se conoce como Script Dot Sourcing. Nos permite ejecutar un script en un contexto diferente al actual, en lugar del definido en el propio script. Así, los comandos lanzados se ejecutan de igual manera que si los escribimos manualmente en la consola, lo que implica adaptar las funciones, variables o aliases, entre otros.
Reportes de vulnerabilidades con PrivescCheck
Esta herramienta nos puede servir de dos formas diferentes. Como Blueteam, nos puede permitir encontrar determinadas vulnerabilidades que afectan a lo que se conoce como privilege escalation. Es un complemento a nuestra herramienta de gestión de vulnerabilidades habitual, obviamente no es más que eso.
Quizá donde más pueda brillar, sin embargo, es por su potencial en las actividades relativas al Pentesting (read team), ya que permitiría acelerar la búsqueda de estas posibles «puertas» a través de las que penetrar en un sistema usando software deficiente.
Uso básico de la herramienta
No es necesario utilizar elevación de privilegios para ejecutarla y tenemos dos intérpretes de comandos que podemos utilizar, veamos los ejemplos.
Desde el CMD:
powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck"
Desde Powershell
Set-ExecutionPolicy Bypass -Scope process -Force . .\PrivescCheck.ps1; Invoke-PrivescCheck
Veremos que el script comienza a trabajar, lo que demorará entre uno y varios minutos dependiendo del sistema.
Al final, obtendremos un informe en la consola similar a este en cuanto a formato.
Si tienes algún problema el ejecutarlo, revisa este artículo.
De dicho reporte ya podemos extraer una conclusión clara, y es que existe una potencial amenaza grave en Servicios > Permisos SCM (segunda columna). El total de KO (test no pasado con éxito) que arroja la herramienta, es de 3 en este caso.
Resultado | Significado |
---|---|
NA | No vulnerable / No aplica |
OK | No vulnerable |
KO | Vulnerable |
Más concretamente, lo que se ha marcado es que el servicio señalado podría ser manipulado, a nivel de registro, en el contexto del usuario con sesión actualmente iniciada.
Pero si esto te parece poco tengo buenas noticias, porque con el modo «extendido» obtendremos bastantes más datos sobre vulnerabilidades en el sistema. Basta simplemente con añadir el sufijo -Extended en ambas sintaxis.
CMD
powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended"
Powershell
Set-ExecutionPolicy Bypass -Scope process -Force . .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended
Generación de reporte
Finalmente están los reportes, un aspecto importante en cualquier herramienta que se precie. Tenemos la opción de sacar los datos obtenidos en formato CSV, TXT o HTML. Este último es el más recomendable para su lectura humana.
Es simple. Basta con añadir -Format y el formato deseado (HTML, TXT, CSV), por ejemplo:
Set-ExecutionPolicy Bypass -Scope process -Force<br>. .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended
Modificar el script
Un punto fuerte de este modelo de herramienta es que es modular, podemos ampliar el script a conveniencia como nos dicen en el propio repositorio. Para poder hacerlo, debemos:
- Crear una carpeta de nombre PrivescCheckPlugins en la raíz donde se encuentra el script (archivo .ps1)
- Crear, a su vez, dentro de la misma, un archivo csv con este nombre: PrivescCheckPlugins.csv.
- Rellenar el archivo recién creado con esta información:
"Id", "File", "Command", "Params", "Category", "DisplayName", "Type", "Severity", "Description", "Format", "Extended", "RunIfAdmin"
"TEST_ID", "Custom.ps1", "Invoke-SomeCheck", "", "MyCategory", "Test Title", "Vuln", "High", "Description of the test", "List", False, False
Por último, es necesario implementar nuestra comprobación (función) dentro de un nuevo script. Podría llamarse, por ejemplo, «prueba.ps1». Si el check devuelve un valor o más durante la ejecución, se considerará vulnerable, en caso contrario, no.
Limitaciones
- Powershell v2 no está soportado de serie, es necesario adaptar ciertas funciones como Get-LocalGroup o Get-ChildItem.
Palabras finales
PrivescCheck es una pequeña pero flexible utilidad para detección de vulnerabilidades de tipo Escalado de privilegios sobre sistemas Windows, que se vale del potente Powershell y es agnóstica a servicios de sistema como WMI, favoreciendo en su lugar al potente Editor del Registro de Windows, así como los propios cmdlets ya incluidos.
Categories
deweloper View All
Trabajo como consultor de ciberseguridad y me gusta lo que hago. Aficionado a la informática / tecnología en general, me gusta compartir con la gente lo poco que sé. También soy aficionado al deporte y los videojuegos.