在 Azure AD 環境中,無需任何特殊權限即可確定使用者是否停用了多重驗證 (MFA)。這可以透過分析帳戶的建立日期和上次密碼變更日期來完成。
如果帳戶的建立日期和時間與其上次密碼變更日期和時間相匹配,則可能表示自該帳戶建立以來未發生任何人工交互,且使用者無法啟用多重驗證 (MFA) 或變更其密碼密碼。還有其他“異常”,例如密碼更改日期早於創建日期。這也表明無法啟用多重身份驗證 (MFA),因為尚未建立使用者!
2023 年 10 月 16 日更新:
2024 年 2 月 18 日更新:
此資訊可用於識別設計供紅隊和藍隊使用的潛在安全風險。
此工具需要使用 --code-javascript 選項提取的 roadrecon 資料庫檔案或 JSON 檔案。 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
請參閱範例:
請參閱簡介:
2023 年 10 月 16 日更新:
如何使用--code-javascript
參數在 Azure 入口網站上產生使用者列表,然後可以使用命令azurepwchecker.py --json-input merged_users.json
匯入該列表:
2024 年 2 月 13 日更新:
我從 @dafthack 上傳了 GraphRunner 的編輯版本並感謝他。在此修改版本中,我新增了一項新功能,可讓您直接從「受害者」裝置讀取 HAR 檔案。此新功能有助於檢查和檢查存取權杖以存取不同的權限或範圍。此外,如果存取權杖已過期,此版本允許使用刷新令牌來建立新的存取權杖。此過程對時間敏感,但如果您已經登入 Office365 環境,則無需輸入使用者名稱和密碼,因為它只需要在 HAR 檔案中找到的會話令牌。
請理解,程式碼可能看起來有點混亂。我的專業知識主要不是 JavaScript,因此我的主要關注點是添加新功能而不是組織程式碼。
下載 HAR 文件,您可以使用 Web 瀏覽器中提供的開發工具。對於大多數瀏覽器,只需按 F12 開啟開發工具,然後導航至「網頁」標籤以保存 HAR 文件,刷新網頁後:
透過提供的介面上傳您的 HAR 檔案。上傳後,您可以瀏覽各種訪問令牌來分析會話詳細信息,包括其範圍等。顯示為紅色的令牌表示它們已過期。 GraphRunner 還支援在必要時使用刷新令牌產生新的有效存取權杖:視頻
新增了允許下載 JSON 檔案中的完整用戶資料、檢測帳戶中的 MFA 異常以及下載這些異常清單的功能:視頻