
PrivescCheck v2026.09.02-1
Script de enumeración de escalada de privilegios para Windows
PrivescCheck
Identifique rápidamente vulnerabilidades comunes de Windows y problemas de configuración que no están necesariamente cubiertos por los estándares de seguridad públicos, y recopile información útil para tareas de explotación y post-explotación.
[!IMPORTANT] Un aspecto importante a tener en cuenta al usar esta herramienta es que todas las comprobaciones de control de acceso se realizan en el contexto del usuario actual. Por lo tanto, si se ejecuta con privilegios de administrador, se omiten muchas comprobaciones de vulnerabilidades para evitar generar hallazgos incorrectos.
Inicio Rápido
Descargue el script aquí: PrivescCheck.ps1
[!TIP] El enlace anterior también se puede usar directamente en una terminal de PowerShell con
(New-Object Net.WebClient).DownloadString(...).
Caso de Uso 1: Evaluación Rápida
powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Report TXT,HTML"
Caso de Uso 2: Evaluación Extensiva
powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Report TXT,HTML"
Caso de Uso 3: Evaluación Integral
powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Audit -Report ALL"
Uso Detallado
Invoke-PrivescCheck [-Extended] [-Audit] [-Risky] [-Report <FORMAT>[,...]]
[-FilePath <PREFIX>] [-Silent] [-Force]
-Extended
Include all "extended" checks in the scan.
-Audit
Include all "audit" checks in the scan.
-Risky
Include all "risky" checks in the scan. Those are checks that are
likely to trigger active EDR counter measures due to their behavior.
-Report <FORMAT>[,...]
Specify output report file formats (TXT, HTML, CSV, XML). Use alias
'ALL' to generate all report files. By default, the output filename
is automatically generated. Use option '-FilePath' to specify one
explicitly.
-FilePath <PREFIX>
Specify the output report file name or directory. The file extension
is automatically appended. If a directory path is supplied, the
filename is automatically generated at runtime.
-Silent
Suppress terminal output. This can be useful if you want to run the
script as part of a batch file, in a scheduled task for instance.
-Force
Force execution and ignore warnings. Typically, the script stops if
it is executed with administrator privileges. Use this option to
execute it anyway.
Formatos de Archivo de Informe
Formato de Archivo de Informe > TXT
Use la opción -Report TXT para generar un informe de texto sin formato. La salida es similar a la salida de la terminal, excepto que contiene solo caracteres ASCII para una mejor compatibilidad con editores de texto.

Formato de Archivo de Informe > HTML
Use la opción -Report HTML para generar un informe HTML. El archivo de salida se puede abrir en un navegador web. No se requiere conexión a Internet ya que no tiene dependencias externas. Es más conveniente para visualizar los datos que el informe de texto sin formato. Además, ofrece capacidades de ordenación y filtrado.

Formato de Archivo de Informe > CSV o XML
Use la opción -Report CSV o -Report XML para generar un informe CSV o XML. El archivo de salida está destinado a facilitar el análisis de los resultados por herramientas de informes automatizadas.
[!NOTE] Aunque el formato de salida no está documentado (todavía), puede descubrirlo fácilmente analizando la estructura de un archivo ya generado. Puede usar el valor
Idde cada comprobación como identificador único.
Tipos de Comprobación
Tipo de Comprobación > Base
Las comprobaciones de tipo Base siempre se ejecutarán, a menos que el script se ejecute como administrador. Están destinadas principalmente a identificar vulnerabilidades de escalada de privilegios u otros problemas importantes.
Tipo de Comprobación > Extended
Las comprobaciones de tipo Extended solo se pueden ejecutar si se especifica la opción -Extended en la línea de comandos. Están destinadas principalmente a proporcionar información adicional que podría ser útil para el desarrollo de exploits o la post-explotación.
Tipo de Comprobación > Audit
Las comprobaciones de tipo Audit solo se pueden ejecutar si se especifica la opción -Audit en la línea de comandos. Están destinadas principalmente a proporcionar información relevante en el contexto de una auditoría de configuración.
Consejos y Trucos
Política de Ejecución de PowerShell
Por defecto, la política de ejecución de PowerShell está establecida en Restricted en los clientes, y en RemoteSigned en los servidores, cuando se inicia un nuevo proceso powershell.exe. Estas políticas bloquean la ejecución de scripts (no firmados), pero se pueden anular dentro del ámbito actual de la siguiente manera.
Set-ExecutionPolicy Bypass -Scope Process -Force
. .\PrivescCheck.ps1
Sin embargo, este truco no funciona cuando la política de ejecución se aplica a través de una GPO. En este caso, después de iniciar una nueva sesión de PowerShell, puede cargar el script de la siguiente manera.
Get-Content .\PrivescCheck.ps1 | Out-String | Invoke-Expression
PowerShell Versión 2
Una forma común de eludir el Modo de Lenguaje Restringido consiste en usar PSv2, ya que no implementa esta protección. Por lo tanto, una parte significativa del esfuerzo de desarrollo se dedica a mantener esta retrocompatibilidad.
[!NOTE] Aunque la versión 2 de PowerShell
todavía está habilitada por defecto en versiones recientes de Windows(Eliminación de PowerShell 2.0 de Windows), no puede ejecutarse sin la versión 2.0 de .Net framework, lo que requiere una instalación manual.
Tiempo de Espera de Metasploit
Si ejecuta este script dentro de una sesión de Meterpreter, es probable que obtenga un error de "timeout". Esto se debe a que Metasploit usa un valor de tiempo de espera predeterminado de 15 segundos, que no es suficiente para que se complete una ejecución típica del script.
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 tiempo de espera 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, pero es posible que desee establecer un valor aún mayor.
msf6 exploit(multi/handler) > sessions -t 120 -i 1
[*] Starting interaction with 1...
meterpreter > powershell_execute "Invoke-PrivescCheck"
Compilación
Actualizar los Datos
Algunas de las comprobaciones dependen de datos en línea (p. ej., la base de datos de controladores LOL), pero el script está diseñado para funcionar sin conexión. Para resolver este problema, los datos están integrados en el script y, por lo tanto, deben actualizarse regularmente. Este proceso está totalmente automatizado en la versión oficial, pero si desea compilar el script localmente, puede hacerlo manualmente de forma opcional.
powershell -ep bypass ". .\build\Build.ps1; Update-LolDriverFile"
Compilar el Script
Compilar el script es tan simple como ejecutar el comando a continuación. El archivo de salida se guardará en la carpeta .\dist\.
powershell -ep bypass ". .\build\Build.ps1; Invoke-Build -Name PrivescCheck"
El script de compilación usa un generador de números pseudoaleatorios con una semilla generada aleatoriamente para elegir un nombre de variable para cada módulo. Si desea generar resultados reproducibles entre compilaciones, puede optar por reutilizar la semilla generada previamente usando la opción -NoNewSeed.
powershell -ep bypass ". .\build\Build.ps1; Invoke-Build -Name PrivescCheck -NoNewSeed"
El script de compilación usa cifrado AES con una clave generada aleatoriamente para ofuscar el contenido de cada módulo. Si desea generar resultados reproducibles entre compilaciones, puede optar por reutilizar la clave generada previamente usando la opción -NoNewKey.
powershell -ep bypass ". .\build\Build.ps1; Invoke-Build -Name PrivescCheck -NoNewKey"
Créditos
- Lista de palabras - CBHue/PyFuscation
- Lista de controladores vulnerables conocidos - https://www.loldrivers.io/