Purview ポータル(監査 → 検索)ではユニファイド監査ログを検索し、結果をCSVにエクスポートできます。完全なイベントは1列、AuditDataとしてJSON形式のブロブに格納されています。1行に1イベントのクリーンなJSONを取得するには、Exchange Online PowerShellとSearch-UnifiedAuditLogを使用してください。スクリプトは以下の通りです。標準の監査保持期間は180日で、Audit (Premium)ではデフォルトで1年間保持されます。
ユニファイド監査ログは、Exchange、SharePoint、OneDrive、Teams、および管理活動を一か所に集約します。ビジネスメール詐欺では、受信トレイルールや転送、マスダウンロードが表示されます。Prime Coreには、Microsoft 365監査データに対する79の検出ルールがあり、33のMITRE ATT&CK技法にマッピングされています。その中には、メールを吸い上げる転送ルール(T1114.003)、追加のメールボックス権限(T1098.002)、SharePointから取得されたデータ(T1213.002)が含まれています。
始める前に
監査はオンになっていますか? ほとんどのテナントでデフォルトでオンになっていますが、確認してください:
Connect-ExchangeOnline
Get-AdminAuditLogConfig | Format-List UnifiedAuditLogIngestionEnabled
Trueが望ましい状態です。Falseの場合、何も記録されず、オンにしても補完はされません。
ロール。 Audit LogsまたはView-Only Audit Logsロールが必要です。また、ExchangeOnlineManagementモジュール(Install-Module ExchangeOnlineManagement)も必要です。
レイテンシ。 イベントは直ちには表示されません。ほとんどは1〜2時間以内に表示され、一部はもっと時間がかかります。今朝のものを追いかけている場合、まだ検索可能ではないかもしれません。
PowerShellでのエクスポート
Search-UnifiedAuditLogは、最大で1コールあたり5,000件のレコードを返します。セッションIDとReturnLargeSetを使えば、1検索で最大50,000件をページングすることができます。このループはそれを行い、すでにJSONである各レコードのAuditDataを1行として書き出します:
$session = [guid]::NewGuid().ToString()
$out = "ual_2026-10-19.jsonl"
do {
$batch = Search-UnifiedAuditLog -StartDate "2026-10-19 00:00" -EndDate "2026-10-20 00:00" `
-SessionId $session -SessionCommand ReturnLargeSet -ResultSize 5000
$batch | ForEach-Object { $_.AuditData } | Add-Content $out
} while ($batch.Count -eq 5000)
ログはUTCで時間を格納します。ウィンドウを設定する際に考慮してください。
何を探すべきか
| 操作 | その重要性 |
|---|---|
| New-InboxRule, Set-InboxRule, UpdateInboxRules | メールを転送、移動、削除するルール;AuditDataのパラメータを確認してください |
| Set-Mailbox with ForwardingSmtpAddress | メールボックスレベルで外部アドレスへの転送 |
| Add-MailboxPermission, Add-RecipientPermission | 他のメールボックスへのアクセス権の取得 |
| MailItemsAccessed | 実際に読まれたメッセージ;侵害の範囲を決定するための鍵 |
| FileDownloaded, FileSyncDownloadedFull bursts | SharePointまたはOneDriveからの大量ダウンロード |
| アプリケーションへの同意 | 不正なアプリがメールまたはファイルへのアクセスを許可された |
典型的なBECシーケンス:新しい場所からのサインイン、その数分後に受信トレイルールが作成され、財務チームへの返信が目立たないフォルダに移動されます。
LogTotalにアップロードして、洗浄、レビューを行います
- アップロード。 開く logtotal.com そして.jsonlファイルをドラッグします。
- 洗浄します。
- レビューします。
うまくいかない場合
| 症状 | 考えられる原因 | Fix |
|---|---|---|
| Search-UnifiedAuditLogが認識されない | Exchange Online PowerShellに接続されていない | 最初にConnect-ExchangeOnlineしてください |
| 結果が出ない | 監査がオフ、新しいイベント、または保持外 | インジェスチョンをチェック;待つ;監査の階層を確認 |
| 正確に5,000件の結果 | セッションなしでコールのリミットに達した | 上記のセッションループを使用 |
| 50,000件で止まった | セッションのリミット | ウィンドウをさらに小さく区切る |
| アクセス拒否 | 監査ロールがない | View-Only Audit Logsを依頼 |
FAQ
これはEntraサインインログと同じではありませんか?
重複しています:UALにはUserLoggedInイベントがあります。しかし、認証の詳細(MFA、条件付きアクセス、リスク)については、Entraサインインログがより豊富です。両方をエクスポートしてください。
Management Activity APIはどうですか?
それはSIEMへの継続的な収集のためのルートです。一回限りの調査には、PowerShellの方が簡単です。