Execute sua consulta em Caça avançada, então envie a mesma consulta para o runHuntingQuery do Microsoft Graph para obter os resultados como JSON. O botão de exportação do portal gera um arquivo estilo planilha que o LogTotal não lê hoje. A caça avançada mantém dados de 30 dias, então qualquer coisa mais antiga deve vir do Sentinel ou onde quer que você transmita os dados do Defender.
O Defender XDR mantém telemetria de endpoint, identidade, e-mail e aplicativo de nuvem em um local pesquisável, o que o torna a primeira parada na maioria das investigações em ambientes Microsoft. O Prime Core tem 17.197 regras de detecção para dados do Microsoft Defender, mapeadas para 659 técnicas do MITRE ATT&CK. Abaixo está como extrair uma fatia, sanitizá-la e investigá-la gratuitamente no LogTotal.
Antes de você começar
Permissões. Para o Graph, você precisa da permissão ThreatHunting.Read.All. O usuário conectado também precisa de uma função no Defender que permita caça avançada.
Limites. Consultas expiram após alguns minutos, e os resultados são limitados. Planeje dividir por tempo ou por dispositivo.
As tabelas. DeviceProcessEvents, DeviceNetworkEvents, DeviceLogonEvents, DeviceFileEvents, DeviceRegistryEvents, DeviceEvents (uma miscelânea, incluindo eventos ASR e AMSI), EmailEvents, IdentityLogonEvents e AlertInfo com AlertEvidence. A coluna de tempo é Timestamp.
Os exemplos seguem a documentação da Microsoft, verificada em outubro de 2026.
Passo 1: Escreva a consulta
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
Execute primeiro no portal. Nomes de dispositivos no Defender são frequentemente FQDNs, por isso startswith funciona melhor que ==.
Passo 2: Exporte pelo 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
Cada linha retorna como um objeto JSON por linha. Para vários dias ou vários dispositivos, faça um loop sobre janelas de um dia para ficar dentro dos limites.
Passo 3: Faça o upload, sanitize e reveja no LogTotal
- Carregar. Abrir logtotal.com e solte o arquivo .jsonl.
- Sanitize.
- Reveja.
Quando dá errado
| Sintoma | Causa provável | Fix |
|---|---|---|
| 403 do Graph | Falta de consentimento de ThreatHunting.Read.All ou função inadequada no Defender | Conceda consentimento; verifique sua função |
| A consulta expira ou retorna resultados parciais | Muito dados em uma consulta | Reduza a janela de tempo ou o conjunto de dispositivos |
| Nada com mais de 30 dias | Retenção de caça avançada | Use o Sentinel ou seu destino de streaming |
| Contagem de linhas para em um número redondo | Limite de resultado | Divida a janela |
| Sem linhas para um dispositivo conhecido | Incompatibilidade de nome (nome curto vs FQDN) | Use startswith ou has |
FAQ
Posso obter o EVTX bruto de um dispositivo?
Sim, com Live Response no Defender para Endpoint: getfile puxa arquivos, incluindo EVTX exportados, de uma máquina.
Isso é o mesmo que o Sentinel?
Não, embora se sobreponham no portal unificado do Defender. O Sentinel mantém um histórico mais longo.