Torna agli aggiornamenti
New releaseAug 19, 2026

PrivescCheck v2026.08.19-1

Script di enumerazione per escalation dei privilegi per Windows

Condividi

PrivescCheck

Identifica rapidamente vulnerabilità e problemi di configurazione comuni su Windows che non sono necessariamente coperti dagli standard di sicurezza pubblici, e raccogli informazioni utili per sfruttamento e post-sfruttamento.

[!IMPORTANT] Un aspetto importante da tenere presente quando si utilizza questo strumento è che tutte le verifiche di controllo accessi vengono eseguite nel contesto dell'utente corrente. Pertanto, se viene eseguito con privilegi di amministratore, molti controlli di vulnerabilità vengono effettivamente saltati per evitare di generare risultati errati.

🚀 Avvio Rapido

Scarica lo script qui: PrivescCheck.ps1

[!TIP] Il link sopra può essere utilizzato direttamente in un terminale PowerShell con (New-Object Net.WebClient).DownloadString(...).

Caso d'Uso 1 (Pentest): Esegui Solo Controlli di Base

Esiste un modo ovvio per escalare i privilegi localmente?

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

Caso d'Uso 2 (Ricerca): Esegui Controlli Estesi + Genera Report Leggibili

Ci sono informazioni aggiuntive che possono essere sfruttate per il post-sfruttamento o per trovare vulnerabilità in software di terze parti?

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

Caso d'Uso 3 (Audit): Esegui Tutti i Controlli + Genera Tutti i Report

Ci sono problemi di configurazione non coperti dagli standard di sicurezza comuni?

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

📖 Utilizzo Dettagliato

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

    -Extended
        Include tutti i controlli "estesi" nella scansione (vedi README).

    -Audit
        Include tutti i controlli "audit" nella scansione.

    -Experimental
        Include tutti i controlli "sperimentali" nella scansione. Usa solo se
        sai cosa stai facendo.

    -Report <PREFIX>
        Genera almeno un file di report. Il nome del file di output sarà
        "PREFIX.txt" per impostazione predefinita. L'estensione viene
        aggiunta automaticamente in base al formato del report (vedi
        "-Format <FORMAT>[,...]").

    -Format <FORMAT>[,...]
        Specifica il formato del/i file di report di output. Se non
        impostato, il valore predefinito è "TXT". I formati supportati sono:
        "TXT", "HTML", "CSV" e "XML".

    -Risky
        Include i controlli contrassegnati come "rischiosi", cioè controlli
        che probabilmente attiveranno un'azione di blocco da parte di una
        soluzione di protezione degli endpoint. Utilizzare con cautela.

    -Silent
        Sopprime l'output del terminale. Può essere utile se si desidera
        eseguire lo script come parte di un file batch, ad esempio in
        un'attività pianificata.

    -Force
        Forza l'esecuzione e ignora gli avvisi. Tipicamente, lo script si
        ferma se eseguito con privilegi di amministratore. Utilizza questa
        opzione per eseguirlo comunque.

Formato Report > TXT (-Format TXT)

Usa l'opzione -Report <PREFIX> (con -Format TXT) per specificare che desideri generare un report di testo semplice. L'output è simile a quello che vedresti nel terminale, tranne per il fatto che contiene solo caratteri ASCII per una migliore compatibilità (retro) con tutti gli editor di testo.

Schermata di un report di testo semplice generato da PrivescCheck

Formato Report > HTML (-Format HTML)

Usa l'opzione -Report <PREFIX> con -Format HTML per specificare che desideri generare un report HTML. Il file di output può essere aperto in un browser web. È più comodo per visualizzare i dati rispetto al report di testo semplice. Inoltre, offre funzionalità di ordinamento e filtraggio!

Schermata di un report HTML generato da PrivescCheck

Formato Report > CSV (-Format CSV) e XML (-Format XML)

Usa l'opzione -Report <PREFIX> con -Format CSV o -Format XML per specificare che desideri generare un report CSV o XML. Il file di output è pensato per facilitare l'analisi dei risultati da parte di strumenti di reporting automatizzati.

[!NOTE] Sebbene il formato di output non sia documentato (ancora), puoi facilmente capirlo analizzando la struttura di un file già generato. Puoi utilizzare il valore Id di ogni controllo per identificarli in modo univoco.

Tipo di Controllo > Base

I controlli di tipo Base verranno sempre eseguiti, a meno che lo script non venga eseguito come amministratore. Sono principalmente pensati per identificare vulnerabilità di escalation dei privilegi o altri problemi importanti.

Tipo di Controllo > Esteso (-Extended)

I controlli di tipo Extended possono essere eseguiti solo se l'opzione -Extended viene specificata sulla riga di comando. Sono principalmente pensati per fornire informazioni aggiuntive che potrebbero essere utili per lo sviluppo di exploit o per il post-sfruttamento.

Tipo di Controllo > Audit (-Audit)

I controlli di tipo Audit possono essere eseguiti solo se l'opzione -Audit viene specificata sulla riga di comando. Sono principalmente pensati per fornire informazioni rilevanti nel contesto di un audit di configurazione.

💡 Suggerimenti e Trucchi

Criteri di Esecuzione di PowerShell

Per impostazione predefinita, il criterio di esecuzione di PowerShell è impostato su Restricted sui client e RemoteSigned sui server, quando viene avviato un nuovo processo powershell.exe. Questi criteri bloccano l'esecuzione di script (non firmati), ma possono essere sovrascritti nell'ambito corrente come segue.

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

Tuttavia, questo trucco non funziona quando il criterio di esecuzione è applicato tramite un GPO. In questo caso, dopo aver avviato una nuova sessione PowerShell, puoi caricare lo script come segue.

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

PowerShell Versione 2

Un modo comune per bypassare la Modalità Linguaggio Vincolato (Constrained Language Mode) consiste nell'usare PSv2 poiché non implementa questa protezione. Pertanto, una parte significativa dello sforzo di sviluppo è dedicata al mantenimento di questa retrocompatibilità.

[!NOTE] Sebbene PowerShell versione 2 sia ancora abilitato per impostazione predefinita sulle versioni recenti di Windows (Rimozione di PowerShell 2.0 da Windows), non può funzionare senza .NET Framework versione 2.0, che richiede un'installazione manuale.

Timeout di Metasploit

Se esegui questo script all'interno di una sessione Meterpreter, probabilmente otterrai un errore di "timeout". Ciò accade perché Metasploit utilizza un valore di timeout predefinito di 15 secondi, che non è sufficiente per un'esecuzione tipica dello 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.

È possibile impostare un timeout diverso grazie all'opzione -t del comando sessions (documentazione). Nell'esempio seguente, viene impostato un timeout di 2 minuti per la sessione con ID 1, ma potresti voler impostare un valore ancora più alto.

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

📑 Crediti

Categorie