
Office 365およびAzureログ収集のためのPowerShellモジュール

DFIR-O365RCはSSTIC 2021(情報技術・通信セキュリティに関するシンポジウム)で発表されました。プレゼンテーションのスライドと録画(フランス語)はこちらから入手できます。
⚠️ 2024年3月31日、MicrosoftはDFIR-O365RCで使用していた認証方式を非推奨としました。これにより、2024年8月にバージョン2.0.0がリリースされました。このバージョンでは、認証に関して互換性のない変更が加えられ、コード全体がリファクタリングされています。 ⚠️
DFIR-O365RC PowerShellモジュールは、フォレンジックアナリストがMicrosoft 365の侵害に関連するログを収集し、Entra IDの調査を実施できるようにする関数群です。
ログはJSON形式で生成され、主に2つのデータソースから取得されます。
これらのデータソースは、異なるエンドポイントからクエリできます。
| データソース / エンドポイント | 保持期間 | パフォーマンス | 範囲 |
|---|---|---|---|
| 統合監査ログ / Exchange Online PowerShell | 90日 | 低い | Microsoft 365の全ログ(Entraを含む) |
| 統合監査ログ / Purview | 180日 | 良い | Microsoft 365の全ログ(Entraを含む) |
| 統合監査ログ / Office 365 Management API * | 7日 | 良い | Microsoft 365の全ログ(Entraを含む) |
| Microsoft Entraログ / Microsoft Graph PowerShell | 30日 | 良い | Entraのサインインと監査ログのみ |
| Microsoft Entraログ / Microsoft Graph REST API | 30日 | 良い | Entraのサインインと監査ログのみ |
* Office 365 Management APIは、SIEMでリアルタイムにデータを分析することを目的としています。DFIR-O365RCはフォレンジックツールであり、Microsoft 365環境をリアルタイムで監視することを目的としていません。
DFIR-O365RCは以下のデータソースからデータを取得します。
Microsoft 365の悪意あるアクティビティを調査している場合、Search-O365(Exchange Online PowerShellから)はメールボックス監査ログも取得しますが、Search-MailboxAuditLogコマンドレットは非推奨となっています。
他のAzureリソースを調査する場合は、DFIR-O365RCを使用して次のことが可能です。
これはDFIR-O365RCの推奨される使用方法です
次のように入力します :```bash sudo docker pull anssi/dfir-o365rc:latest sudo docker run --rm -v .:/mnt/host -it anssi/dfir-o365rc:latest
DFIR-O365RC は使用準備ができました:```bash
PowerShell 7.4.2
DFIR-O365RC: PowerShell module for Microsoft 365 and Entra ID log collection
https://github.com/ANSSI-FR/DFIR-O365RC
PS /mnt/host/output>
Dockerイメージを手動でビルドしたい場合は、リポジトリをクローンし、docker compose(または従来のdocker-compose)を使用してイメージをビルドし、コンテナを実行してボリュームをマウントします(output/フォルダ内)。```bash
sudo docker compose build dfir-o365rc
sudo docker compose run dfir-o365rc
sudo docker-compose run dfir-o365rc
### PowerShell の使用
このモジュールは *PowerShell Desktop* および *PowerShell Core* にインストールできます。
`Connect-ExchangeOnline` コマンドレットには [Microsoft .NET Framework 4.7.2 以降が必要](https://learn.microsoft.com/ja-jp/powershell/exchange/exchange-online-powershell-v2?view=exchange-ps#windows) であることに注意してください。
PowerShell ギャラリーからモジュールをインストールするには:```powershell
Install-Module -Name DFIR-O365RC
モジュールを手動でインストールするには、DFIR-O365RCリポジトリをクローンし、必要な依存関係をインストールし(DFIR-O365RC.psd1を確認)、DFIR-O365RCディレクトリをPowerShellのモジュールパスのいずれかに追加することもできます。
モジュールをインポートしたら、ログ収集プロセスを処理するEntraアプリケーションを作成する必要があります。
そのためには:
自己署名証明書を作成し、base64エンコードされた公開部分を取得します:
Linux、PowerShell Core、またはDockerコンテナを使用する場合: ```bash openssl req -new -x509 -newkey rsa:2048 -sha256 -days 365 -nodes -out exampleDFIRO365RC.crt -keyout exampleDFIRO365RC.key -batch openssl pkcs12 -inkey exampleDFIRO365RC.key -in exampleDFIRO365RC.crt -export -out exampleDFIRO365RC.pfx # Enter a password for the certificate openssl x509 -in exampleDFIRO365RC.crt -outform DER -out - | base64 | tr -d "\n"
Windows上で、PowerShellを使用する場合: ```powershell $certificate = New-SelfSignedCertificate -Subject "CN=exampleDFIRO365RC" -KeySpec KeyExchange -NotBefore (Get-Date) -NotAfter (Get-Date).AddDays(365) $certificatePassword = Read-Host -MaskInput "Please enter a password for the certificate" $certificateSecurePassword = ConvertTo-SecureString -String $certificatePassword -AsPlainText -Force Export-PfxCertificate -Cert $certificate -FilePath exampleDFIRO365RC.pfx -Password $certificateSecurePassword Write-Host ([System.Convert]::ToBase64String($certificate.GetRawCertData()))
2) DFIR-O365RC モジュールから `New-Application` コマンドレットを使用します: ```powershell
$certificateb64="<base64-encoded public part from step 1>"
New-Application -certificateb64 $certificateb64
オプションとして、テナントのサブスクリプションでログを収集できるようにしたい場合(Get-AzRMActivityLogs を使用する予定がない場合は不要です): ```powershell
New-Application -certificateb64 $certificateb64 -subscriptions
オプションとして、テナントのAzure DevOps組織でログを収集できるようにしたい場合(これには長時間かかる可能性があり、`Get-AzDevOpsActivityLogs`を使用する予定がない場合は必要ありません): ```powershell
New-Application -certificateb64 $certificateb64 -organizations
アプリケーションを作成するには、高い特権を持つアカウントを使用して、Azure に数回ログインする必要があります。
アプリケーションが作成されると、以下のような出力が表示されます。 ```powershell Done creating the application with the required permissions Please use the following identifiers: WARNING: AppID: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx WARNING: Tenant: example.onmicrosoft.com
### アプリケーションの更新
アプリケーションを作成した後でも、モジュールの `Update-Application` コマンドレットを使用して、その資格情報とアクセス許可を更新できます。