
Modulo Powershell per l'analisi forense di VMWare vSphere

Il modulo PowerShell DFIR4vSphere raccoglie log e artefatti forensi sia dagli host ESXi che dalla console vCenter.
Il modulo ha due funzioni principali:
DFIR4vSphere è stato presentato per la prima volta al CoRI&IN 2022 (Conférence sur la réponse aux incidents et l’investigation numérique). Le slide della presentazione, in francese, sono disponibili . È stato inoltre presentato al SANS DFIR Summit 2022; la registrazione della presentazione è .
DFIR4vSphere utilizza il modulo VMware PowerCLI; installarlo prima di usare il modulo:
Install-Module VMware.PowerCLI -Scope CurrentUser
Una volta installato, individua il percorso dei moduli PowerShell con il seguente comando:
PS> $env:PSModulePath
Copiare la cartella DFIR4vSphere in uno dei percorsi dei moduli, ad esempio:
%USERPROFILE%\Documents\WindowsPowerShell\Modules
%ProgramFiles%\WindowsPowerShell\Modules
%SYSTEMROOT%\system32\WindowsPowerShell\v1.0\Modules
Il modulo DFIR4vSphere è installato; riavviare la console PowerShell e caricare il modulo:
PS> Import-module DFIR4vSphere
È quindi necessario connettersi al vCenter che si sta investigando prima di avviare la raccolta dati:
PS> Connect-VIServer %VC_Name%
Usare docker-compose per creare l'immagine, avviare il contenitore e montare un volume per recuperare i log:
sudo docker-compose run dfir4vsphere
Il modulo è pronto all'uso.
Raccogliere gli eventi VI del vCenter degli ultimi 30 giorni:
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate
Eseguire la stessa raccolta con il support bundle del vCenter; farlo nel caso si sospetti una compromissione dell'appliance vCenter stessa; in tal caso si dovrebbe anche eseguire un'indagine forense Linux classica sull'host vCenter:
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate -VCBundle
Il parametro LightVIEvents raccoglie solo i tipi di evento considerati di interesse. Usare questa opzione se l'infrastruttura in esame è grande e la raccolta normale è troppo lenta.
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate -LightVIEvents
Con LightVIEventTypesId è possibile filtrare i tipi di evento specifici che si desidera raccogliere. Un elenco completo degli ID dei tipi di evento è disponibile qui. Ad esempio, per recuperare solo gli eventi di autenticazione sul vCenter, si può lanciare il seguente comando:
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate -LightVIEvents -LightVIEventTypesId "com.vmware.sso.LoginSuccess","com.vmware.sso.LoginFailure"
La conservazione predefinita dei log per gli eventi VI è di 30 giorni, ma è possibile provare a recuperare eventi più vecchi. A volte i log vengono recuperati oltre la strategia di conservazione configurata.
Questo comando accetta in input un host ESXi tramite il suo nome o recuperato con il cmdlet Get-VMHost di PowerCLI. Ad esempio, per eseguire una raccolta di base su tutti gli host ESXi collegati al vCenter:
Get-VMHost | Start-ESXi_Investigation
Il comando precedente genererà diversi file CSV che descrivono i processi in esecuzione, le connessioni aperte, gli account locali e recupera varie impostazioni di configurazione...
Se è necessario recuperare anche i log locali dell'ESXi (come shell.log o auth.log), sarà necessario generare un support bundle.
Il comando seguente recupera tutti gli ESXi di un determinato cluster e genera per ogni hypervisor un support bundle.
Get-VMHost -Location %ClusterName% | Start-ESXi_Investigation -ESXBundle
È possibile anche puntare a un host ESXi specifico e generare il suo support bundle indicandone il nome.
Start-ESXi_Investigation -Name %ESXi% -ESXBundle
Generare i support bundle per ogni ESXi collegato a un vCenter potrebbe richiedere tempo in ambienti di grandi dimensioni.
I file generati da ciascuna funzione sono:
L'esecuzione delle varie funzioni genererà una struttura di directory simile:
DFIR4vSphere_Collection
│ Start-ESXi_Investigation.log
│ Start-VC_Investigation.log
│ VC_ConnectionInfo_%VC_Name%.csv
| VC_ESXiInventory_%VC_Name%.csv
│ VC_Permissions_%VC_Name%.csv
│ VC_Users_%VC_Name%.csv
└───%ESX_Name1%
│ │ ESXi_%ESX_Name1%_DomJoin.csv
│ │ ESXi_%ESX_Name1%_General.csv
│ │ ESXi_%ESX_Name1%_Hostd.log
│ │ ESXi_%ESX_Name1%_Network_ARPCache.csv
│ │ ESXi_%ESX_Name1%_Network_DNS.csv
│ │ ESXi_%ESX_Name1%_Network_IPv4.csv
│ │ ESXi_%ESX_Name1%_Network_IPv4routes.csv
│ │ ESXi_%ESX_Name1%_Network_Netstat.csv
│ │ ESXi_%ESX_Name1%_Network_VMs.csv
│ │ ESXi_%ESX_Name1%_Network_vSwitchs.csv
│ │ ESXi_%ESX_Name1%_Services.csv
│ │ ESXi_%ESX_Name1%_Software_BaseImage.csv
│ │ ESXi_%ESX_Name1%_Software_Profile.csv
│ │ ESXi_%ESX_Name1%_Software_VIB.csv
│ │ ESXi_%ESX_Name1%_Software_VIBSigCheck.csv
│ │ ESXi_%ESX_Name1%_Storage_FileSystem.csv
│ │ ESXi_%ESX_Name1%_Storage_IOFilter.csv
│ │ ESXi_%ESX_Name1%_System_Accounts.csv
│ │ ESXi_%ESX_Name1%_System_Advanced-delta.csv
│ │ ESXi_%ESX_Name1%_System_Certstore.csv
│ │ ESXi_%ESX_Name1%_System_ExecPolicy.csv
│ │ ESXi_%ESX_Name1%_System_GuestRepo.csv
│ │ ESXi_%ESX_Name1%_System_modules.csv
│ │ ESXi_%ESX_Name1%_System_Kernel-Delta.csv
│ │ ESXi_%ESX_Name1%_System_permissions.csv
│ │ ESXi_%ESX_Name1%_System_process.csv
│ │ ESXi_%ESX_Name1%_System_version.csv
└───%ESX_Name2%
│ │ ESXi_%ESX_Name2%_DomJoin.csv
│ │ ESXi_%ESX_Name2%_General.csv
│ │ ...
└───Support_Bundles
│ │ esx-%ESX_Name1%-YYY-MM-DD.tgz
│ │ esx-%ESX_Name2%-YYY-MM-DD.tgz
│ │ vcsupport-%GUID%.tgz
└───VI_Events_%VC_Name%
│ │ VIEvents_%EventTypeId1%.json
│ │ VIEvents_%EventTypeId2%.json
│ │ ...
│ └───YYYY-MM-DD
│ | │ VIEvents_YYYY-MM-DD_HH-00-00.json
│ | │ ...
│ └───YYYY-MM-DD
│ │ │ VIEvents_YYYY-MM-DD_HH-00-00.json
│ │ │ ...
│ └───...
Una volta completata la raccolta con entrambe le funzioni, si otterranno log da:
In alcuni casi di ransomware, l'attaccante interrompe il vCenter e può inoltre resettare gli account root locali degli ESXi. In tal caso, l'unica possibilità è ripristinare il vCenter dal backup; gli ESXi compromessi si ricollegheranno automaticamente al vCenter e quindi si potrà lanciare DFIR4vSphere. Per accedere di nuovo agli ESXi compromessi con account locali, è possibile eseguire un reset della password tramite chiamate API del vCenter (ecco uno script per eseguire l'operazione https://www.hypervisor.fr/?p=5655)