# Az - Pass the Certificate

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

## Pass the Certificate (Azure)

Azureに参加しているマシンでは、両方のマシンが**NegoEx**認証メカニズムをサポートしている場合、**Entra ID CA**によって発行された証明書を使用して、1台のマシンから別のマシンに認証することが可能です（対象として必要なユーザー）。

超簡略化すると：

- 接続を開始するマシン（クライアント）は、**ユーザーのためにEntra IDから証明書が必要**です。
- クライアントは、PRTやその他の詳細を含むJSON Web Token（JWT）ヘッダーを作成し、派生キー（セッションキーとセキュリティコンテキストを使用）を使って署名し、**Entra IDに送信**します。
- Entra IDは、クライアントのセッションキーとセキュリティコンテキストを使用してJWT署名を検証し、PRTの有効性を確認し、**証明書**で**応答**します。

このシナリオでは、[**Pass the PRT**](az-primary-refresh-token-prt.md)攻撃に必要なすべての情報を取得した後：

- ユーザー名
- テナントID
- PRT
- セキュリティコンテキスト
- 派生キー

ツール[**PrtToCert**](https://github.com/morRubin/PrtToCert)を使用して、ユーザーのために**P2P証明書**を**要求**することが可能です。
```bash
RequestCert.py [-h] --tenantId TENANTID --prt PRT --userName USERNAME --hexCtx HEXCTX --hexDerivedKey HEXDERIVEDKEY [--passPhrase PASSPHRASE]
```
証明書はPRTと同じ期間有効です。証明書を使用するには、pythonツール[**AzureADJoinedMachinePTC**](https://github.com/morRubin/AzureADJoinedMachinePTC)を使用して、リモートマシンに**認証**し、**PSEXEC**を実行し、被害者のマシンで**CMD**を開くことができます。これにより、別のユーザーのPRTを取得するためにMimikatzを再度使用することができます。
```bash
Main.py [-h] --usercert USERCERT --certpass CERTPASS --remoteip REMOTEIP
```
## 参考文献

- Pass the Certificate の動作についての詳細は、元の投稿を確認してください [https://medium.com/@mor2464/azure-ad-pass-the-certificate-d0c5de624597](https://medium.com/@mor2464/azure-ad-pass-the-certificate-d0c5de624597)

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