Az - PHS - Password Hash Sync
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Z dokumentacji: Synchronizacja haszy haseł jest jedną z metod logowania używanych do realizacji hybrydowej tożsamości. Azure AD Connect synchronizuje hash, hasha, hasła użytkownika z lokalnej instancji Active Directory do opartej na chmurze instancji Azure AD.
To najczęściej stosowana metoda używana przez firmy do synchronizacji lokalnego AD z Azure AD.
Wszystkie użytkownicy oraz hash haseł są synchronizowane z lokalnego AD do Azure AD. Jednak hasła w postaci czystego tekstu ani oryginalne hashe nie są wysyłane do Azure AD. Ponadto, wbudowane grupy zabezpieczeń (jak administratorzy domeny...) nie są synchronizowane z Azure AD.
Synchronizacja hashy odbywa się co 2 minuty. Jednak domyślnie wygasanie haseł i wygasanie kont nie są synchronizowane w Azure AD. Tak więc użytkownik, którego lokalne hasło wygasło (nie zmienione), może nadal uzyskiwać dostęp do zasobów Azure za pomocą starego hasła.
Gdy lokalny użytkownik chce uzyskać dostęp do zasobu Azure, uwierzytelnienie odbywa się w Azure AD.
PHS jest wymagane dla funkcji takich jak Ochrona tożsamości i AAD Usługi domenowe.
Gdy PHS jest skonfigurowane, niektóre uprzywilejowane konta są automatycznie tworzone:
Konto MSOL_<installationID>
jest automatycznie tworzone w lokalnym AD. To konto otrzymuje rolę Konta synchronizacji katalogu (zobacz dokumentację), co oznacza, że ma uprawnienia replikacji (DCSync) w lokalnym AD.
Konto Sync_<nazwa lokalnego serwera ADConnect>_installationID
jest tworzone w Azure AD. To konto może resetować hasło DOWOLNEGO użytkownika (synchronizowanego lub tylko w chmurze) w Azure AD.
Hasła dwóch poprzednich uprzywilejowanych kont są przechowywane w serwerze SQL na serwerze, na którym zainstalowano Azure AD Connect. Administratorzy mogą wydobyć hasła tych uprzywilejowanych użytkowników w postaci czystego tekstu.
Baza danych znajduje się w C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf
.
Możliwe jest wydobycie konfiguracji z jednej z tabel, z których jedna jest zaszyfrowana:
SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;
Zaszyfrowana konfiguracja jest zaszyfrowana za pomocą DPAPI i zawiera hasła użytkownika MSOL_*
w lokalnym AD oraz hasło Sync_* w AzureAD. Dlatego kompromitując te dane, możliwe jest uzyskanie uprawnień do AD i AzureAD.
Możesz znaleźć pełny przegląd tego, jak te poświadczenia są przechowywane i odszyfrowywane w tej prezentacji.
Jeśli serwer, na którym zainstalowano Azure AD connect jest dołączony do domeny (zalecane w dokumentacji), można go znaleźć za pomocą:
Możesz również użyć adconnectdump, aby uzyskać te poświadczenia.
Kompromitując konto Sync_*
, możliwe jest zresetowanie hasła dowolnego użytkownika (w tym Globalnych Administratorów)
Możliwe jest również zmienienie haseł tylko użytkowników chmurowych (nawet jeśli to nieoczekiwane)
Możliwe jest również zrzucenie hasła tego użytkownika.
Inną opcją byłoby przyznanie uprawnień uprzywilejowanych dla principal usługi, co użytkownik Sync ma uprawnienia do zrobienia, a następnie uzyskanie dostępu do tego principal usługi jako sposób na privesc.
Możliwe jest użycie Seamless SSO z PHS, które jest podatne na inne nadużycia. Sprawdź to w:
Az - Seamless SSOLearn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)