Bundle Malevoli su Hypervisor: vSphere Installation Bundles (T1505.006)
I vSphere Installation Bundles (VIBs) rappresentano il meccanismo nativo di VMware per distribuire software, driver e configurazioni sugli hypervisor ESXi. Un VIB è un archivio composto da tre elementi essenziali: un payload .vgz con file e directory da estrarre al boot, un file di firma che attesta l'acceptance level (VMwareCertified, VMwareAccepted, PartnerSupported, CommunitySupported) e un descrittore XML con metadati e dipendenze.
La tecnica ricade sotto la tattica TA0003 (Persistence) e sfrutta una peculiarità architetturale di ESXi: il filesystem in-memory perde le modifiche a molti file al riavvio, ma i VIBs sopravvivono e vengono rieseguiti a ogni boot. Un attaccante può quindi confezionare un VIB malevolo che apre regole firewall custom, avvia listener su porte hard-coded o esegue backdoor a ogni avvio dell'hypervisor.
L'installazione richiede privilegi elevati e per default ESXi accetta solo VIBs firmati a livello PartnerSupported o superiore, ma il flag --force di esxcli software vib install bypassa questo controllo. In alternativa, l'attaccante modifica il descrittore XML per far apparire il bundle come PartnerSupported.
L'impatto è particolarmente severo perché l'hypervisor è invisibile agli EDR delle VM guest: una persistenza a questo livello garantisce controllo su decine di macchine virtuali sottostanti, spesso include storage e reti segmentate, e sopravvive a reinstallazioni dei sistemi operativi guest. Il gruppo UNC3886 ha operativizzato questa tecnica per deployare il malware VIRTUALPIE su ambienti VMware enterprise.
La simulazione di questa tecnica in laboratorio richiede un ambiente ESXi 6.7 o 7.x isolato — mai su produzione. Il workflow classico prevede la costruzione di un VIB custom, la manipolazione dell'acceptance level e la verifica della persistenza post-reboot.
Per creare un VIB da zero il tool di riferimento è vibauthor (a pagamento, distribuito storicamente come Fling VMware) oppure il progetto community vibauthor-docker disponibile su GitHub (open source), che impacchetta l'utility in un container per evitare dipendenze legacy. La struttura base parte da una directory con lo script di persistenza — tipicamente in /etc/rc.local.d/local.sh o come init script — un file XML descriptor e un manifest. Il comando di build è nella forma vibauthor -C -t stage_dir -v output.vib -O descriptor.xml.
Sul target ESXi, la catena operativa prevede prima l'abbassamento dell'acceptance level:
esxcli software acceptance set --level=CommunitySupported
seguito dall'installazione forzata:
esxcli software vib install -v /tmp/malicious.vib --no-sig-check --force
Un approccio più stealth consiste nel modificare il tag <acceptance-level> del descriptor XML e ricalcolare gli hash SHA-256 dichiarati nel manifest, in modo che il bundle appaia come PartnerSupported senza necessità di flag sospetti nei log.
Per il payload persistente, l'attaccante inserisce nello script di boot regole firewall aggiuntive tramite esxcli network firewall ruleset per aprire porte C2, oppure copia un binario ELF statico nella partizione bootbank che viene rimontata a ogni avvio. La partizione /bootbank e /altbootbank sono i target chiave perché sopravvivono al reboot, a differenza della maggior parte del filesystem.
Per red team che operano contro ambienti VMware maturi, strumenti come Chainsaw (open source) e PowerCLI (gratuito, VMware) permettono di enumerare VIBs installati e acceptance level via Get-EsxCli -V2. La verifica post-exploitation avviene con esxcli software vib list per confermare la presenza del bundle e esxcli software vib get -n nome_vib per esaminarne i metadati.
Documentare in report la catena completa — dall'ottenimento delle credenziali root o dell'accesso SSH all'ESXi, fino alla persistenza — è cruciale per dimostrare l'impatto sistemico oltre la singola compromissione.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo