Search

Auditieren von M365 und Azure

March 24, 2026

Auditieren von M365 und Azure

TL;DR

Entra ID und Azure sind ein eigener Kosmos, der viele Möglichkeiten, aber auch viele Stolperfallen hinsichtlich der Sicherheit mit sich bringt. Entra ID und Azure sicher zu betreiben, ist eine Kunst für sich und stellt viele IT-Abteilungen vor große Herausforderungen. In diesem Blogpost soll es darum gehen, wie man diesem Problem Herr werden kann.

AzRagner findet ihr auf GitHub https://github.com/cirosec/AzRanger.

Einleitung

In der heutigen IT-Landschaft sind Azure und insbesondere Microsoft 365 (M365) aus den meisten Unternehmen nicht mehr wegzudenken. Sie bilden das Rückgrat zahlreicher moderner Geschäftsprozesse. M365 als umfassende Produkt-Suite bündelt zentrale Dienste wie den cloudbasierten Authentifizierungsdienst Entra ID, die Collaboration-Plattformen SharePoint Online und Microsoft Teams sowie den Cloud-Speicher OneDrive – und das ist nur ein Ausschnitt aus dem stetig wachsenden Funktionsportfolio.

Gerade weil M365 und Azure für die IT-Sicherheit von zentraler Bedeutung sind, ist eine regelmäßige Überprüfung ihrer Konfiguration unverzichtbar. Die dynamische Natur der Cloud – im Gegensatz zu den vergleichsweise statischen On-Premises-Umgebungen – und die kontinuierlichen Änderungen durch Microsoft erhöhen die Komplexität zusätzlich. Besonders die manuelle Kontrolle über die Weboberflächen wird schnell zu einer zeitintensiven Herausforderung, da Updates häufig Menüstrukturen und die Orte von Einstellungen verändern.

An dieser Stelle setzen spezialisierte Audit-Tools an, die Transparenz schaffen und die Sicherheitsüberprüfung erheblich vereinfachen. In diesem Blogpost stellen wir mit AzRanger ein Werkzeug vor, das Unternehmen dabei unterstützt, den Überblick über den Sicherheitsstatus ihrer Umgebung zu behalten und strukturiert Audits durchzuführen.

AzRanger verfolgt das Ziel, eine unkomplizierte Möglichkeit zur Analyse der Konfiguration von M365 und damit zusammenhängenden Diensten bereitzustellen. Darüber hinaus kann das Tool auch verschiedene Azure-Ressourcen wie Storage Accounts oder Virtual Machines bewerten. Anwendungen, die innerhalb dieser Azure-Ressourcen betrieben werden, stehen dabei bewusst nicht im Fokus – hierfür eignen sich weiterhin klassische Schwachstellenscanner oder andere spezialisierte Lösungen, wie man sie auch aus On-Premises-Umgebungen kennt.

Wenn du also wissen willst, wie du die immer komplexer werdenden M365- und Azure-Umgebungen besser in den Griff bekommst, ohne dich ständig durch unübersichtliche Portale zu klicken, dann bleib dran. Im weiteren Verlauf zeige ich dir, wie AzRanger in der Praxis funktioniert und welche Möglichkeiten es gibt, das Tool selbst zu erweitern.

AzRanger

AzRanger begann als ein privates Projekt eines unserer Mitarbeiter. Bei cirosec können Mitarbeiter im Rahmen der internen Research-Aktivitäten eigene Projekte vorantreiben und der Allgemeinheit zur Verfügung stellen. AzRanger ist ein Konfigurationsanalysewerkzeug, das für die Nutzung durch interne Mitarbeiter gedacht ist. Es ist kein Werkzeug, das bei einem Red Teaming oder einem Blackbox-Penetrationstest eingesetzt werden sollte.

Es sind über 150 Prüfungen in M365 implementiert sowie 30 weitere im Umfeld von Azure. Ein Beispiel für eine Prüfung ist, ob Benutzer eigene Anwendungen in Entra ID hinzufügen können, was eine Möglichkeit für einen internen Phishing-Angriff darstellt. Es gibt aber auch komplexere Prüfungen, etwa ob Benutzer Schlüssel zu Entra-ID-Anwendungen hinzufügen können, die über privilegierte Berechtigungen verfügen, während die Benutzer nur Standardrechte haben. Hierin liegt auch einer der größten Unterschiede zu anderen Tools: Es gibt quasi keine Einschränkungen, wie eine Prüfung aussehen soll, solange sie mit den vorhandenen Daten umgesetzt werden kann.

