
PrivescCheck v2026.08.19-1
Script di enumerazione per escalation dei privilegi per Windows
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.

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!

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
Iddi 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
- Elenco parole - CBHue/PyFuscation
- Elenco driver vulnerabili - https://www.loldrivers.io/api/drivers.csv