Az - Pass the Certificate

Support HackTricks

Pass the Certificate (Azure)

In macchine unite ad 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 avvia 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 (usando 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à del 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 un 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 dureranno quanto il PRT. Per utilizzare il certificato puoi usare lo strumento python AzureADJoinedMachinePTC che autentica alla macchina remota, esegue PSEXEC e apre un CMD sulla macchina vittima. Questo ci permetterà di usare di nuovo Mimikatz per ottenere il PRT di un altro utente.

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

Riferimenti

Supporta HackTricks

Last updated