In einer Azure AD-Umgebung ist es möglich, ohne besondere Berechtigungen zu ermitteln, ob für einen Benutzer die Multi-Faktor-Authentifizierung (MFA) deaktiviert ist. Dies kann durch die Analyse des Erstellungsdatums des Kontos und des Datums der letzten Passwortänderung erreicht werden.
Wenn das Erstellungsdatum und die Uhrzeit eines Kontos mit dem Datum und der Uhrzeit der letzten Passwortänderung übereinstimmen, kann dies darauf hindeuten, dass seit der Erstellung des Kontos keine menschliche Interaktion stattgefunden hat und der Benutzer die Multi-Faktor-Authentifizierung (MFA) nicht aktivieren oder ändern konnte Passwort. Und es gibt noch andere „Anomalien“, wie zum Beispiel, dass das Datum der Passwortänderung älter ist als das Erstellungsdatum. Dies deutet auch darauf hin, dass die Multi-Faktor-Authentifizierung (MFA) nicht aktiviert werden konnte, da der Benutzer noch nicht erstellt wurde!
Update vom 16.10.2023:
Update vom 18.02.2024:
Diese Informationen können nützlich sein, um potenzielle Sicherheitsrisiken zu identifizieren, die sowohl für rote als auch für blaue Teams gedacht sind.
Für dieses Tool wird die Roadrecon-Datenbankdatei oder JSON-Datei benötigt, die mit Hilfe der Option --code-javascript extrahiert wurde. Das Roadrecon-Tool wurde von dirkjanm entwickelt und kann auf Github https://github.com/dirkjanm/ROADtools oder pip install roadrecon
heruntergeladen werden.
Zur Verwendung siehe:
python3 azurepwchecker.py
usage: azurepwchecker.py [-h] [--roadrecon-dump] [--roadrecon-dump-mfa] [-d DB] [-m] [-l] [-ll] [-lll] [-la] [-lo]
[-ji JSON_INPUT] [-c]
Azure AD Password Checker - This is a parser for generated JSON file or the roadrecon database file designed for use by both red and blue teams.
Database can be created when using --code-javascript option to extract 'merged_users.json' file with be created to later input this file with --json-input argument.
And roadrecon generated roadrecon.db file can be used! roadrecon is developed by https://github.com/dirkjanm credits to him!
options:
-h, --help show this help message and exit
-d DB, --db DB Specify the path to the 'roadrecon.db' database file, default is this location
-m, --mfa-list User Accounts without MFA (No privileged user required)! This argument helps identify user
accounts that have not enabled Multi-Factor Authentication (MFA). If an account's creation
date and time match its last password change date and time, it may indicate that no human
interaction has occurred since the account was created, and the user has not been able to
enable MFA or change their password. And there are other 'anomalies' such as the password
change date being older than the creation date. This suggests also that Multi-Factor
Authentication (MFA) couldn't be enabled because the User wasn't created yet! :-]
-mo OUTFILE, --outfile OUTFILE
Output users with MFA anomalies to file
-l, --pw-month User accounts that had their passwords changed last month
-ll, --pw-year User accounts that had their passwords changed last year
-lll, --pw-older User accounts that haven't changed their passwords in a long time, oldest first
-la, --admin User accounts that are members of 'Admin' named groups, including 'Global Reader'
-lo, --out-of-hours User password change that occurred outside of office hours, specifically between 5:00 PM
(17:00) and 8:00 AM (08:00) on weekdays, as well as on Saturdays and Sundays
-ji JSON_INPUT, --json-input JSON_INPUT
Provide the JSON file imported from your web browser's console using JavaScript. For
'createdDateTime' and 'lastPasswordChange' details, ensure you download the JSON output using
the '--code-javascript' option.
-c, --code-javascript
Perform extraction even if 'azurepwchecker.py' or 'roadrecon' is unavailable. This script
enables extraction through the JavaScript console of a web browser. To proceed, ensure you
have a valid account to log in at https://portal.azure.com/#view/Microsoft_AAD_UsersAndTenants
/UserManagementMenuBlade/~/AllUsers or an active session on a computer. Copy and paste the
provided JavaScript code into the browser's console. Once the session is validated and you
have the necessary permissions, a JSON file named 'merged_users.json' will be generated. You
can then import it using the following command as example: 'azurepwchecker.py --json-input
merged_users.json -m'
-v, --version show program's version number and exit
run roadrecon first:
(Run the following command to install the tool "pip install roadrecon)"
--roadrecon-dump "roadrecon dump" command or do it with roadrecon
--roadrecon-dump-mfa "roadrecon dump --mfa" command (requires privileged access) or do it with roadrecon
azurepwchecker.py --code-javascript
oder js im Ordner:Befolgen Sie diese Schritte, um mithilfe des bereitgestellten Skripts eine Liste der Benutzer zusammen mit ihren Kontoinformationen abzurufen.
Melden Sie sich beim Azure-Portal an
Greifen Sie auf die Benutzerverwaltung zu
Öffnen Sie die Entwicklertools
F12
in Ihrem Webbrowser, um die Entwicklertools zu öffnen.Führen Sie das Skript aus
Rufen Sie UsersList und UserInfo ab
Laden Sie zusammengeführte Benutzerinformationen herunter
merged_users.json
generiert.Führen Sie die Azure AD-Kennwortprüfung aus
azurepwchecker.py --json-input merged_users.json
Siehe Beispiel:
Siehe Einleitung:
Update 16.10.2023:
So generieren Sie mit dem Argument --code-javascript
eine Liste von Benutzern im Azure-Portal, die dann mit dem Befehl azurepwchecker.py --json-input merged_users.json
importiert werden kann:
Update 13.02.2024:
Ich habe eine bearbeitete Version von GraphRunner von @dafthack hochgeladen und ihm die Danksagungen gegeben. In dieser modifizierten Version habe ich eine neue Funktion hinzugefügt, mit der Sie HAR-Dateien direkt vom Gerät des „Opfers“ lesen können. Diese neue Funktion hilft beim Überprüfen und Untersuchen von Zugriffstokens, um auf verschiedene Berechtigungen oder Bereiche zuzugreifen. Wenn ein Zugriffstoken abgelaufen ist, ermöglicht diese Version außerdem die Verwendung eines Aktualisierungstokens zum Erstellen eines neuen Zugriffstokens. Dieser Vorgang ist zeitkritisch, macht jedoch die Eingabe von Benutzernamen und Passwörtern überflüssig, wenn Sie sich bereits in der Office365-Umgebung angemeldet haben, da nur die in HAR-Dateien enthaltenen Sitzungstoken erforderlich sind.
Bitte haben Sie Verständnis dafür, dass der Code möglicherweise etwas unorganisiert erscheint. Meine Fachkenntnisse liegen nicht in erster Linie in JavaScript, daher lag mein Hauptaugenmerk auf dem Hinzufügen neuer Funktionen und nicht auf der Organisation des Codes.
Laden Sie HAR-Dateien herunter. Sie können die in Webbrowsern verfügbaren Entwicklungstools verwenden. Drücken Sie bei den meisten Browsern einfach F12, um die Entwicklungstools zu öffnen, und navigieren Sie dann nach dem Aktualisieren der Webseite: Video zur Registerkarte „Netzwerk“, um die HAR-Dateien zu speichern
Laden Sie Ihre HAR-Datei(en) über die bereitgestellte Schnittstelle hoch. Nach dem Hochladen können Sie durch verschiedene Zugriffstoken navigieren, um Sitzungsdetails, einschließlich ihrer Bereiche und mehr, zu analysieren. Rot angezeigte Token zeigen an, dass sie abgelaufen sind. GraphRunner unterstützt auch die Verwendung von Refresh-Tokens, um bei Bedarf neue, gültige Zugriffstoken zu generieren: Video
Funktionen hinzugefügt, um das Herunterladen vollständiger Benutzerdaten in einer JSON-Datei zu ermöglichen, MFA-Anomalien in Konten zu erkennen und eine Liste dieser Anomalien herunterzuladen: Video