Red Hot Cyber

La cybersecurity è condivisione.
Riconosci il rischio, combattilo, condividi le tue esperienze ed 
incentiva gli altri a fare meglio di te.

Cerca
Crowdstrike

VMware vCenter: una catena di attacco per la totale compromissione.

Redazione RHC : 2 Aprile 2022 13:55

Sempre più criminali informatici stanno ricercando preziosi 0day all’interno delle soluzioni vCenter di VMware, e molte cybergang stanno creando ransomware e soluzioni che possano sfruttare tali falle per infiltrarsi nelle reti delle aziende.

Il ricercatore senior Yuval Lazar di Pantera Labs, ha scoperto una vulnerabilità di Sensitive Information Disclosure che interessa più di 500.000 dispositivi che eseguono distribuzioni predefinite di vCenter Server.

Questa scoperta è fondamentale dato il suo potenziale impatto globale. 

Secondo VMware, oltre l’80% dei carichi di lavoro virtualizzati viene eseguito su tecnologia VMware, incluso il 100% delle aziende Fortune 500 e Fortune Global 100. La facilità e la comodità che vCenter consente la gestione degli host virtualizzati negli ambienti aziendali in modo efficace ed efficiente ma permette anche ai criminali informatici un accesso centralizzato e la possibilità di infliggere danni diffusi alle organizzazioni. 

Nel vettore di attacco completo rilevato da Pantera Labs, gli attori delle minacce possono compromettere completamente gli ESXi di un’organizzazione distribuiti in un’infrastruttura ibrida e le macchine virtuali ospitate e gestite dall’hypervisor dal solo accesso dell’endpoint a un host con un client vCenter.

VMware ha rilasciato una patch per la vulnerabilità che può essere trovata qui .

Lo sfondo

Installato in centinaia di migliaia di organizzazioni in tutto il mondo e utilizzato per gestire alcune delle risorse e dei sistemi più critici del pianeta, VMware vCenter Server è un obiettivo prioritario per i criminali informatici. 

Una volta compromessa, la facilità e la comodità offerte da vCenter per la gestione degli host virtualizzati negli ambienti aziendali giocheranno all’avversario, fornisce un accesso centralizzato e consente di infliggere danni diffusi. 

Spinto dalle vulnerabilità segnalate in precedenza, in particolare dai recenti rapporti di un ceppo di ransomware Python che prende di mira ESXi, Pentera Labs ha raddoppiato l’esplorazione di nuovi vettori di attacco attraverso vCenter. Il risultato di queste analisi la scoperta di una nuova vulnerabilità di divulgazione delle informazioni. I risultati sono stati segnalati in modo proattivo a VMware e successivamente rilasciata la fix che va a sanare la CVE-2022-22948. 

Alla scoperta del vettore di attacco

La vulnerabilità descritta in questo documento fa parte di una kill chain critica che porta a un’acquisizione completa di un ESXi. 

Immagine 1 – Concatenamento di più vulnerabilità per una visione completa del nuovo vettore di attacco scoperto.

La Sensitive Information Disclosure

Come punto di partenza, si ottiene l’accesso shell a una nuova istanza di un VMware vCenter utilizzando un utente con privilegi bassi denominato ‘vpshere-ui ‘, un membro del gruppo “cis”. Fin qui tutto bene. 

Durante la nostra ricerca sul client vCenter, abbiamo individuato un file contenente le credenziali di accesso in chiaro per il postgresDB del client: “ /etc/vmware-vpx/vcdb.properties ”. Questo file è accessibile a tutti gli utenti che fanno parte del gruppo “cis”.

In altre parole, qualsiasi utente membro del gruppo “cis” può connettersi al database Postgres del vCenter.

Interfaccia utente grafica, testo Descrizione generato automaticamente
Credenziali per PostgresDB in vcdb.properties 

Esplorazione del DB interno di vCenter 

