Запустіть свій запит у Розширене полювання, потім надішліть той самий запит до Microsoft Graph через runHuntingQuery, щоб отримати результати у форматі JSON. Кнопка експорту порталу створює файл у форматі електронної таблиці, який LogTotal сьогодні не читає. Розширене полювання зберігає дані протягом 30 днів, тому старіші дані мають надходити з Sentinel або іншого потоку даних Defender.
Defender XDR містить телеметрію кінцевих точок, ідентичності, електронної пошти та хмарних додатків в одному місці, що робить його першим кроком у більшості розслідувань в середовищі Microsoft. Prime Core має 17 197 правил виявлення для даних Microsoft Defender, віднесених до 659 технік MITRE ATT&CK. Нижче описано, як виділити фрагмент, очистити його та досліджувати безкоштовно у LogTotal.
Перш ніж почати
Дозволи. Для Graph вам потрібен дозвіл ThreatHunting.Read.All. Авторизований користувач також повинен мати роль Defender, яка дозволяє розширене полювання.
Обмеження. Запити припиняються через кілька хвилин, а результати обмежені. Плануйте розділити за часом або за пристроєм.
Таблиці. DeviceProcessEvents, DeviceNetworkEvents, DeviceLogonEvents, DeviceFileEvents, DeviceRegistryEvents, DeviceEvents (включає події ASR та AMSI), EmailEvents, IdentityLogonEvents, і AlertInfo з AlertEvidence. Стовпець часу – Timestamp.
Приклади базуються на документації Microsoft, перевірено у жовтні 2026 року.
Крок 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
Кожен рядок повертається як один об’єкт JSON на рядок. Для кількох днів або кількох пристроїв прокрутіть по вікнах розміром у день, щоб залишатися в межах обмежень.
Крок 3: Завантаження, очищення та огляд у LogTotal
- Завантажити. Відкрити logtotal.com і завантажити файл .jsonl.
- Очищення.
- Перегляд.
Коли щось йде не так
| Симптом | Можлива причина | Fix |
|---|---|---|
| 403 з Graph | Відсутня згода на ThreatHunting.Read.All або роль Defender | Надання згоди; перевірте вашу роль |
| Запит завершився невдачею або повернув часткові результати | Забагато даних в одному запиті | Звузьте часовий проміжок або набір пристроїв |
| Нічого старше 30 днів | Збереження розширеного полювання | Користуйтесь Sentinel або вашим потоковим пунктом призначення |
| Обмеження кількості рядків на кругле число | Обмеження результату | Розділіть вікно |
| Немає рядків для відомого пристрою | Невідповідність імен (коротке ім’я проти FQDN) | Використовуйте startswith або has |
FAQ
Чи можу я отримати сирий EVTX з пристрою?
Так, за допомогою Live Response у Defender для Endpoint: getfile витягує файли, включно з експортованими EVTX, з машини.
Чи це те саме, що і Sentinel?
Ні, хоча вони пересікаються у єдиному порталі Defender. Sentinel зберігає історію довше.