
Percorsi di sfruttamento che ti permettono di (ab)usare dei privilegi di Windows per elevare i tuoi diritti all'interno del sistema operativo.
L'idea è di "tradurre" i privilegi del sistema operativo Windows in un percorso che porta a:
I privilegi sono elencati e spiegati su: https://learn.microsoft.com/en-us/windows/win32/secauthz/privilege-constants
Se l'obiettivo può essere raggiunto in più modi, la priorità è:
Puoi controllare i tuoi privilegi con whoami /priv. I privilegi disabilitati sono validi quanto quelli abilitati. L'unica cosa importante è se hai il privilegio nell'elenco o meno.
Nota 1: Ogni volta che il percorso di attacco termina con la creazione di un token, puoi supporre che il passo successivo sia creare un nuovo processo usando tale token e quindi prendere il controllo del sistema operativo.
Nota 2:
a. Per chiamare direttamente NtQuerySystemInformation()/ZwQuerySystemInformation(), puoi trovare i privilegi richiesti qui.
b. Per NtSetSystemInformation()/ZwSetSystemInformation() i privilegi richiesti sono elencati qui.
Nota 3: Mi concentro solo sul sistema operativo. Se un privilegio funziona in AD ma non nel sistema operativo stesso, lo descrivo come non utilizzato nel sistema operativo. Sarebbe bello se qualcuno approfondisse gli scenari orientati ad AD.
Sentiti libero di contribuire e/o discutere le idee presentate.
Crediti:
| Privilegio | Impatto | Strumento | Percorso di esecuzione | Note |
|---|
SeAssignPrimaryToken | Admin | strumento di terze parti | "Permetterebbe a un utente di impersonare token e ottenere privilegi di nt system usando strumenti come potato.exe, rottenpotato.exe e juicypotato.exe" | Grazie Aurélien Chalot per l'aggiornamento. Proverò a riformularlo presto in modo più simile a una ricetta. |
SeAudit | Minaccia | strumento di terze parti | Scrivere eventi nel registro eventi di sicurezza per ingannare il controllo o sovrascrivere eventi vecchi. | È possibile scrivere eventi propri con l'API Authz Report Security Event.- vedi PoC di @daem0nc0re |
SeBackup | Admin | strumento di terze parti | 1. Eseguire il backup delle chiavi del registro HKLM\SAM e HKLM\SYSTEM 2. Estrarre gli hash degli account locali dal database SAM 3. Pass-the-Hash come membro del gruppo Administrators locale In alternativa, può essere usato per leggere file sensibili. | Per maggiori informazioni, fare riferimento al file SeBackupPrivilege.- vedi PoC di @daem0nc0re |
SeChangeNotify | Nessuno | - | - | Privilegio posseduto da tutti. Revocarlo potrebbe rendere il sistema operativo (Windows Server 2019) non avviabile. |
SeCreateGlobal | ? | ? | ? | |
SeCreatePagefile | Nessuno | Comandi integrati | Creare hiberfil.sys, leggerlo offline, cercare dati sensibili. | Richiede accesso offline, che di fatto porta a diritti di amministratore. - Vedi PoC di @daem0nc0re |
SeCreatePermanent | ? | ? | ? | |
SeCreateSymbolicLink | ? | ? | ? | |
SeCreateToken | Admin | strumento di terze parti | Creare token arbitrario inclusi diritti di amministratore locale con NtCreateToken.- vedi PoC di @daem0nc0re | |
SeDebug | Admin | PowerShell | Duplicare il token di lsass.exe. | Script disponibile su FuzzySecurity. - Vedi PoC di @daem0nc0re |
SeDelegateSession-UserImpersonate | ? | ? | ? | Nome del privilegio spezzato per restringere la colonna. |
SeEnableDelegation | Nessuno | - | - | Il privilegio non è utilizzato nel sistema operativo Windows. |
SeImpersonate | Admin | strumento di terze parti | Strumenti della famiglia Potato (potato.exe, RottenPotato, RottenPotatoNG, Juicy Potato, SweetPotato, RemotePotato0), RogueWinRM, PrintSpoofer, ecc. | Analogamente a SeAssignPrimaryToken, permette per progettazione di creare un processo nel contesto di sicurezza di un altro utente (usando un handle di un token di tale utente). Molteplici strumenti e tecniche possono essere usati per ottenere il token richiesto. |
SeIncreaseBasePriority | Disponibilità | Comandi integrati | start /realtime SomeCpuIntensiveApp.exe | Potrebbe essere più interessante sui server. |
SeIncreaseQuota | Disponibilità | strumento di terze parti | Modificare i limiti di cpu, memoria e cache a valori che rendono il sistema operativo non avviabile. | - Le quote non sono controllate in modalità provvisoria, il che rende la riparazione relativamente facile. - Lo stesso privilegio viene utilizzato per gestire le quote del registro. |
SeIncreaseWorkingSet | Nessuno | - | - | Privilegio posseduto da tutti. Viene verificato quando si chiamano funzioni di ottimizzazione della gestione della memoria. |
SeLoadDriver | Admin | strumento di terze parti | 1. Caricare un driver kernel difettoso come szkg64.sys2. Sfruttare la vulnerabilità del driver In alternativa, il privilegio può essere usato per scaricare driver relativi alla sicurezza con il comando built-in fltMC. Esempio: fltMC sysmondrv | 1. La vulnerabilità di szkg64 è elencata come CVE-2018-157322. Il codice di exploit per szkg64 exploit code è stato creato da Parvez Anwar |
SeLockMemory | Disponibilità | strumento di terze parti | Affamare la partizione di memoria di sistema spostando pagine. | PoC pubblicato da Walied Assar (@waleedassar) |
SeMachineAccount | Nessuno | - | - | Il privilegio non è utilizzato nel sistema operativo Windows. |
SeManageVolume | Admin | strumento di terze parti | 1. Abilitare il privilegio nel token 2. Creare un handle su \.\C: con SYNCHRONIZE | FILE_TRAVERSE3. Inviare FSCTL_SD_GLOBAL_CHANGE per sostituire S-1-5-32-544 con S-1-5-32-5454. Sovrascrivere utilman.exe ecc. | FSCTL_SD_GLOBAL_CHANGE può essere effettuato con questo pezzo di codice. |
SeProfileSingleProcess | Nessuno | - | - | Il privilegio viene controllato prima di modificare (e in un insieme molto limitato di comandi, prima di interrogare) i parametri di Prefetch, SuperFetch e ReadyBoost. L'impatto potrebbe essere aggiustato, poiché l'effetto reale non è noto. |
SeRelabel | Minaccia | strumento di terze parti | Modifica di file di sistema da parte di un amministratore legittimo | Vedi: documentazione MIC Le etichette di integrità forniscono una protezione aggiuntiva, oltre alle ben note ACL. Due scenari principali includono: - protezione contro attacchi che sfruttano applicazioni vulnerabili come browser, lettori PDF, ecc. - protezione dei file del sistema operativo. La presenza di SeRelabel nel token permetterà di utilizzare l'accesso WRITE_OWNER a una risorsa, inclusi file e cartelle. Sfortunatamente, il token con IL inferiore a High avrà il privilegio SeRelabel disabilitato, rendendolo inutile per chi non è già amministratore.Vedi l'ottimo post del blog di @tiraniddo per i dettagli. |
SeRemoteShutdown | Disponibilità | Comandi integrati | shutdown /s /f /m \\server1 /d P:5:19 | Il privilegio viene verificato quando una richiesta di arresto/riavvio proviene dalla rete. Scenari con 127.0.0.1 da investigare. |
SeReserveProcessor | Nessuno | - | - | Sembra che il privilegio non sia più utilizzato e sia apparso solo in un paio di versioni di winnt.h. Puoi vederlo elencato, ad esempio, nel codice sorgente pubblicato da Microsoft qui. |
SeRestore | Admin | PowerShell | 1. Avviare PowerShell/ISE con il privilegio SeRestore presente. 2. Abilitare il privilegio con Enable-SeRestorePrivilege). 3. Rinominare utilman.exe in utilman.old 4. Rinominare cmd.exe in utilman.exe 5. Bloccare la console e premere Win+U | L'attacco potrebbe essere rilevato da alcuni software antivirus. Un metodo alternativo si basa sulla sostituzione dei binari dei servizi archiviati in "Program Files" utilizzando lo stesso privilegio. - vedi PoC di @daem0nc0re |
SeSecurity | Minaccia | Comandi integrati | - Cancellare il registro eventi di sicurezza: wevtutil cl Security- Ridurre le dimensioni del log di sicurezza a 20MB per far sì che gli eventi vengano scaricati presto: wevtutil sl Security /ms:0- Leggere il registro eventi di sicurezza per avere conoscenza di processi, accessi e azioni di altri utenti nel sistema. - Sapere cosa viene registrato per agire sotto traccia. - Sapere cosa viene registrato per generare un gran numero di eventi cancellando efficacemente quelli vecchi senza lasciare prove evidenti di pulizia. - Visualizzare e modificare le SACL degli oggetti (in pratica: impostazioni di controllo) | Vedi PoC di @daem0nc0re |
SeShutdown | Disponibilità | Comandi integrati | shutdown.exe /s /f /t 1 | Permette di chiamare la maggior parte dei livelli di NtPowerInformation(). Da investigare. Permette di chiamare NtRaiseHardError() causando un BSOD immediato e dump della memoria, portando potenzialmente alla divulgazione di informazioni sensibili - vedi PoC di @daem0nc0re |
SeSyncAgent | Nessuno | - | - | Il privilegio non è utilizzato nel sistema operativo Windows. |
SeSystemEnvironment | Sconosciuto | strumento di terze parti | Il privilegio permette di usare NtSetSystemEnvironmentValue, NtModifyDriverEntry e alcune altre syscall per manipolare le variabili UEFI. | Il privilegio è necessario per eseguire sysprep.exe. Inoltre: |
SeSystemProfile | ? | ? | ? | |
SeSystemtime | Minaccia | Comandi integrati | cmd.exe /c date 01-01-01cmd.exe /c time 00:00 | Il privilegio permette di cambiare l'ora di sistema, portando potenzialmente a problemi di integrità della traccia di controllo, poiché gli eventi verranno memorizzati con data/ora errati. - Fare attenzione ai formati di data/ora. Usare sempre valori sicuri se non si è sicuri. - A volte il nome del privilegio usa la "T" maiuscola ed è indicato come SeSystemTime. |
SeTakeOwnership | Admin | Comandi integrati | 1. takeown.exe /f "%windir%\system32"2. icacls.exe "%windir%\system32" /grant "%username%":F3. Rinominare cmd.exe in utilman.exe 4. Bloccare la console e premere Win+U | L'attacco potrebbe essere rilevato da alcuni software antivirus. Un metodo alternativo si basa sulla sostituzione dei binari dei servizi archiviati in "Program Files" utilizzando lo stesso privilegio. - Vedi PoC di @daem0nc0re |
SeTcb | Admin | strumento di terze parti | Manipolare i token per includere i diritti di amministratore locale. | Codice di esempio+exe per creare token arbitrari disponibili su PsBits. |
SeTimeZone | Pasticcio | Comandi integrati | Cambiare il fuso orario. tzutil /s "Chatham Islands Standard Time" | |
SeTrustedCredManAccess | Minaccia | strumento di terze parti | Estrarre le credenziali da Credential Manager | Ottimo post del blog di @tiraniddo. - vedi PoC di @daem0nc0re |
SeUndock | Nessuno | - | - | Il privilegio è abilitato durante lo scollegamento, ma non si è mai osservato che venga controllato per concedere/negare accesso. In pratica significa che non è effettivamente utilizzato e non può portare a nessuna escalation. |
SeUnsolicitedInput | Nessuno | - | - | Il privilegio non è utilizzato nel sistema operativo Windows. |