Armati delle credenziali PostgresDB, si conduce un esame di PostgresDB. Si esegue il comando per connettersi al DB, mettendo a frutto le credenziali trovate in vcdb.properties :

/opt/vmware/vpostgres/current/bin/psql -d VCDB -U vc -w 

Qui si scopre che contiene una grande quantità di informazioni su ESXi e vCenter, comprese le informazioni sui data center e le macchine virtuali che sono archiviate su di esso. Per esempio: 

Interrogazione VCDB per informazioni sulle macchine virtuali che si trovano su ESXi

Un’altra tabella è la tabella ‘vpx_host’ contenente i dettagli per un utente chiamato ‘vpxuser’ e la sua passphrase. La tabella vpx_host contiene un record per ogni ESXi gestito, ciascuno contenente un utente chiamato “vpxuser” e una passphrase univoca. 

‏‏‏Viene quindi recuperata la passphrase, usando il comando: 

/opt/vmware/vpostgres/current/bin/psql -d VCDB -U vc -w  -c 'SELECT user_name, password FROM vc.vpx_host;'
Testo Descrizione generato automaticamente
La passphrase di vpxuser 

Cos’è vpxuser?

vpxuser” è un utente con privilegi elevati creato automaticamente alla prima connessione tra ESXi e vCenter. 

L’utente “vpxuser” viene creato su ESXi per impostazione predefinita ed è progettato secondo il principio del privilegio minimo, quindi può essere gestito dal vCenter senza l’uso di root. L’utente viene creato attraverso un processo chiamato “vpxd” che è responsabile della comunicazione tra ESXi e vCenter.   

Non ci sono molte informazioni su questo utente, ma si può trovare un commento a riguardo nel file “passwd” su ESXi. 

Il file “passwd” viene solitamente utilizzato per tenere traccia degli utenti che hanno accesso a un sistema e contiene informazioni sugli account utente. Si possono quindi raccogliere molte informazioni sull’utente “vpxuser” dal file. La descrizione porta alla successiva scoperta: “VirtualCenter administration account”.

Studiando il processo “vpxd” utilizzando IDA pro nel tentativo di capire meglio come vengono creati e registrati “vpxuser” e la relativa password nel PostgresDB si è compreso molto di più. 

Intanto si è cercata nel binario la stringa “VirtualCenter administration account” utilizzando la ricerca Stringhe di IDA pro per vedere dove si fa riferimento a questa stringa. 

Questa ricerca ha portato alla funzione relativa alla creazione dell’utente su ESXi. Da lì, si è identificata la funzione che crea la password come mostra la figura seguente. 

Immergendosi nella funzione “create_random_password”, si identifica l’utilizzo di Random_Crypto (open-vm-tools), che suggerisce che la password per questo utente viene creata in modo casuale. 

Interfaccia utente grafica, testo, applicazione Descrizione generata automaticamente
 Funzione Random_Crypto in “create_random_password” 

La password deve essere salvata nel PostgresDB del vCenter poiché viene generata casualmente alla prima connessione ed è necessaria per ulteriori comunicazioni. 

Tuttavia, come abbiamo visto in precedenza nel DB, la password non viene salvata in chiaro. Si è quindi notato che la passphrase è codificata in base64, ma la frase codificata non è leggibile, quindi si è ipotizzato che fosse crittografata. 

Testo Descrizione generato automaticamente

La passphrase vpxuser 

Decrittografia della password vpxuser 

Esplorando i processi attraverso cui la password viene creata, crittografata, codificata e, infine, salvata nel DB, ci si ritrova di fronte alla funzione di crittografia, solo per scoprire che utilizza il metodo di crittografia comune OpenSSL Symmetric EVP. 

Una chiamata alla funzione che crittografa la password

Crittografia simmetrica OpenSSL EVP 

