In questo articolo andrò ad elencare alcune tra le principali tecniche di Privilege Escalation nei sistemi operativi Windows. Per chi non sapesse cosa sia, la privilege escalation (intesa come sorpasso delle autorizzazioni) è l’aumento di privilegi che si possiedono tramite particolari tecniche, come lo sfruttamento di un exploit o di un bug, al fine di poter eseguire azioni che prima non si potevano effettuare. Esistono due tipologie di privilege escalation:
Per quanto riguarda la prima, è quando un utente con determinati permessi, riesce ad effettuare azioni privilegiate senza (in teoria) averne la possibilità. Nel caso specifico, se su una macchina abbiamo un utenza normale, sfruttando una misconfigurazione, riusciamo ad ottenere permessi di root.
Nel caso della scalate verticale, è quando un utente con permessi su determinate aree del sistema, riesce ad ottenere i permessi su altre aree del sistema. Ad esempio è come se in un servizio bancario, riuscissi a visualizzare il conto corrente di un altro utente.
In questo articolo andremo ad analizzare la scalate verticale nei sistemi Linux, ossia come poter sfruttare determinate tecniche per ottenere i privilegi di root.
Come ogni buon processo che si rispetti, anche in questo caso esiste una particolare metodologia e dei passi precisi da eseguire:
Una volta ottenuta una connessione con il sistema vittima (ad esempio con una reverse shell), bisogna porsi una serie di domande, come:
A queste domande si può rispondere con una serie di comandi, come:
Molto similarmente alla guida su Linux, i comandi sono molteplici e consistono principalmente nell’enumerazione del sistema e nel capire in che ambiente ci troviamo. Alcuni programmi che eseguono automaticamente operazioni di enumerazione sono BeRoot, laZagne, PowerUp e WindowsPrivCheck.
Una volta mappato l’ambiente, le tipologie di Privilege escalation negli ambienti Windows sono molteplici, tra le quali:
So che buttati a caso in un elenco dicono poco…vediamo qualche esempio pratico!
Uno degli errori più comuni è impostare permessi troppo laschi ad una cartella o file che sarà poi eseguito da un utente con privilegi di amministrazione. Ad esempio, se digito
cacls.exe "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup"
si può vedere dalla prima riga, che gli utenti appartenenti a “User” hanno completo accesso alla cartella (lettera F). In questo modo, basterà copiare la nostra reverse shell all’interno della cartella, riavviare la macchina (o disconnettersi dallla sessione) e si avrà una sessione amministrativa
Utilizzando lo script di PowerUp abbiamo la possibilità di cercare servizi vulnerabili. Per eseguirlo, se digito
powershell.exe -exec bypass -Command "& {Import-Module .\PowerUp.ps1; Invoke-AllChecks|Out-File -Encoding ASCII checks.txt}"
verrà eseguito powershell, bypassando possibili controlli, in background e in modo tale da avere l’output scritto su un file di testo. Guardando all’interno del file, è stato controllato un servizio ed è risultato con permessi misconfigurati.
Per verificare i permessi del servizio, carico sulla macchina AccessChk, che serve per verificare i permessi sui file, registri, servici, etc.
Come si può notare dall’immagine, chiunque può modificare i dettagli del servizio. Andiamo quindi ad indagare quali sono con il tools sc.
Per poter ottenere i privilegi di root, ci basterà modificare il PATH del binario con una nostra reverse shell, fermare e riavviare il servizio. In questo modo esso si avvierà come amministratore, e ci permetterà di diventare tali.
sc config daclsvc binpath= "C:\Users\luca\Downloads\reverse.exe"
sc stop daclsvc #In questo momento andremo ad avviare netcat sulla nostra macchina
sc start daclsvc
Sempre tramite l’outpur di PowerUP, viene mostrato come vari servizi non abbiano le virgolette, andando a descrivere il path errato.
In questo modo, basterà andare a a copiare un file con il nome di “common” e questo verrà eseguito, poichè il sistema andrà a cercarne uno con quel nome.
Copio la mia solita reverse shell, mi metto in ascolto sulla porta e faccio partire il servizio
Per chi volesse esercitarsi con altri esercizi, gli esempi illustrati nell’articolo sono stati presi da Windows Local Privilege Escalation Workshop, che contiene altri esercizi pratici per imparare. Altre fonti utili per approfondire l’argomento sono:
Ho trovato molto utili anche dei video, come: