Website-Suche

Verwenden von Azure Automation zum Erkennen und Melden von Microsoft 365-Überwachungsereignissen


Erkennen und Melden wichtiger Audit-Ereignisse

Es war eine arbeitsreiche Zeit für diejenigen, die sich Sorgen um die Sicherheit von Exchange machen. Im On-Premise-Bereich tauchten zwei neue Day-Zero-Schwachstellen auf, die eine weitere unangenehme Erinnerung an die Gefahren waren, die im Internet lauern, wenn Angreifer neue Wege finden, um selbst in gut verwaltete Server einzudringen. Lokale Server, die nicht so gut verwaltet werden, sind ein leichtes Ziel für die Bösewichte, und es gibt einfach immer noch zu viele solcher Server.

Aufgrund der zum Schutz von Microsoft 365 errichteten Barrieren ist Exchange Online in der Regel vor solchen Angriffen sicher. Wie bereits erwähnt, kann ein manipuliertes Azure AD-Administratorkonto jedoch dazu führen, dass Angreifer Exchange Online in einem Mandanten kapern. Die Worte von Alex Weinert, Vizepräsident für Sicherheit bei Microsoft, über die Bedeutung des Schutzes aller Azure AD-Konten mit MFA müssen für die Leute, denen der kompromittierte Mandant gehörte, eine besondere Bedeutung gehabt haben.

All das bringt mich zu einem Artikel des Microsoft Cybersecurity-Teams (DART), in dem wichtige Quellen forensischer Informationen für Untersuchungen überprüft werden. DART durchsucht gerne das Azure AD-Überwachungsprotokoll, Azure AD-Anmeldungen und das Office 365-Überwachungsprotokoll (auch als einheitliches Überwachungsprotokoll bezeichnet), um Spuren von Aktivitäten von Angreifern zu finden. Daraus entstand die Idee, darüber zu schreiben, wie die neue Unterstützung für verwaltete Identitäten im Exchange Online-Verwaltungsmodul (V3) genutzt werden kann, um nach Überwachungsereignissen zu suchen, die Probleme aufdecken könnten. Also los geht's.

Exchange Online, Azure Automation und verwaltete Identitäten

Zuvor habe ich die Verwendung von Exchange Online PowerShell mit Azure Automation erläutert. Vor V3 konnten Anmeldeinformationen wie ein Benutzername und ein Kennwort (sicher in Azure Key Vault gespeichert) verwendet werden, um sich bei einem Administratorkonto anzumelden und Exchange-Cmdlets auszuführen. Mit V3 können Sie eine verwaltete Identität verwenden, genau wie mit den Modulen Microsoft Graph PowerShell SDK und Teams.

Der große Vorteil der Verwendung einer verwalteten Identität besteht darin, dass Azure für die Sicherheit sorgt und Sie sich nicht mit Passwörtern oder Zertifikaten herumschlagen müssen. Stattdessen verwendet Azure die Berechtigungen, die dem Automatisierungskonto zugewiesen sind, das mit der verwalteten Identität verwendet wird, um den Zugriff auf Ressourcen zu erlauben oder zu verweigern. Es ist möglich, dass Angreifer versuchen, eine verwaltete Identität zu kompromittieren, aber die Wahrscheinlichkeit ist gering im Vergleich zur Möglichkeit, eine Kombination aus Benutzername und Passwort zu kompromittieren.

Cybersicherheitsrisikomanagement für Active Directory

Entdecken Sie, wie Sie AD-Angriffe mit diesen Cybersicherheits-Risikomanagementlösungen verhindern und sich davon erholen können.

Zuweisen der richtigen Berechtigungen

Meine Idee besteht darin, ein PowerShell-Skript zu schreiben, das als Runbook unter Verwendung eines Zeitplans ausgeführt wird, der einer von Azure verwalteten Identität gehört. Das Skript führt Folgendes aus:

  • Definiert die zu überwachenden Prüfereignisse mit hoher Priorität. Die jüngste Kompromittierung eines Microsoft 365-Mandanten ermöglichte es den Angreifern, einen neuen eingehenden Connector und 12 neue Transportregeln zu erstellen. Die Angreifer könnten dann den Mandanten nutzen, um jede Menge Spam zu versenden. Mein Skript sucht nach diesen Ereignissen.
  • Meldet sich mit einer verwalteten Identität bei Exchange Online an. Dem Dienstprinzipal für die verwaltete Identität muss die Berechtigung Exchange als Anwendung verwalten zugewiesen werden. Um zu erfahren, wie Sie die Berechtigung zuweisen (nur mit PowerShell möglich), lesen Sie diesen Artikel.
  • Durchsucht das Office 365-Überwachungsprotokoll mithilfe des Cmdlets Search-UnifiedAuditLog. Die Suche umfasst die letzten 30 Tage. Für Office 365 E3-Mieter könnte es 90 Tage dauern; für E5-Mieter 365 Tage. Ich halte 30 für angemessen, da man regelmäßig nach aktuellen Ereignissen Ausschau halten sollte.
  • Wenn bei der Suche einige Prüfdatensätze gefunden werden, analysieren Sie die Prüfdatennutzlast in jedem Datensatz, um wichtige Informationen wie den Namen einer Transportregel oder eines Connectors, verwendete Parameter usw. zu extrahieren. Die Nutzlast variiert von Ereignis zu Ereignis. Wenn Sie also andere Ereignisse zur Suche hinzufügen, müssen Sie das Skript aktualisieren, um Informationen aus diesen Ereignissen zu extrahieren.
  • Führen Sie das Cmdlet Get-ExoMailbox aus, um den Anzeigenamen des Kontos abzurufen, das die Aktion ausgeführt hat, die zur Auslösung des Überwachungsereignisses geführt hat.
  • Erstellen Sie einen HTML-Bericht der Prüfdaten.
  • Senden Sie den Bericht per E-Mail an eine festgelegte SMTP-Adresse. Dies kann für eine Verteilerliste, eine Microsoft 365-Gruppe, einen E-Mail-aktivierten Teamkanal oder eine Einzelperson gelten. Die Idee besteht darin, dass die Nachricht ein Aufruf zum Handeln ist, um Administratoren aufzufordern, zu überprüfen, ob die mit den hochkarätigen Überwachungsereignissen verbundenen Aktionen gültig sind. Das Skript verwendet Microsoft Graph PowerShell SDK-Cmdlets zum Erstellen und Senden der Nachricht. Daher muss der Dienstprinzipal der verwalteten Identität über die Graph-Anwendungsberechtigungen Mail.ReadWrite und Mail.Send verfügen. Diese Berechtigungen sind sehr leistungsstark (und gehören zu den von Angreifern beliebten Arten), daher ist es wichtig, sie in Verbindung mit einer Anwendungszugriffsrichtlinie bereitzustellen (siehe unten).

Das meiste davon ist unkompliziert und Azure Automation sendet die E-Mail ordnungsgemäß, um Administratoren aufzufordern, Überwachungsereignisse mit hoher Priorität zu überprüfen (Abbildung 1). Durch das Anhängen des Runbooks an einen Azure Automation-Zeitplan wird sichergestellt, dass Mandantenadministratoren regelmäßig Benachrichtigungen erhalten.

Zuweisen von Diagrammberechtigungen zu einer verwalteten Identität

Zwei Themen verdienen besondere Aufmerksamkeit. Erstens ist das Zuweisen einer Graph-Berechtigung wie Mail.ReadWrite zu dem Automatisierungskonto, das mit der verwalteten Identität verwendet wird, ein weiterer Vorgang, der nur in PowerShell möglich ist. Hier ist der Code, den ich verwendet habe:

$ManagedIdentity = Get-MgServicePrincipal -ServicePrincipalId d5469aa1-070f-4008-863b-e69b6646203a
$GraphApp = Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'" # Microsoft Graph
$Role = $GraphApp.AppRoles | Where-Object {$_.Value -eq 'Mail.ReadWrite'}

$AppRoleAssignment = @{
     "PrincipalId" = $ManagedIdentity.Id
     "ResourceId" = $GraphApp.Id
     "AppRoleId" = $Role.Id }
# Assign the Graph permission
New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $ManagedIdentity.Id -BodyParameter $AppRoleAssignment

Die Schritte im Code sind:

  • Rufen Sie den Dienstprinzipal für das Automatisierungskonto für verwaltete Identitäten mithilfe der Dienstprinzipal-ID ab. Sie können dies erhalten, indem Sie die verwaltete Identität im Abschnitt „Unternehmensanwendungen“ des Azure AD Admin Centers auswählen und ihre Eigenschaften anzeigen.
  • Definieren Sie den Bezeichner für die Microsoft Graph-Unternehmensanwendung. Dieser Wert ist immer „00000003-0000-0000-c000-000000000000“.
  • Rufen Sie die App-Rolle für die Berechtigung ab, die ich erteilen möchte. Der Filter extrahiert die Rolle für die Rolle Mail.ReadWrite.
  • Verwenden Sie die abgerufenen Informationen, um die Parameter für die neue Aufgabe zu erstellen.
  • Führen Sie das Cmdlet New-MgServicePrincipalAppRoleAssignment aus, um die Rolle dem Dienstprinzipal des Automatisierungskontos zuzuweisen. Durch die Zuweisung der Rolle wird der Nutzung der angeforderten Berechtigung zugestimmt.

