
Módulo de PowerShell para análisis forense de VMWare vSphere

El módulo de PowerShell DFIR4vSphere recopila registros y artefactos forenses tanto en hosts ESXi como en la consola de vCenter.
El módulo tiene dos funciones principales:
DFIR4vSphere se presentó por primera vez en el CoRI&IN 2022 (Conférence sur la réponse aux incidents et l’investigation numérique). Las diapositivas de la presentación, en francés, están disponibles aquí. También se presentó en el SANS DFIR Summit 2022; hay una grabación de la presentación disponible aquí.
DFIR4vSphere utiliza el módulo VMware PowerCLI; por favor, instálelo antes de usar el módulo:
Install-Module VMware.PowerCLI -Scope CurrentUser
Una vez instalado, localice la ruta de los módulos de PowerShell con el siguiente comando:
PS> $env:PSModulePath
Copie la carpeta DFIR4vSphere en una de las rutas de módulos, por ejemplo:
%USERPROFILE%\Documents\WindowsPowerShell\Modules
%ProgramFiles%\WindowsPowerShell\Modules
%SYSTEMROOT%\system32\WindowsPowerShell\v1.0\Modules
El módulo DFIR4vSphere está instalado; reinicie la consola de PowerShell y cargue el módulo:
PS> Import-module DFIR4vSphere
A continuación, debe conectarse al vCenter que está investigando antes de iniciar la recopilación de datos:
PS> Connect-VIServer %VC_Name%
Use docker-compose para construir la imagen, ejecutar el contenedor y montar un volumen para recuperar los registros:
sudo docker-compose run dfir4vsphere
El módulo está listo para usar.
Recopile los eventos VI de vCenter de los últimos 30 días:
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate
Realice la misma recopilación con el paquete de soporte de vCenter; haga esto en caso de sospechar un compromiso en la propia appliance de vCenter. En ese caso, también debe realizar una investigación forense Linux clásica en el host de vCenter:
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate -VCBundle
El parámetro LightVIEvents recopilará solo los tipos de eventos que se consideran de interés. Use esta opción si la infraestructura investigada es grande y la recopilación normal es demasiado lenta.
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate -LightVIEvents
Con LightVIEventTypesId puede filtrar los tipos de eventos específicos que desee recopilar. Hay una lista completa de identificadores de tipo de evento disponible aquí. Por ejemplo, para recuperar solo los eventos de autenticación en el vCenter, puede ejecutar el siguiente 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 retención de registros predeterminada de los eventos VI es de 30 días, pero puede intentar recuperar eventos más antiguos. A veces se recuperan registros más allá de la estrategia de retención configurada.
Este comando tomará como entrada un host ESXi por su nombre o recuperado con el cmdlet Get-VMHost de PowerCLI. Por ejemplo, para realizar una recopilación básica en todos los hosts ESXi conectados al vCenter:
Get-VMHost | Start-ESXi_Investigation
El comando anterior generará varios archivos CSV que describen procesos en ejecución, conexiones abiertas, cuentas locales y recuperará varios ajustes de configuración...
Si también necesita recuperar los registros locales del ESXi (como shell.log o auth.log), deberá generar un paquete de soporte.
El siguiente comando recupera todos los ESXi de un clúster determinado y genera un paquete de soporte para cada hipervisor.
Get-VMHost -Location %ClusterName% | Start-ESXi_Investigation -ESXBundle
También puede seleccionar un host ESXi concreto y generar su paquete de soporte indicando su nombre.
Start-ESXi_Investigation -Name %ESXi% -ESXBundle
Generar paquetes de soporte para todos los ESXi conectados a un vCenter puede llevar tiempo en entornos grandes.
Los archivos que genera cada función son:
Al ejecutar las distintas funciones se generará una estructura de directorios similar:
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 vez completada la recopilación con ambas funciones, obtendrá registros de:
En algunos casos de ransomware, el actor de amenazas (TA) detiene el VC y, además, puede restablecer las cuentas root locales de ESXi. En ese caso, su única opción es restaurar el vCenter desde una copia de seguridad; los ESXi comprometidos se volverán a conectar automáticamente al vCenter y, a continuación, podrá lanzar DFIR4vSphere. Para volver a acceder a los ESXi comprometidos con cuentas locales, puede realizar un restablecimiento de contraseña mediante llamadas a la API de vCenter (aquí hay un script para realizar la acción: https://www.hypervisor.fr/?p=5655).