Esse script tem como objetivo identificar vulnerabilidades de escalada de privilégios locais (LPE) que geralmente são devido a problemas de configuração do Windows ou práticas ruins. Também pode coletar informações úteis para algumas tarefas de exploração e pós-exploração.
Depois de baixar o script e copiá -lo para a máquina Windows de destino, execute -o usando um dos comandos abaixo.
Observação
Você não precisa clonar todo o repositório. O arquivo PrivescCheck.ps1 é um script independente do PowerShell que contém todo o código exigido pelo PrivescCheck para executar.
Importante
Nos comandos abaixo, o primeiro . (DOT) é usado para o "fornecimento de pontos" do script, para que as funções e os cmdlets possam ser usados no escopo atual (consulte o recurso de fornecimento de pontos do PowerShell).
Identifique rapidamente questões importantes, como vulnerabilidades de escalada de privilégios locais.
powershell -ep bypass -c " . .PrivescCheck.ps1; Invoke-PrivescCheck "Identifique questões importantes, mas também colete informações adicionais e salve os resultados para relatar arquivos fáceis de ler.
powershell -ep bypass -c " . .PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML "Execute verificações estendidas e de auditoria e salve os resultados em relatórios legíveis por humanos, mas também arquivos legíveis por máquina, que podem ser analisados posteriormente para a geração automatizada de relatórios.
powershell -ep bypass -c " . .PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Audit -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML,CSV,XML " Todos os cheques implementados no privsccheck têm um tipo . Esse valor e os sinalizadores especificados na linha de comando determinarão se são executados ou não.
As verificações da Base do tipo sempre serão executadas, a menos que o script seja executado como um administrador. Eles são destinados principalmente a identificar vulnerabilidades de escalada de privilégios ou outras questões importantes.
As verificações do tipo Extended só podem ser executadas se a opção -Extended for especificada na linha de comando. Eles são destinados principalmente a fornecer informações adicionais que podem ser úteis para o desenvolvimento de exploração ou pós-exploração.
As verificações da Audit de tipo só podem ser executadas se a opção -Audit for especificada na linha de comando. Eles são destinados principalmente a fornecer informações relevantes no contexto de uma auditoria de configuração.
As verificações do tipo Experimental só podem ser executadas se a opção -Experimental for especificada na linha de comando. São verificações instáveis que precisam de mais trabalho. Use -os com cautela.
Por padrão, a Política de Execução do PowerShell deve ser Restricted aos clientes e RemoteSigned os servidores quando um novo processo powershell.exe é iniciado. Essas políticas bloqueiam a execução de scripts (não assinados), mas podem ser substituídos no escopo atual da seguinte forma.
Set-ExecutionPolicy Bypass - Scope Process - Force
. .PrivescCheck.ps1No entanto, esse truque não funciona quando a política de execução é aplicada através de um GPO. Nesse caso, depois de iniciar uma nova sessão do PowerShell, você pode carregar o script da seguinte maneira.
Get-Content .PrivescCheck.ps1 | Out-String | Invoke-ExpressionUma maneira comum de ignorar o modo de linguagem restrito consiste em iniciar o PowerShell versão 2, pois não implementa essa proteção. Portanto, uma parte significativa do esforço de desenvolvimento é necessário para manter essa compatibilidade.
Observação
Embora a versão 2 do PowerShell ainda esteja ativada por padrão nas versões recentes do Windows, ela não pode ser executada sem o .NET Framework versão 2.0, que requer uma instalação manual.
Se você executar esse script em uma sessão de medidor, provavelmente receberá um erro de "tempo limite". A Metasploit possui um valor de "tempo limite de resposta", que é definido como 15 segundos por padrão, mas esse script leva muito mais tempo para ser executado na maioria dos ambientes.
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 valor diferente graças à opção -t do comando sessions (documentação). No exemplo seguinte, um tempo limite de 2 minutos está definido para a sessão com o ID 1 .
msf6 exploit(multi/handler) > sessions -t 120 -i 1
[*] Starting interaction with 1...
meterpreter > powershell_execute "Invoke-PrivescCheck"