Magic Quadrant™ per la gestione degli accessi privilegiati 2025: Netwrix riconosciuta per il quarto anno consecutivo. Scarica il report.

Piattaforma
Centro risorseBlog
Movimento laterale verso il Cloud con Pass-the-PRT

Movimento laterale verso il Cloud con Pass-the-PRT

May 13, 2023

Gli aggressori utilizzano una varietà di tattiche per diffondersi lateralmente tra macchine Windows on-premises, inclusi gli attacchi Pass-the-Ticket, Pass-the-Hash, Overpass-the-Hash e Golden Tickets. Ma tecniche simili sono altrettanto efficaci nel muoversi lateralmente da una postazione di lavoro compromessa verso risorse cloud connesse, eludendo misure di autenticazione avanzate come la MFA.

Questo articolo spiega come gli aggressori possono eseguire movimenti laterali verso il cloud con un attacco chiamato Pass-the-PRT.

Cos'è un PRT?

Un primary refresh token (PRT) è simile a un biglietto per l'ottenimento di biglietti Kerberos (TGT) — entrambi sono utilizzati per fornire l'accesso singolo (SSO). Ma mentre un TGT è per i sistemi Windows, un PRT consente di accedere a un dispositivo Windows 10 e poi accedere alle risorse di Azure e Microsoft 365 senza dover ri-autenticarsi. Il dispositivo Windows 10 deve essere unito ad Azure o ibrido unito ad Azure.

Ecco una panoramica di come funziona questo processo: Quando effettui l'accesso, il tuo dispositivo Windows 10 comunicherà con il Windows 10 Cloud Authentication Provider. Il suo plug-in Azure AD convaliderà le tue credenziali e restituirà un PRT e una chiave di sessione. Il tuo dispositivo crittograferà nuovamente la chiave di sessione con il suo Trusted Platform Module (TPM) e poi memorizzerà sia la chiave che il PRT in LSASS. Successivamente, quando tenti di accedere a un sito web utilizzando un browser che supporta SSO verso Azure (sia Edge che Chrome con l'estensione Windows 10), il Cloud Authentication Provider creerà un cookie PRT per il browser e utilizzerà quel cookie per ottenere token da Azure AD. Azure AD convaliderà il cookie PRT e ti permetterà l'accesso.

(Se vuoi approfondire, consulta la Microsoft documentation, il riassunto di Jairo Cadena su summary of PRT and SSO, questo article on PRT di Dirk-jan Mollema, e i progetti ROADtoken e RequestAADRefreshToken su GitHub.)

Per vedere se hai un PRT, esegui questo comando:

      Dsregcmd.exe /status
      

Nella sezione Stato SSO, controlla AzureAdPrt; se è impostato su YES, hai un PRT.

Image

Se è impostato su NO, utilizza il comando sottostante per verificare se il tuo dispositivo è unito ad Azure AD, poiché ciò è necessario affinché vengano emessi i PRT.

Image

Esecuzione di un attacco Pass-the-PRT

Se un avversario riesce ad ottenere il PRT di un utente e la chiave di sessione, può creare cookie PRT che gli consentono di accedere alle risorse web come quell'utente, eludendo eventuali requisiti di accesso condizionale impostati. Un PRT è valido per 14 giorni, quindi hanno accesso fino a 2 settimane a meno che l'account non venga disabilitato.

Vediamo esattamente come possiamo eseguire un tale attacco.

Prerequisito: Abbiamo compromesso un dispositivo Windows 10 che ha un PRT emesso per esso, e abbiamo privilegi di amministratore locale su quella macchina.

Panoramica dei passaggi:

  1. Estrai il PRT da LSASS e salvalo per dopo.
  2. Estrai la chiave di sessione.
  3. Decrittografare la chiave di sessione e utilizzarla con una DPAPI masterkey. Abbiamo appreso ciò nell'attacco Pass-the-Cookie e utilizzeremo lo stesso approccio.
  4. Utilizzando la Session Key decifrata per ottenere la chiave derivata e il contesto. Questo è necessario per creare il nostro cookie PRT. La chiave derivata è ciò che viene utilizzato per firmare il JWT per il cookie.
  5. Da qualsiasi sistema, utilizza il PRT, la chiave derivata e il contesto per creare un nuovo cookie PRT.
  6. Importa il cookie nella nostra sessione del browser Chrome. Ora saremo autenticati sui siti web come l'utente — senza mai conoscere la loro password o dover gestire alcun prompt MFA.

Approfondiamo ogni singolo passaggio.

Passaggio 1. Estrai il PRT da LSASS.

Per visualizzare i dati PRT per la macchina che abbiamo compromesso, utilizziamo il seguente comando in Mimikatz release 2.2.0 20200807 o successive:

      Privilege::debug
Sekurlsa::cloudap
      

