
Azure RedOps ist ein Toolkit für offensive Sicherheit zur Bewertung der Sicherheitslage von Microsoft Entra ID.
Ein Schweizer Taschenmesser für Azure / Entra ID Red Teaming.
Autor: Mr.Un1k0d3r (TrueCyber Inc) Version: 0.1 Sprache: Python 3.12+
AzureRedOps ist ein offensives Security-Toolkit zur Bewertung der Sicherheitslage von Microsoft Entra ID- und Azure-Mandanten. Es fasst die gängigsten Red-Team-Workflows — Authentifizierung, Token-Verwaltung, Verzeichnisenummerierung, Privilegienprüfung, Password Spraying und Post-Exploitation-Aktionen gegen Microsoft Graph — hinter einer konsistenten, durch --activity gesteuerten CLI zusammen.
Jeder Vorgang wird mit -a/--activity ausgewählt. Während der Authentifizierung erhaltene Token können lokal (.azure_creds) zwischengespeichert und mit -l/--load-access-token namentlich wiederverwendet werden, sodass Sie selten rohe JWTs einfügen müssen.
Erfahren Sie mehr über das Tool auf dem CYPFER-Blog.
.azure_creds). Jeder Flow kann seine Token automatisch mit -s/--save + -n/--name persistieren.auth) — direkte Benutzername/Passwort-Authentifizierung.phish-start / phish-capture) — Missbrauch des OAuth-Geräteautorisierungs-Grants, um Token zu erfassen, die ausgegeben werden, wenn ein Ziel Ihren Benutzercode auf microsoft.com/devicelogin eingibt. Standardmäßig automatische Erfassung.auth-app) — vollständiger Authorization-Code + PKCE-Flow gegen eine benutzerdefinierte Anwendungsregistrierung, bereitgestellt durch einen eingebauten lokalen HTTPS-Listener, der die Weiterleitung empfängt.auth-interactive) — Steuerung eines echten Browsers (Playwright; standardmäßig Firefox, mit -br umschaltbar) (bewältigt MFA / Conditional Access / SSO), dann Ernte aller Token aus der aufgezeichneten Session-HAR.refresh) — Tausch eines Refresh-Tokens gegen frische Zugriffstoken.obo) — Austausch eines bereits ausgestellten Zugriffstokens gegen ein neues Token für eine nachgelagerte Ressource (OAuth 2.0 jwt-bearer / OBO).browser-sso) — Öffnen eines echten Browsers, der bereits als Benutzer authentifiziert ist, direkt in die Ziel-Webanwendung (Outlook im Web, Teams, SharePoint, das Azure-Portal, ...). Mit -aprt/--auto-prt wird automatisch ein Primary Refresh Token (PRT)-Cookie aus einem Refresh-Token erstellt (Geräteregistrierung → PRT → x-ms-RefreshTokenCredential), sodass ein neuer Browser Single Sign-On ohne manuelle Anmeldung durchführt.gather-all.spray) und Cross-App-Refresh-Token-Spraying (spray-refresh).magic-app findet öffentlich umleitbare Apps mit AllPrincipals-Zustimmung; integrierte Listen bekannter/interessanter Microsoft-App-IDs.requirements.txt):
PyJWTrequestsplaywrightcryptography (nur benötigt für browser-sso -aprt, den Auto-PRT-Flow)auth-interactive, browser-sso). Firefox ist die Standard-Engine (-br/--browser); installieren Sie es mit python -m playwright install firefox.includes/web/cert.pem und includes/web/key.pem (nur benötigt für den auth-app PKCE-Flow — siehe Hinweise).git clone AzureRedOps cd AzureRedOps
python3 -m venv AzureRedOps source AzureRedOps/bin/activate # Linux / macOS
pip install -r requirements.txt
python -m playwright install firefox
Tool ausführen:```bash
python3 AzureRedOps.py -a <activity> [options]
Das allgemeine Aufrufmuster lautet:```bash python3 AzureRedOps.py -a [authentication] [activity options] [global options]
### Bereitstellen eines Tokens
Aktivitäten, die Microsoft Graph aufrufen, benötigen ein Zugriffstoken. Sie können es auf zwei Arten bereitstellen:
| Methode | Flag | Beispiel |
|--------|------|---------|
| Ein rohes Token übergeben | `-ac, --access-token` | `-ac eyJ0eXAi...` |
| Ein zwischengespeichertes Token nach Namen laden | `-l, --load-access-token` | `-l mytoken` |
Wenn `-l` verwendet wird, werden das passende `access_token` (und, falls relevant, `refresh_token` und `tenant`) aus dem `.azure_creds`-Speicher gelesen.
### Speichern von Token in einer Datei (`-s` / `-n`)
Jede Aktivität, die Token abruft (`auth`, `auth-app`, `auth-interactive`, `phish-start`/`phish-capture`, `refresh`), kann sie **automatisch** im lokalen Anmeldeinformationsspeicher (`.azure_creds`) speichern, indem `-s/--save` zusammen mit `-n/--name` angegeben wird:```bash
# Authenticate and save the resulting tokens under the name "victim1"
python3 AzureRedOps.py -a auth -u [email protected] -p 'P@ssw0rd!' -tid <tenant-guid> -s -n victim1
-s/--save aktiviert die automatische Speicherung; es erfordert -n/--name — das Tool beendet sich mit einem Fehler, wenn -n fehlt.-n/--name ist der Schlüssel, unter dem das Token gespeichert wird. Sie können es später mit -l victim1 wiederverwenden, anstatt das rohe JWT einzufügen, es mit -a view -n victim1 anzeigen oder mit -a delete -n victim1 löschen.auth-interactive-Aktivität speichert immer automatisch und fordert Sie interaktiv zur Eingabe eines Namens auf, wenn -n nicht angegeben ist.-j)Die meisten Aufzählungsaktivitäten (list-users, list-applications, list-principals, gather-all, raw-url) akzeptieren -j/--json <dateiname>, um die rohe API-Antwort in eine JSON-Datei zu schreiben, anstatt (oder zusätzlich zu) der Anzeige:```bash
python3 AzureRedOps.py -a list-users -l victim1 -j users.json
For `gather-all`, the supplied filename is used as a suffix and one file is written
per Graph endpoint (e.g. `users-<name>`, `groups-<name>`, ...).
> Tip: `-j` controls structured JSON export, while `-re/--redirect-to-file` mirrors
> the formatted console output to `output.txt`. The two are independent.
### Tenant identifiers
- `-t, --tenant` expects a **domain name** (e.g. `contoso.com`) and is used by the `id` activity.
- `-tid, --tenant-id` expects a **tenant GUID** or `common`, used by the authentication activities.
---
## Command-Line Options