Az - Pass the PRT
PRT ni nini
Az - Primary Refresh Token (PRT)Angalia kama una PRT
Katika sehemu ya SSO State, unapaswa kuona AzureAdPrt
ikiwa imewekwa kuwa YES.
Katika matokeo hayo hayo unaweza pia kuona kama kifaa kimeunganishwa na Azure (katika sehemu ya AzureAdJoined
):
PRT Cookie
PRT cookie inaitwa x-ms-RefreshTokenCredential
na ni JSON Web Token (JWT). JWT ina sehemu 3, header, payload na signature, zilizogawanywa na .
na zote zimekodishwa kwa url-safe base64. PRT cookie ya kawaida ina sehemu ya header na body ifuatayo:
Primary Refresh Token (PRT) halisi imewekwa ndani ya refresh_token
, ambayo imefichwa na ufunguo unaodhibitiwa na Azure AD, na kufanya maudhui yake kuwa yasiyoeleweka na yasiyoweza kufunguliwa kwetu. Sehemu ya is_primary
inaashiria kuwekwa kwa tokeni ya msingi ya upya ndani ya tokeni hii. Ili kuhakikisha kuwa kidakuzi kinabaki kimefungwa kwa kikao maalum cha kuingia kilichokusudiwa, request_nonce
inatumwa kutoka ukurasa wa logon.microsoftonline.com
.
Mtiririko wa Kidakuzi cha PRT ukitumia TPM
Mchakato wa LSASS utatuma kwa TPM KDF context, na TPM itatumia ufunguo wa kikao (uliochukuliwa wakati kifaa kilisajiliwa katika AzureAD na kuhifadhiwa katika TPM) na muktadha wa awali ku toa ufunguo, na ufunguo huu uliotolewa unatumika kusaini kidakuzi cha PRT (JWT).
KDF context ni nonce kutoka AzureAD na PRT ikitengeneza JWT iliyochanganywa na muktadha (bytes za nasibu).
Kwa hivyo, hata kama PRT haiwezi kutolewa kwa sababu iko ndani ya TPM, inawezekana kutumia LSASS ku omba funguo zilizotolewa kutoka muktadha mpya na kutumia funguo zilizotolewa kusaini Vidakuzi.
Matukio ya Matumizi Mabaya ya PRT
Kama mtumiaji wa kawaida inawezekana kuomba matumizi ya PRT kwa kuuliza LSASS kwa data ya SSO. Hii inaweza kufanywa kama programu asilia ambazo zinaomba tokeni kutoka kwa Web Account Manager (token broker). WAM hupitisha ombi kwa LSASS, ambayo inaomba tokeni kwa kutumia PRT iliyosainiwa. Au inaweza kufanywa na mtiririko wa kivinjari (wavuti) ambapo kidakuzi cha PRT kinatumika kama kichwa kuthibitisha maombi kwa kurasa za kuingia za Azure AS.
Kama SYSTEM unaweza kuiba PRT ikiwa haijalindwa na TPM au kuingiliana na funguo za PRT katika LSASS ukitumia API za kriptografia.
Mifano ya Shambulio la Pass-the-PRT
Shambulio - ROADtoken
Kwa maelezo zaidi kuhusu njia hii angalia chapisho hili. ROADtoken itaendesha BrowserCore.exe
kutoka saraka sahihi na kuitumia kupata kidakuzi cha PRT. Kidakuzi hiki kinaweza kisha kutumika na ROADtools kuthibitisha na kupata tokeni ya upya ya kudumu.
Ili kuzalisha kidakuzi halali cha PRT kitu cha kwanza unachohitaji ni nonce. Unaweza kupata hii kwa:
Au kutumia roadrecon:
Kisha unaweza kutumia roadtoken kupata PRT mpya (endesha katika chombo kutoka kwa mchakato wa mtumiaji kushambulia):
Kama oneliner:
Kisha unaweza kutumia cookie iliyotengenezwa ili kuzalisha tokeni za kuingia ukitumia Azure AD Graph au Microsoft Graph:
Shambulio - Kutumia roadrecon
Shambulio - Kutumia AADInternals na PRT iliyovuja
Get-AADIntUserPRTToken
inapata token ya PRT ya mtumiaji kutoka kwenye kompyuta iliyounganishwa na Azure AD au Hybrid. Inatumia BrowserCore.exe
kupata token ya PRT.
Au kama una maadili kutoka Mimikatz unaweza pia kutumia AADInternals kuzalisha tokeni:
Nenda kwenye https://login.microsoftonline.com, futa kuki zote za login.microsoftonline.com na uingize kuki mpya.
Kisha nenda https://portal.azure.com
Zingine zinapaswa kuwa chaguo-msingi. Hakikisha unaweza kuburudisha ukurasa na kuki haipotei, ikiwa inapotea, huenda umefanya kosa na unahitaji kupitia mchakato tena. Ikiwa haipotei, unapaswa kuwa sawa.
Shambulio - Mimikatz
Hatua
PRT (Primary Refresh Token) inatolewa kutoka LSASS (Local Security Authority Subsystem Service) na kuhifadhiwa kwa matumizi ya baadaye.
Session Key inatolewa baadaye. Kwa kuwa ufunguo huu hutolewa awali na kisha kufichwa tena na kifaa cha ndani, inahitaji kufichuliwa kwa kutumia DPAPI masterkey. Maelezo ya kina kuhusu DPAPI (Data Protection API) yanaweza kupatikana katika rasilimali hizi: HackTricks na kwa kuelewa matumizi yake, rejelea Pass-the-cookie attack.
Baada ya kufichua Session Key, ufunguo uliotokana na muktadha wa PRT hupatikana. Hizi ni muhimu kwa kuunda PRT cookie. Hasa, ufunguo uliotokana hutumika kwa kusaini JWT (JSON Web Token) ambayo ni sehemu ya cookie. Maelezo ya kina ya mchakato huu yametolewa na Dirk-jan, yanapatikana hapa.
Kumbuka kwamba ikiwa PRT iko ndani ya TPM na si ndani ya lsass
mimikatz haitakuwa na uwezo wa kuitoa.
Hata hivyo, itawezekana kupata ufunguo kutoka kwa ufunguo uliotokana na muktadha kutoka TPM na kuitumia kusaini cookie (angalia chaguo 3).
Unaweza kupata maelezo ya kina ya mchakato uliofanywa kutoa maelezo haya hapa: https://dirkjanm.io/digging-further-into-the-primary-refresh-token/
Hii haitafanya kazi hasa baada ya marekebisho ya Agosti 2021 kupata PRT za watumiaji wengine kwani ni mtumiaji pekee anayeweza kupata PRT yake (msimamizi wa ndani hawezi kufikia PRT za watumiaji wengine), lakini anaweza kufikia yake.
Unaweza kutumia mimikatz kutoa PRT:
(Picha kutoka https://blog.netwrix.com/2023/05/13/pass-the-prt-overview)
Nakili sehemu iliyoandikwa Prt na uihifadhi.
Toa pia ufunguo wa kikao (the KeyValue
wa uwanja wa ProofOfPossesionKey
) ambao unaweza kuona umeangaziwa hapa chini. Hii imefichwa na tutahitaji kutumia DPAPI masterkeys zetu kuifungua.
Kama huoni data yoyote ya PRT inaweza kuwa huna PRT yoyote kwa sababu kifaa chako hakijaunganishwa na Azure AD au inaweza kuwa unatumia toleo la zamani la Windows 10.
Ili kufungua ufunguo wa kikao unahitaji kuinua haki zako hadi SYSTEM ili kuendesha chini ya muktadha wa kompyuta ili uweze kutumia DPAPI masterkey kuifungua. Unaweza kutumia amri zifuatazo kufanya hivyo:
Chaguo 1 - Mimikatz Kamili
Sasa unataka kunakili thamani ya Context:
Na thamani ya derived key:
Hatimaye unaweza kutumia taarifa hizi zote kuzalisha PRT cookies:
Nenda kwenye https://login.microsoftonline.com, futa kuki zote za login.microsoftonline.com na uingize kuki mpya.
Kisha nenda https://portal.azure.com
Mengine yanapaswa kuwa chaguo-msingi. Hakikisha unaweza kuburudisha ukurasa na kuki haipotei, ikiwa inatoweka, unaweza kuwa umefanya kosa na unahitaji kupitia mchakato tena. Ikiwa haipotei, unapaswa kuwa sawa.
Chaguo 2 - roadrecon kutumia PRT
Fanya upya PRT kwanza, ambayo itaokoa katika
roadtx.prt
:
Sasa tunaweza kuomba tokeni kwa kutumia kivinjari cha maingiliano na
roadtx browserprtauth
. Tukitumia amri yaroadtx describe
, tunaona tokeni ya ufikiaji inajumuisha dai la MFA kwa sababu PRT niliyotumia katika kesi hii pia ilikuwa na dai la MFA.
Chaguo la 3 - roadrecon kutumia funguo zilizotokana
Kuwa na muktadha na ufunguo uliotokana uliotolewa na mimikatz, inawezekana kutumia roadrecon kuzalisha cookie mpya iliyosainiwa na:
Marejeo
Last updated