Este script tiene como objetivo identificar vulnerabilidades de escalada de privilegios locales (LPE) que generalmente se deben a problemas de configuración de Windows o malas prácticas. También puede recopilar información útil para algunas tareas de explotación y post-explotación.
Después de descargar el script y copiarlo en la máquina de Windows de destino, ejecutarlo utilizando uno de los comandos a continuación.
Nota
No necesita clonar todo el repositorio. El archivo PrivescCheck.ps1 es un script PowerShell independiente que contiene todo el código requerido por PrivescCheck para ejecutar.
Importante
En los comandos a continuación, el primero . (DOT) se usa para "abastecimiento de puntos" el script, de modo que las funciones y cmdlets se pueden usar en el alcance actual (ver la función de abastecimiento de puntos de PowerShell).
Identifique rápidamente problemas importantes, como las vulnerabilidades de escalada de privilegios locales.
powershell -ep bypass -c " . .PrivescCheck.ps1; Invoke-PrivescCheck "Identifique problemas importantes, pero también recopile información adicional y guarde los resultados para informar archivos que son fáciles de leer.
powershell -ep bypass -c " . .PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML "Realice verificaciones extendidas y de auditoría, y guarde los resultados en informes legibles por humanos, pero también archivos legibles por máquina, que luego se pueden analizar para la generación de informes automatizados.
powershell -ep bypass -c " . .PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Audit -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML,CSV,XML " Todos los controles implementados en PrivesCcheck tienen un tipo . Este valor, y los indicadores especificados en la línea de comando, determinarán si se ejecutan o no.
Los controles de Base de tipo siempre se ejecutarán, a menos que el script se ejecute como administrador. Están destinados principalmente a identificar vulnerabilidades de escalada de privilegios u otros temas importantes.
Las verificaciones del tipo Extended solo se pueden ejecutar si la opción -Extended se especifica en la línea de comando. Están destinados principalmente a proporcionar información adicional que podría ser útil para el desarrollo de explotación o después de la explotación.
Las verificaciones de Audit de tipo solo se pueden ejecutar si la opción -Audit se especifica en la línea de comando. Están destinados principalmente a proporcionar información relevante en el contexto de una auditoría de configuración.
Las verificaciones de tipo Experimental solo se pueden ejecutar si la opción -Experimental se especifica en la línea de comando. Estas son cheques inestables que necesitan más trabajo. Úselos con precaución.
Por defecto, la Política de ejecución de PowerShell está establecida en Restricted a los clientes y RemoteSigned en los servidores, cuando se inicia un nuevo proceso powershell.exe . Estas políticas bloquean la ejecución de los scripts (sin firmar), pero pueden ser anulados dentro del alcance actual de la siguiente manera.
Set-ExecutionPolicy Bypass - Scope Process - Force
. .PrivescCheck.ps1Sin embargo, este truco no funciona cuando la política de ejecución se aplica a través de un GPO. En este caso, después de comenzar una nueva sesión de PowerShell, puede cargar el script de la siguiente manera.
Get-Content .PrivescCheck.ps1 | Out-String | Invoke-ExpressionUna forma común de omitir el modo de lenguaje restringido consiste en iniciar PowerShell versión 2, ya que no implementa esta protección. Por lo tanto, una parte importante del esfuerzo de desarrollo se destina a mantener esta compatibilidad.
Nota
Aunque PowerShell versión 2 todavía está habilitado de forma predeterminada en versiones recientes de Windows, no puede ejecutarse sin el .NET Framework versión 2.0, que requiere una instalación manual.
Si ejecuta este script dentro de una sesión de meterpreter, es probable que obtenga un error de "tiempo de espera". Metasploit tiene un valor de "tiempo de espera de respuesta", que se establece en 15 segundos de forma predeterminada, pero este script lleva mucho más tiempo ejecutarse en la mayoría de los entornos.
meterpreter > load powershell
Loading extension powershell...Success.
meterpreter > powershell_import /local/path/to/PrivescCheck.ps1
[+] File successfully imported. No result was returned.
meterpreter > powershell_execute "Invoke-PrivescCheck"
[-] Error running command powershell_execute: Rex::TimeoutError Operation timed out. Es posible establecer un valor diferente gracias a la opción -t del comando sessions (documentación). En el siguiente ejemplo, se establece un tiempo de espera de 2 minutos para la sesión con ID 1 .
msf6 exploit(multi/handler) > sessions -t 120 -i 1
[*] Starting interaction with 1...
meterpreter > powershell_execute "Invoke-PrivescCheck"