
VMWare vSphere 포렌식을 위한 Powershell 모듈

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
이제 모듈을 사용할 준비가 되었습니다.
지난 30일간의 vCenter VI 이벤트를 수집합니다:
$enddate = get-date
$startdate = $enddate.adddays(-30)
Start-VC_Investigation -StartDate $startdate -Enddate $enddate
vCenter 지원 번들과 함께 동일한 수집을 수행합니다. vCenter 어플라이언스 자체의 침해를 의심하는 경우 이 작업을 수행하십시오. 이 경우 vCenter 호스트에서 표준 Linux 포렌식 조사도 수행해야 합니다:
$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를 사용하면 수집하려는 특정 이벤트 유형을 필터링할 수 있습니다. 전체 이벤트 유형 ID 목록은 여기에서 확인할 수 있습니다. 예를 들어 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 이벤트의 기본 로그 보존 기간은 30일이지만 더 오래된 이벤트를 검색하려고 시도할 수 있습니다. 때로는 구성된 보존 정책을 초과하여 로그가 검색되기도 합니다.
이 명령은 ESXi 호스트를 이름으로 입력받거나 Get-VMHost PowerCLI cmdlet으로 검색합니다. 예를 들어 vCenter에 연결된 모든 ESXi 호스트에서 기본 수집을 수행하려면 다음과 같이 합니다:
Get-VMHost | Start-ESXi_Investigation
위 명령은 실행 중인 프로세스, 열린 연결, 로컬 계정을 설명하는 여러 CSV 파일을 생성하고 다양한 구성 설정을 검색합니다...
ESXi의 로컬 로그(예: shell.log 또는 auth.log)도 검색해야 하는 경우 지원 번들을 생성해야 합니다.
아래 명령은 지정된 클러스터의 모든 ESXi를 검색하고 각 하이퍼바이저에 대한 지원 번들을 생성합니다.
Get-VMHost -Location %ClusterName% | Start-ESXi_Investigation -ESXBundle
특정 ESXi 호스트를 대상으로 이름을 지정하여 해당 지원 번들을 생성할 수도 있습니다.
Start-ESXi_Investigation -Name %ESXi% -ESXBundle
vCenter에 연결된 모든 ESXi에 대한 지원 번들을 생성하는 것은 대규모 환경에서 시간이 걸릴 수 있습니다.
각 함수가 생성하는 파일은 다음과 같습니다:
다양한 함수를 실행하면 다음과 유사한 디렉터리 구조가 생성됩니다:
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를 종료하고 ESXi 로컬 root 계정을 추가로 재설정할 수 있습니다. 이 경우 유일한 방법은 백업에서 vCenter를 복원하는 것입니다. 그러면 손상된 ESXi가 vCenter에 자동으로 다시 연결되며 DFIR4vSphere를 실행할 수 있습니다. 손상된 ESXi에 로컬 계정으로 다시 액세스하려면 vCenter API 호출을 통해 암호를 재설정할 수 있습니다 (작업을 수행하는 스크립트는 여기: https://www.hypervisor.fr/?p=5655)