Uruchom swoje zapytanie w Zaawansowane polowanie, następnie wyślij to samo zapytanie do Microsoft Graph’s runHuntingQuery, aby uzyskać wyniki w formacie JSON. Przycisk eksportu w portalu generuje plik w stylu arkusza kalkulacyjnego, którego LogTotal dziś nie odczytuje. Zaawansowane polowanie przechowuje dane przez 30 dni, więc wszystko, co starsze, musisz uzyskać z Sentinel lub skądkolwiek strumieniujesz dane Defender.
Defender XDR przechowuje telemetrykę punktów końcowych, tożsamości, poczty elektronicznej i aplikacji chmurowych w jednym miejscem do przeszukiwania, co czyni go pierwszym przystankiem w większości dochodzeń w ramach Microsoft-shop. Prime Core ma 17,197 reguł detekcji dla danych Microsoft Defender, odwzorowanych na 659 technik MITRE ATT&CK. Poniżej pokazano, jak wyciągnąć fragment, zanonimizować go i zbadać za darmo w LogTotal.
Zanim zaczniesz
Uprawnienia. Do Graph potrzebujesz uprawnienia ThreatHunting.Read.All. Użytkownik zalogowany również potrzebuje roli Defender, która pozwala na zaawansowane polowanie.
Limity. Zapytania kończą się po kilku minutach, a wyniki są ograniczane. Planuj podział po czasie lub urządzaniu.
Tabele. DeviceProcessEvents, DeviceNetworkEvents, DeviceLogonEvents, DeviceFileEvents, DeviceRegistryEvents, DeviceEvents (mieszany zbiór, w tym wydarzenia ASR i AMSI), EmailEvents, IdentityLogonEvents, oraz AlertInfo z AlertEvidence. Kolumna czasowa to Timestamp.
Przykłady zgodne z dokumentacją Microsoftu, sprawdzone w październiku 2026.
Krok 1: Napisz zapytanie
DeviceProcessEvents
| gdzie Timestamp pomiędzy (datetime(2026-10-19) .. datetime(2026-10-20))
| gdzie DeviceName zaczyna się od "ws-042"
| projektuj Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine,
InitiatingProcessFileName, InitiatingProcessCommandLine, SHA256
Uruchom to najpierw w portalu. Nazwy urządzeń w Defender są często FQDN, dlatego startswith działa lepiej niż ==.
Krok 2: Eksport przez Microsoft Graph
Connect-MgGraph -Scopes "ThreatHunting.Read.All"
$kql = @"
DeviceProcessEvents
| gdzie Timestamp pomiędzy (datetime(2026-10-19) .. datetime(2026-10-20))
| gdzie DeviceName zaczyna się od "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
Każdy wiersz zwraca jeden obiekt JSON na linię. Dla kilku dni lub kilku urządzeń, pętle przez okna na jeden dzień, aby pozostawać w ramach limitów.
Krok 3: Załaduj, zanonimizuj i przeglądaj w LogTotal
- Załaduj. Otwórz logtotal.com i wrzuć plik .jsonl.
- Anonimizuj.
- Przeglądaj.
Gdy coś pójdzie nie tak
| Objaw | Prawdopodobna przyczyna | Fix |
|---|---|---|
| 403 z Graph | Brak zgody na ThreatHunting.Read.All lub w roli Defender | Nadaj zgodę; sprawdź swoją rolę |
| Zapytanie kończy się lub zwraca wyniki częściowe | Za dużo danych w jednym zapytaniu | Zawęź okno czasowe lub zestaw urządzeń |
| Nic starszego niż 30 dni | Retencja zaawansowanego polowania | Użyj Sentinel lub docelowej ścieżki strumieniowania |
| Liczba wierszy osiąga zaokrąglenie do okrągłej liczby | Limit wyniku | Podziel okno |
| Brak wierszy dla znanego urządzenia | Niezgodność nazw (krótka nazwa vs FQDN) | Użyj startswith lub has |
FAQ
Czy mogę uzyskać surowy EVTX z urządzenia?
Tak, za pomocą Odpowiedzi na żywo w Defender dla Endpoint: getfile pobiera pliki, w tym wyeksportowany EVTX, z maszyny.
Czy to jest to samo, co Sentinel?
Nie, choć się pokrywają w zjednoczonym portalu Defender. Sentinel przechowuje dłuższą historię.