# Az - Device Registration

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

## 基本情報

デバイスがAzureADに参加すると、新しいオブジェクトがAzureADに作成されます。

デバイスを登録する際、**ユーザーは自分のアカウントでログインするよう求められ**（必要に応じてMFAを要求）、次にデバイス登録サービスのトークンを要求し、最後に確認プロンプトが表示されます。

その後、デバイス内に2つのRSAキーペアが生成されます：**デバイスキー**（**公開**キー）は**AzureAD**に送信され、**トランスポート**キー（**秘密**キー）は可能であればTPMに保存されます。

次に、**オブジェクト**が**AzureAD**に生成され（Intuneではなく）、AzureADはデバイスに署名された**証明書**を返します。**デバイスがAzureADに参加している**かどうかや、**証明書**に関する情報（TPMで保護されているかどうかなど）を確認できます。
```bash
dsregcmd /status
```
デバイス登録後、**Primary Refresh Token**がLSASS CloudAPモジュールによって要求され、デバイスに渡されます。PRTには、**デバイスのみが復号化できるように暗号化されたセッションキー**（トランスポートキーの公開鍵を使用）も付随しており、**PRTを使用するために必要です。**

PRTについての詳細は以下を確認してください：

{{#ref}}
az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md
{{#endref}}

### TPM - Trusted Platform Module

**TPM**は、電源がオフのデバイスからのキー**抽出**（PINで保護されている場合）や、OS層からのプライベートマテリアルの抽出に対して**保護**します。\
しかし、**TPMとCPUの間の物理接続をスニッフィングすること**や、**SYSTEM**権限を持つプロセスからシステムが稼働している間にTPM内の暗号材料を**使用すること**に対しては**保護**されていません。

以下のページを確認すると、**PRTを盗むこと**が**ユーザー**としてアクセスするために使用できることがわかります。これは素晴らしいことで、**PRTはデバイスに存在するため**、それらから盗まれる可能性があります（または盗まれなくても新しい署名キーを生成するために悪用される可能性があります）：

{{#ref}}
az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md
{{#endref}}

## SSOトークンを使用したデバイスの登録

攻撃者が侵害されたデバイスからMicrosoftデバイス登録サービスのトークンを要求し、それを登録することが可能です：
```bash
# Initialize SSO flow
roadrecon auth prt-init
.\ROADtoken.exe <nonce>

# Request token with PRT with PRT cookie
roadrecon auth -r 01cb2876-7ebd-4aa4-9cc9-d28bd4d359a9 --prt-cookie <cookie>

# Custom pyhton script to register a device (check roadtx)
registerdevice.py
```
どのようにして**将来PRTを要求するために使用できる証明書を取得するか**。したがって、持続性を維持し、**MFAをバイパスする**ことができます。なぜなら、新しいデバイスを登録するために使用された元のPRTトークンは**すでにMFA権限が付与されていたからです**。

> [!TIP]
> この攻撃を実行するには、**新しいデバイスを登録する**権限が必要です。また、デバイスを登録することは、そのデバイスが**Intuneに登録されることを許可される**ことを意味しません。

> [!CAUTION]
> この攻撃は2021年9月に修正され、もはやSSOトークンを使用して新しいデバイスを登録することはできません。しかし、正当な方法でデバイスを登録することはまだ可能です（必要に応じてユーザー名、パスワード、MFAを持っていること）。確認してください: [**roadtx**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-roadtx-authentication.md)。

## デバイスタイプの上書き

**デバイスタイプを要求し、**現在のデバイスタイプを**上書き**し、フロー中に**PRTを盗む**ことが可能でした（TPMから盗む必要はありません）。詳細については、[**このトークを確認してください**](https://youtu.be/BduCn8cLV1A)。

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

> [!CAUTION]
> ただし、これは修正されました。

## WHFBキーの上書き

[**元のスライドをこちらで確認してください**](https://dirkjanm.io/assets/raw/Windows%20Hello%20from%20the%20other%20side_nsec_v1.0.pdf)

攻撃の概要:

- **デバイス**からSSOを介して**登録されたWHFB**キーを**上書き**することが可能です
- 新しいキーの生成中にキーが**スニッフィングされるため**、TPM保護を**打破します**
- これにより**持続性**も提供されます

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

ユーザーはAzure AD Graphを介して自分のsearchableDeviceKeyプロパティを変更できますが、攻撃者はテナント内にデバイスを持っている必要があります（その場で登録されたか、正当なデバイスから証明書とキーを盗んだ場合）およびAAD Graphの有効なアクセストークンが必要です。

次に、新しいキーを生成することが可能です:
```bash
roadtx genhellokey -d <device id> -k tempkey.key
```
そして、searchableDeviceKeyの情報をPATCHします：

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

**デバイスコードフィッシング**を介してユーザーからアクセストークンを取得し、前のステップを悪用して**彼のアクセスを盗む**ことが可能です。詳細については、以下を確認してください：

{{#ref}}
az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md
{{#endref}}

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

## 参考文献

- [https://youtu.be/BduCn8cLV1A](https://youtu.be/BduCn8cLV1A)
- [https://www.youtube.com/watch?v=x609c-MUZ_g](https://www.youtube.com/watch?v=x609c-MUZ_g)
- [https://www.youtube.com/watch?v=AFay_58QubY](https://www.youtube.com/watch?v=AFay_58QubY)

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