Az - Pass the Certificate

Підтримайте HackTricks

Передача сертифіката (Azure)

На з'єднаних машинах Azure можливо аутентифікуватися з однієї машини на іншу, використовуючи сертифікати, які повинні бути видані Azure AD CA для потрібного користувача (як суб'єкт), коли обидві машини підтримують механізм аутентифікації NegoEx.

У дуже спрощених термінах:

  • Машина (клієнт), що ініціює з'єднання, потребує сертифікат від Azure AD для користувача.

  • Клієнт створює заголовок JSON Web Token (JWT), що містить PRT та інші деталі, підписує його за допомогою похідного ключа (з використанням сеансового ключа та контексту безпеки) та надсилає його в Azure AD.

  • Azure AD перевіряє підпис JWT за допомогою сеансового ключа клієнта та контексту безпеки, перевіряє валідність PRT та відповідає з сертифікатом.

У цьому сценарії та після отримання всієї необхідної інформації для атаки Pass the PRT:

  • Ім'я користувача

  • Ідентифікатор орендаря

  • PRT

  • Контекст безпеки

  • Похідний ключ

Можливо запитати сертифікат P2P для користувача за допомогою інструменту PrtToCert:

RequestCert.py [-h] --tenantId TENANTID --prt PRT --userName USERNAME --hexCtx HEXCTX --hexDerivedKey HEXDERIVEDKEY [--passPhrase PASSPHRASE]

Сертифікати будуть діяти стільки ж часу, скільки і PRT. Для використання сертифіката ви можете використовувати інструмент Python AzureADJoinedMachinePTC, який буде аутентифікуватися на віддаленій машині, запускати PSEXEC та відкривати CMD на машині жертви. Це дозволить нам знову використовувати Mimikatz для отримання PRT іншого користувача.

Main.py [-h] --usercert USERCERT --certpass CERTPASS --remoteip REMOTEIP

Посилання

Підтримайте HackTricks

Last updated