
Azure AD Password Checker
В среде Azure AD можно определить, отключена ли у пользователя многофакторная проверка подлинности (MFA), без необходимости в каких-либо особых привилегиях. Это можно сделать, проанализировав дату создания учётной записи и дату последнего изменения пароля.
Если дата и время создания учётной записи совпадают с датой и временем последнего изменения пароля, это может указывать на то, что с момента создания учётной записи не было никакого взаимодействия с человеком, и пользователь не смог включить многофакторную проверку подлинности (MFA) или изменить свой пароль. Существуют и другие «аномалии», например, когда дата изменения пароля старше даты создания. Это также говорит о том, что многофакторная проверка подлинности (MFA) не могла быть включена, потому что пользователь ещё не был создан!
Обновление от 16-10-2023:
Обновление от 18-02-2024:
Эта информация может быть полезна для выявления потенциальных угроз безопасности и предназначена для использования как красными, так и синими командами.
Для работы этого инструмента требуется файл базы данных roadrecon или JSON-файл, извлечённый с помощью опции --code-javascript. Инструмент Roadrecon разработан dirkjanm и может быть загружен с github или .
pip install roadreconКак использовать, см.:
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 или js-файл из папки:Выполните следующие действия, чтобы получить список пользователей вместе с информацией об их учётных записях с помощью предоставленного скрипта.
Войдите на портал Azure
Откройте раздел управления пользователями
Откройте инструменты разработчика
F12 в веб-браузере, чтобы открыть инструменты разработчика.Выполните скрипт
Получите UsersList и UserInfo
Загрузите объединённую информацию о пользователях
merged_users.json.Запустите Azure AD Password Checker
azurepwchecker.py --json-input merged_users.jsonСм. пример:
См. вступление:
Обновление от 16-10-2023:

Как использовать аргумент --code-javascript для создания списка пользователей на портале Azure, который затем можно импортировать с помощью команды azurepwchecker.py --json-input merged_users.json:
Обновление от 13-02-2024:
Я загрузил отредактированную версию GraphRunner от @dafthack, и ему за это спасибо. В этой изменённой версии я добавил новую функцию, которая позволяет читать HAR-файлы прямо с устройства «жертвы». Эта новая функция помогает проверять и анализировать токены доступа (Access Tokens) для получения доступа к различным разрешениям или областям (scopes). Кроме того, если срок действия токена доступа истёк, эта версия позволяет использовать токен обновления (Refresh Token) для создания нового токена доступа. Этот процесс чувствителен ко времени, но он устраняет необходимость в именах пользователей и паролях, если вы уже вошли в среду Office365, поскольку требует только токены сеанса, найденные в HAR-файлах.
Пожалуйста, поймите, что код может показаться немного неорганизованным. Мой опыт в основном не связан с JavaScript, поэтому я сосредоточился на добавлении новых функций, а не на организации кода.
Загрузите HAR-файл(ы), используя инструменты разработчика, доступные в веб-браузерах. Для большинства браузеров просто нажмите F12, чтобы открыть инструменты разработчика, затем перейдите на вкладку 'Network' (Сеть), чтобы сохранить HAR-файлы, после обновления веб-страницы: video
Загрузите свой HAR-файл(ы) через предоставленный интерфейс. После загрузки вы можете просматривать различные токены доступа для анализа деталей сеанса, включая их области действия и многое другое. Токены, отображаемые красным цветом, указывают на то, что срок их действия истёк. GraphRunner также поддерживает использование токенов обновления для создания новых действительных токенов доступа при необходимости: video
Добавлены функции, позволяющие загружать полные данные пользователей в JSON-файл, обнаруживать аномалии MFA в учётных записях и загружать список этих аномалий: video