Ecco l'output. Copieremo la parte etichettata PRT e la salveremo per dopo.

Image

Se non vedi dati PRT, verifica se il dispositivo è unito ad Azure AD eseguendo il comando dsregcmd /status come mostrato in precedenza. Se AzureAdPrt è impostato su YES, controlla quale versione di Windows 10 è in esecuzione sulla macchina; nel nostro laboratorio, abbiamo dovuto aggiornare almeno alla versione 1909 affinché l'attacco funzionasse.

Image

Passaggio 2. Estrai la chiave di Proof of possession.

Ora estraiamo la chiave di sessione o “ProofOfPosessionKey”, che è evidenziata di seguito. Questa è criptata e dovremo utilizzare i nostri DPAPI masterkeys per decifrarla.

Image

Passaggio 3. Decrittare la chiave di sessione.

Ora eleviamo i nostri privilegi a SYSTEM e eseguiamo nel contesto del computer per poter utilizzare la masterkey DPAPI per decifrare la chiave di sessione:

      Token::elevate
Dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect
      
Image

Ora copieremo due valori. Il primo è il valore Context:

Image

E il secondo è il valore della Chiave Derivata:

Image

Passaggio 4. Generare i cookie PRT.

Possiamo eseguire il resto di questo attacco da qualsiasi postazione di lavoro. Per generare i cookie PRT, eseguiamo semplicemente il seguente comando:

      Dpapi::cloudapkd /context:[CONTEXT] /derivedkey:[DerivedKey] /Prt:[PRT]
      

L'output includerà un cookie PRT firmato dopo Firma con chiave. Copia quel testo.

Image

Passaggio 5. Inietta il cookie PRT in una sessione del browser.

Avvia Google Chrome in modalità incognito e naviga verso https://login.microsoftonline.com. Quando ti viene richiesto di inserire i tuoi dati di accesso, fai clic con il tasto destro in qualsiasi punto della pagina e scegli Ispeziona per aprire gli strumenti di sviluppo per Chrome.

Vai alla scheda Applicazione, fai doppio clic su Cookies, e clicca su login.microsoftonline.com. Nel riquadro a destra, nella barra delle azioni in alto, clicca sul cerchio con una barra diagonale per eliminare tutti i cookie esistenti.

Quindi fai doppio clic su una riga vuota nella tabella e aggiungi il seguente nuovo cookie:

      Name: x-ms-RefreshTokenCredential
Value: [Paste your output from above]
HttpOnly: Set to True (checked)

      

Lascia gli altri campi ai loro valori predefiniti.

Image

Aggiorna la pagina e assicurati che il cookie non sia scomparso. Se è sparito, potresti aver commesso un errore e dovrai ripetere la procedura.

Naviga nuovamente verso https://login.microsoftonline.com e dovresti essere autenticato automaticamente come l'utente compromesso:

Image

Protezione contro gli attacchi Pass-the-PRT

Gli attacchi Pass-the-PRT sono difficili da rilevare perché abusano dei legittimi processi SSO. Una strategia utile consiste nell'utilizzare software di protezione degli endpoint in grado di rilevare l'uso di Mimikatz, che viene eseguito nella prima fase dell'attacco.

Tuttavia, la prevenzione è ancora migliore della rilevazione. Ricorda che Pass-the-PRT è una tecnica di movimento laterale; per eseguirla, l'intruso deve aver già ottenuto l'accesso a una macchina. Con uno strumento come il Netwrix Active Directory Security Solution, puoi impedire ai malfattori di ottenere quel punto d'appoggio nel tuo ambiente in primo luogo.

Inoltre, questo attacco richiede diritti amministrativi locali. Utilizzando software di gestione degli endpoint come Netwrix Endpoint Policy Manager, si rimuovono questi potenti diritti dagli utenti senza pregiudicare la loro produttività. Inoltre, è possibile impedire ai computer di avviare software dannosi e persino proteggere le impostazioni del browser.

Condividi su

Scopri di più

Informazioni sull'autore

Un uomo con una giacca blu e una camicia a quadri sorride alla macchina fotografica

Jeff Warren

Chief Product Officer

Jeff Warren supervisiona il portfolio di prodotti Netwrix, portando oltre un decennio di esperienza nella gestione e sviluppo di prodotti focalizzati sulla sicurezza. Prima di entrare in Netwrix, Jeff ha guidato l'organizzazione dei prodotti presso Stealthbits Technologies, dove ha utilizzato la sua esperienza come ingegnere del software per sviluppare soluzioni di sicurezza innovative su scala aziendale. Con un approccio pratico e un talento nel risolvere sfide di sicurezza complesse, Jeff è concentrato sulla costruzione di soluzioni pratiche che funzionano. È laureato in Information Systems presso l'Università del Delaware.