Wie wichtig granulare Audit-Logs in Microsoft 365 inzwischen sind, haben die letzten Monate deutlich gezeigt. In vielen Tenants, die ich betreue, ist das Thema spätestens seit dem Storm-0558-Vorfall im Sommer 2023 ein Dauerbrenner. Damals wurde bekannt, dass Angreifer mit gestohlenen Signaturschlüsseln auf Exchange-Online-Postfächer zugreifen konnten. Viele Admins fragten sich daraufhin, ob sie überhaupt nachvollziehen können, wer wann auf welche E-Mails zugegriffen hat. Genau dafür gibt es das Event MailItemsAccessed in Purview Audit. Anders als früher steht es inzwischen auch Kunden mit Audit (Standard) zur Verfügung.

Seit Storm-0558 steht MailItemsAccessed auch in Audit (Standard) bereit

Im Juli 2023 hat Microsoft angekündigt, bestimmte besonders sicherheitsrelevante Audit-Events wie MailItemsAccessed nicht länger nur Kunden mit Audit (Premium) vorzubehalten. Der Rollout begann im September, mittlerweile taucht das Event in allen Tenants mit aktivem Audit (Standard) auf. Auch ohne zusätzliche Lizenz für Purview Audit (Premium) lässt sich damit nachvollziehen, welche Postfachobjekte zum Beispiel über den Zugriff einer OAuth-App oder durch einen Angreifer eingesehen wurden. Für forensische Untersuchungen ist das ein echter Fortschritt, vor allem bei kompromittierten Konten oder bei Angriffen über zugelassene Apps, wie sie im Zusammenhang mit Midnight Blizzard diskutiert wurden. Gleichzeitig hat Microsoft die Standardaufbewahrung für Audit (Standard) von 90 auf 180 Tage verlängert und den Zeitraum für Analysen damit fast verdoppelt.

MailItemsAccessed erfasst jeden Zugriff auf ein Postfachobjekt

MailItemsAccessed wird protokolliert, sobald jemand auf ein E-Mail-Objekt in einem Exchange-Online-Postfach zugreift, egal ob über Outlook, OWA, EWS, Microsoft Graph oder eine OAuth-App. Das Event unterscheidet dabei fein zwischen „SoftDeletes“ (also Zugriffen auf bereits gelöschte Mails), „HardDeletes“ und normalen Lesezugriffen. Ob der Benutzer selbst interaktiv zugreift oder eine App automatisiert, ist für die Protokollierung unerheblich. Voraussetzung ist allerdings, dass das Auditing für die Postfächer tatsächlich aktiv ist. Exchange Online schaltet das Mailbox Auditing zwar schon seit einiger Zeit standardmäßig ein, gerade in älteren Tenants sollte man die Einstellungen aber kontrollieren. Mehr dazu findet ihr in der Microsoft-Dokumentation.

Praxistipp: Ob das Auditing in allen aktiven Postfächern wirklich eingeschaltet ist, prüfe ich regelmäßig mit diesem Befehl:

Get-Mailbox -ResultSize Unlimited | Where-Object { $_.AuditEnabled -ne $true }

In den allermeisten neuen Tenants steht AuditEnabled auf $true. Altlasten sollte man trotzdem ausschließen.

Im Purview-Portal und per PowerShell lassen sich die Audit-Logs durchsuchen

Im Purview-Portal kann man unter „Audit“ gezielt nach MailItemsAccessed-Events suchen. Für tiefere Analysen, etwa wenn es um Zugriffe bestimmter Service Principals oder Apps geht, greife ich meist zu PowerShell und Search-UnifiedAuditLog. Der folgende Befehl liefert zum Beispiel alle Zugriffe auf ein bestimmtes Postfach in einem festgelegten Zeitraum:

Search-UnifiedAuditLog -StartDate "2024-02-01" -EndDate "2024-02-29" -Operations MailItemsAccessed -UserIds [email protected]

Eine vollständige Referenz zur Arbeit mit dem Audit-Log findet ihr in der Microsoft-Dokumentation. Die Ergebnisse lassen sich als CSV exportieren oder an eine SIEM-Lösung wie Microsoft Sentinel streamen. Vor allem für laufende Analysen und automatische Alarme ist der zweite Weg sinnvoll. Sentinel bindet die Audit-Logs über den passenden Data Connector an. Andere SIEM-Systeme lassen sich alternativ über die Office-365-API mit den Logs versorgen.

Für lange Aufbewahrung bleibt Audit (Premium) nötig

In Audit (Standard) lassen sich die Logs inzwischen 180 Tage rückwirkend abfragen. Wer sie deutlich länger aufbewahren muss (bis zu 10 Jahre) oder gezielte Aufbewahrungsrichtlinien braucht, kommt um eine Lizenz für Audit (Premium) weiterhin nicht herum. Damit lassen sich granulare Richtlinien anlegen, die bestimmte Ereignistypen für einzelne Benutzer oder Gruppen noch länger vorhalten. Für Unternehmen mit Compliance-Vorgaben ist das unverzichtbar. Wie man das konfiguriert und welche Richtlinien möglich sind, beschreibt die Microsoft-Dokumentation.

Bevor man forensisch auswertet, sollte man unbedingt prüfen, ob das Log den gewünschten Zeitraum überhaupt noch abdeckt. Mir sind schon öfter Fälle begegnet, in denen ein Zugriff schlicht zu lange zurücklag, um ihn noch nachzuweisen. Mit 180 Tagen ist man heute in der Breite aber deutlich besser aufgestellt als noch vor einem Jahr.

Ein Diagramm zeigt den Weg vom Postfachzugriff bis zum Analysten

Wo die neuen Audit-Events einen Mehrwert bringen, lässt sich am besten grafisch zeigen. Deshalb habe ich das Zusammenspiel von Postfach, Audit-Log, SIEM und Analyst in einem kleinen Diagramm skizziert:

flowchart TD
  User["User oder App"] --> Mailbox["Exchange Online Postfach"]
  Mailbox --> Event["MailItemsAccessed-Event"]
  Event --> AuditLog["Purview Audit Log"]
  AuditLog --> Portal["Purview Portal / PowerShell"]
  AuditLog --> SIEM["SIEM (z.B. Sentinel)"]
  SIEM --> Analyst["Security Analyst"]

Abbildung: Ablauf der Protokollierung von MailItemsAccessed bis zur Analyse im SIEM.

Audit-Logs sind Pflicht und keine Kür

Mit dem Storm-0558-Vorfall und der anschließenden Ausweitung der MailItemsAccessed-Protokollierung auf alle Microsoft-365-Kunden haben sich die Voraussetzungen für eine fundierte Forensik in Exchange Online deutlich verbessert. Für viele Vorfälle genügen die 180 Tage Standardaufbewahrung in der Praxis, für manche regulatorischen Anforderungen allerdings nicht. Entscheidend bleibt, dass das Auditing wirklich überall eingeschaltet ist und regelmäßig kontrolliert wird. Das gilt auch im Zusammenspiel mit anderen Schutzmaßnahmen wie Conditional Access, die ich im Beitrag Best Practices für Conditional Access beschrieben habe. Für mich gehört das MailItemsAccessed-Event heute fest zu jeder ernsthaften Cloud-Sicherheitsstrategie.