はじめに
「不審メールが届いた」という報告を受けたとき、Message Trace(メッセージ追跡)で配送状況までは確認できても、「誰がそのメール内のURLをクリックしたか」までは追えない。そんなもどかしさを感じたことはないでしょうか。
そこで役立つのが、Microsoft Defender XDRに搭載されているAdvanced Hunting(高度なハンティング) です。KQL(Kusto Query Language)というクエリ言語で、最大30日分のセキュリティログを自由に検索・分析できます。要点を整理してみました。ライセンス・権限まわりの詳細な確認手順は元記事にまとめています。
元記事: [【Microsoft365参考書】Advanced Huntingとは?管理者が最初に知っておくべき使い方とKQL入門]
Advanced Huntingとは何か
一言でいうと、通常のアラートが「Microsoftが危険と判断したものだけ通知する」受け身の仕組みなのに対し、Advanced Huntingは「怪しい動きを自分で探しに行く」能動的な調査手段です。
Defender for Endpoint(プロセス実行・ファイル操作)、Defender for Office 365(メール・URLクリック)、Defender for Identity(AD認証)、Defender for Cloud Apps(クラウド利用状況)など、複数のMicrosoft 365関連セキュリティデータを横断的に検索できるのが強みです。
Message Traceとの使い分け
Exchange Online管理者にとって一番わかりやすい比較はこちらです。
| 機能 | 用途 |
|---|---|
| Message Trace | メール配送の調査(届いたかどうか) |
| Advanced Hunting | セキュリティ調査(誰がURLをクリックしたか等) |
「届いたかどうか」で止まらず、「開封されたか」「クリックされたか」「他に誰が同じメールを受け取っていたか」まで調査したい場合に、Advanced Huntingの出番になります。
よく使うKQLクエリの例
Exchange Online管理者の観点では、EmailEvents・EmailAttachmentInfo・EmailUrlInfo・UrlClickEventsの4テーブルが主戦場です。
特定の送信者からのメールを検索
EmailEvents
| where Timestamp > ago(30d)
| where SenderFromAddress =~ "attacker@example.com"
| project Timestamp, NetworkMessageId, Subject, RecipientEmailAddress, DeliveryAction
| order by Timestamp desc
特定の件名のメールを検索
EmailEvents
| where Timestamp > ago(30d)
| where Subject contains "請求書"
| project Timestamp, SenderFromAddress, RecipientEmailAddress, Subject
ユーザーがクリックしたURLの調査
UrlClickEvents
| where Timestamp > ago(30d)
| project Timestamp, AccountUpn, Url, ActionType
where句を書き換えるだけで、件名・送信者・受信者・期間といった条件を柔軟に組み合わせられるのがKQLの使いやすいところです。
必要なライセンスと権限、意外と見落としがち
ここが実務で一番つまずきやすいポイントです。メール関連テーブル(EmailEventsなど)へのアクセスには、Defender for Office 365 Plan 2(Microsoft 365 E5に含まれる) が前提になります。
さらに、ライセンスがあっても権限(ロール) が割り当てられていないとデータは見えません。Microsoft Defender XDRの統合RBAC(URBAC)を使っている場合は、「Email & collaboration metadata(読み取り)」権限が必要で、アラート系の権限だけではメール関連スキーマは見えない点に注意が必要です。
特に2024年5月以降、メール関連スキーマへのアクセス権限の仕組みが変更されており、以前は見えていたロールで急に見えなくなるケースもあるようなので、既存の運用担当者は自分の権限を一度見直しておくと安心です。
実務での使われ方(一連の流れ)
- ユーザーから不審メールの報告を受ける
- Message TraceでNetworkMessageIdを取得
- Advanced HuntingでEmailEventsを検索し、受信者一覧を取得
- UrlClickEventsでクリックの有無を確認
- 必要に応じてメールの削除・隔離対応を実施
Message TraceとAdvanced Huntingをバトンリレーのようにつなぐことで、初動から影響範囲の特定までを一気通貫で行えるイメージです。
おわりに
Advanced Huntingは「アラートを待つ」から「自分で探しに行く」への発想の転換を可能にしてくれる機能です。フィッシングメールの影響範囲調査やBEC分析など、インシデント対応の場面で特に力を発揮します。必要なライセンス・権限の詳細なチェックリストや、覚えておくべき主要テーブルの一覧は元記事にまとめていますので、導入を検討している方はあわせてご覧ください。
- 元記事: 社畜の所業「Advanced Huntingとは?管理者が最初に知っておくべき使い方とKQL入門」
- ブログ全体: 社畜の所業(Microsoft365解説ブログ) — メールセキュリティ・トラブルシューティング関連の記事を数多く掲載しています