En un entorno de Azure AD, es posible determinar si un usuario tiene la autenticación multifactor (MFA) deshabilitada sin necesidad de 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 se ha producido ninguna 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 se creó!
Actualización del 16-10-2023:
Actualización el 18-02-2024:
Esta información puede ser útil para identificar posibles riesgos de seguridad diseñados para ser utilizados tanto por los equipos rojos como por los azules.
Para esta herramienta se necesita el archivo de base de datos roadrecon o el archivo JSON que se ha extraído con la ayuda de la opción --code-javascript. La herramienta Roadrecon está desarrollada por dirkjanm y se puede descargar en github https://github.com/dirkjanm/ROADtools o pip install roadrecon
.
Cómo utilizar 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 - 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
o js en la carpeta:Siga estos pasos para recuperar una lista de usuarios junto con la información de su cuenta utilizando el script proporcionado.
Inicie sesión en el Portal de Azure
Acceder a Gestión de Usuarios
Abrir herramientas de desarrollador
F12
en su navegador web para abrir las herramientas de desarrollador.Ejecutar el script
Recuperar lista de usuarios e información de usuario
Descargar información de usuario fusionada
merged_users.json
si todo salió bien.Ejecutar en el Comprobador de contraseñas de Azure AD
azurepwchecker.py --json-input merged_users.json
Ver ejemplo:
Ver introducción:
Actualización 16-10-2023:
Cómo usar el argumento --code-javascript
para generar una lista de usuarios en Azure Portal, que luego se puede importar usando el comando azurepwchecker.py --json-input merged_users.json
:
Actualización 13-02-2024:
Subí la versión editada de GraphRunner de @dafthack y créditos para él. En esta versión modificada, agregué una nueva característica que le permite leer archivos HAR directamente desde el dispositivo de la "víctima". Esta nueva función ayuda a verificar y examinar los tokens de acceso para acceder a diferentes permisos o ámbitos. Además, si un token de acceso ha caducado, esta versión permite el uso de un token de actualización para crear un nuevo token de acceso. Este proceso es urgente, pero elimina la necesidad de nombres de usuario y contraseñas, si ya ha 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, comprenda que el código puede parecer un poco desorganizado. Mi experiencia no es principalmente en JavaScript, por lo que mi enfoque principal fue agregar nuevas funciones en lugar de organizar el código.
Descargue los archivos HAR y puede utilizar las herramientas de desarrollo disponibles en los navegadores web. Para la mayoría de los navegadores, simplemente presione F12 para abrir las Herramientas de desarrollo, luego navegue hasta la pestaña 'Red' para guardar los archivos HAR, después de actualizar la página web: video
Cargue sus archivos HAR a través de la interfaz proporcionada. Una vez cargado, puede navegar a través de varios tokens de acceso para analizar los detalles de la sesión, incluidos sus alcances y más. Los tokens que se muestran en rojo indican que han caducado. GraphRunner también admite el uso de Refresh Tokens para generar tokens de acceso nuevos y válidos cuando sea necesario: vídeo
Funciones agregadas para permitir la descarga de datos completos del usuario en un archivo JSON, detectar anomalías de MFA en cuentas y descargar una lista de estas anomalías: video