Esegui la tua query in Caccia avanzata, poi invia la stessa query a runHuntingQuery di Microsoft Graph per ottenere i risultati come JSON. Il pulsante di esportazione del portale produce un file in stile foglio di calcolo che LogTotal non legge oggi. La caccia avanzata mantiene i dati dei 30 giorni precedenti, quindi tutto ciò che è più vecchio deve venire da Sentinel o da dove trasmetti i dati di Defender.
Defender XDR conserva la telemetria di endpoint, identità, email e app cloud in un unico luogo interrogabile, il che lo rende il primo passo nella maggior parte delle indagini in ambienti Microsoft. Prime Core ha 17.197 regole di rilevamento per i dati di Microsoft Defender, mappate su 659 tecniche MITRE ATT&CK. Di seguito si spiega come estrarre una parte, sanificarla e indagarla gratuitamente in LogTotal.
Prima di iniziare
Permessi. Per Graph, hai bisogno dell’autorizzazione ThreatHunting.Read.All. L’utente autenticato ha anche bisogno di un ruolo di Defender che consenta la caccia avanzata.
Limiti. Le query esauriscono il tempo dopo alcuni minuti, e i risultati sono limitati. Pianifica di suddividere per tempo o per dispositivo.
Le tabelle. DeviceProcessEvents, DeviceNetworkEvents, DeviceLogonEvents, DeviceFileEvents, DeviceRegistryEvents, DeviceEvents (un mix, che include eventi ASR e AMSI), EmailEvents, IdentityLogonEvents, e AlertInfo con AlertEvidence. La colonna del tempo è Timestamp.
Gli esempi seguono la documentazione di Microsoft, verificata a ottobre 2026.
Passo 1: Scrivi la query
DeviceProcessEvents
| dove Timestamp tra (datetime(2026-10-19) .. datetime(2026-10-20))
| dove DeviceName inizia con "ws-042"
| proietta Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine,
InitiatingProcessFileName, InitiatingProcessCommandLine, SHA256
Eseguilo prima nel portale. I nomi dei dispositivi in Defender sono spesso FQDN, il che spiega perché “startswith” funziona meglio di “==”.
Passo 2: Esporta tramite Microsoft Graph
Connect-MgGraph -Scopes "ThreatHunting.Read.All"
$kql = @"
DeviceProcessEvents
| dove Timestamp tra (datetime(2026-10-19) .. datetime(2026-10-20))
| dove DeviceName inizia con "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
Ogni riga ritorna come un oggetto JSON per riga. Per diversi giorni o dispositivi, cicla su finestre di giorno per rimanere sotto i limiti.
Passo 3: Carica, sanifica e rivedi in LogTotal
- Carica. Apri logtotal.com e trascina il file .jsonl.
- Sanifica.
- Rivedi.
Quando qualcosa va male
| Sintomo | Causa probabile | Fix |
|---|---|---|
| 403 da Graph | Consenso ThreatHunting.Read.All mancante o ruolo di Defender | Concedi il consenso; controlla il tuo ruolo |
| La query scade o restituisce risultati parziali | Troppi dati in una query | Restringi la finestra temporale o il set di dispositivi |
| Niente di più vecchio di 30 giorni | Conservazione della caccia avanzata | Usa Sentinel o la tua destinazione di streaming |
| Il conteggio delle righe si ferma a un numero arrotondato | Limite del risultato | Dividi la finestra |
| Nessuna riga per un dispositivo noto | Discrepanza nel nome (nome corto vs FQDN) | Usa startswith o has |
FAQ
Posso ottenere il file EVTX grezzo da un dispositivo?
Sì, con la Risposta in tempo reale in Defender per Endpoint: getfile recupera i file, compresi gli EVTX esportati, da una macchina.
È la stessa cosa di Sentinel?
No, anche se si sovrappongono nel portale unificato di Defender. Sentinel conserva una cronologia più lunga.