Az - Pass the Certificate

In Azure-verbundenen Maschinen ist es möglich, sich von einer Maschine zur anderen zu authentifizieren, indem Zertifikate verwendet werden, die vom Azure AD CA für den erforderlichen Benutzer ausgestellt werden (als Subjekt), wenn beide Maschinen den Authentifizierungsmechanismus NegoEx unterstützen.

In sehr vereinfachten Begriffen:

  • Die Maschine (Client), die die Verbindung initiiert, benötigt ein Zertifikat von Azure AD für einen Benutzer.

  • Der Client erstellt einen JSON Web Token (JWT)-Header, der PRT und andere Details enthält, signiert ihn mit dem abgeleiteten Schlüssel (unter Verwendung des Sitzungsschlüssels und des Sicherheitskontexts) und sendet ihn an Azure AD.

  • Azure AD überprüft die JWT-Signatur unter Verwendung des Sitzungsschlüssels und des Sicherheitskontexts des Clients, überprüft die Gültigkeit des PRT und antwortet mit dem Zertifikat.

In diesem Szenario und nachdem alle Informationen für einen Pass the PRT-Angriff gesammelt wurden:

  • Benutzername

  • Mandanten-ID

  • PRT

  • Sicherheitskontext

  • Abgeleiteter Schlüssel

Es ist möglich, ein P2P-Zertifikat für den Benutzer anzufordern mit dem Tool PrtToCert:

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

Die Zertifikate haben die gleiche Gültigkeitsdauer wie das PRT. Um das Zertifikat zu verwenden, können Sie das Python-Tool AzureADJoinedMachinePTC verwenden, das sich beim entfernten Rechner authentifiziert, PSEXEC ausführt und eine CMD öffnet auf dem Opferrechner. Dadurch können wir erneut Mimikatz verwenden, um das PRT eines anderen Benutzers zu erhalten.

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

Referenzen

  • Für weitere Details darüber, wie "Pass the Certificate" funktioniert, lesen Sie den Originalbeitrag hier

Erlernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated