Az - Pass the Certificate

Sostieni HackTricks

Pass the Certificate (Azure)

Nelle macchine unite in Azure, è possibile autenticarsi da una macchina all'altra utilizzando certificati che devono essere emessi da Azure AD CA per l'utente richiesto (come soggetto) quando entrambe le macchine supportano il meccanismo di autenticazione NegoEx.

In termini super semplificati:

  • La macchina (client) che inizia la connessione ha bisogno di un certificato da Azure AD per un utente.

  • Il client crea un'intestazione JSON Web Token (JWT) contenente PRT e altri dettagli, la firma utilizzando la chiave derivata (utilizzando la chiave di sessione e il contesto di sicurezza) e la invia ad Azure AD.

  • Azure AD verifica la firma JWT utilizzando la chiave di sessione del client e il contesto di sicurezza, controlla la validità di PRT e risponde con il certificato.

In questo scenario e dopo aver raccolto tutte le informazioni necessarie per un attacco Pass the PRT:

  • Nome utente

  • ID Tenant

  • PRT

  • Contesto di sicurezza

  • Chiave derivata

È possibile richiedere il certificato P2P per l'utente con lo strumento PrtToCert:

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

I certificati avranno la stessa durata del PRT. Per utilizzare il certificato è possibile utilizzare lo strumento python AzureADJoinedMachinePTC che si autenticherà alla macchina remota, eseguirà PSEXEC e aprirà un CMD sulla macchina vittima. Ciò ci permetterà di utilizzare nuovamente Mimikatz per ottenere il PRT di un altro utente.

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

Riferimenti

Sostieni HackTricks

Last updated