Voltar às atualizações
New releaseAug 19, 2026

PrivescCheck v2026.08.19-1

Script de Enumeração de Escalada de Privilégios para Windows

Compartilhar

PrivescCheck

Identifique rapidamente vulnerabilidades e problemas de configuração comuns do Windows que não são necessariamente cobertos por padrões de segurança públicos, e colete informações úteis para tarefas de exploração e pós-exploração.

[!IMPORTANT] Um aspecto importante a ser observado ao usar esta ferramenta é que todas as verificações de controle de acesso são feitas no contexto do usuário atual. Portanto, se for executada com privilégios de administrador, muitas verificações de vulnerabilidade são ignoradas para evitar a geração de resultados incorretos.

🚀 Início Rápido

Baixe o script aqui: PrivescCheck.ps1

[!TIP] O link acima também pode ser usado diretamente em um terminal PowerShell com (New-Object Net.WebClient).DownloadString(...).

Caso de Uso 1 (Pentest): Executar Apenas Verificações Básicas

Existe uma maneira óbvia de escalar privilégios localmente?

powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck"

Caso de Uso 2 (Pesquisa): Executar Verificações Estendidas + Gerar Relatórios Legíveis

Existem informações adicionais que podem ser aproveitadas para pós-exploração ou para encontrar vulnerabilidades em software de terceiros?

powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML"

Caso de Uso 3 (Auditoria): Executar Todas as Verificações + Gerar Todos os Relatórios

Existem problemas de configuração que não são cobertos por padrões de segurança comuns?

powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Audit -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML,CSV,XML"

📖 Uso Detalhado

Invoke-PrivescCheck [-Extended] [-Audit] [-Experimental] [-Report <PREFIX>]
    [-Format <FORMAT>[,...]] [-Risky] [-Silent] [-Force]

    -Extended
        Include all "extended" checks in the scan (see README).

    -Audit
        Include all "audit" checks in the scan.

    -Experimental
        Include all "experimental" checks in the scan. Use only if you know
        what you are doing.

    -Report <PREFIX>
        Generate at least one report file. The output filename will be
        "PREFIX.txt" by default. The extension is automatically appended
        based on the report format (see "-Format <FORMAT>[,...]").

    -Format <FORMAT>[,...]
        Specify the format of the output report file(s). If not set, the
        default value is "TXT". Supported formats are: "TXT", "HTML", "CSV",
        and "XML".

    -Risky
        Include checks marked as "risky", i.e. checks that are likely to
        trigger a blocking action by an endpoint protection solution. Use with
        caution.

    -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.

Formato do Relatório > TXT (-Format TXT)

Use a opção -Report <PREFIX> (com -Format TXT) para especificar que deseja gerar um relatório de texto bruto. A saída é semelhante ao que você veria no terminal, exceto que contém apenas caracteres ASCII para melhor compatibilidade (retro-)com todos os editores de texto.

Captura de tela de um relatório de texto bruto gerado pelo PrivescCheck

Formato do Relatório > HTML (-Format HTML)

Use a opção -Report <PREFIX> com -Format HTML para especificar que deseja gerar um relatório HTML. O arquivo de saída pode ser aberto em um navegador da web. É mais conveniente para visualizar os dados do que o relatório de texto bruto. Além disso, oferece recursos de classificação e filtragem!

Captura de tela de um relatório HTML gerado pelo PrivescCheck

Formato do Relatório > CSV (-Format CSV) & XML (-Format XML)

Use a opção -Report <PREFIX> com -Format CSV ou -Format XML para especificar que deseja gerar um relatório CSV ou XML. O arquivo de saída destina-se a facilitar a análise dos resultados por ferramentas de relatórios automatizadas.

[!NOTE] Embora o formato de saída não esteja documentado (ainda), você pode descobri-lo facilmente analisando a estrutura de um arquivo já gerado. Você pode usar o valor Id de cada verificação para identificá-las de forma única.

Tipo de Verificação > Base

As verificações do tipo Base serão sempre executadas, a menos que o script seja executado como administrador. Destinam-se principalmente a identificar vulnerabilidades de escalonamento de privilégios ou outros problemas importantes.

Tipo de Verificação > Estendida (-Extended)

As verificações do tipo Extended só podem ser executadas se a opção -Extended for especificada na linha de comando. Destinam-se principalmente a fornecer informações adicionais que podem ser úteis para o desenvolvimento de explorações ou pós-exploração.

Tipo de Verificação > Auditoria (-Audit)

As verificações do tipo Audit só podem ser executadas se a opção -Audit for especificada na linha de comando. Destinam-se principalmente a fornecer informações relevantes no contexto de uma auditoria de configuração.

💡 Dicas e Truques

Política de Execução do PowerShell

Por padrão, a política de execução do PowerShell é definida como Restricted em clientes e RemoteSigned em servidores, quando um novo processo powershell.exe é iniciado. Essas políticas bloqueiam a execução de scripts (não assinados), mas podem ser substituídas no escopo atual da seguinte forma.

Set-ExecutionPolicy Bypass -Scope Process -Force
. .\PrivescCheck.ps1

No entanto, esse truque não funciona quando a política de execução é imposta por meio de uma GPO. Nesse caso, após iniciar uma nova sessão do PowerShell, você pode carregar o script da seguinte forma.

Get-Content .\PrivescCheck.ps1 | Out-String | Invoke-Expression

PowerShell Versão 2

Uma maneira comum de contornar o Modo de Linguagem Restrito é usar o PSv2, pois ele não implementa essa proteção. Portanto, uma parte significativa do esforço de desenvolvimento é dedicada a manter essa retrocompatibilidade.

[!NOTE] Embora o PowerShell versão 2 ainda esteja habilitado por padrão em versões recentes do Windows (Remoção do PowerShell 2.0 do Windows), ele não pode ser executado sem o .Net Framework versão 2.0, que requer uma instalação manual.

Timeout do Metasploit

Se você executar este script dentro de uma sessão do Meterpreter, provavelmente receberá um erro de "timeout". Isso ocorre porque o Metasploit usa um valor de timeout padrão de 15 segundos, que não é suficiente para uma execução típica do script ser concluída.

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.

É possível definir um timeout diferente graças à opção -t do comando sessions (documentação). No exemplo a seguir, um timeout de 2 minutos é definido para a sessão com ID 1, mas você pode querer definir um valor ainda maior.

msf6 exploit(multi/handler) > sessions -t 120 -i 1
[*] Starting interaction with 1...
meterpreter > powershell_execute "Invoke-PrivescCheck"

📑 Créditos

Categorias