Alcuni dei nostri specialisti di sicurezza tecnica hanno partecipato alla conferenza sulla sicurezza Hack.lu dal 16 al 18 ottobre, per acquisire conoscenze e imparare alcuni nuovi trucchi e strumenti.
Geert Smelt ha riferito dell'intervento 'Abusing Bash for Windows' di Antoine Cervoise su su come utilizzare bash su Windows (Cygwin, WSL) per l'escalation dei privilegi e il post-exploit.
Sottosistema Windows per Linux (WSL)
Con il nuovo CEO di Microsoft Satya Nadella arriva una direzione completamente nuova per Windows. Nadella ha espresso il suo sostegno a Linux e il primo risultato visibile è il rilascio del Windows Subsystem for Linux (WSL), comunemente chiamato Bash per Windows. Si tratta di un livello di compatibilità per eseguire gli eseguibili binari di Linux in modo nativo su Windows 10 e Windows Server 2019 ed è stato rilasciato per la prima volta nell'agosto 2016 (1).
WSL fornisce un'interfaccia kernel compatibile con Linux sviluppata da Microsoft (non contiene codice kernel Linux), che può poi eseguire uno spazio utente GNU su di esso, come quello di Ubuntu, openSUSE, SUSE Linux Enterprise Server, Debian e Kali Linux. Tale spazio utente potrebbe contenere una shell e un linguaggio di comando Bash, con strumenti nativi della riga di comando GNU/Linux (sed, awk, ecc.), interpreti di linguaggi di programmazione (Ruby, Python, ecc.) e persino applicazioni grafiche (utilizzando un server X11 sul lato host). Può essere considerato come la controparte di Wine (2).
Vulnerabilità di WSL
Inizialmente era disponibile solo un'immagine Ubuntu, ma con la versione 1709 di Windows 10 sono state aggiunte Fedora e SUSE. Ora che WSL è maturato un po', analizziamo le vulnerabilità che porta in tavola. Antoine Cervoise ci illustra le varie debolezze scoperte in WSL. La difficoltà principale nella sicurezza di WSL è che consente a un utente di eseguire comandi sia Linux che Windows sullo stesso file system. Ciò significa che se un file non è leggibile da Linux, potrebbe comunque essere leggibile da Windows e viceversa. Un esempio di questo tipo è il file /etc/shadow su Linux, che memorizza tutti gli hash delle password degli utenti che hanno un account sul sistema. Questo file di solito è leggibile solo dall'utente root, che è l'equivalente dell'utente Administrator in Windows. Su un sistema che ha installato WSL, il file non può essere letto da un utente non root, ma quando si naviga verso il file shadow nel file system di Windows, il suo contenuto può essere visualizzato. Il punto debole principale è che gli hash corrispondono a password valide sia nel file system Linux che nel file system Windows. Ovviamente questo crea un altro vettore di attacco per ottenere le password dei sistemi che sono stati compromessi.
Oltre a leggere i file, gli eseguibili di Windows possono essere richiamati da Linux. Questo, ad esempio, consente all'utente di eseguire un processore del prompt dei comandi all'interno dell'ambiente Linux. Va inoltre notato che la maggior parte delle soluzioni software antivirus non è in grado di ispezionare WSL, il che apre un vettore di attacco per stabilire la persistenza su un sistema già compromesso attraverso un malware che viene eseguito dall'interno di WSL. Affinché tale malware abbia successo, deve avere un'architettura a 64 bit. Inoltre, il task manager di Windows mostrerà che bash.exe è in esecuzione, ma non il processo effettivo che viene eseguito all'interno di WSL. Per evitare che il processo si chiuda, può anche essere eseguito all'interno di una sessione tmux (ma non sullo schermo).
Autenticazione SMB e falso comando sudo
Un altro metodo per ottenere le credenziali è l'utilizzo dell'autenticazione SMB. Consideri ad esempio di includere un comando nella configurazione della shell di Linux che viene eseguito ogni volta che l'utente entra nella shell. Facendo in modo che la shell tenti di connettersi a una cartella condivisa sulla rete, il tentativo di autenticazione SMB a questa condivisione può essere intercettato con uno strumento chiamato Responder. L'hash che viene trovato può essere decifrato per recuperare la password in chiaro, oppure può essere riprodotto per autenticarsi a un altro server sulla rete per conto del sistema della vittima.
Un'altra idea interessante proposta da Cervoise è l'uso di un falso comando sudo. Cervoise crea uno script che imita il comportamento di sudo e lo inserisce nella variabile PATH dell'utente, prima che venga trovato il vero binario sudo. Questo gli consente di sovrascrivere il comportamento predefinito e la password dell'utente. Si noti che questo attacco non è limitato a WSL, ma può essere eseguito anche su un normale sistema Linux.
Infine, WSL può essere utilizzato per aggirare AppLocker, l'elemento di Windows che impedisce l'esecuzione di qualsiasi eseguibile non inserito nella lista bianca. Cervoise però non entra molto nel dettaglio.
Poiché WSL è relativamente nuovo, molto probabilmente abbiamo appena iniziato a vedere le prime vulnerabilità. Indubbiamente, nel prossimo futuro verranno scoperte e pubblicate altre vulnerabilità, poiché sempre più sviluppatori e amministratori di sistema inizieranno ad utilizzarlo per il loro lavoro quotidiano.
In Bureau Veritas Cybersecurity teniamo d'occhio le notizie su tali vulnerabilità per incorporarle nel nostro set di strumenti, per assicurarle il miglior servizio che possiamo offrire. Clicchi qui se vuole approfondire le sue conoscenze sulla codifica sicura.
1. https://docs.microsoft.com/en-us/windows/wsl/faq
2. https://mikegerwitz.com/2016/04/GNU-kWindows