Az - Device Registration

Supporta HackTricks

Informazioni di Base

Quando un dispositivo si unisce ad AzureAD viene creato un nuovo oggetto in AzureAD.

Durante la registrazione di un dispositivo, all'utente viene chiesto di accedere con il suo account (richiedendo MFA se necessario), quindi richiede token per il servizio di registrazione del dispositivo e poi chiede un prompt di conferma finale.

Successivamente, nel dispositivo vengono generate due coppie di chiavi RSA: La chiave del dispositivo (chiave pubblica) che viene inviata a AzureAD e la chiave di trasporto (chiave privata) che viene memorizzata nel TPM se possibile.

Quindi, l'oggetto viene generato in AzureAD (non in Intune) e AzureAD restituisce al dispositivo un certificato firmato da esso. Puoi verificare che il dispositivo è unito ad AzureAD e informazioni sul certificato (come se è protetto da TPM).:

dsregcmd /status

Dopo la registrazione del dispositivo, un Primary Refresh Token viene richiesto dal modulo LSASS CloudAP e consegnato al dispositivo. Con il PRT viene anche consegnata la chiave di sessione crittografata in modo che solo il dispositivo possa decrittarla (usando la chiave pubblica della chiave di trasporto) ed è necessaria per utilizzare il PRT.

Per ulteriori informazioni su cos'è un PRT, consulta:

Az - Primary Refresh Token (PRT)

TPM - Trusted Platform Module

Il TPM protegge contro l'estrazione delle chiavi da un dispositivo spento (se protetto da PIN) e dall'estrazione del materiale privato dal livello del sistema operativo. Ma non protegge contro l'intercettazione della connessione fisica tra il TPM e la CPU o l'uso del materiale crittografico nel TPM mentre il sistema è in esecuzione da un processo con diritti SYSTEM.

Se controlli la seguente pagina, vedrai che rubare il PRT può essere utilizzato per accedere come un utente, il che è ottimo perché il PRT si trova nei dispositivi, quindi può essere rubato da essi (o se non rubato, abusato per generare nuove chiavi di firma):

Az - Pass the PRT

Registrazione di un dispositivo con token SSO

Sarebbe possibile per un attaccante richiedere un token per il servizio di registrazione dei dispositivi Microsoft dal dispositivo compromesso e registrarlo:

# Initialize SSO flow
roadrecon auth prt-init
.\ROADtoken.exe <nonce>

# Request token with PRT with PRT cookie
roadrecon auth -r 01cb2876-7ebd-4aa4-9cc9-d28bd4d359a9 --prt-cookie <cookie>

# Custom pyhton script to register a device (check roadtx)
registerdevice.py

Che ti darà un certificato che puoi usare per chiedere PRT in futuro. Pertanto mantenendo la persistenza e bypassando MFA perché il token PRT originale usato per registrare il nuovo dispositivo aveva già i permessi MFA concessi.

Nota che per eseguire questo attacco avrai bisogno dei permessi per registrare nuovi dispositivi. Inoltre, registrare un dispositivo non significa che il dispositivo sarà autorizzato a iscriversi a Intune.

Questo attacco è stato risolto a settembre 2021 poiché non è più possibile registrare nuovi dispositivi utilizzando token SSO. Tuttavia, è ancora possibile registrare dispositivi in modo legittimo (avendo username, password e MFA se necessario). Controlla: roadtx.

Sovrascrivere un ticket del dispositivo

Era possibile richiedere un ticket del dispositivo, sovrascrivere quello attuale del dispositivo, e durante il flusso rubare il PRT (quindi non c'è bisogno di rubarlo dal TPM. Per maggiori informazioni controlla questa presentazione.

Tuttavia, questo è stato risolto.

Sovrascrivere la chiave WHFB

Controlla le diapositive originali qui

Riassunto dell'attacco:

  • È possibile sovrascrivere la chiave WHFB registrata da un dispositivo tramite SSO

  • Sconfigge la protezione TPM poiché la chiave viene sniffata durante la generazione della nuova chiave

  • Questo fornisce anche persistenza

Gli utenti possono modificare la propria proprietà searchableDeviceKey tramite Azure AD Graph, tuttavia, l'attaccante deve avere un dispositivo nel tenant (registrato al volo o avendo rubato cert + chiave da un dispositivo legittimo) e un token di accesso valido per l'AAD Graph.

Quindi, è possibile generare una nuova chiave con:

roadtx genhellokey -d <device id> -k tempkey.key

e poi PATCH le informazioni del searchableDeviceKey:

È possibile ottenere un token di accesso da un utente tramite device code phishing e abusare dei passaggi precedenti per rubare il suo accesso. Per ulteriori informazioni, controlla:

Az - Phishing Primary Refresh Token (Microsoft Entra)

Riferimenti

Supporta HackTricks

Last updated