Az - Pass the Certificate

Support HackTricks

Pass the Certificate (Azure)

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

В супер спрощених термінах:

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

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

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

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

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

  • ID орендаря

  • 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

References

Support HackTricks

Last updated