Exécutez votre requête dans la chasse avancée, puis envoyez la même requête à Microsoft Graph’s runHuntingQuery pour obtenir les résultats au format JSON. Le bouton d’exportation du portail produit un fichier de type feuille de calcul que LogTotal ne lit pas aujourd’hui. La chasse avancée conserve 30 jours de données, donc tout ce qui est plus ancien doit provenir de Sentinel ou de l’endroit où vous diffusez des données Defender.
Defender XDR contient la télémétrie des terminaux, de l’identité, des emails et des applications cloud en un seul endroit interrogeable, ce qui en fait le premier arrêt dans la plupart des enquêtes Microsoft. Prime Core dispose de 17 197 règles de détection pour les données Microsoft Defender, mappées à 659 techniques MITRE ATT&CK. Voici comment en extraire un extrait, le nettoyer et l’étudier gratuitement dans LogTotal.
Avant de commencer
Autorisations. Pour Graph, vous avez besoin de l’autorisation ThreatHunting.Read.All. L’utilisateur connecté doit également avoir un rôle Defender permettant la chasse avancée.
Limites. Les requêtes expirent après quelques minutes, et les résultats sont plafonnés. Prévoir de diviser par temps ou par appareil.
Les tables. DeviceProcessEvents, DeviceNetworkEvents, DeviceLogonEvents, DeviceFileEvents, DeviceRegistryEvents, DeviceEvents (un mélange, y compris des événements ASR et AMSI), EmailEvents, IdentityLogonEvents, et AlertInfo avec AlertEvidence. La colonne de temps est Timestamp.
Les exemples suivent la documentation de Microsoft, vérifiée en octobre 2026.
Étape 1 : Écrire la requête
DeviceProcessEvents
| où Timestamp entre (datetime(2026-10-19) .. datetime(2026-10-20))
| où DeviceName commence par "ws-042"
| projet Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine,
InitiatingProcessFileName, InitiatingProcessCommandLine, SHA256
Exécutez-la d’abord dans le portail. Les noms d’appareils dans Defender sont souvent des FQDN, c’est pourquoi startswith fonctionne mieux que ==.
Étape 2 : Exporter via Microsoft Graph
Connect-MgGraph -Scopes "ThreatHunting.Read.All"
$kql = @"
DeviceProcessEvents
| où Timestamp entre (datetime(2026-10-19) .. datetime(2026-10-20))
| où DeviceName commence par "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
Chaque ligne revient comme un objet JSON par ligne. Pour plusieurs jours ou plusieurs appareils, bouclez sur des fenêtres de taille jour pour rester sous les limites.
Étape 3 : Télécharger, nettoyer et examiner dans LogTotal
- Télécharger. Ouvrir logtotal.com et déposez le fichier .jsonl.
- Nettoyer.
- Examiner.
Quand cela ne fonctionne pas
| Symptôme | Cause probable | Fix |
|---|---|---|
| 403 de Graph | Consentement ThreatHunting.Read.All manquant ou rôle Defender manquant | Donner le consentement ; vérifier votre rôle |
| La requête expire ou renvoie des résultats partiels | Trop de données dans une seule requête | Réduisez la fenêtre temporelle ou le groupe d’appareils |
| Rien de plus de 30 jours | Rétention de la chasse avancée | Utilisez Sentinel ou votre destination de streaming |
| Le nombre de lignes s’arrête à un nombre rond | Limite de résultats | Divisez la fenêtre |
| Aucune ligne pour un appareil connu | Inadéquation de nom (nom court vs FQDN) | Utilisez startswith ou has |
FAQ
Puis-je obtenir la source brute EVTX d’un appareil ?
Oui, avec la Réponse en Direct dans Defender for Endpoint : getfile extrait des fichiers, y compris les EVTX exportés, d’une machine.
Est-ce la même chose que Sentinel ?
Non, bien qu’ils se chevauchent dans le portail Defender unifié. Sentinel conserve un historique plus long.