Az - Pass the Certificate

Wesprzyj HackTricks

Przekaż Certyfikat (Azure)

W połączonych maszynach w Azure, możliwe jest uwierzytelnianie 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 bardzo uproszczonych terminach:

  • Maszyna (klient) inicjująca połączenie potrzebuje certyfikatu od 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 z certyfikatem.

W tym scenariuszu i po zebraniu wszystkich informacji potrzebnych do ataku Przekaż PRT:

  • Nazwa użytkownika

  • ID Najemcy

  • PRT

  • Kontekst bezpieczeństwa

  • Klucz pochodny

Możliwe jest żą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 samo jak PRT. Aby użyć certyfikatu, możesz skorzystać z narzędzia pythonowego AzureADJoinedMachinePTC, które uwierzytelnia się na zdalnej maszynie, uruchamia PSEXEC i otwiera CMD na maszynie ofiary. Pozwoli nam to ponownie skorzystać z Mimikatz, aby uzyskać PRT innego użytkownika.

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

Odnośniki

Wesprzyj HackTricks

Last updated