クエリを次の場所で実行します 高度なハンティング、その後、同じクエリを Microsoft Graph の runHuntingQuery に送信して、結果を JSON として取得します。 ポータルのエクスポートボタンは、今日 LogTotal が読み取らないスプレッドシート形式のファイルを生成します。 高度なハンティングは 30 日間のデータを保持するため、それより古いものは Sentinel や Defender データをストリーミングする場所から取得する必要があります。
Defender XDR はエンドポイント、アイデンティティ、メール、クラウドアプリケーションのテレメトリを一つのクエリ可能な場所に保持し、大半の Microsoft ショップの調査において最初のストップポイントとなります。 Prime Core は Microsoft Defender データ用に 659 の MITRE ATT&CK テクニックに対応した 17,197 の検出ルールを持っています。 下記に、その一部を抽出してサニタイズし、LogTotal で無料で調査する方法を示します。
始める前に
権限。 Graph では ThreatHunting.Read.All 権限が必要です。 サインインしたユーザーには高度なハンティングを許可する Defender ロールも必要です。
制限。 クエリは数分後にタイムアウトし、結果も制限されます。 時間やデバイスごとに分割する計画を立ててください。
テーブル。 DeviceProcessEvents、DeviceNetworkEvents、DeviceLogonEvents、DeviceFileEvents、DeviceRegistryEvents、DeviceEvents(ASR と AMSI イベントを含む種々雑多なもの)、EmailEvents、IdentityLogonEvents、および AlertEvidence に附属する AlertInfo。 時間列は Timestamp です。
例は、2026 年 10 月に確認された Microsoft のドキュメントに従っています。
ステップ 1: クエリを記述する
DeviceProcessEvents
| where Timestamp between (datetime(2026-10-19) .. datetime(2026-10-20))
| where DeviceName startswith "ws-042"
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine,
InitiatingProcessFileName, InitiatingProcessCommandLine, SHA256
まずポータルで実行してください。 Defender のデバイス名は FQDN であることが多いため、startswith が == よりも適しています。
ステップ 2: Microsoft Graph を介してエクスポート
Connect-MgGraph -Scopes "ThreatHunting.Read.All"
$kql = @"
DeviceProcessEvents
| where Timestamp between (datetime(2026-10-19) .. datetime(2026-10-20))
| where DeviceName startswith "ws-042"
"@
$resp = Invoke-MgGraphRequest -Method POST `
-Uri "https://graph.microsoft.com/v1.0/security/runHuntingQuery" `
-Body (@{ Query = $kql } | ConvertTo-Json) -ContentType "application/json"
$resp.results | ForEach-Object { $_ | ConvertTo-Json -Depth 10 -Compress } |
Out-File ws042_proc_1019.jsonl -Encoding utf8
各行は行ごとに 1 つの JSON オブジェクトとして返されます。 制限を超えないように、数日間または複数のデバイスに渡って日付単位でループします。
ステップ 3: LogTotal でアップロード、サニタイズ、およびレビュー
- アップロード。 開く logtotal.com に .jsonl ファイルをドロップします。
- サニタイズ。
- レビュー。
問題が発生した場合
| 症状 | 可能性のある原因 | Fix |
|---|---|---|
| Graph からの 403 | ThreatHunting.Read.All の承認または Defender ロールの欠如 | 承認を付与する; 自分の役割を確認してください。 |
| クエリがタイムアウトまたは一部の結果のみを返す | 1 つのクエリに多すぎるデータ | 時間の窓を狭くするか、デバイスセットを絞る |
| 30 日以上前のものはない | 高度なハンティングの保持 | Sentinel またはストリーミング先を使用 |
| 行数が丸い数字で止まる | 結果の制限 | 窓を分割する |
| 既知デバイスに対して行がない | 名前の不一致(短名 vs FQDN) | startswith または has を使用 |
FAQ
デバイスから生の EVTX を取得することはできますか?
はい、Defender for Endpoint のライブレスポンスで: getfile は、エクスポートされた EVTX を含むファイルをマシンから取得します。
これは Sentinel と同じですか?
いいえ、ただし統合された Defender ポータルでは重複しています。 Sentinel はより長期の履歴を保持します。