В среде Azure AD можно определить, отключена ли у пользователя многофакторная проверка подлинности (MFA), не требуя каких-либо специальных привилегий. Это можно сделать, проанализировав дату создания учетной записи и дату последней смены пароля.
Если дата и время создания учетной записи совпадают с датой и временем последней смены пароля, это может указывать на то, что с момента создания учетной записи не было никакого взаимодействия с человеком, и пользователь не смог включить многофакторную аутентификацию (MFA) или изменить свою учетную запись. пароль. Есть и другие «аномалии», например, дата смены пароля старше даты создания. Это также означает, что многофакторную аутентификацию (MFA) невозможно включить, поскольку пользователь еще не создан!
Обновление от 16.10.2023:
Обновление от 18 февраля 2024 г.:
Эта информация может быть полезна для выявления потенциальных угроз безопасности, предназначенных для использования как красными, так и синими командами.
Для этого инструмента необходим файл базы данных roadrecon или файл JSON, извлеченный с помощью опции --code-javascript. Инструмент Roadrecon разработан dirkjanm, и его можно загрузить на github https://github.com/dirkjanm/ROADtools или 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
в веб-браузере, чтобы открыть инструменты разработчика.Выполнить сценарий
Получить список пользователей и информацию о пользователях
Загрузить информацию об объединенном пользователе
merged_users.json
.Запустите средство проверки паролей Azure AD.
azurepwchecker.py --json-input merged_users.json
См. пример:
Смотрите введение:
Обновление от 16 октября 2023 г.:
Как использовать аргумент --code-javascript
для создания списка пользователей на портале Azure, который затем можно импортировать с помощью команды azurepwchecker.py --json-input merged_users.json
:
Обновление от 13.02.2024:
Я загрузил отредактированную версию GraphRunner от @dafthack и благодарю его. В этой модифицированной версии я добавил новую функцию, которая позволяет читать HAR-файлы непосредственно с устройства «жертвы». Эта новая функция помогает проверять и изучать токены доступа для доступа к различным разрешениям или областям. Кроме того, если срок действия токена доступа истек, эта версия позволяет использовать токен обновления для создания нового токена доступа. Этот процесс чувствителен ко времени, но он устраняет необходимость в именах пользователей и паролях, если вы уже вошли в среду Office365, поскольку для него требуются только токены сеанса, найденные в файлах HAR.
Пожалуйста, поймите, что код может показаться немного неорганизованным. Мой опыт не связан в первую очередь с JavaScript, поэтому я сосредоточился на добавлении новых функций, а не на организации кода.
Загрузите файл(ы) HAR, используя инструменты разработки, доступные в веб-браузерах. В большинстве браузеров просто нажмите F12, чтобы открыть инструменты разработки, затем перейдите на вкладку «Сеть», чтобы сохранить файлы HAR, после обновления веб-страницы: видео
Загрузите файлы HAR через предоставленный интерфейс. После загрузки вы можете перемещаться по различным токенам доступа для анализа деталей сеанса, включая их области действия и многое другое. Токены, отображаемые красным цветом, указывают на то, что срок их действия истек. GraphRunner также поддерживает использование токенов обновления для создания новых действительных токенов доступа, когда это необходимо: видео
Добавлены функции, позволяющие загружать полные пользовательские данные в файл JSON, обнаруживать аномалии MFA в учетных записях и загружать список этих аномалий: видео