From b5bdbaefdb552bf32fe587293d56427cb6207f06 Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 5 Feb 2026 12:38:37 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/azure-security/az-basic-informatio --- .../az-tokens-and-public-applications.md | 156 +++++++++--------- 1 file changed, 78 insertions(+), 78 deletions(-) diff --git a/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md b/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md index d1f8d34ba..d9235da8b 100644 --- a/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md +++ b/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md @@ -4,95 +4,95 @@ ## Basic Information -Entra ID ni jukwaa la usimamizi wa utambulisho na ufikiaji (IAM) la Microsoft linalotegemea wingu, likihudumia kama mfumo wa msingi wa uthibitishaji na idhini kwa huduma kama Microsoft 365 na Azure Resource Manager. Azure AD inatekeleza mfumo wa idhini wa OAuth 2.0 na itifaki ya uthibitishaji ya OpenID Connect (OIDC) ili kusimamia ufikiaji wa rasilimali. +Entra ID ni jukwaa la Microsoft la utambulisho na usimamizi wa ufikiaji (IAM) linalotegemea wingu, likitumika kama mfumo wa msingi wa uthibitishaji na idhini kwa huduma kama Microsoft 365 na Azure Resource Manager. Azure AD inautekeleza fremu ya idhini ya OAuth 2.0 na itifaki ya uthibitishaji OpenID Connect (OIDC) kusimamia ufikiaji wa rasilimali. ### OAuth -**Washiriki Wakuu katika OAuth 2.0:** +**Key Participants in OAuth 2.0:** -1. **Seva ya Rasilimali (RS):** Inalinda rasilimali zinazomilikiwa na mmiliki wa rasilimali. -2. **Mmiliki wa Rasilimali (RO):** Kawaida ni mtumiaji wa mwisho anaye miliki rasilimali zilizolindwa. -3. **Programu ya Mteja (CA):** Programu inayotafuta ufikiaji wa rasilimali kwa niaba ya mmiliki wa rasilimali. -4. **Seva ya Idhini (AS):** Inatoa alama za ufikiaji kwa programu za mteja baada ya kuthibitisha na kuidhinisha. +1. **Resource Server (RS):** Linalinda rasilimali zinazomilikiwa na mmiliki wa rasilimali. +2. **Resource Owner (RO):** Kwa kawaida ni mtumiaji wa mwisho ambaye anamiliki rasilimali zilizolindwa. +3. **Client Application (CA):** Programu inayotafuta ufikiaji wa rasilimali kwa niaba ya mmiliki wa rasilimali. +4. **Authorization Server (AS):** Hutoa access tokens kwa client applications baada ya kuzi-authenticate na kuzipa idhini. -**Mikondo na Idhini:** +**Scopes and Consent:** -- **Mikondo:** Ruhusa za kina zilizofafanuliwa kwenye seva ya rasilimali ambazo zinaelezea viwango vya ufikiaji. -- **Idhini:** Mchakato ambao mmiliki wa rasilimali anatoa ruhusa kwa programu ya mteja kufikia rasilimali zenye mikondo maalum. +- **Scopes:** Ruhusa za kiwango-kipande zimetambulishwa kwenye resource server zinazoonyesha viwango vya ufikiaji. +- **Consent:** Mchakato ambapo mmiliki wa rasilimali anampa client application ruhusa ya kufikia rasilimali kwa scopes maalum. -**Ushirikiano wa Microsoft 365:** +**Microsoft 365 Integration:** -- Microsoft 365 inatumia Azure AD kwa IAM na ina programu nyingi za "first-party" za OAuth. -- Programu hizi zimeunganishwa kwa kina na mara nyingi zina uhusiano wa huduma zinazohusiana. -- Ili kurahisisha uzoefu wa mtumiaji na kudumisha kazi, Microsoft inatoa "idhini iliyodhaniwa" au "idhini ya awali" kwa programu hizi za first-party. -- **Idhini Iliyodhaniwa:** Programu fulani zinapewa moja kwa moja **ufikiaji wa mikondo maalum bila idhini ya wazi ya mtumiaji au msimamizi**. -- Mikondo hii iliyodhaniwa kwa kawaida inafichwa kutoka kwa watumiaji na wasimamizi, na kuifanya iwe na mwonekano mdogo katika interfaces za usimamizi wa kawaida. +- Microsoft 365 inatumia Azure AD kwa IHAM na imeundwa kwa applications nyingi za "first-party". +- Applications hizi zimeunganishwa kwa kina na mara nyingi zina uhusiano wa huduma ambao hutegemeana. +- Ili kurahisisha uzoefu wa mtumiaji na kudumisha utendakazi, Microsoft huwapa applications hizi za first-party "implied consent" au "pre-consent". +- **Implied Consent:** Programu fulani hupata kiotomatiki **access kwa scopes maalum bila idhini ya wazi ya mtumiaji au msimamizi**. +- Scopes hizi zilizotanguliwa kwa kawaida huwa zimefichwa kwa watumiaji na wasimamizi, na hivyo kuwa zisizoonekana sana katika interfaces za usimamizi za kawaida. -**Aina za Programu za Mteja:** +**Client Application Types:** -1. **Wateja wa Siri:** -- Wana akreditif zao wenyewe (mfano, nywila au vyeti). -- Wanaweza **kujithibitisha kwa usalama** kwa seva ya idhini. -2. **Wateja wa Umma:** -- Hawana akreditif za kipekee. -- Hawawezi kujithibitisha kwa usalama kwa seva ya idhini. -- **Athari za Usalama:** Mshambuliaji anaweza kujifanya kuwa programu ya mteja wa umma anapohitaji alama, kwani hakuna mekanizma kwa seva ya idhini kuthibitisha uhalali wa programu. +1. **Confidential Clients:** +- Zinamiliki credentials zao (mfano, passwords au certificates). +- Zinaweza **kuji-authenticate kwa usalama** kwa authorization server. +2. **Public Clients:** +- Hazina credentials za kipekee. +- Haziwezi kujithibitisha kwa usalama kwa authorization server. +- **Security Implication:** Mdukuzi anaweza kujigawa kama public client application anapofanya maombi ya tokens, kwani hakuna mekanismi kwa authorization server kuthibitisha uhalali wa application. ## Authentication Tokens -Kuna **aina tatu za alama** zinazotumika katika OIDC: +Kuna **aina tatu za tokens** zinazotumika katika OIDC: -- [**Access Tokens**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** Mteja anawasilisha alama hii kwa seva ya rasilimali ili **kufikia rasilimali**. Inaweza kutumika tu kwa mchanganyiko maalum wa mtumiaji, mteja, na rasilimali na **haiwezi kufutwa** hadi ipite muda - yaani, saa 1 kwa default. -- **ID Tokens**: Mteja anapata alama hii **kutoka kwa seva ya idhini**. Inajumuisha taarifa za msingi kuhusu mtumiaji. Inafungwa kwa mchanganyiko maalum wa mtumiaji na mteja. -- **Refresh Tokens**: Zinapeanwa kwa mteja pamoja na alama ya ufikiaji. Zinatumika **kupata alama mpya za ufikiaji na ID**. Inafungwa kwa mchanganyiko maalum wa mtumiaji na mteja na inaweza kufutwa. Muda wa kawaida wa kuisha ni **siku 90** kwa alama za refresh zisizofanya kazi na **hakuna muda wa kuisha kwa alama za kazi** (kutoka kwa alama ya refresh inawezekana kupata alama mpya za refresh). -- Alama ya refresh inapaswa kuunganishwa na **`aud`**, kwa baadhi ya **mikondo**, na kwa **tenant** na inapaswa kuwa na uwezo wa kuzalisha alama za ufikiaji kwa hiyo aud, mikondo (na hakuna zaidi) na tenant. Hata hivyo, hii si hali kwa **FOCI applications tokens**. -- Alama ya refresh imefichwa na ni Microsoft pekee inayoweza kuifungua. -- Kupata alama mpya ya refresh hakufuti alama ya refresh ya awali. +- [**Access Tokens**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** Mteja huwasilisha token hii kwa resource server ili **kupata rasilimali**. Inaweza kutumika tu kwa mchanganyiko maalum wa mtumiaji, client, na rasilimali na **haiwezi kufutwa** hadi itakapotia muda - kawaida ni saa 1 kwa default. +- **ID Tokens**: Mteja hupokea token hii kutoka kwa authorization server. Ina taarifa za msingi kuhusu mtumiaji. Imefungamana na mchanganyiko maalum wa mtumiaji na client. +- **Refresh Tokens**: Zinapotolewa kwa mteja pamoja na access token. Zinatumika kupata **access na ID tokens mpya**. Zimefungamana na mchanganyiko maalum wa mtumiaji na client na zinaweza kufutwa. Muda wa default wa kumalizika ni **siku 90** kwa refresh tokens zisizotumika na **hakuna kumalizika kwa tokens zinazoendelea** (kutokana na refresh token inawezekana kupata refresh tokens mpya). +- Refresh token inapaswa kuhusishwa na `aud`, na baadhi ya **scopes**, na kwa **tenant**, na inapaswa tu kuweza kuzalisha access tokens kwa aud hiyo, scopes hizo (na si zaidi) na tenant. Hata hivyo, hili si kawaida kwa **FOCI applications tokens**. +- Refresh token imefichwa (encrypted) na ni Microsoft pekee inaweza kuisomea (decrypt). +- Kupata refresh token mpya hakufutili otomatiki refresh token ya awali. > [!WARNING] -> Taarifa za **ufikiaji wa masharti** zime **hifadhiwa** ndani ya **JWT**. Hivyo, ikiwa unahitaji **alama kutoka anwani ya IP iliyoidhinishwa**, hiyo **IP** itakuwa **hifadhiwa** katika alama na kisha unaweza kutumia alama hiyo kutoka **IP isiyoidhinishwa kufikia rasilimali**. +> Taarifa za **conditional access** zinawekwa ndani ya **JWT**. Kwa hiyo, kama utaomba **token kutoka kwa anwani ya IP iliyoruhusiwa**, anwani hiyo ya **IP** itawekwa ndani ya token na baadaye unaweza kutumia token hiyo kutoka anwani ya **IP isiyoruhusiwa** kufikia rasilimali. ### Access Tokens "aud" -Uwanja ulioonyeshwa katika uwanja wa "aud" ni **seva ya rasilimali** (programu) inayotumika kufanya kuingia. +Uwanja unaoashiriwa katika uwanja wa "aud" ni **resource server** (application) inayotumika kufanya login. -Amri `az account get-access-token --resource-type [...]` inasaidia aina zifuatazo na kila moja itongeza "aud" maalum katika alama ya ufikiaji inayotokana: +Amri `az account get-access-token --resource-type [...]` inaunga mkono aina zifuatazo na kila moja yao itaongeza "aud" maalum katika access token inayotokana: > [!CAUTION] -> Kumbuka kwamba yafuatayo ni APIs zinazosaidiwa na `az account get-access-token` lakini kuna zaidi. +> Kumbuka kwamba yafuatayo ni API ambazo `az account get-access-token` inazisaidia tu lakini kuna zaidi.
-aud examples +mfano za aud -- **aad-graph (Azure Active Directory Graph API)**: Inatumika kufikia Azure AD Graph API ya zamani (iliyotengwa), ambayo inaruhusu programu kusoma na kuandika data ya directory katika Azure Active Directory (Azure AD). +- **aad-graph (Azure Active Directory Graph API)**: Inatumika kufikia Azure AD Graph API ya zamani (deprecated), ambayo inaruhusu applications kusoma na kuandika data za saraka katika Azure Active Directory (Azure AD). - `https://graph.windows.net/` -* **arm (Azure Resource Manager)**: Inatumika kusimamia rasilimali za Azure kupitia API ya Azure Resource Manager. Hii inajumuisha operesheni kama kuunda, kuboresha, na kufuta rasilimali kama vile mashine za virtual, akaunti za uhifadhi, na zaidi. +* **arm (Azure Resource Manager)**: Inatumika kusimamia rasilimali za Azure kupitia Azure Resource Manager API. Hii ni pamoja na operesheni kama kuunda, kusasisha, na kufuta rasilimali kama virtual machines, storage accounts, na zaidi. - `https://management.core.windows.net/ or https://management.azure.com/` -- **batch (Azure Batch Services)**: Inatumika kufikia Azure Batch, huduma inayowezesha programu za kompyuta za kiwango kikubwa na za utendaji wa juu kwa ufanisi katika wingu. +- **batch (Azure Batch Services)**: Inatumika kufikia Azure Batch, huduma inayorwaa kuendesha programu za hesabu zenye utaratibu mkubwa na utendaji wa juu kwa ufanisi kwenye wingu. - `https://batch.core.windows.net/` -* **data-lake (Azure Data Lake Storage)**: Inatumika kuingiliana na Azure Data Lake Storage Gen1, ambayo ni huduma ya uhifadhi wa data na uchambuzi inayoweza kupanuka. +* **data-lake (Azure Data Lake Storage)**: Inatumika kuingiliana na Azure Data Lake Storage Gen1, ambayo ni huduma ya kuhifadhi data inayoweza kupanuka kwa ajili ya uchambuzi. - `https://datalake.azure.net/` -- **media (Azure Media Services)**: Inatumika kufikia Azure Media Services, ambazo zinatoa huduma za usindikaji na usambazaji wa media zinazotegemea wingu kwa maudhui ya video na sauti. +- **media (Azure Media Services)**: Inatumika kufikia Azure Media Services, zinazotoa huduma za usindikaji wa media na utangazaji kwa video na sauti kwenye wingu. - `https://rest.media.azure.net` -* **ms-graph (Microsoft Graph API)**: Inatumika kufikia Microsoft Graph API, kiunganishi kilichounganishwa kwa data za huduma za Microsoft 365. Inakuwezesha kufikia data na maarifa kutoka kwa huduma kama Azure AD, Office 365, Enterprise Mobility, na huduma za Usalama. +* **ms-graph (Microsoft Graph API)**: Inatumika kufikia Microsoft Graph API, sehemu moja ya mwisho (unified endpoint) kwa data za huduma za Microsoft 365. Inakuwezesha kufikia data na maarifa kutoka kwa huduma kama Azure AD, Office 365, Enterprise Mobility, na huduma za Usalama. - `https://graph.microsoft.com` -- **oss-rdbms (Azure Open Source Relational Databases)**: Inatumika kufikia huduma za Azure Database kwa injini za hifadhidata za uhusiano za chanzo wazi kama MySQL, PostgreSQL, na MariaDB. +- **oss-rdbms (Azure Open Source Relational Databases)**: Inatumika kufikia huduma za Database za Azure kwa engines za relational za chanzo wazi kama MySQL, PostgreSQL, na MariaDB. - `https://ossrdbms-aad.database.windows.net`
### Access Tokens Scopes "scp" -Mikondo ya alama ya ufikiaji inahifadhiwa ndani ya ufunguo wa scp ndani ya alama ya JWT ya ufikiaji. Mikondo hii inaelezea kile alama ya ufikiaji ina ufikiaji nacho. +Scope ya access token imehifadhiwa ndani ya ufunguo wa scp ndani ya access token JWT. Scopes hizi zinaelezea ni nini access token inaweza kufikia. -Ikiwa JWT inaruhusiwa kuwasiliana na API maalum lakini **haina mikondo** ya kufanya kitendo kilichohitajika, haitakuwa na uwezo wa kufanya kitendo hicho na JWT hiyo. +Kama JWT imepewa ruhusa ya kuwasiliana na API maalum lakini **hainayo scope** za kutekeleza kitendo kilichoombwa, haitakuwa na uwezo wa kutekeleza kitendo hicho kwa JWT hiyo. ### Get refresh & access token example ```python @@ -106,7 +106,7 @@ from typing import Any, Dict, List # LOGIN VIA CODE FLOW AUTHENTICATION azure_cli_client = msal.PublicClientApplication( -"04b07795-8ddb-461a-bbee-02f9e1bf7b46" # ID for Azure CLI client +"00b41c95-dab0-4487-9791-b9d2c32c80f2" # ID for Office 365 Management ) device_flow = azure_cli_client.initiate_device_flow( scopes=["https://graph.microsoft.com/.default"] @@ -146,30 +146,29 @@ pprint(new_azure_cli_bearer_tokens_for_graph_api) ``` ### Other access token fields -- **appid**: Kitambulisho cha Programu kinachotumika kutengeneza tokeni -- **appidacr**: Kielelezo cha Muktadha wa Uthibitishaji wa Programu kinaonyesha jinsi mteja alivyothibitishwa, kwa mteja wa umma thamani ni 0, na ikiwa siri ya mteja inatumika thamani ni 1 -- **acr**: Kielelezo cha Muktadha wa Uthibitishaji kinadai "0" wakati uthibitishaji wa mtumiaji wa mwisho haukukidhi mahitaji ya ISO/IEC 29115. -- **amr**: Njia ya uthibitishaji inaonyesha jinsi tokeni ilivyothibitishwa. Thamani ya “pwd” inaonyesha kuwa nenosiri lilitumika. -- **groups**: Inaonyesha vikundi ambavyo kiongozi ni mwanachama. -- **iss**: Masuala yanaonyesha huduma ya tokeni ya usalama (STS) ambayo ilitengeneza tokeni. e.g. https://sts.windows.net/fdd066e1-ee37-49bc-b08f-d0e152119b04/ (uuid ni kitambulisho cha mpangilio) -- **oid**: Kitambulisho cha kitu cha kiongozi -- **tid**: Kitambulisho cha Mpangilio -- **iat, nbf, exp**: Imetolewa wakati (ilipotolewa), Si kabla (haiwezi kutumika kabla ya wakati huu, kawaida thamani sawa na iat), Wakati wa kuisha. - +- **appid**: Application ID iliyotumika kuzalisha token +- **appidacr**: The Application Authentication Context Class Reference inaonyesha jinsi client ilivyothibitishwa; kwa public client thamani ni 0, na ikiwa client secret imetumika thamani ni 1 +- **acr**: The Authentication Context Class Reference claim ni "0" wakati uthibitishaji wa end-user haukukidhi mahitaji ya ISO/IEC 29115. +- **amr**: The Authentication method inaonyesha jinsi token ilivyothibitishwa. Thamani ya “pwd” inaonyesha kwamba password ilitumiwa. +- **groups**: Inaonyesha kundi ambazo principal ni mwanachama. +- **iss**: The iss inatambua security token service (STS) iliyotengeneza token. e.g. https://sts.windows.net/fdd066e1-ee37-49bc-b08f-d0e152119b04/ (the uuid is the tenant ID) +- **oid**: Object ID ya principal +- **tid**: Tenant ID +- **iat, nbf, exp**: Issued at (wakati ilipotolewa), Not before (haiwezi kutumika kabla ya wakati huu, kawaida thamani sawa na iat), Expiration time (muda wa kumalizika). ## FOCI Tokens Privilege Escalation -Kabla ilisemwa kwamba tokeni za upya zinapaswa kuunganishwa na **mipaka** ambayo ilitengenezwa nayo, kwa **programu** na **mpangilio** ambayo ilitengenezwa kwake. Ikiwa mojawapo ya mipaka hii itavunjwa, inawezekana kupandisha mamlaka kwani itakuwa inawezekana kutengeneza tokeni za ufikiaji kwa rasilimali nyingine na mipangilio ambayo mtumiaji anaweza kufikia na kwa mipaka zaidi kuliko ilivyokusudiwa awali. +Previously ilimetajwa kuwa refresh tokens zinapaswa kuambatanishwa na **scopes** ambazo zilitolewa pamoja nazo, na na **application** na **tenant** kwa ajili ya zilipotengenezwa. Iwapo mojawapo ya mipaka hii itavunjwa, inawezekana kufanya privilege escalation kwani itakuwa inawezekana kuzalisha access tokens kwa rasilimali na tenants vingine ambavyo mtumiaji ana ufikiaji kwao na kwa scopes zaidi kuliko ilikusudiwa awali. -Zaidi ya hayo, **hii inawezekana na tokeni zote za upya** katika [Microsoft identity platform](https://learn.microsoft.com/en-us/entra/identity-platform/) (akaunti za Microsoft Entra, akaunti za kibinafsi za Microsoft, na akaunti za kijamii kama Facebook na Google) kwa sababu kama [**nyaraka**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens) zinavyosema: "Tokeni za upya zimefungwa kwa mchanganyiko wa mtumiaji na mteja, lakini **hazifungwi kwa rasilimali au mpangilio**. Mteja anaweza kutumia tokeni ya upya kupata tokeni za ufikiaji **katika mchanganyiko wowote wa rasilimali na mpangilio** ambapo ana ruhusa ya kufanya hivyo. Tokeni za upya zimefungwa na ni Microsoft identity platform pekee inayoweza kuzisoma." +Moreover, **this is possible with all refresh tokens** in the [Microsoft identity platform](https://learn.microsoft.com/en-us/entra/identity-platform/) (Microsoft Entra accounts, Microsoft personal accounts, and social accounts like Facebook and Google) because as the [**docs**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens) mention: "Refresh tokens are bound to a combination of user and client, but **aren't tied to a resource or tenant**. A client can use a refresh token to acquire access tokens **across any combination of resource and tenant** where it has permission to do so. Refresh tokens are encrypted and only the Microsoft identity platform can read them." -Zaidi ya hayo, kumbuka kwamba programu za FOCI ni programu za umma, hivyo **siri haitahitajika** kuthibitisha kwa seva. +Moreover, note that the FOCI applications are public applications, so **no secret is needed** to authenticate to the server. -Kisha wateja wa FOCI waliotambulika waliripotiwa katika [**utafiti wa awali**](https://github.com/secureworks/family-of-client-ids-research/tree/main) wanaweza [**kupatikana hapa**](https://github.com/secureworks/family-of-client-ids-research/blob/main/known-foci-clients.csv). +Then known FOCI clients reported in the [**original research**](https://github.com/secureworks/family-of-client-ids-research/tree/main) can be [**found here**](https://github.com/secureworks/family-of-client-ids-research/blob/main/known-foci-clients.csv). ### Get different scope -Following with the previous example code, in this code it's requested a new token for a different scope: +Kufuata mfano wa code uliotangulia, katika code hii ombi limefanywa la token mpya kwa scope tofauti: ```python # Code from https://github.com/secureworks/family-of-client-ids-research azure_cli_bearer_tokens_for_outlook_api = ( @@ -186,7 +185,7 @@ scopes=[ ) pprint(azure_cli_bearer_tokens_for_outlook_api) ``` -### Pata wateja tofauti na mipaka +### Pata mteja na mawigo tofauti ```python # Code from https://github.com/secureworks/family-of-client-ids-research microsoft_office_client = msal.PublicClientApplication("d3590ed6-52b3-4102-aeff-aad2292ab01c") @@ -202,25 +201,26 @@ scopes=["https://graph.microsoft.com/.default"], # How is this possible? pprint(microsoft_office_bearer_tokens_for_graph_api) ``` -## Mahali pa kupata tokens +## Wapi kupata token -Kutoka kwa mtazamo wa washambuliaji, ni ya kuvutia sana kujua ni wapi inawezekana kupata access na refresh tokens wakati kwa mfano PC ya mwathirika imeathirika: +Kutoka mtazamo wa mshambulizi ni muhimu sana kujua wapi inawezekana kupata token za ufikiaji (access tokens) na token za upya (refresh tokens) wakati kwa mfano PC ya mwathirika imedukuliwa: -- Ndani ya **`/.Azure`** -- **`azureProfile.json`** ina taarifa kuhusu watumiaji walioingia kutoka zamani -- **`clouds.config contains`** taarifa kuhusu usajili -- **`service_principal_entries.json`** ina akreditif za programu (tenant id, clients na siri). Tu katika Linux & macOS -- **`msal_token_cache.json`** ina access tokens na refresh tokens. Tu katika Linux & macOS -- **`service_principal_entries.bin`** na msal_token_cache.bin vinatumika katika Windows na vimefungwa kwa DPAPI -- **`msal_http_cache.bin`** ni cache ya ombi la HTTP -- Pakua: `with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)` -- **`AzureRmContext.json`** ina taarifa kuhusu kuingia kwa awali kutumia Az PowerShell (lakini hakuna akreditif) -- Ndani ya **`C:\Users\\AppData\Local\Microsoft\IdentityCache\*`** kuna faili kadhaa za `.bin` zenye **access tokens**, ID tokens na taarifa za akaunti zilizofungwa kwa DPAPI ya watumiaji. -- Inawezekana kupata zaidi **access tokens** katika faili za `.tbres` ndani ya **`C:\Users\\AppData\Local\Microsoft\TokenBroken\Cache\`** ambazo zina base64 iliyofungwa kwa DPAPI yenye access tokens. -- Katika Linux na macOS unaweza kupata **access tokens, refresh tokens na id tokens** kutoka Az PowerShell (ikiwa imetumika) ukikimbia `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"` -- Katika Windows hii inazalisha tu id tokens. -- Inawezekana kuona kama Az PowerShell ilitumika katika Linux na macOS kwa kuangalia kama `$HOME/.local/share/.IdentityService/` ipo (ingawa faili zilizomo ni tupu na hazina matumizi) -- Ikiwa mtumiaji **ameingia ndani ya Azure kwa kivinjari**, kulingana na [**post**](https://www.infosecnoodle.com/p/obtaining-microsoft-entra-refresh?r=357m16&utm_campaign=post&utm_medium=web) inawezekana kuanza mchakato wa uthibitishaji kwa **kuhamasisha kwa localhost**, kufanya kivinjari kiidhinishe kiotomatiki kuingia, na kupokea refresh token. Kumbuka kuwa kuna programu chache za FOCI zinazoruhusu kuhamasisha kwa localhost (kama az cli au moduli ya powershell), hivyo programu hizi lazima ziaruhusiwe. +- Inside **`/.Azure`** +- **`azureProfile.json`** contains info about logged in users from the past +- **`clouds.config contains`** info about subscriptions +- **`service_principal_entries.json`** contains applications credentials (tenant id, clients and secret). Only in Linux & macOS +- **`msal_token_cache.json`** contains contains token za ufikiaji (access tokens) na token za upya (refresh tokens). Only in Linux & macOS +- **`service_principal_entries.bin`** and msal_token_cache.bin are used in Windows and are encrypted with DPAPI +- **`msal_http_cache.bin`** is a cache of HTTP request +- Load it: `with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)` +- **`AzureRmContext.json`** contains information about previous logins using Az PowerShell (but no credentials) +- Inside **`C:\Users\\AppData\Local\Microsoft\IdentityCache\*`** are several `.bin` files with **token za ufikiaji (access tokens)**, **token za ID (ID tokens)** and account information encrypted with the users DPAPI. +- It’s possible to find more **token za ufikiaji (access tokens)** in the `.tbres` files inside **`C:\Users\\AppData\Local\Microsoft\TokenBroken\Cache\`** which contain a base64 encrypted with DPAPI with access tokens. +- In Linux and macOS you can get **token za ufikiaji (access tokens), token za upya (refresh tokens) and token za kitambulisho (id tokens)** from Az PowerShell (if used) running `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"` +- In Windows this just generates id tokens. +- Possible to see if Az PowerShell was used in Linux and macSO checking is `$HOME/.local/share/.IdentityService/` exists (although the contained files are empty and useless) +- If the user is **logged inside Azure with the browser**, according to this [**post**](https://www.infosecnoodle.com/p/obtaining-microsoft-entra-refresh?r=357m16&utm_campaign=post&utm_medium=web) it's possible to start the authentication flow with a **redirect to localhost**, make the browser automatically authorize the login, and receive the refresh token. Note that there are only a few FOCI applications that allow redirect to localhost (like az cli or the powershell module), so these applications must be allowed. +- Another option explained in the blog is to use the tool [**BOF-entra-authcode-flow**](https://github.com/sudonoodle/BOF-entra-authcode-flow) which can use any application because it'll **get the OAuth code to then get a refresh token from the title of the final auth** page using the redirect URI `https://login.microsoftonline.com/common/oauth2/nativeclient`. ## Marejeo