Az - Pass the PRT
Last updated
Last updated
In die SSO-toestand afdeling, behoort jy die AzureAdPrt
ingestel te sien as JA.
In dieselfde uitset kan jy ook sien of die toestel aan Azure gekoppel is (in die veld AzureAdJoined
):
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 Token (PRT) is ingekapsuleer 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 inkapseling van die primêre verfris token binne hierdie token. 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.
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 PRT 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.
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 plaaslike programme wat tokens van die Web Rekeningbestuurder (tokenmakelaar) aanvra. WAM stuur die versoek na LSASS, wat vir tokens 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 na Azure AS-aanmeldbladsye te outentiseer.
As SYSTEM kan jy die PRT steel as dit nie deur TPM beskerm word of met PRT-sleutels in LSASS interaksie hê deur kripto-API's te gebruik.
Vir meer inligting oor hierdie metode kyk na 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 outentiseer en 'n volgehoue verfris token 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:
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 deur die proses gaan. As dit nie gebeur nie, behoort jy reg te wees.
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 versleutel word deur die plaaslike toestel, 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 onderteken (kontroleer opsie 3).
Jy kan 'n mimikatz gebruik om die PRT te onttrek:
Kopieer die gedeelte wat as Prt geëtiketteer 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 dekripteer.
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 dekripteer, moet jy jou regte verhoog na SYSTEM om onder die rekenaar konteks te hardloop sodat jy die DPAPI-meesterkodes kan gebruik om dit te dekripteer. Jy kan die volgende opdragte gebruik om dit te doen:
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, het jy moontlik 'n fout gemaak en moet jy deur die proses gaan. As dit nie gebeur nie, behoort jy reg te wees.
Vernuweer die PRT eerste, wat dit in roadtx.prt
sal stoor:
Nou kan ons versoeke tokens met die interaktiewe webblaaier deur roadtx browserprtauth
te gebruik. As ons die roadtx describe
bevel gebruik, sien ons dat die toegangsteken 'n MFA-eis insluit 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 ondertekende koekie te genereer met: