Dans un environnement Azure AD, il est possible de déterminer si l'authentification multifacteur (MFA) d'un utilisateur est désactivée sans nécessiter de privilèges spéciaux. Cela peut être accompli en analysant la date de création du compte et la date du dernier changement de mot de passe.
Si la date et l'heure de création d'un compte correspondent à la date et à l'heure du dernier changement de mot de passe, cela peut indiquer qu'aucune interaction humaine n'a eu lieu depuis la création du compte et que l'utilisateur n'a pas pu activer l'authentification multifacteur (MFA) ou modifier son identifiant. mot de passe. Et il existe d'autres « anomalies », comme la date de changement de mot de passe qui est antérieure à la date de création. Cela suggère également que l'authentification multifacteur (MFA) n'a pas pu être activée car l'utilisateur n'a pas encore été créé !
Mise à jour du 16-10-2023 :
Mise à jour le 18-02-2024 :
Ces informations peuvent être utiles pour identifier les risques de sécurité potentiels conçus pour être utilisés par les équipes rouges et bleues.
Le fichier de base de données roadrecon ou le fichier JSON qui a été extrait à l'aide de l'option --code-javascript est nécessaire pour cet outil. L'outil Roadrecon est développé par dirkjanm et peut être téléchargé sur github https://github.com/dirkjanm/ROADtools ou pip install roadrecon
.
Comment utiliser voir :
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
ou js dans le dossier :Suivez ces étapes pour récupérer une liste d'utilisateurs ainsi que les informations de leur compte à l'aide du script fourni.
Connectez-vous au portail Azure
Accéder à la gestion des utilisateurs
Outils de développement ouverts
F12
sur votre navigateur Web pour ouvrir les outils de développement.Exécuter le script
Récupérer la liste des utilisateurs et les informations utilisateur
Télécharger les informations utilisateur fusionnées
merged_users.json
sera généré si tout s'est bien passé.Exécuter sur le vérificateur de mot de passe Azure AD
azurepwchecker.py --json-input merged_users.json
Voir exemple :
Voir l'introduction :
Mise à jour du 16-10-2023 :
Comment utiliser l'argument --code-javascript
pour générer une liste d'utilisateurs sur le portail Azure, qui peut ensuite être importée à l'aide de la commande azurepwchecker.py --json-input merged_users.json
:
Mise à jour du 13-02-2024 :
J'ai téléchargé une version éditée de GraphRunner depuis @dafthack et je lui ai attribué des crédits. Dans cette version modifiée, j'ai ajouté une nouvelle fonctionnalité qui vous permet de lire les fichiers HAR directement depuis l'appareil de la « victime ». Cette nouvelle fonction permet de vérifier et d'examiner les jetons d'accès pour accéder à différentes autorisations ou étendues. De plus, si un jeton d'accès a expiré, cette version permet d'utiliser un jeton d'actualisation pour créer un nouveau jeton d'accès. Ce processus est urgent, mais il supprime le besoin de noms d'utilisateur et de mots de passe si vous êtes déjà connecté à l'environnement Office365, car il nécessite uniquement les jetons de session trouvés dans les fichiers HAR.
Veuillez comprendre que le code peut sembler un peu désorganisé. Mon expertise n'est pas principalement en JavaScript, donc mon objectif principal était d'ajouter de nouvelles fonctionnalités plutôt que d'organiser le code.
Téléchargez le(s) fichier(s) HAR, vous pouvez utiliser les outils de développement disponibles dans les navigateurs Web. Pour la plupart des navigateurs, appuyez simplement sur F12 pour ouvrir les outils de développement, puis accédez à l'onglet « Réseau » pour enregistrer les fichiers HAR, après avoir actualisé la page Web : vidéo
Téléchargez votre (vos) fichier(s) HAR via l'interface fournie. Une fois téléchargé, vous pouvez parcourir différents jetons d'accès pour analyser les détails de la session, y compris leurs portées et bien plus encore. Les jetons affichés en rouge indiquent qu'ils ont expiré. GraphRunner prend également en charge l'utilisation de jetons d'actualisation pour générer de nouveaux jetons d'accès valides si nécessaire : vidéo
Ajout de fonctionnalités pour permettre le téléchargement des données utilisateur complètes dans un fichier JSON, détecter les anomalies MFA dans les comptes et télécharger une liste de ces anomalies : vidéo