
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 qui. È stato inoltre presentato al SANS DFIR Summit 2022; la registrazione della presentazione è disponibile qui.
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: