← Tutti i cheatsheet

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 Bypass o 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:

  1. Ottieni una shell iniziale tramite il servizio vulnerabile
  2. Esegui winPEAS o check manuali (whoami /priv, servizi, scheduled task)
  3. Identifica il vettore (in questo lab: servizio con permessi deboli)
  4. 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


Connessioni


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