AzRanger ist als einsteigerfreundliches Werkzeug konzipiert, das  Administratoren eine erste Einschätzung der Sicherheit ihrer wichtigsten Azure-Cloud-Ressourcen ermöglicht. Im Vergleich zu anderen Open-Source-Tools, beispielsweise in Python oder PowerShell implementierten Lösungen, verfolgt AzRanger den Anspruch, ohne zusätzliche Abhängigkeiten auszukommen. Dies macht die Verwendung besonders einfach und komfortabel für Administratoren und andere Mitarbeiter, die ein berechtigtes Interesse  an der Überprüfung ihrer M365-Umgebung haben.

Voraussetzung

Um AzRanger sinnvoll nutzen zu können, benötigt man einen Benutzer mit der Entra-ID-Rolle „Global Reader“. Möchte man zusätzlich SharePoint Online auditieren, ist es erforderlich, dem Benutzer die Rolle „SharePoint Administrator“ zuzuweisen. Sollen darüber hinaus auch Azure-Ressourcen überprüft werden, empfiehlt es sich, dem Benutzer in den jeweiligen Subscriptions, in denen sich die zu prüfenden Ressourcen befinden, die Rolle „Reader“ zu vergeben.

Ausführung

Das Tool wird auf GitHub (https://github.com/cirosec/AzRanger) bereitgestellt. Hier findest du ebenfalls eine kurze Anleitung. AzRanger unterstützt drei Formen der Authentifizierung:

  • Ohne Angabe von Parametern wird AzRanger interaktiv ausgeführt. So kann eine Anmeldung, wenn notwendig, auch mittels MFA durchgeführt werden.
  • Gibt man dem Tool mittels „–username“ und „–password“ Anmeldedaten mit, dann wird es nicht interaktiv ausgeführt. Hier kann es passieren, dass eine Conditional-Access-Regel den Zugriff blockiert, da MFA nicht möglich ist.
  • Zudem kann AzRanger mit einer Entra-ID-App ausgeführt werden. Dies ist aktuell noch in der Erprobung.

Ergebnis

AzRanger umfasst derzeit ca. 180 unterschiedliche Prüfungen. Ein Großteil davon prüft, ob bestimmte Einstellungen sicher konfiguriert wurden. Es gibt aber auch Prüfungen, die komplexer aufgebaut sind, beispielsweise ob ein unprivilegierter Benutzer einer höher privilegierten App Zugangsdaten hinzufügen kann.

Als Ergebnis wird ein HTML-Dokument erzeugt, das in drei Bereiche unterteilt ist: eine Ansicht für M365, eine für Azure und eine Detailansicht. In der M365- und der Azure-Ansicht werden oben zwei Halbkreise angezeigt. Der linke Halbkreis zeigt das Risikolevel an, das dem kritischsten Befund entspricht, während der rechte Halbkreis das Gesamtergebnis im Tenant angibt. Jeder Befund ist mit einem internen Score hinterlegt – je höher dieser Score, desto kritischer ist der Befund. Diese Darstellung ermöglicht eine feingranulare Einschätzung der Sicherheit des Tenants. Darüber hinaus lässt sich ablesen, ob sich die Sicherheit des Tenants zwischen zwei Audits verbessert hat.

Senior Consultant

Category
Date
Navigation

Hintergrundinformationen

In diesem Abschnitt werden einige Hintergrundinformationen erläutert, die hauptsächlich für interessierte Personen und solche, die eigene Checks implementieren wollen, relevant sind.

AzRanger ist ein von Grund auf neu entwickeltes Tool, das sowohl offizielle Schnittstellen – wie die MS-Graph-API – als auch inoffizielle APIs nutzt. Es wurde in C# und .NET implementiert. Durch die direkte Anbindung an diese Endpunkte kann das Tool wesentlich mehr Daten extrahieren, als es beispielsweise mit herkömmlichen PowerShell-Cmdlets möglich wäre. Konkret greift AzRanger derzeit auf die folgenden Endpunkte zu:

  • microsoft.com
  • windows.net (<== wird gerade von Microsoft deaktiviert)
  • microsoft.com
  • azure.com
  • compliance.protection.outlook.com
  • office365.com
  • iam.ad.ext.azure.com
  • microsoftonline.com
  • microsoftonline.com
  • interfaces.records.teams.microsoft.com

Zusätzlich wird die SharePoint-Online-API angefragt; ihre URL ist abhängig vom Namen des Tenants.

Obwohl Microsoft plant, alle Informationen über die offizielle MS-Graph-API bereitzustellen, ist derzeit keine vollständige Feature-Vergleichbarkeit absehbar – und ich bezweifle, dass diese jemals erreicht wird.

AzRanger verwendet aktuell drei verschiedene Public-First-Party-Clients, um die APIs abzurufen. Der Einsatz von First-Party-Clients bietet den Vorteil, dass keine zusätzliche Zustimmung (Consent) erforderlich ist, da diese Clients standardmäßig in Entra ID integriert sind. Es genügt, das Tool mit einem Benutzer zu starten, der über die notwendigen Berechtigungen (siehe Voraussetzung) verfügt. Nachteilig ist jedoch, dass bis zu drei Anmeldungen notwendig sein können.

Konkret nutzt AzRanger die folgenden Clients:

  • Azure Active Directory PowerShell (1b730954-1685-4b74-9bfd-dac224a7b894)
  • Power Automate Desktop For Windows (386ce8c0-7421-48c9-a1df-2a532400339f)
  • Microsoft SharePoint Online Management Shell (9bc3ab49-b65d-410a-85ad-de819febfddc)

Mehr Informationen zum Thema First-Party-Apps von Microsoft sind unter https://learn.microsoft.com/en-us/power-platform/admin/apps-to-allow zu finden.

Architektur

AzRanger ist aus drei Teilen aufgebaut:

  1. Collectors: Diese Komponente sammelt die notwendigen Informationen und erzeugt ein großes Objekt, das alle Daten über den Tenant enthält. (Kann mittels „–dump“ auch ausgelesen werden oder findige Anwender finden es im JavaScript-Code.)
  2. Enrichment-Engine: Diese Komponente erweitert die gesammelten Daten um zusätzlichen Kontext. Zum Beispiel weist sie den Benutzerobjekten Conditional-Access-Regeln zu.
  3. Rule-Engine: Diese Komponente führt dann letztendlich die einzelnen Prüfungen auf den erzeugten Daten durch.

Die Enrichment-Engine kam erst später dazu. Sie erleichtert die Implementierung von Prüfungen, da die Logik zur Verknüpfung von Daten innerhalb von Prüfungen nicht mehr notwendig ist und an einer zentralen Stelle erfolgen kann. Das ist besonders dann hilfreich, wenn diese Verknüpfung in mehreren Checks durchgeführt werden muss. Die Komponenten werden nacheinander ausgeführt.

Der Aufbau ermöglicht es, AzRanger einfach zu erweitern. Um beispielsweise eine neue Prüfung anzulegen, muss im Ordner „Checks/Rules“ lediglich eine neue Klasse mit dem folgenden Aufbau angelegt werden:

namespace AzRanger.Checks.Rules
{
  class DemoCheck : BaseCheck
  {
      public override CheckResult Audit(Tenant tenant)
      {
          bool passed = false;
        // Do some checks
          if (passed)
          {
              return CheckResult.NoFinding;
          }
          return CheckResult.Finding;
      }
  }
}

Um eine geeignete Dokumentation für die Ausgabe zu erhalten, muss unter „Resources“ die Datei RuleInformation.toml erweitert werden. Das kann beispielsweise so aussehen:

[DemoCheck]
score = 5
short = "Some Magic Check"
risk = "There is no magic in your tenant"
solution = """
Do this and that
"""
scope = "AAD"
maturity = 1

Zu beachten ist nur, dass die Überschrift so heißt wie die Klasse, hier „DemoCheck“. Im Anschluss muss AzRanger neu kompiliert werden. Die Checks werden beim Programmstart automatisch aus dem angelegten Verzeichnis geladen.

Reporting

Die Ausgabe erfolgt in Form eines HTML-Reports. Die Darstellung im Report ist vom Code in AzRanger unabhängig. Letztendlich erzeugt AzRanger zwei JSON-Dateien – report.js und data.js – die vom JavaScript im Report verarbeitet werden können. Das vereinfacht zum einen Anpassungen im Report. Zum anderen können sich interessierte Anwender die Dateien auch direkt anschauen. So bekommt man einen Überblick über die Datenstruktur in AzRanger und kann diese bei Bedarf auch maschinell selbst weiterverarbeiten.

Further blog articles

Red Teaming

Windows Instrumen­tation Call­backs – Part 4

February 10, 2026 – In this blog post we will cover ICs from a more theoretical standpoint. Mainly restrictions on unsetting them, how set ICs can be detected and how new ones can be prevented from being set. Spoiler: this is not entirely possible.

Author: Lino Facco

Mehr Infos »
Reverse Engineering

Windows Instrumen­tation Call­backs – Part 3

January 28, 2026 – In this third part of the blog series, you will learn how to inject shellcode into processes with ICs as an execution mechanism without creating any new threads for your payload and without installing a vectored exception handler.

Author: Lino Facco

Mehr Infos »
Do you want to protect your systems? Feel free to get in touch with us.
Search
Search