eJPT · Exploitation & Post-Ex
Privilege Escalation: Windows
Difficoltà: Intermediate Time to Master: 3h Prerequisiti: 02-Reverse-Bind-Shells.md Lab: INE PTS labs / TryHackMe, Blue, Steel Mountain
Obiettivo
Hai una shell come utente qualunque su un host Windows, e SYSTEM/Administrator sembra lontano un miglio. Non lo è quasi mai: è quasi sempre una sola misconfigurazione lontano, e il lavoro qui è enumerare in modo sistematico i punti dove Windows lascia la porta aperta (privilegi di token, servizi, scheduled task, credenziali salvate) finché non ne trovi una sfruttabile.
Concetti chiave
Aree da enumerare sempre
| Area | Cosa cercare |
|---|---|
| Info di sistema | versione OS, patch installate (systeminfo): utile per kernel exploit noti |
| Privilegi utente corrente | whoami /priv: token privilegi abilitati (es. SeImpersonatePrivilege) |
| Servizi | permessi deboli su binari/percorsi di servizio, unquoted service path |
| Pianificazioni | scheduled task eseguiti come SYSTEM ma modificabili da utente basso privilegio |
| Credenziali salvate | file di config, script, cronologia PowerShell, credenziali in chiaro |
| AlwaysInstallElevated | permette install MSI come SYSTEM da utente qualsiasi se abilitato |
Strumenti
| Tool | Comando base | Output | Note |
|---|---|---|---|
| winPEAS | winpeas.exe |
report colorato di tutti i vettori comuni | punto di partenza standard, molto rumoroso ma completo |
| PowerUp.ps1 | Invoke-AllChecks |
check automatizzati privesc PowerShell | richiede execution policy permissiva o bypass |
| whoami | whoami /priv whoami /groups |
privilegi e gruppi utente corrente | comando nativo, sempre disponibile |
| sc.exe | sc qc <servizio> |
configurazione servizio (path, account) | utile per unquoted path e permessi binari |
| accesschk (Sysinternals) | accesschk.exe -uwcqv <servizio> |
permessi effettivi su servizio | richiede binario aggiuntivo caricato sul target |
Payload / Esempi
Esempio 1: check rapido privilegi e patch
whoami /priv
systeminfo
Output atteso:
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ===================================== ========
SeImpersonatePrivilege Impersonate a client after auth Enabled
Spiegazione: SeImpersonatePrivilege abilitato su un account di servizio è la porta d’ingresso classica per tecniche di token impersonation (famiglia “Potato”: JuicyPotato/PrintSpoofer/RoguePotato a seconda della versione OS): concettualmente sfruttano un servizio privilegiato che si autentica verso un endpoint controllato dall’attaccante per rubarne il token.
Esempio 2: unquoted service path
wmic service get name,displayname,pathname,startmode | findstr /i /v "C:\Windows"
Output atteso:
AppSvc App Service C:\Program Files\App Service\service.exe Auto
Spiegazione: se il path contiene spazi e non è tra virgolette, Windows prova ad eseguire in ordine C:\Program.exe, poi C:\Program Files\App.exe, ecc. Se l’utente ha permessi di scrittura in una di quelle directory intermedie e il servizio gira come SYSTEM, si può piazzare un binario malevolo con quel nome.
Esempio 3: AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
Spiegazione: se entrambe le chiavi sono impostate a 1, qualsiasi utente può installare un pacchetto MSI con privilegi SYSTEM: si genera un MSI malevolo con msfvenom (-f msi) e si lancia con msiexec /quiet /qn /i payload.msi.
Esempio 4: scheduled task abusabile
schtasks /query /fo LIST /v
Spiegazione: cerca task eseguiti come SYSTEM/Administrator che puntano a script o binari modificabili dall’utente corrente (controlla i permessi NTFS del file con icacls).
Evasion / Bypass Techniques
- Bypassare l’execution policy PowerShell con
-ExecutionPolicy Bypasso caricando script in memoria (IEX (New-Object Net.WebClient).DownloadString(...)) - Rinominare/offuscare winPEAS se presente un AV/EDR (raro nei lab eJPTv2 ma buona abitudine)
Lab Hands-On
Lab 1: TryHackMe, Steel Mountain
Obiettivo: exploitation iniziale su servizio web, poi privesc locale su Windows Difficulty: Media Time: 1.5h
Walkthrough breve:
- Ottieni una shell iniziale tramite il servizio vulnerabile
- Esegui winPEAS o check manuali (whoami /priv, servizi, scheduled task)
- Identifica il vettore (in questo lab: servizio con permessi deboli)
- Sfrutta il vettore per ottenere una shell SYSTEM
Common Mistakes
- Lanciare winPEAS senza prima guardare
whoami /priv-> si perde il segnale più veloce (SeImpersonatePrivilege) - Ignorare i servizi custom di terze parti -> spesso configurati con permessi permissivi rispetto ai servizi Windows nativi
- Non verificare la versione OS/patch prima di provare un kernel exploit -> rischio di crash del sistema target
Link Utili
Connessioni
- Prerequisito: 02-Reverse-Bind-Shells.md
- Prossimo Step: 05-Pivoting-Port-Forwarding.md
- Combinazione con: ../05-System-Host-Attacks/04-Credential-Dumping-Mimikatz.md
Checklist di padronanza
- So enumerare privilegi/token con whoami /priv
- Riconosco un unquoted service path abusabile
- So verificare AlwaysInstallElevated
- So usare winPEAS e interpretarne l’output