mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['', 'src/pentesting-cloud/azure-security/az-basic-informatio
This commit is contained in:
+80
-78
@@ -2,99 +2,99 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Basic Information
|
||||
## Basiese Inligting
|
||||
|
||||
Entra ID is Microsoft's cloud-based identity and access management (IAM) platform, serving as the foundational authentication and authorization system for services like Microsoft 365 and Azure Resource Manager. Azure AD implementeer die OAuth 2.0-autoriseringsraamwerk en die OpenID Connect (OIDC) autentikasieprotokol om toegang tot hulpbronne te bestuur.
|
||||
Entra ID is Microsoft se cloud-gebaseerde identity and access management (IAM) platform en dien as die fondamentale authentication en authorization stelsel vir dienste soos Microsoft 365 en Azure Resource Manager. Azure AD implementeer die OAuth 2.0 authorization framework en die OpenID Connect (OIDC) authentication protocol om toegang tot hulpbronne te bestuur.
|
||||
|
||||
### OAuth
|
||||
|
||||
**Belangrike Deelnemers in OAuth 2.0:**
|
||||
**Sleuteldeelnemers in OAuth 2.0:**
|
||||
|
||||
1. **Hulpbronbediener (RS):** Beskerm hulpbronne wat deur die hulpbron eienaar besit word.
|
||||
2. **Hulpbron Eienaar (RO):** Gewoonlik 'n eindgebruiker wat die beskermde hulpbronne besit.
|
||||
3. **Kliënttoepassing (CA):** 'n Toepassing wat toegang tot hulpbronne soek namens die hulpbron eienaar.
|
||||
4. **Autoriseringsbediener (AS):** Gee toegangstokens aan kliënttoepassings nadat dit hulle geverifieer en geautoriseer het.
|
||||
1. **Resource Server (RS):** Beskerm hulpbronne wat deur die resource owner besit word.
|
||||
2. **Resource Owner (RO):** Gewoonlik 'n eindgebruiker wat die beskermde hulpbronne besit.
|
||||
3. **Client Application (CA):** 'n Aplikasie wat toegang tot hulpbronne namens die resource owner soek.
|
||||
4. **Authorization Server (AS):** Gee access tokens aan client applications nadat hulle geverifieer en geauthoriseer is.
|
||||
|
||||
**Skoppe en Toestemming:**
|
||||
**Scopes en Toestemming:**
|
||||
|
||||
- **Skoppe:** Fynkorrelige toestemmings wat op die hulpbronbediener gedefinieer is en toegangsvlakke spesifiseer.
|
||||
- **Toestemming:** Die proses waardeur 'n hulpbron eienaar 'n kliënttoepassing toestemming gee om toegang tot hulpbronne met spesifieke skoppe te verkry.
|
||||
- **Scopes:** Fyn-granulêre magtigings wat op die resource server gedefinieer word en toegangsvlakke spesifiseer.
|
||||
- **Consent:** Die proses waardeur 'n resource owner 'n client application toestemming gee om hulpbronne met spesifieke scopes te gebruik.
|
||||
|
||||
**Microsoft 365 Integrasie:**
|
||||
|
||||
- Microsoft 365 gebruik Azure AD vir IAM en bestaan uit verskeie "eerste-party" OAuth-toepassings.
|
||||
- Hierdie toepassings is diep geïntegreer en het dikwels onderling afhanklike diensverhoudings.
|
||||
- Om die gebruikerservaring te vereenvoudig en funksionaliteit te handhaaf, verleen Microsoft "implisiete toestemming" of "voor-toestemming" aan hierdie eerste-party toepassings.
|
||||
- **Implisiete Toestemming:** Sekere toepassings word outomaties **toegelaat om toegang tot spesifieke skoppe te verkry sonder eksplisiete gebruiker of administrateur goedkeuring**.
|
||||
- Hierdie voor-toegestemde skoppe is gewoonlik verborge vir beide gebruikers en administrateurs, wat dit minder sigbaar maak in standaard bestuursinterfaces.
|
||||
- Microsoft 365 gebruik Azure AD vir IAM en bestaan uit verskeie "first-party" OAuth applications.
|
||||
- Hierdie toepassings is diep geïntegreer en het dikwels onderlinge diensverhoudings.
|
||||
- Om gebruikerservaring te vereenvoudig en funksionaliteit te behou, gee Microsoft "implied consent" of "pre-consent" aan hierdie first-party applications.
|
||||
- **Implied Consent:** Sekere toepassings word outomaties **toegestaan om toegang tot spesifieke scopes te kry sonder eksplisiete gebruiker- of administrateurgoedkeuring**.
|
||||
- Hierdie pre-consented scopes is gewoonlik weggesteek vir beide gebruikers en administrateurs, wat hulle minder sigbaar maak in standaard bestuursinterfaces.
|
||||
|
||||
**Tipes Kliënttoepassings:**
|
||||
**Tipes Client Applications:**
|
||||
|
||||
1. **Vertroulike Kliënte:**
|
||||
- Besit hul eie geloofsbriewe (bv. wagwoorde of sertifikate).
|
||||
- Kan **hulle veilig aan die autoriseringsbediener autentiseer**.
|
||||
2. **Publieke Kliënte:**
|
||||
- Het nie unieke geloofsbriewe nie.
|
||||
- Kan nie veilig aan die autoriseringsbediener autentiseer nie.
|
||||
- **Sekuriteitsimplikasie:** 'n Aanvaller kan 'n publieke kliënttoepassing naboots wanneer hy tokens aan vra, aangesien daar geen meganisme is vir die autoriseringsbediener om die legitimiteit van die toepassing te verifieer nie.
|
||||
1. **Confidential Clients:**
|
||||
- Besit hul eie credentials (bv. passwords of sertifikate).
|
||||
- Kan hulself **veilig autentiseer** na die authorization server.
|
||||
2. **Public Clients:**
|
||||
- Het nie unieke credentials nie.
|
||||
- Kan nie veilig teenoor die authorization server autentiseer nie.
|
||||
- **Sekuriteitsimplikasie:** 'n Aanvaller kan 'n public client application naboots wanneer hy tokens versoek, aangesien daar geen meganisme is vir die authorization server om die legitimiteit van die aplikasie te verifieer nie.
|
||||
|
||||
## Authentication Tokens
|
||||
|
||||
Daar is **drie tipes tokens** wat in OIDC gebruik word:
|
||||
|
||||
- [**Toegangstokens**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** Die kliënt bied hierdie token aan die hulpbronbediener aan om **toegang tot hulpbronne** te verkry. Dit kan slegs gebruik word vir 'n spesifieke kombinasie van gebruiker, kliënt en hulpbron en **kan nie herroep word** totdat dit verval nie - dit is 1 uur per standaard.
|
||||
- **ID Tokens**: Die kliënt ontvang hierdie **token van die autoriseringsbediener**. Dit bevat basiese inligting oor die gebruiker. Dit is **gebind aan 'n spesifieke kombinasie van gebruiker en kliënt**.
|
||||
- **Herfris Tokens**: Word aan die kliënt verskaf saam met toegangstoken. Gebruik om **nuwe toegang en ID tokens te verkry**. Dit is gebind aan 'n spesifieke kombinasie van gebruiker en kliënt en kan herroep word. Standaard vervaldatum is **90 dae** vir inaktiewe herfris tokens en **geen vervaldatum vir aktiewe tokens** (dit is moontlik om nuwe herfris tokens uit 'n herfris token te verkry).
|
||||
- 'n Herfris token moet aan 'n **`aud`**, aan sekere **skoppe**, en aan 'n **tenant** gekoppel wees en dit moet slegs toegangstokens vir daardie aud, skoppe (en nie meer nie) en tenant kan genereer. Dit is egter nie die geval met **FOCI toepassings tokens** nie.
|
||||
- 'n Herfris token is geënkripteer en slegs Microsoft kan dit dekripteer.
|
||||
- Om 'n nuwe herfris token te verkry, herroep nie die vorige herfris token nie.
|
||||
- [**Access Tokens**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** Die client bied hierdie token aan die resource server om toegang tot hulpbronne te kry. Dit kan slegs gebruik word vir 'n spesifieke kombinasie van gebruiker, client, en resource en **kan nie herroep word** tot dit verval — dit is standaard 1 uur.
|
||||
- **ID Tokens**: Die client ontvang hierdie **token van die authorization server**. Dit bevat basiese inligting oor die gebruiker. Dit is **gebind aan 'n spesifieke kombinasie van gebruiker en client**.
|
||||
- **Refresh Tokens**: Verskaf aan die client saam met die access token. Word gebruik om **nuwe access- en ID-tokens te kry**. Dit is gebind aan 'n spesifieke kombinasie van gebruiker en client en kan herroep word. Die standaard vervaltyd is **90 dae** vir inaktiewe refresh tokens en **geen vervaltyd vir aktiewe tokens** (van 'n refresh token is dit moontlik om nuwe refresh tokens te kry).
|
||||
- 'n Refresh token behoort gekoppel te wees aan 'n **`aud`**, aan sekere **scopes**, en aan 'n **tenant** en dit behoort slegs in staat te wees om access tokens vir daardie aud, scopes (en nie meer nie) en tenant te genereer. Dit is egter nie die geval met **FOCI applications tokens** nie.
|
||||
- 'n Refresh token is versleuteld en slegs Microsoft kan dit ontsleutel.
|
||||
- Om 'n nuwe refresh token te kry herroep nie die vorige refresh token nie.
|
||||
|
||||
> [!WARNING]
|
||||
> Inligting vir **voorwaardelike toegang** is **gestoor** binne die **JWT**. So, as jy die **token van 'n toegelate IP-adres** aan vra, sal daardie **IP** in die token **gestoor** word en dan kan jy daardie token van 'n **nie-toegelate IP gebruik om toegang tot die hulpbronne** te verkry.
|
||||
> Inligting vir **conditional access** is **gestoor** binne die **JWT**. Dus, as jy die **token vanaf 'n toegelate IP-adres** versoek, sal daardie **IP** in die token **gestoor** word en jy kan daardie token dan vanaf 'n **nie-toegelate IP gebruik om toegang tot hulpbronne te kry**.
|
||||
|
||||
### Access Tokens "aud"
|
||||
|
||||
Die veld wat in die "aud" veld aangedui word, is die **hulpbronbediener** (die toepassing) wat gebruik word om die aanmelding uit te voer.
|
||||
Die veld wat in die "aud" veld aangedui word is die **resource server** (die toepassing) wat gebruik word om die login uit te voer.
|
||||
|
||||
Die opdrag `az account get-access-token --resource-type [...]` ondersteun die volgende tipes en elkeen daarvan sal 'n spesifieke "aud" in die resulterende toegangstoken voeg:
|
||||
Die opdrag `az account get-access-token --resource-type [...]` ondersteun die volgende tipes en elkeen van hulle sal 'n spesifieke "aud" by die resulterende access token voeg:
|
||||
|
||||
> [!CAUTION]
|
||||
> Let daarop dat die volgende net die API's is wat deur `az account get-access-token` ondersteun word, maar daar is meer.
|
||||
> Neem asseblief kennis dat die onderstaande net die APIs is wat deur `az account get-access-token` ondersteun word, maar daar is meer.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>aud voorbeelde</summary>
|
||||
<summary>aud examples</summary>
|
||||
|
||||
- **aad-graph (Azure Active Directory Graph API)**: Gebruik om toegang te verkry tot die ouer Azure AD Graph API (vervang), wat toepassings toelaat om gidsdata in Azure Active Directory (Azure AD) te lees en te skryf.
|
||||
- **aad-graph (Azure Active Directory Graph API)**: Word gebruik om toegang te kry tot die legacy Azure AD Graph API (deprecated), wat toepassings toelaat om directory data in Azure Active Directory (Azure AD) te lees en te skryf.
|
||||
- `https://graph.windows.net/`
|
||||
|
||||
* **arm (Azure Resource Manager)**: Gebruik om Azure hulpbronne te bestuur deur die Azure Resource Manager API. Dit sluit operasies in soos die skep, opdateer en verwyder van hulpbronne soos virtuele masjiene, stoor rekeninge, en meer.
|
||||
* **arm (Azure Resource Manager)**: Word gebruik om Azure resources te bestuur via die Azure Resource Manager API. Dit sluit operasies in soos die skep, opdateer en verwyder van resources soos virtual machines, storage accounts, en meer.
|
||||
- `https://management.core.windows.net/ or https://management.azure.com/`
|
||||
|
||||
- **batch (Azure Batch Services)**: Gebruik om toegang te verkry tot Azure Batch, 'n diens wat grootmaat parallelle en hoë-prestasie rekenaar toepassings doeltreffend in die wolk moontlik maak.
|
||||
- **batch (Azure Batch Services)**: Word gebruik om toegang te kry tot Azure Batch, 'n diens wat groot-skale parallelle en hoë-prestasie rekenaartoepassings in die cloud effektief moontlik maak.
|
||||
- `https://batch.core.windows.net/`
|
||||
|
||||
* **data-lake (Azure Data Lake Storage)**: Gebruik om te kommunikeer met Azure Data Lake Storage Gen1, wat 'n skaalbare data berging en analise diens is.
|
||||
* **data-lake (Azure Data Lake Storage)**: Word gebruik om met Azure Data Lake Storage Gen1 te kommunikeer, wat 'n skaalbare datastoor en analytics diens is.
|
||||
- `https://datalake.azure.net/`
|
||||
|
||||
- **media (Azure Media Services)**: Gebruik om toegang te verkry tot Azure Media Services, wat wolk-gebaseerde media verwerking en aflewering dienste vir video en klank inhoud bied.
|
||||
- **media (Azure Media Services)**: Word gebruik om toegang te kry tot Azure Media Services, wat cloud-gebaseerde media verwerking en afleweringsdienste vir video- en oudiomateriaal verskaf.
|
||||
- `https://rest.media.azure.net`
|
||||
|
||||
* **ms-graph (Microsoft Graph API)**: Gebruik om toegang te verkry tot die Microsoft Graph API, die verenigde eindpunt vir Microsoft 365 dienste data. Dit laat jou toe om toegang te verkry tot data en insigte van dienste soos Azure AD, Office 365, Enterprise Mobility, en Sekuriteitsdienste.
|
||||
* **ms-graph (Microsoft Graph API)**: Word gebruik om toegang te kry tot die Microsoft Graph API, die verenigde eindpunt vir Microsoft 365 diensdata. Dit laat jou toe om data en insigte van dienste soos Azure AD, Office 365, Enterprise Mobility en Security dienste te bekom.
|
||||
- `https://graph.microsoft.com`
|
||||
|
||||
- **oss-rdbms (Azure Open Source Relational Databases)**: Gebruik om toegang te verkry tot Azure Databasisdienste vir oopbron relationele databasis enjin soos MySQL, PostgreSQL, en MariaDB.
|
||||
- **oss-rdbms (Azure Open Source Relational Databases)**: Word gebruik om toegang te kry tot Azure Database dienste vir open-source relationele databasismotors soos MySQL, PostgreSQL, en MariaDB.
|
||||
- `https://ossrdbms-aad.database.windows.net`
|
||||
|
||||
</details>
|
||||
|
||||
### Access Tokens Skoppe "scp"
|
||||
### Access Tokens Scopes "scp"
|
||||
|
||||
Die skop van 'n toegangstoken word binne die scp sleutel binne die toegangstoken JWT gestoor. Hierdie skoppe definieer waartoe die toegangstoken toegang het.
|
||||
Die scope van 'n access token word gestoor binne die scp sleutel binne die access token JWT. Hierdie scopes definieer waarna die access token toegang het.
|
||||
|
||||
As 'n JWT toegelaat word om 'n spesifieke API te kontak, maar **nie die skop het** om die aangevraagde aksie uit te voer nie, sal dit **nie in staat wees om die aksie** met daardie JWT uit te voer nie.
|
||||
As 'n JWT toegelaat word om 'n spesifieke API te kontak maar **nie die scope het** om die versoekte aksie uit te voer nie, sal dit **nie in staat wees om daardie aksie met daardie JWT uit te voer nie**.
|
||||
|
||||
### Get refresh & access token example
|
||||
### Kry voorbeeld van refresh- & access-token
|
||||
```python
|
||||
# Code example from https://github.com/secureworks/family-of-client-ids-research
|
||||
import msal
|
||||
@@ -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"]
|
||||
@@ -144,31 +144,32 @@ scopes=["https://graph.microsoft.com/.default"],
|
||||
)
|
||||
pprint(new_azure_cli_bearer_tokens_for_graph_api)
|
||||
```
|
||||
### Ander toegangstoken velde
|
||||
### Ander access token-velde
|
||||
|
||||
- **appid**: Application ID wat gebruik is om die token te genereer
|
||||
- **appidacr**: Die Application Authentication Context Class Reference dui aan hoe die client geverifieer is; vir 'n public client is die waarde 0, en as 'n client secret gebruik is is die waarde 1
|
||||
- **acr**: Die Authentication Context Class Reference-claim is "0" wanneer die eindgebruiker se verifikasie nie aan die vereistes van ISO/IEC 29115 voldoen het nie.
|
||||
- **amr**: Die Authentication method dui aan hoe die token geverifieer is. 'n Waarde van “pwd” dui aan dat 'n wagwoord gebruik is.
|
||||
- **groups**: Dui die groups aan waarvan die principal 'n lid is.
|
||||
- **iss**: Die iss identifiseer die security token service (STS) wat die token gegenereer het. e.g. https://sts.windows.net/fdd066e1-ee37-49bc-b08f-d0e152119b04/ (die uuid is die tenant ID)
|
||||
- **oid**: Die object ID van die principal
|
||||
- **tid**: Tenant ID
|
||||
- **iat, nbf, exp**: Issued at (wanneer dit uitgereik is), Not before (kan nie gebruik word voor hierdie tyd nie, gewoonlik dieselfde waarde as iat), Expiration time.
|
||||
|
||||
- **appid**: Toepassing ID wat gebruik word om die token te genereer
|
||||
- **appidacr**: Die Toepassing Verifikasie Konteks Klas Verwysing dui aan hoe die kliënt geverifieer is, vir 'n openbare kliënt is die waarde 0, en as 'n kliënt geheim gebruik word, is die waarde 1
|
||||
- **acr**: Die Verifikasie Konteks Klas Verwysing eis is "0" wanneer die eindgebruiker se verifikasie nie aan die vereistes van ISO/IEC 29115 voldoen het nie.
|
||||
- **amr**: Die Verifikasie metode dui aan hoe die token geverifieer is. 'n Waarde van “pwd” dui aan dat 'n wagwoord gebruik is.
|
||||
- **groups**: Dui die groepe aan waar die hoofpersoon 'n lid is.
|
||||
- **iss**: Die kwessies identifiseer die sekuriteit token diens (STS) wat die token gegenereer het. bv. https://sts.windows.net/fdd066e1-ee37-49bc-b08f-d0e152119b04/ (die uuid is die huurder ID)
|
||||
- **oid**: Die objek ID van die hoofpersoon
|
||||
- **tid**: Huurder ID
|
||||
- **iat, nbf, exp**: Uitgereik op (wanneer dit uitgereik is), Nie voor nie (kan nie voor hierdie tyd gebruik word nie, gewoonlik dieselfde waarde as iat), Vervaldatum.
|
||||
|
||||
## FOCI Tokens Privilege Escalation
|
||||
|
||||
Voorheen is genoem dat verfris tokens aan die **skoppe** waaraan dit gegenereer is, aan die **toepassing** en **huurder** waaraan dit gegenereer is, gekoppel moet wees. As enige van hierdie grense oorgesteek word, is dit moontlik om voorregte te verhoog aangesien dit moontlik sal wees om toegangstokens vir ander hulpbronne en huurders te genereer waartoe die gebruiker toegang het en met meer skoppe as wat oorspronklik bedoel was.
|
||||
Voorheen is genoem dat refresh tokens gekoppel behoort te wees aan die **scopes** waarmee dit gegenereer is, aan die **application** en **tenant** waarvoor dit gegenereer is. Indien enige van hierdie grense gebreek word, is dit moontlik om privileges te eskaleer omdat dit moontlik sal wees om access tokens te genereer vir ander resources en tenants waartoe die gebruiker toegang het, en met meer scopes as waarvoor dit oorspronklik bedoel was.
|
||||
|
||||
Boonop, **dit is moontlik met alle verfris tokens** in die [Microsoft identity platform](https://learn.microsoft.com/en-us/entra/identity-platform/) (Microsoft Entra-rekeninge, Microsoft persoonlike rekeninge, en sosiale rekeninge soos Facebook en Google) omdat die [**dokumentasie**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens) noem: "Verfris tokens is gebonde aan 'n kombinasie van gebruiker en kliënt, maar **is nie aan 'n hulpbron of huurder gekoppel nie**. 'n Kliënt kan 'n verfris token gebruik om toegangstokens te verkry **oor enige kombinasie van hulpbron en huurder** waar dit toestemming het om dit te doen. Verfris tokens is versleuteld en slegs die Microsoft identity platform kan dit lees."
|
||||
Verder, **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) omdat, soos die [**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."
|
||||
|
||||
Boonop, let daarop dat die FOCI toepassings openbare toepassings is, so **geen geheim is nodig** om aan die bediener te verifieer nie.
|
||||
Let ook daarop dat FOCI applications public applications is, dus **no secret is needed** om by die server te autentiseer.
|
||||
|
||||
Dan is bekende FOCI kliënte wat in die [**oorspronklike navorsing**](https://github.com/secureworks/family-of-client-ids-research/tree/main) gerapporteer is, [**hier gevind**](https://github.com/secureworks/family-of-client-ids-research/blob/main/known-foci-clients.csv).
|
||||
Die bekende FOCI clients wat in die [**original research**](https://github.com/secureworks/family-of-client-ids-research/tree/main) gerapporteer is, kan [**found here**](https://github.com/secureworks/family-of-client-ids-research/blob/main/known-foci-clients.csv).
|
||||
|
||||
### Kry verskillende skop
|
||||
### Kry 'n ander scope
|
||||
|
||||
Volgende met die vorige voorbeeldkode, in hierdie kode word 'n nuwe token vir 'n ander skop aangevra:
|
||||
In aansluiting by die vorige voorbeeldkode, word in hierdie kode 'n nuwe token versoek vir 'n ander scope:
|
||||
```python
|
||||
# Code from https://github.com/secureworks/family-of-client-ids-research
|
||||
azure_cli_bearer_tokens_for_outlook_api = (
|
||||
@@ -185,7 +186,7 @@ scopes=[
|
||||
)
|
||||
pprint(azure_cli_bearer_tokens_for_outlook_api)
|
||||
```
|
||||
### Kry verskillende kliënte en skope
|
||||
### Kry 'n ander client en scopes
|
||||
```python
|
||||
# Code from https://github.com/secureworks/family-of-client-ids-research
|
||||
microsoft_office_client = msal.PublicClientApplication("d3590ed6-52b3-4102-aeff-aad2292ab01c")
|
||||
@@ -203,25 +204,26 @@ pprint(microsoft_office_bearer_tokens_for_graph_api)
|
||||
```
|
||||
## Waar om tokens te vind
|
||||
|
||||
Vanuit 'n aanvaller se perspektief is dit baie interessant om te weet waar dit moontlik is om toegang en hernuwing tokens te vind wanneer byvoorbeeld die rekenaar van 'n slagoffer gecompromitteer is:
|
||||
Uit 'n aanvaller se perspektief is dit baie interessant om te weet waar toegangstokens en verversingstokens gevind kan word wanneer byvoorbeeld die PC van 'n slagoffer gekompromitteer word:
|
||||
|
||||
- Binne **`<HOME>/.Azure`**
|
||||
- **`azureProfile.json`** bevat inligting oor ingelogde gebruikers van die verlede
|
||||
- **`clouds.config bevat`** inligting oor intekeninge
|
||||
- **`service_principal_entries.json`** bevat toepassings kredensiale (tenant id, kliënte en geheim). Slegs in Linux & macOS
|
||||
- **`msal_token_cache.json`** bevat toegang tokens en hernuwing tokens. Slegs in Linux & macOS
|
||||
- **`service_principal_entries.bin`** en msal_token_cache.bin word in Windows gebruik en is geënkripteer met DPAPI
|
||||
- **`msal_http_cache.bin`** is 'n cache van HTTP versoeke
|
||||
- **`azureProfile.json`** bevat inligting oor gebruikers wat in die verlede aangemeld was
|
||||
- **`clouds.config contains`** bevat inligting oor intekeninge
|
||||
- **`service_principal_entries.json`** bevat toepassingsinlogbewyse (tenant id, clients en geheim). Slegs in Linux & macOS
|
||||
- **`msal_token_cache.json`** bevat toegangstokens en verversingstokens. Slegs in Linux & macOS
|
||||
- **`service_principal_entries.bin`** and msal_token_cache.bin word in Windows gebruik en is met DPAPI geënkripteer
|
||||
- **`msal_http_cache.bin`** is 'n kas van HTTP-versoeke
|
||||
- Laai dit: `with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)`
|
||||
- **`AzureRmContext.json`** bevat inligting oor vorige aanmeldings met Az PowerShell (maar geen kredensiale nie)
|
||||
- Binne **`C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*`** is verskeie `.bin` lêers met **toegang tokens**, ID tokens en rekeninginligting geënkripteer met die gebruikers se DPAPI.
|
||||
- Dit is moontlik om meer **toegang tokens** te vind in die `.tbres` lêers binne **`C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\`** wat 'n base64 geënkripteerde toegang tokens met DPAPI bevat.
|
||||
- In Linux en macOS kan jy **toegang tokens, hernuwing tokens en id tokens** van Az PowerShell (indien gebruik) verkry deur `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"` te loop
|
||||
- In Windows genereer dit net id tokens.
|
||||
- Dit is moontlik om te sien of Az PowerShell in Linux en macOS gebruik is deur te kyk of `$HOME/.local/share/.IdentityService/` bestaan (alhoewel die bevat lêers leeg en nutteloos is)
|
||||
- As die gebruiker **binne Azure met die blaaier ingelog** is, volgens hierdie [**plasing**](https://www.infosecnoodle.com/p/obtaining-microsoft-entra-refresh?r=357m16&utm_campaign=post&utm_medium=web) is dit moontlik om die outentikasie vloei te begin met 'n **herleiding na localhost**, die blaaiers outomaties te laat autoriseer die aanmelding, en die hernuwing token te ontvang. Let daarop dat daar slegs 'n paar FOCI toepassings is wat herleiding na localhost toelaat (soos az cli of die powershell module), so hierdie toepassings moet toegelaat word.
|
||||
- **`AzureRmContext.json`** bevat inligting oor vorige aanmeldings wat Az PowerShell gebruik het (maar geen inlogbewyse nie)
|
||||
- Binne **`C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*`** is verskeie `.bin`-lêers met toegangstokens, ID-tokens en rekeninginligting wat met die gebruiker se DPAPI geënkripteer is.
|
||||
- Dit is moontlik om meer toegangstokens te vind in die `.tbres`-lêers binne **`C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\`** wat 'n base64 bevat wat met DPAPI geënkripteer is met toegangstokens.
|
||||
- In Linux en macOS kan jy toegangstokens, verversingstokens en ID-tokens van Az PowerShell kry (as dit gebruik is) deur `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"` uit te voer
|
||||
- In Windows genereer dit net ID-tokens.
|
||||
- Dit is moontlik om te sien of Az PowerShell in Linux en macSO gebruik is deur te kontroleer of `$HOME/.local/share/.IdentityService/` bestaan (alhoewel die ingeslote lêers leeg en nutteloos is)
|
||||
- As die gebruiker in Azure met die browser aangemeld is, volgens hierdie [**post**](https://www.infosecnoodle.com/p/obtaining-microsoft-entra-refresh?r=357m16&utm_campaign=post&utm_medium=web) is dit moontlik om die autentikasievloei te begin met 'n **omleiding na localhost**, die browser outomaties die aanmelding te laat magtig, en die verversingstoken te ontvang. Let daarop dat daar net 'n paar FOCI-toepassings is wat 'n redirect na localhost toelaat (soos az cli of die powershell-module), dus moet hierdie toepassings toegelaat wees.
|
||||
- 'n Ander opsie wat in die blog verduidelik word, is om die tool [**BOF-entra-authcode-flow**](https://github.com/sudonoodle/BOF-entra-authcode-flow) te gebruik wat enige toepassing kan gebruik omdat dit **die OAuth-kode sal kry om dan 'n verversingstoken uit die titel van die finale auth** blad te kry deur die redirect URI `https://login.microsoftonline.com/common/oauth2/nativeclient` te gebruik.
|
||||
|
||||
## Verwysings
|
||||
## References
|
||||
|
||||
- [https://github.com/secureworks/family-of-client-ids-research](https://github.com/secureworks/family-of-client-ids-research)
|
||||
- [https://github.com/Huachao/azure-content/blob/master/articles/active-directory/active-directory-token-and-claims.md](https://github.com/Huachao/azure-content/blob/master/articles/active-directory/active-directory-token-and-claims.md)
|
||||
|
||||
Reference in New Issue
Block a user