Az - Pass the PRT
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)
In die SSO-toestand afdeling, moet jy die AzureAdPrt
op JA sien.
In dieselfde uitvoer kan jy ook sien of die toestel aan Azure aangesluit is (in die veld AzureAdJoined
):
Die PRT-koekie word eintlik x-ms-RefreshTokenCredential
genoem en dit is 'n JSON Web Token (JWT). 'n JWT bevat 3 dele, die kop, payload en handtekening, geskei deur 'n .
en alles is url-veilige base64-gecodeer. 'n Tipiese PRT-koekie bevat die volgende kop en liggaam:
Die werklike Primary Refresh Token (PRT) is ingekapsuleer binne die refresh_token
, wat geënkripteer is deur 'n sleutel onder die beheer van Azure AD, wat sy inhoud ondoorgrondelik en ondekripteerbaar vir ons maak. Die veld is_primary
dui die inkapseling van die primêre verfrissings-token binne hierdie token aan. Om te verseker dat die koekie gebind bly aan die spesifieke aanmeldsessie waarvoor dit bedoel was, word die request_nonce
van die logon.microsoftonline.com
bladsy oorgedra.
Die LSASS proses sal die KDF konteks na die TPM stuur, en die TPM sal die sessiesleutel (versamel toe die toestel in AzureAD geregistreer is en in die TPM gestoor is) en die vorige konteks gebruik om 'n sleutel te aflei, en hierdie afgeleide sleutel word gebruik om die PRT koekie (JWT) te onderteken.
Die KDF konteks is 'n nonce van AzureAD en die PRT wat 'n JWT meng met 'n konteks (willekeurige bytes).
Daarom, selfs al kan die PRT nie onttrek word nie omdat dit binne die TPM geleë is, is dit moontlik om LSASS te misbruik om afgeleide sleutels van nuwe kontekste aan te vra en die gegenereerde sleutels te gebruik om Koekies te onderteken.
As 'n regte gebruiker is dit moontlik om PRT gebruik aan te vra deur LSASS vir SSO-data te vra. Dit kan gedoen word soos natuurlike toepassings wat tokens van Web Account Manager (token broker) aan vra. WAM stuur die versoek na LSASS, wat tokens vra met 'n ondertekende PRT-assertie. Of dit kan gedoen word met blaaier-gebaseerde (web) vloei waar 'n PRT koekie as kop gebruik word om versoeke na Azure AS aanmeldbladsye te verifieer.
As SISTEEM kan jy die PRT steel as dit nie deur TPM beskerm word nie of interaksie hê met PRT sleutels in LSASS met behulp van crypto APIs.
Vir meer inligting oor hierdie manier kyk hierdie pos. ROADtoken sal BrowserCore.exe
van die regte gids uitvoer en dit gebruik om 'n PRT koekie te verkry. Hierdie koekie kan dan met ROADtools gebruik word om te verifieer en 'n volhoubare verfrissings-token te verkry.
Om 'n geldige PRT koekie te genereer, is die eerste ding wat jy nodig het 'n nonce. Jy kan dit kry met:
Of deur roadrecon te gebruik:
Dan kan jy roadtoken gebruik om 'n nuwe PRT te verkry (voer die hulpmiddel uit vanaf 'n proses van die gebruiker om aan te val):
As oneliner:
Dan kan jy die gegenereerde koekie gebruik om tokens te genereer om in te log met Azure AD Graph of Microsoft Graph:
Get-AADIntUserPRTToken
kry die gebruiker se PRT-token van die Azure AD-verbonden of Hibrid-verbonden rekenaar. Gebruik BrowserCore.exe
om die PRT-token te kry.
Of as jy die waardes van Mimikatz het, kan jy ook AADInternals gebruik om 'n token te genereer:
Gaan na https://login.microsoftonline.com, verwyder alle koekies vir login.microsoftonline.com en voer 'n nuwe koekie in.
Then go to https://portal.azure.com
Die res van die instellings moet die verstek wees. Maak seker jy kan die bladsy verfris en die koekie verdwyn nie, as dit wel gebeur, het jy dalk 'n fout gemaak en moet die proses weer deurgaan. As dit nie gebeur nie, behoort jy reg te wees.
Die PRT (Primêre Vernuwings Teken) word uit LSASS (Plaaslike Sekuriteitsowerheid Subsystemdiens) onttrek en gestoor vir latere gebruik.
Die Sessie Sleutel word volgende onttrek. Aangesien hierdie sleutel aanvanklik uitgereik word en dan weer deur die plaaslike toestel her-enkripteer word, vereis dit ontsleuteling met 'n DPAPI meester sleutel. Gedetailleerde inligting oor DPAPI (Data Protection API) kan in hierdie bronne gevind word: HackTricks en vir 'n begrip van die toepassing daarvan, verwys na Pass-the-cookie aanval.
Na ontsleuteling van die Sessie Sleutel, word die afgeleide sleutel en konteks vir die PRT verkry. Hierdie is noodsaaklik vir die skepping van die PRT koekie. Spesifiek, die afgeleide sleutel word gebruik om die JWT (JSON Web Token) wat die koekie vorm, te teken. 'n Omvattende verduideliking van hierdie proses is deur Dirk-jan verskaf, beskikbaar hier.
Let daarop dat as die PRT binne die TPM is en nie binne lsass
nie, sal mimikatz nie in staat wees om dit te onttrek nie.
Dit sal egter moontlik wees om 'n sleutel van 'n afgeleide sleutel uit 'n konteks van die TPM te kry en dit te gebruik om 'n koekie te teken (kyk na opsie 3).
You can find an in depth explanation of the performed process to extract these details in here: https://dirkjanm.io/digging-further-into-the-primary-refresh-token/
Dit sal nie presies werk na die Augustus 2021 regstellings om ander gebruikers se PRT tokens te verkry nie, aangesien slegs die gebruiker sy PRT kan verkry (n plaaslike admin kan nie ander gebruikers se PRTs toegang nie), maar kan syne toegang.
You can use mimikatz to extract the PRT:
(Images from https://blog.netwrix.com/2023/05/13/pass-the-prt-overview)
Kopieer die deel gemerk Prt en stoor dit.
Onttrek ook die sessiesleutel (die KeyValue
van die ProofOfPossesionKey
veld) wat jy hieronder gemerk kan sien. Dit is versleuteld en ons sal ons DPAPI meester sleutels moet gebruik om dit te ontsleutel.
As jy nie enige PRT-data sien nie, kan dit wees dat jy nie enige PRT's het nie omdat jou toestel nie Azure AD-verbonden is nie of dit kan wees dat jy 'n ou weergawe van Windows 10 gebruik.
Om die sessiesleutel te ontsleutel moet jy jou regte verhoog na SISTEEM om onder die rekenaar konteks te werk om die DPAPI meester sleutel te gebruik om dit te ontsleutel. Jy kan die volgende opdragte gebruik om dit te doen:
Nou wil jy beide die Konteks waarde kopieer:
En die afgeleide sleutel waarde:
Laastens kan jy al hierdie inligting gebruik om PRT koekies te genereer:
Gaan na https://login.microsoftonline.com, verwyder alle koekies vir login.microsoftonline.com en voer 'n nuwe koekie in.
Gaan dan na https://portal.azure.com
Die res behoort die verstekinstellings te wees. Maak seker jy kan die bladsy verfris en die koekie verdwyn nie, as dit wel gebeur, het jy dalk 'n fout gemaak en moet die proses weer deurgaan. As dit nie gebeur nie, behoort jy reg te wees.
Vernuw die PRT eers, wat dit in roadtx.prt
sal stoor:
Nou kan ons tokens versoek met die interaktiewe blaaiertjie met roadtx browserprtauth
. As ons die roadtx describe
opdrag gebruik, sien ons die toegangstoken sluit 'n MFA-eis in omdat die PRT wat ek in hierdie geval gebruik het ook 'n MFA-eis gehad het.
Met die konteks en die afgeleide sleutel wat deur mimikatz gedump is, is dit moontlik om roadrecon te gebruik om 'n nuwe geskrewe koekie te genereer met:
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)