
Модуль PowerShell для форензики VMWare vSphere

Модуль DFIR4vSphere для PowerShell собирает журналы и криминалистические артефакты на хостах ESXi и в консоли vCenter.
Модуль имеет две основные функции:
DFIR4vSphere впервые был представлен на CoRI&IN 2022 (Conférence sur la réponse aux incidents et l’investigation numérique). Слайды презентации на французском языке доступны . Также модуль был представлен на SANS DFIR Summit 2022, запись презентации .
DFIR4vSphere использует модуль VMware PowerCLI. Установите его перед использованием модуля:
Install-Module VMware.PowerCLI -Scope CurrentUser
После установки найдите путь к модулям PowerShell с помощью следующей команды:
PS> $env:PSModulePath
Скопируйте папку DFIR4vSphere в один из путей модулей, например:
%USERPROFILE%\Documents\WindowsPowerShell\Modules
%ProgramFiles%\WindowsPowerShell\Modules
%SYSTEMROOT%\system32\WindowsPowerShell\v1.0\Modules
Модуль DFIR4vSphere установлен. Перезапустите консоль PowerShell и загрузите модуль:
PS> Import-module DFIR4vSphere
Перед запуском сбора данных необходимо подключиться к исследуемому vCenter до начала сбора:
PS> Connect-VIServer %VC_Name%
Используйте docker-compose для сборки образа, запуска контейнера и монтирования тома для получения журналов:
sudo docker-compose run dfir4vsphere
Модуль готов к использованию.
Сбор событий VI vCenter за последние 30 дней:
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate
Выполните тот же сбор с support bundle vCenter, если вы подозреваете компрометацию самого устройства vCenter. В этом случае также следует провести классическое криминалистическое исследование Linux на хосте vCenter:
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate -VCBundle
Параметр LightVIEvents собирает только те типы событий, которые считаются представляющими интерес. Используйте этот параметр, если исследуемая инфраструктура велика, а обычный сбор выполняется слишком медленно.
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate -LightVIEvents
С помощью LightVIEventTypesId можно отфильтровать конкретные типы событий, которые вы хотите собрать. Полный список идентификаторов типов событий доступен здесь. Например, чтобы получить только события аутентификации на vCenter, выполните следующую команду:
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate -LightVIEvents -LightVIEventTypesId "com.vmware.sso.LoginSuccess","com.vmware.sso.LoginFailure"
Период хранения журналов VI Events по умолчанию составляет 30 дней, но вы можете попытаться получить более старые события. Иногда журналы удаётся получить за пределами настроенной стратегии хранения.
Эта команда принимает на вход хост ESXi по имени или полученный с помощью командлета PowerCLI Get-VMHost. Например, чтобы выполнить базовый сбор на всех хостах ESXi, подключённых к vCenter:
Get-VMHost | Start-ESXi_Investigation
Приведённая выше команда создаст несколько CSV-файлов с описанием запущенных процессов, открытых соединений, локальных учётных записей, а также получит различные параметры конфигурации...
Если вам также необходимо получить локальные журналы ESXi (например, shell.log или auth.log), потребуется создать support bundle.
Приведённая ниже команда получает все хосты ESXi для указанного кластера и создаёт support bundle для каждого гипервизора.
Get-VMHost -Location %ClusterName% | Start-ESXi_Investigation -ESXBundle
Вы также можете указать конкретный хост ESXi и создать его support bundle, передав его имя.
Start-ESXi_Investigation -Name %ESXi% -ESXBundle
Создание support bundle для всех ESXi, подключённых к vCenter, может занять некоторое время в крупных средах.
Файлы, создаваемые каждой функцией:
Запуск различных функций приводит к созданию похожей структуры каталогов:
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
│ │ │ ...
│ └───...
После завершения сбора обеими функциями вы получите журналы:
В некоторых случаях программ-вымогателей злоумышленник останавливает VC и вдобавок может сбросить локальные учётные записи root на ESXi. В этом случае ваш единственный шанс — восстановить vCenter из резервной копии. Скомпрометированные хосты ESXi затем автоматически подключатся к vCenter, и вы сможете запустить DFIR4vSphere. Чтобы снова получить доступ к скомпрометированным хостам ESXi с локальными учётными записями, вы можете выполнить сброс пароля через вызовы vCenter API (скрипт для выполнения этого действия доступен здесь: https://www.hypervisor.fr/?p=5655)