Postfächer vor Anwendungen schützen

Zweitens verfügt das Automatisierungskonto jetzt über die Anwendungsberechtigungen Mail.ReadWrite und Mail.Send. Der Microsoft Graph ermöglicht dem vom Automatisierungskonto ausgeführten Code, auf jedes Postfach im Mandanten zuzugreifen und E-Mails im Namen eines beliebigen Postfachs zu senden. Die Einrichtung einer allmächtigen Funktion zum Versenden von E-Mails macht es Entwicklern leicht, kann jedoch ein Sicherheitsalptraum sein. Und hier kommen Anwendungszugriffsrichtlinien ins Spiel.

Eine Anwendungszugriffsrichtlinie steuert den Zugriff einer Anwendung auf Postfächer. In unserem Szenario möchten wir wahrscheinlich nur, dass Code, der vom Automatisierungskonto ausgeführt wird, auf eine begrenzte Anzahl von Postfächern zugreifen kann, vielleicht sogar nur auf eines. Um die Verwaltung der Postfächer zu vereinfachen, können Sie eine Verteilerliste erstellen, um die Gruppe zugänglicher Postfächer zu definieren.

Dieser Code erstellt beispielsweise eine sicherheitsaktivierte Verteilerliste (eine normale Verteilerliste kann nicht verwendet werden) und fügt der Liste ein einzelnes Postfach hinzu.

New-DistributionGroup -Alias ManagedMailbox.Restrict -PrimarySmtpAddress ManagedMailbox.Restrict@office365itpros.com -Description "Restrict Access for Managed Mailboxes - used with Application Policy" -DisplayName "Restrict Access to Managed Mailbox" -IgnoreNamingPolicy -Name ManagedMailbox.Restrict -Type Security

Set-DistributionGroup -Identity ManagedMailbox.Restrict -ManagedBy Tony.Redmond -HiddenFromAddressListsEnabled $True

Add-DistributionGroupMember -Identity ManagedMailbox.Restrict -Member "Azure.Management.Account@office365itpros.com"

Jetzt kann ich eine Anwendungszugriffsrichtlinie erstellen, um das Automatisierungskonto auf die in der Verteilerliste definierten Postfächer zu beschränken. Unmittelbar nachdem die Richtlinie aktiv ist, beschränkt Exchange Online das Automatisierungskonto, einschließlich Runbooks, die die verwaltete Identität verwenden, auf die zugewiesenen Postfächer.

New-ApplicationAccessPolicy -AccessRight RestrictAccess -AppId "b977a222-3534-4625-980d-e2f864d3a2d5" -Description "Restrict Mailbox Access to Managed Identity" -PolicyScopeGroupId ManagedMailbox.Restrict

ScopeName        : Restrict Access to Managaed Mailbox
ScopeIdentity    : ManagedMailbox.Restrict
Identity         : a662313f-14fc-43a2-9a7a-d2e27f4f3478\b977a222-3534-4625-980d-e2f864d3a2d5:S-1-5-21-458367025-2064581115-2950179075-49778371;e33e4a0e-149d-4949-8c51-0c849df7b9ea
AppId            : b977a222-3534-4625-980d-e2f864d3a2d5
ScopeIdentityRaw : S-1-5-21-458367025-2064581115-2950179075-49778371;e33e4a0e-149d-4949-8c51-0c849df7b9ea
Description      : Restrict Mailbox Access to Managed Identity
AccessRight      : RestrictAccess
ShardType        : All
IsValid          : True
ObjectState      : Unchanged

Der Geltungsbereich der Richtlinie wird durch die oben erstellte Verteilerliste festgelegt. Der im Code verwendete AppId-Wert ist die Anwendungskennung für das Automatisierungskonto, die Sie im Azure AD Admin Center finden können, indem Sie die Eigenschaften des Kontos untersuchen (Abbildung 2).

Sie können den Runbook-Code von GitHub herunterladen.

Geplante Automatisierung ist gute Automatisierung

Der Schutz eines Mieters erfordert harte Arbeit und kontinuierlichen, beharrlichen Einsatz. Die Verwendung von Azure Automation zur Ausführung geplanter Runbooks zur Erkennung von Anomalien ist eine hervorragende Möglichkeit, um sicherzustellen, dass niemand vergisst, Dinge zu überprüfen. Da das Exchange Online-Verwaltungsmodul nun verwaltete Identitäten unterstützt, stehen neue Möglichkeiten zur Verfügung. Tue es!

Verwandte Artikel