
PowerShell-Modul für VMWare vSphere Forensik

Das PowerShell-Modul DFIR4vSphere sammelt Protokolle und forensische Artefakte sowohl auf ESXi-Hosts als auch auf der vCenter-Konsole.
Das Modul hat zwei Hauptfunktionen:
DFIR4vSphere wurde erstmals auf der CoRI&IN 2022 (Conférence sur la réponse aux incidents et l’investigation numérique) vorgestellt. Die Folien der Präsentation sind in französischer Sprache hier verfügbar. Es wurde auch auf dem SANS DFIR Summit 2022 präsentiert; eine Aufzeichnung der Präsentation ist hier verfügbar.
DFIR4vSphere verwendet das VMware-PowerCLI-Modul. Bitte installieren Sie es, bevor Sie das Modul verwenden:
Install-Module VMware.PowerCLI -Scope CurrentUser
Nach der Installation finden Sie den Pfad zu Ihren PowerShell-Modulen mit dem folgenden Befehl:
PS> $env:PSModulePath
Kopieren Sie den Ordner DFIR4vSphere in einen der Modulpfade, zum Beispiel:
%USERPROFILE%\Documents\WindowsPowerShell\Modules
%ProgramFiles%\WindowsPowerShell\Modules
%SYSTEMROOT%\system32\WindowsPowerShell\v1.0\Modules
Das DFIR4vSphere-Modul ist installiert. Starten Sie die PowerShell-Konsole neu und laden Sie das Modul:
PS> Import-module DFIR4vSphere
Sie sollten sich dann vor dem Start der Datensammlung mit dem zu untersuchenden vCenter verbinden:
PS> Connect-VIServer %VC_Name%
Verwenden Sie docker-compose, um das Image zu erstellen, den Container auszuführen und ein Volume einzuhängen, um Protokolle abzurufen:
sudo docker-compose run dfir4vsphere
Das Modul ist einsatzbereit.
Sammeln Sie die vCenter-VI-Ereignisse der letzten 30 Tage:
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate
Führen Sie dieselbe Sammlung mit dem vCenter-Support-Bundle durch. Tun Sie dies, wenn Sie eine Kompromittierung der vCenter-Appliance selbst vermuten. In diesem Fall sollten Sie auch eine klassische Linux-Forensik-Untersuchung auf dem vCenter-Host durchführen:
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate -VCBundle
Der Parameter LightVIEvents sammelt nur Ereignistypen, die als interessant erachtet werden. Verwenden Sie diese Option, wenn die untersuchte Infrastruktur groß ist und die normale Sammlung zu langsam ist.
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate -LightVIEvents
Mit LightVIEventTypesId können Sie filtern, welche spezifischen Ereignistypen Sie sammeln möchten. Eine vollständige Liste der Ereignistyp-IDs ist hier verfügbar. Um beispielsweise nur Authentifizierungsereignisse auf dem vCenter abzurufen, können Sie den folgenden Befehl ausführen:
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate -LightVIEvents -LightVIEventTypesId "com.vmware.sso.LoginSuccess","com.vmware.sso.LoginFailure"
Die Standard-Aufbewahrungsdauer für VI-Ereignisse beträgt 30 Tage, aber Sie können versuchen, ältere Ereignisse abzurufen. Manchmal werden Protokolle über die konfigurierte Aufbewahrungsstrategie hinaus abgerufen.
Dieser Befehl akzeptiert einen ESXi-Host entweder per Namen oder über das PowerCLI-Cmdlet Get-VMHost. Um beispielsweise eine grundlegende Sammlung auf allen mit dem vCenter verbundenen ESXi-Hosts durchzuführen:
Get-VMHost | Start-ESXi_Investigation
Der obige Befehl erzeugt mehrere CSV-Dateien, die laufende Prozesse, offene Verbindungen, lokale Konten beschreiben, und ruft verschiedene Konfigurationseinstellungen ab ...
Wenn Sie auch lokale Protokolle des ESXi (wie shell.log oder auth.log) abrufen müssen, müssen Sie ein Support-Bundle erzeugen.
Der folgende Befehl ruft jeden ESXi für einen bestimmten Cluster ab und erzeugt für jeden Hypervisor ein Support-Bundle.
Get-VMHost -Location %ClusterName% | Start-ESXi_Investigation -ESXBundle
Sie können auch einen bestimmten ESXi-Host ansprechen und sein Support-Bundle erzeugen, indem Sie seinen Namen angeben.
Start-ESXi_Investigation -Name %ESXi% -ESXBundle
Das Erzeugen von Support-Bundles für jeden mit einem vCenter verbundenen ESXi kann in großen Umgebungen einige Zeit in Anspruch nehmen.
Die von jeder Funktion erzeugten Dateien sind:
Das Starten der verschiedenen Funktionen erzeugt eine ähnliche Verzeichnisstruktur:
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
│ │ │ ...
│ └───...
Nach Abschluss der Sammlung mit beiden Funktionen erhalten Sie Protokolle von:
In einigen Ransomware-Fällen beendet der Bedrohungsakteur den VC und kann zusätzlich die lokalen ESXi-Root-Konten zurücksetzen. In diesem Fall besteht die einzige Möglichkeit darin, das vCenter aus einem Backup wiederherzustellen. Kompromittierte ESXi-Hosts verbinden sich dann automatisch wieder mit dem vCenter, und Sie können DFIR4vSphere starten. Um wieder mit lokalen Konten auf die kompromittierten ESXi-Hosts zuzugreifen, können Sie ein Passwort-Reset über vCenter-API-Aufrufe durchführen (hier ist ein Skript, um die Aktion auszuführen: https://www.hypervisor.fr/?p=5655)