Unified Audit Log untersuchen: die wichtigen BEC-Felder
Das Unified Audit Log bei einem BEC lesen: AuditData-JSON, die zu filternden Vorgänge und wie SessionId und UniqueTokenId Aktionen mit Anmeldungen verknüpfen.
Kurz gesagt. In einem UAL-Export sind die CSV-Spalten nur ein Index; der Beweis steckt im AuditData-JSON. Filtern Sie bei einem BEC auf eine kurze Liste von Vorgängen (New-InboxRule, Set-InboxRule, UpdateInboxRules, Set-Mailbox, MailItemsAccessed, Send, SoftDelete/HardDelete, SearchQueryInitiatedExchange, FileDownloaded, Consent to application., User registered security info) und lesen Sie dann die workloadspezifischen Felder. Der Pivot, der aus Verdacht Zuordnung macht, sind AppAccessContext.AADSessionId und UniqueTokenId, die der Session ID und dem Unique token identifier der Entra-Anmeldung entsprechen.
Das Unified Audit Log (einheitliches Überwachungsprotokoll) erfasst Benutzer- und Administratoraktivitäten aus Exchange Online, SharePoint, OneDrive, Entra ID, Teams und weiteren Diensten an einer Stelle. Diese Breite ist zugleich die Schwierigkeit: Ein einziger Tenant-Export kann Hunderttausende Zeilen enthalten, von denen nur ein paar Dutzend zum BEC gehören. Hier ist der Praxisleitfaden, den ich mir beim ersten Mal gewünscht hätte.
Aufbau einer Exportzeile
Ein Export aus dem Purview-Portal hat die Spalten RecordId, CreationDate, RecordType, Operation, UserId, AuditData, AssociatedAdminUnits, AssociatedAdminUnitsNames. Ein PowerShell-Export Search-UnifiedAuditLog | Export-Csv hat ähnliche Spalten (RecordType, CreationDate, UserIds, Operations, AuditData, ResultIndex, ResultCount, Identity…). In beiden ist AuditData eine JSON-Zeichenkette mit dem vollständigen Eintrag.
Häufige AuditData-Felder:
| Feld | Bedeutung | Hinweise |
|---|---|---|
CreationTime | Zeitpunkt des Ereignisses, UTC | Oft ohne abschließendes Z |
Id | Kennung des Eintrags | Zum Deduplizieren überlappender Exporte |
Operation | Was passiert ist | Groß-/Kleinschreibung und Schlusspunkt variieren (Consent to application.) |
Workload | Exchange, SharePoint, OneDrive, AzureActiveDirectory… | |
UserId | Wer es getan hat | UPN oder eine Systemidentität |
ClientIP / ClientIPAddress / ActorIpAddress | Quell-IP | Kann Port oder eckige Klammern enthalten ([2001:db8::1]:443) |
ResultStatus | Succeeded, True, Success… | Je nach Workload uneinheitlich |
AppAccessContext | AADSessionId, UniqueTokenId, IssuedAtTime | Die Verbindung zur Anmeldung |
Das UAL enthält keine Geolokalisierung. Land und Netz ergeben sich erst durch Abgleich der IP mit den Entra-Anmeldeprotokollen oder durch eine externe Abfrage.
Die Vorgänge, die bei einem BEC zählen
| Vorgang | Workload | Warum er wichtig ist | Zu lesende Felder |
|---|---|---|---|
New-InboxRule, Set-InboxRule, Enable-InboxRule | Exchange | Regeln aus PowerShell oder Outlook im Web | Parameters: Name, ForwardTo, RedirectTo, DeleteMessage, MoveToFolder, SubjectOrBodyContainsWords, From |
UpdateInboxRules | Exchange | Regeln aus dem Outlook-Desktopclient | OperationProperties: RuleName, RuleActions, RuleCondition |
Set-Mailbox | Exchange | Postfachweiterleitung (SMTP), Überwachungsänderungen | ForwardingSmtpAddress, ForwardingAddress, DeliverToMailboxAndForward, AuditEnabled |
Add-MailboxPermission, Add-RecipientPermission | Exchange | Delegierung als Persistenz | User, AccessRights |
MailItemsAccessed | Exchange | Welche Nachrichten gelesen oder synchronisiert wurden | OperationProperties.MailAccessType (Bind/Sync), Folders, OperationCount, ClientInfoString |
Send, SendAs, SendOnBehalf | Exchange | Aus dem Postfach gesendete E-Mails | Item.Subject, Item.InternetMessageId |
SoftDelete, HardDelete, MoveToDeletedItems | Exchange | Spurenbeseitigung | AffectedItems, Folder |
SearchQueryInitiatedExchange | Exchange | Wonach der Angreifer gesucht hat | QueryText (Protokollierung muss aktiviert sein) |
FileDownloaded, FileSyncDownloadedFull | SharePoint / OneDrive | Datendiebstahl | SourceFileName, SiteUrl, UserAgent |
UserLoggedIn, UserLoginFailed | AzureActiveDirectory | Im UAL gespiegelte Anmeldungen | ExtendedProperties, DeviceProperties.SessionId |
Consent to application., Add delegated permission grant. | AzureActiveDirectory | Unrechtmäßige Einwilligung | ModifiedProperties (ConsentAction.Permissions, ConsentContext.IsAdminConsent) |
User registered security info, Update user. | AzureActiveDirectory | MFA-Methode des Angreifers | ModifiedProperties (StrongAuthentication…) |
Set-AdminAuditLogConfig, Set-MailboxAuditBypassAssociation | Exchange | Manipulation der Überwachung | UnifiedAuditLogIngestionEnabled, AuditBypassEnabled |
Microsofts Seite zu den Aktivitäten im Überwachungsprotokoll ist die vollständige Referenz. Zwei Fallen: Vorgangsnamen aus Entra ID enden oft mit einem Punkt, und Parameters ist ein Array aus {Name, Value}-Paaren, kein Objekt, sodass ein naiver JSON-Pfad es verfehlt.
Warum Regeln in zwei Formen auftauchen
Eine in Outlook im Web oder per PowerShell erstellte Posteingangsregel wird als New-InboxRule mit lesbaren Parameters protokolliert. Eine im Outlook-Desktopclient erstellte Regel erscheint als UpdateInboxRules mit weniger strukturierten OperationProperties wie RuleActions und RuleCondition. Suchen Sie nach beiden. Bösartige Posteingangsregeln und Weiterleitungen erklärt, welche Parameter zu lesen sind.
Der Sitzungs-Pivot
Microsoft bettet eine Sitzungskennung (sid) und eine eindeutige Token-Kennung (uti) in die ausgestellten Token ein und macht sie als verknüpfbare Kennungen in den Protokollen sichtbar. Laut Microsoft Learn:
| Claim | Entra-Anmeldeprotokoll | Exchange-Online-Überwachung | SharePoint- / Teams-Überwachung |
|---|---|---|---|
sid | Session ID | SessionId / AppAccessContext.AADSessionId | AppAccessContext.AADSessionId |
uti | Unique token identifier | AppAccessContext.UniqueTokenId | AppAccessContext.UniqueTokenId |
iat | Date | AppAccessContext.IssuedAtTime | AppAccessContext.IssuedAtTime |
Das Vorgehen:
- Ermitteln Sie in den Entra-Anmeldeprotokollen die verdächtige Anmeldung und kopieren Sie ihre Session ID (bei Replay die Sitzung, die aus zwei Netzen auftaucht).
- Behalten Sie im UAL-Export alle Einträge, deren
AADSessionIdoderSessionIddiesem Wert entspricht. - Ergänzen Sie Einträge, deren
UniqueTokenIdzu einem Token passt, das an die IP des Angreifers ausgestellt wurde. - Ergänzen Sie Einträge von der IP des Angreifers für alles, was die ersten beiden Filter nicht erfassen.
Microsoft weist darauf hin, dass verknüpfbare Kennungen bei manchen aggregierten Einträgen und bei Einträgen aus Hintergrundprozessen fehlen; Schritt 4 ist daher Pflicht. Eine weitere Feinheit: Beim AiTM-Phishing ist die gestohlene Sitzung diejenige, die das Opfer geöffnet hat, die Kennung allein trennt also nicht Angreifer und Opfer. Was sie trennt, ist das Netz, aus dem jede Aktion kommt (AiTM und Token-Replay).
Typische Stolperfallen
- Abgeschnittene Exporte. Genau 50.000 Zeilen bedeuten das Limit des Standard-Exports, nicht das Ende der Daten.
- Duplikate. Überlappende Suchen duplizieren Einträge; deduplizieren Sie anhand von
Id. - Schäden durch Tabellenkalkulation. Excel formatiert Datumswerte um und kann lange JSON-Zellen aufteilen oder abschneiden. Verarbeiten Sie die CSV programmatisch.
- Zeitzonen.
CreationDateundCreationTimesind UTC; Outlook zeigt Ortszeit. Geben Sie im Bericht UTC an. - Verzögerte Einträge. Sie erscheinen typischerweise 60 bis 90 Minuten nach dem Ereignis; ein Export direkt nach der Eindämmung kann die letzten Aktionen verpassen.
- Fehlende Ereignisse.
SearchQueryInitiated*ist standardmäßig deaktiviert;MailItemsAccessedhängt von Lizenz und Postfachüberwachung ab (Aufbewahrung und Lücken).
Im großen Maßstab
Für ein paar Tausend Zeilen reichen PowerShell und ConvertFrom-Json. Bei einem Tenant-weiten Export AuditData für jede Zeile zu parsen, mit den Anmeldungen über IP und Sitzung zu verknüpfen und nach Konto zu gruppieren, ist genau das, was M365 Forensics automatisiert: Es liest beide Ebenen der CSV, normalisiert Vorgangsnamen (Add service principal. = Add service principal), entfernt Ports aus IPs, extrahiert AADSessionId/UniqueTokenId, übernimmt Land und ASN aus Anmeldungen derselben IP und meldet einen kritischen Befund „Aktionen aus der Sitzung oder von der IP des Angreifers“, wenn UAL-Aktionen die Kennungen einer verdächtigen Anmeldung tragen. Die Anleitung zeigt, wie man das Ergebnis liest.
Häufige Fragen
Wo stehen die Details eines Eintrags im Unified Audit Log?
In der Spalte AuditData des Exports. Sie enthält ein JSON-Objekt, dessen Felder vom Workload abhängen: Parameters für Exchange-Verwaltungs-Cmdlets, OperationProperties und Folders für MailItemsAccessed, ModifiedProperties für Entra-ID-Ereignisse, SourceFileName und SiteUrl für SharePoint.
Kann ich einen Eintrag im Unified Audit Log einer Entra-ID-Anmeldung zuordnen?
Oft ja. Exchange-, SharePoint- und Teams-Einträge enthalten AppAccessContext.AADSessionId und UniqueTokenId, die der Session ID und dem Unique token identifier der Entra-Anmeldung entsprechen, die das Token ausgestellt hat. Manche aggregierten oder Hintergrundeinträge enthalten sie nicht.