ในสภาพแวดล้อม Azure AD คุณสามารถตรวจสอบว่าผู้ใช้ปิดใช้งานการรับรองความถูกต้องแบบหลายปัจจัย (MFA) โดยไม่ต้องใช้สิทธิ์พิเศษใดๆ หรือไม่ ซึ่งสามารถทำได้โดยการวิเคราะห์วันที่สร้างบัญชีและวันที่เปลี่ยนรหัสผ่านครั้งล่าสุด
หากวันที่และเวลาที่สร้างบัญชีตรงกับวันที่และเวลาที่เปลี่ยนรหัสผ่านครั้งล่าสุด อาจบ่งชี้ว่าไม่มีการโต้ตอบของมนุษย์เกิดขึ้นนับตั้งแต่สร้างบัญชี และผู้ใช้ไม่สามารถเปิดใช้งานการรับรองความถูกต้องแบบหลายปัจจัย (MFA) หรือเปลี่ยนแปลงได้ รหัสผ่าน. และยังมี 'ความผิดปกติ' อื่นๆ เช่น วันที่เปลี่ยนรหัสผ่านเก่ากว่าวันที่สร้าง สิ่งนี้ชี้ให้เห็นว่าไม่สามารถเปิดใช้งานการรับรองความถูกต้องแบบหลายปัจจัย (MFA) ได้เนื่องจากยังไม่ได้สร้างผู้ใช้!
อัปเดตวันที่ 16-10-2566:
อัปเดตวันที่ 18-02-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
บนเว็บเบราว์เซอร์ของคุณเพื่อเปิดเครื่องมือสำหรับนักพัฒนาดำเนินการสคริปต์
ดึงข้อมูล UsersList และ UserInfo
ดาวน์โหลดข้อมูลผู้ใช้ที่รวมเข้าด้วยกัน
merged_users.json
จะถูกสร้างขึ้นหากทุกอย่างดำเนินไปอย่างราบรื่นทำงานบนตัวตรวจสอบรหัสผ่าน Azure AD
azurepwchecker.py --json-input merged_users.json
ดูตัวอย่าง:
ดูบทนำ:
อัปเดต 16-10-2566:
วิธีใช้อาร์กิวเมนต์ --code-javascript
เพื่อสร้างรายชื่อผู้ใช้บน Azure Portal ซึ่งสามารถนำเข้าได้โดยใช้คำสั่ง azurepwchecker.py --json-input merged_users.json
:
อัปเดต 13-02-2024:
ฉันอัปโหลด GraphRunner เวอร์ชันแก้ไขจาก @dafthack และให้เครดิตเขา ในเวอร์ชันแก้ไขนี้ ฉันได้เพิ่มฟีเจอร์ใหม่ที่ช่วยให้คุณอ่านไฟล์ HAR ได้โดยตรงจากอุปกรณ์ "ของเหยื่อ" ฟังก์ชั่นใหม่นี้ช่วยในการตรวจสอบและตรวจสอบโทเค็นการเข้าถึงเพื่อเข้าถึงสิทธิ์หรือขอบเขตที่แตกต่างกัน นอกจากนี้ หากโทเค็นการเข้าถึงหมดอายุ เวอร์ชันนี้จะอนุญาตให้ใช้โทเค็นการรีเฟรชเพื่อสร้างโทเค็นการเข้าถึงใหม่ กระบวนการนี้ขึ้นอยู่กับเวลา แต่จะขจัดความจำเป็นในการชื่อผู้ใช้และรหัสผ่าน หากคุณได้เข้าสู่ระบบในสภาพแวดล้อม Office365 แล้ว เนื่องจากต้องใช้เพียงโทเค็นเซสชันที่พบในไฟล์ HAR เท่านั้น
โปรดเข้าใจว่าโค้ดอาจดูไม่เป็นระเบียบเล็กน้อย ความเชี่ยวชาญของฉันไม่ได้อยู่ใน JavaScript เป็นหลัก ดังนั้นเป้าหมายหลักของฉันคือการเพิ่มคุณสมบัติใหม่แทนที่จะจัดระเบียบโค้ด
ดาวน์โหลดไฟล์ HAR คุณสามารถใช้เครื่องมือการพัฒนาที่มีอยู่ในเว็บเบราว์เซอร์ สำหรับเบราว์เซอร์ส่วนใหญ่ เพียงกด F12 เพื่อเปิดเครื่องมือการพัฒนา จากนั้นไปที่แท็บ 'เครือข่าย' เพื่อบันทึกไฟล์ HAR หลังจากรีเฟรชหน้าเว็บ: วิดีโอ
อัปโหลดไฟล์ HAR ของคุณผ่านอินเทอร์เฟซที่ให้ไว้ เมื่ออัปโหลดแล้ว คุณสามารถนำทางผ่านโทเค็นการเข้าถึงต่างๆ เพื่อวิเคราะห์รายละเอียดเซสชัน รวมถึงขอบเขตและอื่นๆ อีกมากมาย โทเค็นที่แสดงเป็นสีแดงแสดงว่าหมดอายุแล้ว GraphRunner ยังสนับสนุนการใช้ Refresh Tokens เพื่อสร้าง Access Tokens ใหม่ที่ถูกต้องเมื่อจำเป็น: วิดีโอ
เพิ่มฟีเจอร์เพื่อให้สามารถดาวน์โหลดข้อมูลผู้ใช้ทั้งหมดในไฟล์ JSON ตรวจจับความผิดปกติของ MFA ในบัญชี และดาวน์โหลดรายการความผิดปกติเหล่านี้: วิดีโอ