Az - Pass the PRT
Wat is 'n PRT
Kontroleer of jy 'n PRT het
In die SSO-staatseksie moet jy sien dat die AzureAdPrt
ingestel is op JA.
In dieselfde uitset kan jy ook sien of die toestel aan Azure gekoppel is (in die veld AzureAdJoined
):
PRT Koekie
Die PRT-koekie word eintlik genoem x-ms-RefreshTokenCredential
en dit is 'n JSON Web Token (JWT). 'n JWT bevat 3 dele, die kop, inhoud en handtekening, verdeel deur 'n .
en almal url-veilig base64 gekodeer. 'n Tipiese PRT-koekie bevat die volgende kop en liggaam:
Die werklike Primêre Verfris Toekenning (PRT) is ingesluit binne die refresh_token
, wat deur 'n sleutel onder beheer van Azure AD versleutel word, wat die inhoud onduidelik en ontsleutelbaar vir ons maak. Die veld is_primary
dui op die insluiting van die primêre verfris toekenning binne hierdie toekenning. Om te verseker dat die koekie gebind bly aan die spesifieke aanmeldsessie waarvoor dit bedoel was, word die request_nonce
vanaf die logon.microsoftonline.com
-bladsy gestuur.
PRT Koekie vloei met TPM
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 word) en die vorige konteks gebruik om 'n sleutel af te lei, en hierdie afgeleide sleutel word gebruik om die PRT-koekie (JWT) te teken.
Die KDF konteks is 'n eenmalige kode van AzureAD en die PRT wat 'n JWT skep wat gemeng is met 'n konteks (willekeurige bytes).
Daarom, selfs al kan die PTR nie geëkstraheer word omdat dit binne die TPM geleë is nie, 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 teken.
PRT Misbruik Scenarios
As 'n gewone gebruiker is dit moontlik om PRT-gebruik aan te vra deur LSASS vir SSO-data te vra. Dit kan gedoen word soos inheemse programme wat toekennings van Web Rekeningbestuurder (toekenningsmakelaar) aanvra. WAM stuur die versoek na LSASS, wat vir toekennings vra deur 'n ondertekende PRT-aanspraak. Of dit kan gedoen word met blaaier-gebaseerde (web) vloeie waar 'n PRT-koekie as kop gebruik word om versoek aan te meld by Azure AS-aanmeldbladsye.
As SYSTEM kan jy die PRT steel as dit nie deur TPM beskerm word nie of met PRT-sleutels in LSASS interaksie hê deur kripto-API's te gebruik.
PRT Aanval Voorbeelde
Aanval - ROADtoken
Vir meer inligting oor hierdie metode kyk na hierdie pos. ROADtoken sal BrowserCore.exe
van die regte gids laat loop en dit gebruik om 'n PRT-koekie te verkry. Hierdie koekie kan dan met ROADtools gebruik word om te verifieer en 'n volgehoue verfris toekenning te verkry.
Om 'n geldige PRT-koekie te genereer, is die eerste ding wat jy nodig het 'n eenmalige kode. Jy kan dit kry met:
Of deur roadrecon:
Dan kan jy roadtoken gebruik om 'n nuwe PRT te kry (hardloop die instrument van 'n proses van die gebruiker om aan te val):
Dan kan jy die geskepte koekie gebruik om tokkies te genereer om in te teken met behulp van Azure AD Graph of Microsoft Graph:
Aanval - Gebruik van roadrecon
Aanval - Gebruik van AADInternals en 'n uitgelekde PTR
Get-AADIntUserPRTToken
kry die gebruiker se PRT-token van die Azure AD-aangeslote of hibried-aangeslote 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, skakel alle koekies vir login.microsoftonline.com uit en voer 'n nuwe koekie in.
Dan gaan na https://portal.azure.com
Die res moet die verstekwaardes wees. Maak seker dat jy die bladsy kan verfris en dat die koekie nie verdwyn nie, as dit wel gebeur het jy dalk 'n fout gemaak en moet jy die proses weer deurgaan. As dit nie gebeur nie, behoort jy reg te wees.
Aanval - Mimikatz
Stappe
Die PRT (Primêre Verfris Koekie) word onttrek uit LSASS (Local Security Authority Subsystem Service) en gestoor vir latere gebruik.
Die Sessiesleutel word daarna onttrek. Aangesien hierdie sleutel aanvanklik uitgereik word en dan weer deur die plaaslike toestel herversleutel word, vereis dit ontsleuteling met behulp van 'n DPAPI-meestersleutel. Gedetailleerde inligting oor DPAPI (Data Protection API) kan gevind word in hierdie bronne: HackTricks en vir 'n begrip van sy toepassing, verwys na Pass-the-cookie aanval.
Na ontsleuteling van die Sessiesleutel word die afgeleide sleutel en konteks vir die PRT verkry. Hierdie is noodsaaklik vir die skepping van die PRT-koekie. Spesifiek word die afgeleide sleutel gebruik om die JWT (JSON Web Token) te onderteken wat die koekie uitmaak. 'n Omvattende verduideliking van hierdie proses is deur Dirk-jan verskaf, toeganklik 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 van 'n konteks van die TPM te kry en dit te gebruik om 'n koekie te teken (kontroleer opsie 3).
Jy kan 'n diepgaande verduideliking van die uitgevoerde proses om hierdie besonderhede te onttrek hier vind: https://dirkjanm.io/digging-further-into-the-primary-refresh-token/
Dit sal nie presies werk nie na die Augustus 2021-herstelwerk om ander gebruikers se PRT-koekies te kry nie, aangesien slegs die gebruiker sy PRT kan kry ( 'n plaaslike administrateur kan nie ander gebruikers se PRT's kry nie), maar kan syne kry.
Jy kan mimikatz gebruik om die PRT te onttrek:
Kopieer die gedeelte wat as Prt gemerk is en stoor dit.
Ekstraeer ook die sessiesleutel (die KeyValue
van die ProofOfPossesionKey
veld) wat jy hieronder gemerk kan sien. Dit is versleutel en ons sal ons DPAPI meesterkodes moet gebruik om dit te ontsluit.
As jy geen PRT-data sien nie, kan dit wees dat jy geen PRTs het omdat jou toestel nie by Azure AD aangesluit is nie, of dit kan wees dat jy 'n oud weergawe van Windows 10 gebruik.
Om die sessiesleutel te ontsleutel, moet jy jou regte verhoog na SYSTEM om onder die rekenaar konteks te hardloop sodat jy die DPAPI meesterkodes kan gebruik om dit te ontsluit. Jy kan die volgende bevele gebruik om dit te doen:
Opsie 1 - Volledige Mimikatz
Nou wil jy beide die Konteks waarde kopieer:
En die afgeleide sleutel waarde:
Uiteindelik kan jy al hierdie inligting gebruik om PRT-koekies te genereer:
Gaan na https://login.microsoftonline.com, skoon al die koekies vir login.microsoftonline.com en voer 'n nuwe koekie in.
Gaan dan na https://portal.azure.com
Die res moet die verstekwaardes wees. Maak seker dat jy die bladsy kan verfris en dat die koekie nie verdwyn nie, as dit wel gebeur het jy moontlik 'n fout gemaak en moet jy deur die proses gaan. As dit nie gebeur nie, behoort jy reg te wees.
Opsie 2 - roadrecon deur gebruik van PTR
Vernuweer die PRT eerste, wat dit in
roadtx.prt
sal stoor:
Nou kan ons versoeke tokens gebruik met die interaktiewe webblaaier met
roadtx browserprtauth
. As ons dieroadtx describe
bevel gebruik, sien ons dat die toegangstoken 'n MFA-eis insluit omdat die PRT wat ek in hierdie geval gebruik het, ook 'n MFA-eis gehad het.
Opsie 3 - roadrecon gebruik van afgeleide sleutels
Met die konteks en die afgeleide sleutel wat deur mimikatz gedump is, is dit moontlik om roadrecon te gebruik om 'n nuwe ondertekende koekie te genereer met:
Verwysings
Last updated