Portal Purview (Audyt → Wyszukiwanie) pozwala przeszukiwać Zunifikowany Dziennik Audytu i eksportować wyniki do pliku CSV. Całe zdarzenie znajduje się w jednej kolumnie, AuditData, jako blob JSON. Aby uzyskać czysty JSON, jedno zdarzenie na linię, użyj Exchange Online PowerShell i Search-UnifiedAuditLog. Skrypt znajduje się poniżej. Standardowy czas przechowywania audytu wynosi 180 dni; Audyt (Premium) domyślnie przechowuje rok.
Zunifikowany Dziennik Audytu obejmuje Exchange, SharePoint, OneDrive, Teams i aktywność administracyjną w jednym miejscu. W przypadku przejęcia biznesowej skrzynki e-mail to miejsce, gdzie można zauważyć reguły skrzynki odbiorczej, przekazywanie i masowe pobieranie. Prime Core ma 79 reguł wykrywania dla danych audytu Microsoft 365, powiązanych z 33 technikami MITRE ATT&CK. Wśród nich: reguły przekazywania, które wyprowadzają pocztę (T1114.003), dodatkowe uprawnienia do skrzynki pocztowej (T1098.002) oraz dane pobierane z SharePoint (T1213.002).
Zanim zaczniesz
Czy audyt jest włączony? Domyślnie w większości dzierżaw, ale sprawdź:
Connect-ExchangeOnline
Get-AdminAuditLogConfig | Format-List UnifiedAuditLogIngestionEnabled
True to, czego chcesz. Jeśli jest False, nic nie było rejestrowane, a włączenie tego nie uzupełni zapisów.
Role. Potrzebujesz roli Audit Logs lub View-Only Audit Logs. Potrzebujesz też modułu ExchangeOnlineManagement (Install-Module ExchangeOnlineManagement).
Opóźnienie. Zdarzenia nie pojawiają się natychmiast. Większość pojawia się w ciągu jednej lub dwóch godzin, niektóre trwają dłużej. Jeśli ścigasz coś z tego ranka, może jeszcze nie być dostępne do wyszukiwania.
Eksport za pomocą PowerShell
Search-UnifiedAuditLog zwraca maksymalnie 5 000 rekordów na jedno wywołanie. Z ID sesji i ReturnLargeSet można przewijać do 50 000 na jedno wyszukiwanie. Ta pętla to robi i zapisuje dane AuditData każdego rekordu, już jako JSON, w jednej linii:
$session = [guid]::NewGuid().ToString()
$out = "ual_2026-10-19.jsonl"
do {
$batch = Search-UnifiedAuditLog -StartDate "2026-10-19 00:00" -EndDate "2026-10-20 00:00" `
-SessionId $session -SessionCommand ReturnLargeSet -ResultSize 5000
$batch | ForEach-Object { $_.AuditData } | Add-Content $out
} while ($batch.Count -eq 5000)
Dziennik zapisuje czasy w UTC. Pamiętaj o tym, ustawiając okno.
Co należy szukać
| Operacja | Dlaczego to jest ważne |
|---|---|
| New-InboxRule, Set-InboxRule, UpdateInboxRules | Reguły, które przekazują, przenoszą lub usuwają pocztę; sprawdź parametry w AuditData |
| Set-Mailbox z ForwardingSmtpAddress | Przekierowywanie na poziomie skrzynki pocztowej do zewnętrznego adresu |
| Add-MailboxPermission, Add-RecipientPermission | Ktoś zdobywa dostęp do innej skrzynki pocztowej |
| MailItemsAccessed | Które wiadomości zostały faktycznie przeczytane; kluczowe dla zakresu naruszenia |
| FileDownloaded, FileSyncDownloadedFull bursts | Masowe pobieranie z SharePoint lub OneDrive |
| Zgoda na aplikację | Złośliwa aplikacja uzyskała dostęp do poczty lub plików |
Klasyczna sekwencja BEC: logowanie z nowej lokalizacji, a następnie w ciągu kilku minut reguła skrzynki odbiorczej, która przenosi odpowiedzi od zespołu finansowego do niejasnego folderu.
Prześlij, wyczyść i przeglądaj w LogTotal
- Prześlij. Otwórz logtotal.com i wrzuć plik .jsonl.
- Wyczyść.
- Przegląd.
Gdy coś pójdzie nie tak
| Objaw | Prawdopodobna przyczyna | Fix |
|---|---|---|
| Search-UnifiedAuditLog nie jest rozpoznawany | Brak połączenia z Exchange Online PowerShell | Najpierw połącz się z ExchangeOnline |
| Brak wyników | Audyt wyłączony, zdarzenia zbyt nowe lub poza okresem retencji | Sprawdź przechwytywanie; poczekaj; sprawdź swój poziom audytu |
| Dokładnie 5 000 wyników | Przekroczony limit połączeń bez sesji | Użyj pętli sesji powyżej |
| Zatrzymany na 50 000 | Limit sesji | Podziel okno na mniejsze kawałki |
| Odmowa dostępu | Brak roli audytu | Poproś o View-Only Audit Logs |
FAQ
Czy to nie to samo co dzienniki logowania Entra?
Nakładają się: UAL ma zdarzenia UserLoggedIn. Ale dla szczegółów uwierzytelnienia (MFA, Dostęp Warunkowy, ryzyko), dzienniki logowania Entra są znacznie bogatsze. Eksportuj oba.
Co z Management Activity API?
To jest ścieżka do ciągłego zbierania do SIEM. Dla jednorazowego śledztwa, PowerShell jest prostszy.