
Azure AD Password Checker
En un entorno de Azure AD, es posible determinar si un usuario tiene la autenticación multifactor (MFA) deshabilitada sin requerir privilegios especiales. Esto se puede lograr analizando la fecha de creación de la cuenta y la fecha del último cambio de contraseña.
Si la fecha y hora de creación de una cuenta coinciden con la fecha y hora del último cambio de contraseña, puede indicar que no ha habido interacción humana desde que se creó la cuenta y que el usuario no ha podido habilitar la autenticación multifactor (MFA) ni cambiar su contraseña. Y hay otras "anomalías", como que la fecha de cambio de contraseña sea anterior a la fecha de creación. Esto sugiere también que la autenticación multifactor (MFA) no se pudo habilitar porque el usuario aún no había sido creado.
Actualización del 16-10-2023:
Actualización del 18-02-2024:
Esta información puede ser útil para identificar posibles riesgos de seguridad diseñados para uso tanto de equipos rojos como azules.
Se necesita el archivo de base de datos roadrecon o el archivo JSON extraído con la opción --code-javascript para esta herramienta.
La herramienta roadrecon está desarrollada por dirkjanm y se puede descargar en github https://github.com/dirkjanm/ROADtools o pip install roadrecon.
Cómo usarlo, ver:
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 - Este es un analizador para el archivo JSON generado o el archivo de base de datos roadrecon diseñado para uso tanto de equipos rojos como azules.
La base de datos se puede crear al usar la opción --code-javascript para extraer el archivo 'merged_users.json', que se creará para luego ingresar este archivo con el argumento --json-input.
¡Y también se puede usar el archivo roadrecon.db generado por roadrecon! roadrecon está desarrollado por https://github.com/dirkjanm, ¡créditos para él!
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 o el archivo js en la carpeta:Sigue estos pasos para obtener una lista de usuarios junto con su información de cuenta utilizando el script proporcionado.
Inicia sesión en Azure Portal
Accede a Administración de usuarios
Abre las herramientas de desarrollo
F12 en tu navegador web para abrir las herramientas de desarrollo.Ejecuta el script
Obtén UsersList y UserInfo
Descarga la información de usuario combinada
merged_users.json si todo salió bien.Ejecuta en Azure AD Password Checker
azurepwchecker.py --json-input merged_users.jsonVer ejemplo:
Ver introducción:
Actualización 16-10-2023:

Cómo usar el argumento --code-javascript para generar una lista de usuarios en el Portal de Azure, que luego se puede importar con el comando azurepwchecker.py --json-input merged_users.json:
Actualización 13-02-2024:
Subí una versión editada de GraphRunner de @dafthack y créditos para él. En esta versión modificada, he añadido una nueva funcionalidad que te permite leer archivos HAR directamente desde el dispositivo de la "víctima". Esta nueva función ayuda a verificar y examinar los Access Tokens para acceder a diferentes permisos o ámbitos. Además, si un Access Token ha expirado, esta versión permite el uso de un Refresh Token para crear un nuevo Access Token. Este proceso es sensible al tiempo, pero elimina la necesidad de nombres de usuario y contraseñas, si ya has iniciado sesión en el entorno de Office365, ya que solo requiere los tokens de sesión que se encuentran en los archivos HAR.
Por favor, comprende que el código puede parecer un poco desorganizado. Mi experiencia no es principalmente en JavaScript, así que mi enfoque principal fue añadir nuevas funcionalidades en lugar de organizar el código.
Descarga los archivos HAR; puedes usar las herramientas de desarrollo disponibles en los navegadores web. En la mayoría de los navegadores, simplemente presiona F12 para abrir las herramientas de desarrollo, luego navega a la pestaña 'Network' para guardar los archivos HAR, después de actualizar la página web: video
Sube tus archivos HAR a través de la interfaz proporcionada. Una vez subidos, puedes navegar a través de varios Access Tokens para analizar los detalles de la sesión, incluidos sus ámbitos y más. Los tokens mostrados en rojo indican que han expirado. GraphRunner también admite el uso de Refresh Tokens para generar nuevos Access Tokens válidos cuando sea necesario: video
Funcionalidades añadidas para permitir la descarga de datos completos de usuarios en un archivo JSON, detectar anomalías de MFA en cuentas y descargar una lista de estas anomalías: video