
Module Powershell pour la forensique VMWare vSphere

Le module PowerShell DFIR4vSphere collecte les journaux et les artefacts forensiques sur les hôtes ESXi ainsi que sur la console vCenter.
Le module a deux fonctions principales :
DFIR4vSphere a été présenté pour la première fois au CoRI&IN 2022 (Conférence sur la réponse aux incidents et l’investigation numérique). Les diapositives de la présentation, en français, sont disponibles ici. Il a également été présenté au SANS DFIR Summit 2022, un enregistrement de la présentation est disponible ici.
DFIR4vSphere utilise le module VMware PowerCLI, veuillez l'installer avant d'utiliser le module :
Install-Module VMware.PowerCLI -Scope CurrentUser
Une fois installé, localisez le chemin de vos modules PowerShell avec la commande suivante :
PS> $env:PSModulePath
Copiez le dossier DFIR4vSphere dans l'un des chemins de modules, par exemple :
%USERPROFILE%\Documents\WindowsPowerShell\Modules
%ProgramFiles%\WindowsPowerShell\Modules
%SYSTEMROOT%\system32\WindowsPowerShell\v1.0\Modules
Le module DFIR4vSphere est installé, redémarrez la console PowerShell et chargez le module :
PS> Import-module DFIR4vSphere
Vous devez ensuite vous connecter au vCenter que vous investiguez avant de lancer la collecte de données :
PS> Connect-VIServer %VC_Name%
Utilisez docker-compose pour construire l'image, exécuter le conteneur et monter un volume pour récupérer les journaux :
sudo docker-compose run dfir4vsphere
Le module est prêt à l'emploi.
Collectez les événements VI du vCenter des 30 derniers jours :
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate
Effectuez la même collecte avec le support bundle du vCenter, faites-le si vous suspectez une compromission de l'appliance vCenter elle-même ; dans ce cas, vous devez également mener une investigation forensique Linux classique sur l'hôte vCenter :
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate -VCBundle
Le paramètre LightVIEvents collecte uniquement les types d'événements considérés comme intéressants. Utilisez cette option si l'infrastructure investiguée est grande et que la collecte normale est trop lente.
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate -LightVIEvents
Avec LightVIEventTypesId, vous pouvez filtrer les types d'événements spécifiques que vous souhaitez collecter. Une liste complète des identifiants de types d'événements est disponible ici. Par exemple, pour récupérer uniquement les événements d'authentification sur le vCenter, vous pouvez lancer la commande suivante :
$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 rétention par défaut des journaux pour les événements VI est de 30 jours, mais vous pouvez essayer de récupérer des événements plus anciens. Parfois, les journaux sont récupérés au-delà de la stratégie de rétention configurée.
Cette commande prend en entrée un hôte ESXi par son nom ou récupéré avec la cmdlet PowerCLI Get-VMHost. Par exemple, pour effectuer une collecte de base sur tous les hôtes ESXi attachés au vCenter :
Get-VMHost | Start-ESXi_Investigation
La commande ci-dessus génère plusieurs fichiers CSV décrivant les processus en cours d'exécution, les connexions ouvertes, les comptes locaux et récupère divers paramètres de configuration...
Si vous avez également besoin de récupérer les journaux locaux de l'ESXi (tels que shell.log ou auth.log), vous devrez générer un support bundle.
La commande ci-dessous récupère tous les ESXi d'un cluster donné et génère pour chaque hyperviseur un support bundle.
Get-VMHost -Location %ClusterName% | Start-ESXi_Investigation -ESXBundle
Vous pouvez également cibler un hôte ESXi particulier et générer son support bundle en indiquant son nom.
Start-ESXi_Investigation -Name %ESXi% -ESXBundle
Générer des support bundles pour chaque ESXi attaché à un vCenter peut prendre du temps dans les grands environnements.
Les fichiers générés par chaque fonction sont :
Le lancement des différentes fonctions générera une structure de répertoires similaire :
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
│ │ │ ...
│ └───...
Une fois la collecte terminée avec les deux fonctions, vous obtiendrez des journaux provenant de :
Dans certains cas de ransomware, l'acteur de la menace (TA) tue le VC et peut également réinitialiser les comptes root locaux ESXi. Dans ce cas, votre seule chance est de restaurer le vCenter à partir d'une sauvegarde ; les ESXi compromis se rattacheront ensuite automatiquement au vCenter, puis vous pourrez lancer DFIR4vSphere. Pour accéder à nouveau aux ESXi compromis avec des comptes locaux, vous pouvez effectuer une réinitialisation de mot de passe via les appels API vCenter (voici un script pour effectuer l'action https://www.hypervisor.fr/?p=5655)