La crittografia simmetrica utilizza la stessa chiave segreta sia per crittografare che per decrittografare le informazioni. Utilizzando algoritmi di crittografia simmetrica, i dati vengono convertiti in una forma che non può essere compresa da chiunque non possieda la chiave segreta. 

Le funzioni EVP forniscono un’interfaccia di alto livello alle funzioni crittografiche OpenSSL. Per eseguire la crittografia o la decrittografia simmetrica utilizzando EVP dovrai conoscere:

  • L’algoritmo – Esistono diversi tipi di algoritmi di crittografia che possono essere utilizzati, come algoritmi di blocco o di flusso. Come abbiamo scoperto in seguito, AES_256_CBC è l’algoritmo utilizzato qui. 
  • La chiave – Devi possedere la chiave segreta per decifrare il messaggio.
  • Il vettore di inizializzazione (IV) – Un vettore di inizializzazione è un numero casuale utilizzato in combinazione con una chiave segreta come mezzo per crittografare i dati. Questo numero è talvolta indicato come nonce . Viene utilizzato un IV per evitare ripetizioni durante il processo di crittografia dei dati, rendendo impossibile per gli hacker che utilizzano gli attacchi del dizionario decifrare il messaggio crittografato scambiato scoprendo uno schema.

Quindi ora torniamo indietro e identifichiamo il metodo di creazione della password. Poiché l’ IV è randomizzato, si deduce probabilmente che è anche salvato nel DB. Una volta trovata la funzione in cui viene creato l’ IV , questo apre la strada alla funzione di decrittazione! 

Interfaccia utente grafica, testo Descrizione generato automaticamente
La chiamata alla funzione di decrittografia di OpenSSL

A questo punto avendo trovato i 3 prerequisiti necessari per decrittare una crittografia simmetrica: 

  1. L’algoritmo – Potremmo semplicemente dire che l’algoritmo è AES_256_CBC.
  2. La IV – Ci siamo resi conto che i primi 16 byte della passphrase sono la IV . 
  3. La chiave – Abbiamo visto che la chiave di crittografia viene creata in anticipo e salvata nel file ” /etc/vmware-vpx/ssl/symkey.dat “. 

C’è ancora un pezzo mancante a questo puzzle. 

Il file ” /etc/vmware-vpx/ssl/symkey.dat ” è accessibile solo agli utenti con privilegi elevati, quindi occorre un metodo che ci conceda i privilegi di root per leggerlo. Fortunatamente, grazie all’exploit CVE-2021-22015 sempre scoperto da Pantera è possibile fare questo e quindi effettuare l’escalation dei privilegi .

Una volta estratta la chiave, si hanno quindi tutti gli ingredienti necessari per decifrare la password. Scrivendo uno script Python per estrarre la password in chiaro ci si può quindi procurare le credenziali ad alto privilegio per ESXi!

Riepilogo analisi 

  1. Accesso al PostgresDB di vCenter.
  2. Trovata la password codificata e crittografata per vpxuser, un utente con privilegi elevati creato automaticamente alla prima connessione tra ESXi e vCenter.
  3. Reingegnerizzare la creazione di vpxuser per scovare il metodo per decrittografare la password di vpxuser. 
  4. Grazie a vScalation (CVE-2021-22015), un metodo di escalation dei privilegi scoperto da Pentera Labs si possono ottenere i privilegi di root necessari per decrittografare la password di vpxuser. 
  5. Una volta decifrato, l’account root compromesso vpxuser conferma la completa acquisizione del server ESXi attraverso un nuovo zero-day.

Leggi la versione PDF di questo articolo.

Fonte

https://www.pentera.io/blog/information-disclosure-in-vmware-vcenter/?utm_content=202004117&utm_medium=social&utm_source=linkedin&hss_channel=lcp-18445647

Redazione
La redazione di Red Hot Cyber è composta da un insieme di persone fisiche e fonti anonime che collaborano attivamente fornendo informazioni in anteprima e news sulla sicurezza informatica e sull'informatica in generale.