
VMWare vSphereフォレンジック用のPowerShellモジュール

DFIR4vSphere PowerShellモジュールは、ESXiホストとvCenterコンソールの両方からログとフォレンジック証跡を収集します。
このモジュールには2つの主要な機能があります:
DFIR4vSphereは、CoRI&IN 2022(インシデント対応とデジタルフォレンジックに関する会議)で初めて発表されました。プレゼンテーションのスライド(フランス語)はこちらから入手できます。また、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コマンドレットで取得したものを入力として受け取ります。たとえば、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
│ │ │ ...
│ └───...
両方の機能で収集が完了すると、以下のログが取得されます:
一部のランサムウェア事例では、脅威アクター(TA)がVCを停止させ、さらにESXiのローカルrootアカウントをリセットすることがあります。その場合、唯一の手段はバックアップからvCenterを復元することです。侵害されたESXiは自動的にvCenterに再接続されるため、その後DFIR4vSphereを起動できます。ローカルアカウントで侵害されたESXiに再度アクセスするには、vCenter API呼び出しを通じてパスワードリセットを実行できます(この操作を実行するスクリプトはこちら: https://www.hypervisor.fr/?p=5655)