Az - Device Registration

Reading time: 5 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

Basic Information

Коли пристрій приєднується до AzureAD, у AzureAD створюється новий об'єкт.

При реєстрації пристрою користувача просять увійти зі своїм обліковим записом (запит на MFA, якщо потрібно), потім запитуються токени для служби реєстрації пристроїв і потім з'являється фінальний запит на підтвердження.

Потім у пристрої генеруються дві пари ключів RSA: ключ пристрою (публічний ключ), який надсилається до AzureAD, і транспортний ключ (приватний ключ), який зберігається в TPM, якщо це можливо.

Потім у AzureAD генерується об'єкт (не в Intune), і AzureAD повертає пристрою сертифікат, підписаний ним. Ви можете перевірити, що пристрій приєднано до AzureAD та інформацію про сертифікат (наприклад, чи захищений він TPM).

bash
dsregcmd /status

Після реєстрації пристрою Primary Refresh Token запитується модулем LSASS CloudAP і надається пристрою. Разом з PRT також передається ключ сесії, зашифрований так, щоб тільки пристрій міг його розшифрувати (використовуючи публічний ключ транспортного ключа), і він необхідний для використання PRT.

Для отримання додаткової інформації про те, що таке PRT, перегляньте:

Az - Primary Refresh Token (PRT)

TPM - Модуль довірчої платформи

TPM захищає від витоку ключів з пристрою, що вимкнений (якщо захищений PIN-кодом) та від витоку приватних матеріалів з рівня ОС.
Але він не захищає від перехоплення фізичного з'єднання між TPM і ЦП або використання криптографічних матеріалів у TPM, поки система працює з процесу з правами SYSTEM.

Якщо ви переглянете наступну сторінку, ви побачите, що викрадення PRT може бути використано для доступу як користувач, що є чудово, оскільки PRT розташовані на пристроях, тому їх можна вкрасти (або, якщо не вкрадені, зловживати для генерації нових підписних ключів):

Az - Primary Refresh Token (PRT)

Реєстрація пристрою з токенами SSO

Зловмисник міг би запитати токен для служби реєстрації пристроїв Microsoft з скомпрометованого пристрою та зареєструвати його:

bash
# Initialize SSO flow
roadrecon auth prt-init
.\ROADtoken.exe <nonce>

# Request token with PRT with PRT cookie
roadrecon auth -r 01cb2876-7ebd-4aa4-9cc9-d28bd4d359a9 --prt-cookie <cookie>

# Custom pyhton script to register a device (check roadtx)
registerdevice.py

Який надасть вам сертифікат, який ви можете використовувати для запиту PRT у майбутньому. Таким чином, підтримуючи постійність і обходячи MFA, оскільки оригінальний токен PRT, використаний для реєстрації нового пристрою, вже мав дозволи на MFA.

tip

Зверніть увагу, що для виконання цієї атаки вам знадобляться дозволи на реєстрацію нових пристроїв. Також реєстрація пристрою не означає, що пристрій буде дозволено зареєструватися в Intune.

caution

Цю атаку виправили у вересні 2021 року, оскільки ви більше не можете реєструвати нові пристрої, використовуючи токени SSO. Однак все ще можливо легітимно реєструвати пристрої (маючи ім'я користувача, пароль і MFA, якщо потрібно). Перевірте: roadtx.

Перезапис квитка пристрою

Було можливим запросити квиток пристрою, перезаписати поточний квиток пристрою і під час процесу викрасти PRT (тому немає потреби викрадати його з TPM. Для отримання додаткової інформації перевірте цю доповідь.

caution

Однак це було виправлено.

Перезаписати ключ WHFB

Перевірте оригінальні слайди тут

Резюме атаки:

  • Можливо перезаписати зареєстрований ключ WHFB з пристрою через SSO
  • Це обходить захист TPM, оскільки ключ перехоплюється під час генерації нового ключа
  • Це також забезпечує постійність

Користувачі можуть змінювати свою власну властивість searchableDeviceKey через Azure AD Graph, однак атакуючий повинен мати пристрій у тенанті (зареєстрований на льоту або викравши сертифікат + ключ з легітимного пристрою) і дійсний токен доступу для AAD Graph.

Тоді можливо згенерувати новий ключ за допомогою:

bash
roadtx genhellokey -d <device id> -k tempkey.key

і потім PATCH інформацію про searchableDeviceKey:

Можливо отримати токен доступу від користувача через device code phishing і зловживати попередніми кроками, щоб викрасти його доступ. Для отримання додаткової інформації перевірте:

Az - Primary Refresh Token (PRT)

References

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks