Az - Pass the Certificate

Support HackTricks

Pass the Certificate (Azure)

W maszynach dołączonych do Azure możliwe jest uwierzytelnienie z jednej maszyny na drugą za pomocą certyfikatów, które muszą być wydane przez Azure AD CA dla wymaganego użytkownika (jako podmiot), gdy obie maszyny obsługują mechanizm uwierzytelniania NegoEx.

W super uproszczonych słowach:

  • Maszyna (klient) inicjująca połączenie potrzebuje certyfikatu z Azure AD dla użytkownika.

  • Klient tworzy nagłówek JSON Web Token (JWT) zawierający PRT i inne szczegóły, podpisuje go za pomocą klucza pochodnego (używając klucza sesji i kontekstu bezpieczeństwa) i wysyła go do Azure AD.

  • Azure AD weryfikuje podpis JWT za pomocą klucza sesji klienta i kontekstu bezpieczeństwa, sprawdza ważność PRT i odpowiada certyfikatem.

W tym scenariuszu, po zebraniu wszystkich informacji potrzebnych do ataku Pass the PRT:

  • Nazwa użytkownika

  • ID najemcy

  • PRT

  • Kontekst bezpieczeństwa

  • Klucz pochodny

Możliwe jest zażądanie certyfikatu P2P dla użytkownika za pomocą narzędzia PrtToCert:

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

Certyfikaty będą ważne tak długo, jak PRT. Aby użyć certyfikatu, możesz skorzystać z narzędzia python AzureADJoinedMachinePTC, które uwierzytelni się na zdalnej maszynie, uruchomi PSEXEC i otworzy CMD na maszynie ofiary. To pozwoli nam ponownie użyć Mimikatz, aby uzyskać PRT innego użytkownika.

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

References

Wsparcie HackTricks

Last updated