macOS MDM
Tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
macOS MDMについて学ぶには、次を確認してください:
基本
MDM (モバイルデバイス管理) 概要
モバイルデバイス管理 (MDM) は、スマートフォン、ラップトップ、タブレットなどのさまざまなエンドユーザーデバイスを監視するために利用されます。特にAppleのプラットフォーム(iOS、macOS、tvOS)においては、一連の専門的な機能、API、および実践が含まれます。MDMの運用は、商業的に利用可能またはオープンソースの互換性のあるMDMサーバーに依存し、MDMプロトコルをサポートする必要があります。主なポイントは以下の通りです:
- デバイスに対する集中管理。
- MDMプロトコルに準拠したMDMサーバーへの依存。
- MDMサーバーがデバイスにさまざまなコマンドを送信できる能力、例えば、リモートデータ消去や設定のインストールなど。
DEP (デバイス登録プログラム) の基本
Appleが提供するデバイス登録プログラム (DEP) は、iOS、macOS、tvOSデバイスのモバイルデバイス管理(MDM)の統合を簡素化し、ゼロタッチ構成を可能にします。DEPは登録プロセスを自動化し、デバイスが箱から出してすぐに動作可能になり、最小限のユーザーまたは管理者の介入で済むようにします。重要な側面は以下の通りです:
- デバイスが初回起動時に事前定義されたMDMサーバーに自動的に登録されることを可能にします。
- 主に新しいデバイスに有益ですが、再構成中のデバイスにも適用可能です。
- 簡単なセットアップを促進し、デバイスを迅速に組織で使用できるようにします。
セキュリティ考慮事項
DEPによって提供される登録の容易さは有益ですが、セキュリティリスクも伴うことに注意が必要です。MDM登録に対する保護措置が適切に施されていない場合、攻撃者はこの簡素化されたプロセスを利用して、自分のデバイスを組織のMDMサーバーに登録し、企業デバイスを装う可能性があります。
Caution
セキュリティ警告: 簡素化されたDEP登録は、適切な保護策が講じられていない場合、組織のMDMサーバーに対する不正なデバイス登録を許可する可能性があります。
SCEP (シンプル証明書登録プロトコル) とは?
- TLSやHTTPSが広まる前に作成された比較的古いプロトコル。
- クライアントが証明書を取得するための証明書署名要求 (CSR) を送信するための標準化された方法を提供します。クライアントはサーバーに署名された証明書を要求します。
構成プロファイル (モバイル構成ファイル) とは?
- Appleによるシステム構成の設定/強制の公式な方法。
- 複数のペイロードを含むことができるファイル形式。
- プロパティリスト(XML形式)に基づいています。
- 「その出所を検証し、整合性を確保し、内容を保護するために署名および暗号化できます。」基本 — ページ70, iOSセキュリティガイド, 2018年1月。
プロトコル
MDM
- APNs (Appleサーバー) + RESTful API (MDM ベンダーサーバー) の組み合わせ
- 通信はデバイスとデバイス管理製品に関連するサーバーの間で行われます
- コマンドはMDMからデバイスにplistエンコードされた辞書で配信されます
- すべてHTTPS経由。MDMサーバーは(通常)ピン留めされます。
- AppleはMDMベンダーにAPNs証明書を認証用に付与します
DEP
- 3つのAPI: 1つはリセラー用、1つはMDMベンダー用、1つはデバイスID用(未文書):
- いわゆるDEP “クラウドサービス” API。これはMDMサーバーが特定のデバイスにDEPプロファイルを関連付けるために使用されます。
- Apple認定リセラーが使用するDEP APIは、デバイスを登録し、登録状況を確認し、取引状況を確認します。
- 未文書のプライベートDEP API。これはAppleデバイスが自分のDEPプロファイルを要求するために使用されます。macOSでは、
cloudconfigurationdバイナリがこのAPIを介して通信する責任があります。 - より現代的でJSONベース(plistに対して)
- AppleはMDMベンダーにOAuthトークンを付与します
DEP “クラウドサービス” API
- RESTful
- AppleからMDMサーバーへのデバイスレコードの同期
- MDMサーバーからAppleへの“DEPプロファイル”の同期(後でデバイスに配信される)
- DEP “プロファイル”には以下が含まれます:
- MDMベンダーサーバーのURL
- サーバーURL用の追加の信頼された証明書(オプションのピン留め)
- 追加の設定(例:セットアップアシスタントでスキップする画面)
シリアル番号
2010年以降に製造されたAppleデバイスは一般的に12文字の英数字のシリアル番号を持ち、最初の3桁は製造場所を表し、次の2桁は製造年と週を示し、次の3桁はユニークな識別子を提供し、最後の4桁はモデル番号を表します。
登録と管理の手順
- デバイスレコードの作成(リセラー、Apple):新しいデバイスのレコードが作成されます
- デバイスレコードの割り当て(顧客):デバイスがMDMサーバーに割り当てられます
- デバイスレコードの同期(MDMベンダー):MDMがデバイスレコードを同期し、DEPプロファイルをAppleにプッシュします
- DEPチェックイン(デバイス):デバイスがDEPプロファイルを取得します
- プロファイルの取得(デバイス)
- プロファイルのインストール(デバイス) a. MDM、SCEP、およびルートCAペイロードを含む
- MDMコマンドの発行(デバイス)
.png)
ファイル/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/PrivateFrameworks/ConfigurationProfiles.framework/ConfigurationProfiles.tbdは、登録プロセスの**高レベルの「ステップ」**と見なされる関数をエクスポートします。
ステップ4: DEPチェックイン - アクティベーションレコードの取得
このプロセスの一部は、ユーザーが初めてMacを起動したとき(または完全にワイプした後)に発生します。
.png)
またはsudo profiles show -type enrollmentを実行したとき。
- デバイスがDEP対応かどうかを判断
- アクティベーションレコードは**DEP “プロファイル”**の内部名です
- デバイスがインターネットに接続されるとすぐに始まります
- **
CPFetchActivationRecord**によって駆動されます - **
cloudconfigurationdによってXPC経由で実装されます。デバイスが初めて起動されたときの“セットアップアシスタント”またはprofiles**コマンドがこのデーモンに連絡してアクティベーションレコードを取得します。 - LaunchDaemon(常にrootとして実行)
アクティベーションレコードを取得するために**MCTeslaConfigurationFetcherによって実行されるいくつかのステップに従います。このプロセスはAbsinthe**という暗号化を使用します。
- 証明書を取得
- GET https://iprofiles.apple.com/resource/certificate.cer
- 証明書から状態を初期化(
NACInit) - 様々なデバイス固有のデータを使用します(例:シリアル番号を
IOKit経由で) - セッションキーを取得
- POST https://iprofiles.apple.com/session
- セッションを確立(
NACKeyEstablishment) - リクエストを行う
- POST https://iprofiles.apple.com/macProfileにデータ
{ "action": "RequestProfileConfiguration", "sn": "" }を送信 - JSONペイロードはAbsintheで暗号化されます(
NACSign) - すべてのリクエストはHTTPs経由で行われ、組み込みのルート証明書が使用されます
 (1).png)
レスポンスは、以下のような重要なデータを含むJSON辞書です:
- url: アクティベーションプロファイルのためのMDMベンダーホストのURL
- anchor-certs: 信頼されたアンカーとして使用されるDER証明書の配列
ステップ5: プロファイルの取得
.png)
- DEPプロファイルで提供されたurlにリクエストが送信されます。
- 提供された場合、アンカー証明書が信頼性を評価するために使用されます。
- リマインダー: DEPプロファイルのanchor_certsプロパティ
- リクエストはデバイス識別を含むシンプルな.plistです
- 例: UDID、OSバージョン。
- CMS署名、DERエンコード
- **デバイスID証明書(APNSからの)**を使用して署名されます。
- 証明書チェーンには期限切れのApple iPhone Device CAが含まれます。
 (1) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2) (2).png)
ステップ6: プロファイルのインストール
- 取得後、プロファイルはシステムに保存されます
- このステップは自動的に始まります(セットアップアシスタントにいる場合)
- **
CPInstallActivationProfile**によって駆動されます - XPC経由でmdmclientによって実装されます
- LaunchDaemon(rootとして)またはLaunchAgent(ユーザーとして)、コンテキストに応じて
- 構成プロファイルにはインストールするための複数のペイロードがあります
- フレームワークはプロファイルをインストールするためのプラグインベースのアーキテクチャを持っています
- 各ペイロードタイプはプラグインに関連付けられています
- XPC(フレームワーク内)または従来のCocoa(ManagedClient.app内)である可能性があります
- 例:
- 証明書ペイロードはCertificateService.xpcを使用します
通常、MDMベンダーによって提供されるアクティベーションプロファイルには以下のペイロードが含まれます:
com.apple.mdm: デバイスをMDMに登録するためcom.apple.security.scep: デバイスにクライアント証明書を安全に提供するため。com.apple.security.pem: デバイスのシステムキーチェーンに信頼されたCA証明書をインストールするため。- MDMペイロードのインストールは、文書内のMDMチェックインに相当します
- ペイロードは主要なプロパティを含みます:
-
- MDMチェックインURL(
CheckInURL)
- MDMチェックインURL(
- MDMコマンドポーリングURL(
ServerURL) + それをトリガーするAPNsトピック - MDMペイロードをインストールするために、**
CheckInURL**にリクエストが送信されます - **
mdmclient**で実装されています - MDMペイロードは他のペイロードに依存することがあります
- 特定の証明書にリクエストをピン留めすることを許可します:
- プロパティ:
CheckInURLPinningCertificateUUIDs - プロパティ:
ServerURLPinningCertificateUUIDs - PEMペイロードを介して配信されます
- デバイスにアイデンティティ証明書を付与することを許可します:
- プロパティ:IdentityCertificateUUID
- SCEPペイロードを介して配信されます
ステップ7: MDMコマンドのリスニング
- MDMチェックインが完了した後、ベンダーはAPNsを使用してプッシュ通知を発行できます
- 受信時、**
mdmclient**によって処理されます - MDMコマンドをポーリングするために、リクエストがServerURLに送信されます
- 以前にインストールされたMDMペイロードを利用します:
- **
ServerURLPinningCertificateUUIDs**によるリクエストのピン留め - **
IdentityCertificateUUID**によるTLSクライアント証明書
攻撃
他の組織へのデバイスの登録
前述のように、デバイスを組織に登録しようとするには、その組織に属するシリアル番号のみが必要です。デバイスが登録されると、いくつかの組織は新しいデバイスに機密データをインストールします:証明書、アプリケーション、WiFiパスワード、VPN設定などこちら。
したがって、登録プロセスが適切に保護されていない場合、攻撃者にとって危険な入り口となる可能性があります:
Enrolling Devices in Other Organisations
Tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
HackTricks

