macOS MDM

ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)で学ぶ!

HackTricksをサポートする他の方法:

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サーバーに自分のデバイスを登録し、法人デバイスとして偽装する可能性があります。

セキュリティアラート: 簡略化されたDEP登録は、適切な保護措置が施されていない場合、組織のMDMサーバーに認可されていないデバイスの登録を許可する可能性があります。

SCEP(Simple Certificate Enrolment Protocol)とは

  • TLSやHTTPSが普及する前に作成された比較的古いプロトコル

  • クライアントに証明書署名リクエスト(CSR)を送信し、証明書を取得するための標準化された方法を提供

  • クライアントはサーバーに署名された証明書を要求します

構成プロファイルとは(モバイル構成ファイルとも呼ばれる)

  • Appleの公式方法でシステム構成を設定/強制する

  • 複数のペイロードを含むファイル形式

  • プロパティリスト(XMLタイプ)に基づく

  • 「起源を検証し、整合性を確保し、内容を保護するために署名と暗号化できます。」Basics — Page 70, iOS Security Guide, January 2018.

プロトコル

MDM

  • APNs(Appleサーバー)+ RESTful API(MDMベンダーサーバー)の組み合わせ

  • デバイスデバイス管理製品に関連するサーバー間で通信が行われる

  • MDMからデバイスへのコマンドplistエンコードされた辞書で配信される

  • すべてHTTPS経由。MDMサーバーは(通常)ピン留めされています。

  • AppleはMDMベンダーにAPNs証明書を認証するために提供します

DEP

  • 3つのAPI:販売業者用1つ、MDMベンダー用1つ、デバイス識別用1つ(未公開):

  • いわゆる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の追加信頼された証明書(オプションのピン留め)

  • その他の設定(例:Setup Assistantでスキップする画面)

シリアル番号

2010年以降に製造されたAppleデバイスは、一般的に12文字の英数字のシリアル番号を持ち、最初の3桁は製造場所を表し、次の2桁は製造年を示し、次の3桁は一意の識別子を提供し、最後の4桁はモデル番号を表します。

pagemacOS Serial Number

登録および管理手順

  1. デバイスレコードの作成(販売業者、Apple):新しいデバイスのレコードが作成されます

  2. デバイスレコードの割り当て(顧客):デバイスがMDMサーバーに割り当てられます

  3. デバイスレコードの同期(MDMベンダー):MDMはデバイスレコードを同期し、DEPプロファイルをAppleにプッシュします

  4. DEPチェックイン(デバイス):デバイスがDEPプロファイルを取得します

  5. プロファイルの取得(デバイス)

  6. プロファイルのインストール(デバイス) a. MDM、SCEP、およびルートCAペイロードを含む

  7. MDMコマンドの発行(デバイス)

ファイル/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/PrivateFrameworks/ConfigurationProfiles.framework/ConfigurationProfiles.tbdは、登録プロセスの**高レベルな「ステップ」**と見なすことができる関数をエクスポートします。

ステップ4: DEPチェックイン - アクティベーションレコードの取得

このプロセスのこの部分は、ユーザーがMacを初めて起動したとき(または完全に消去した後)

またはsudo profiles show -type enrollmentを実行したときに発生します

  • デバイスがDEP対応かどうかを判断する

  • アクティベーションレコードはDEPの「プロファイル」の内部名です

  • デバイスがインターネットに接続されるとすぐに開始されます

  • **CPFetchActivationRecord**によって駆動されます

  • **cloudconfigurationdによって実装され、XPCを介して行われます。デバイスが最初に起動されるときの「セットアップアシスタント」またはprofiles**コマンドは、このデーモンにアクティベーションレコードを取得するように連絡します。

  • LaunchDaemon(常にrootとして実行)

**MCTeslaConfigurationFetcher**によって実行されるアクティベーションレコードの取得には、Absintheと呼ばれる暗号化が使用されます

  1. 証明書を取得

  2. 証明書から状態を初期化NACInit

  3. **IOKit**を介したデバイス固有のデータを使用します(たとえば、シリアル番号

  4. セッションキーを取得

  5. セッションを確立(NACKeyEstablishment

  6. リクエストを作成

  7. { "action": "RequestProfileConfiguration", "sn": "" }というデータを送信してhttps://iprofiles.apple.com/macProfileにPOST

  8. JSONペイロードはAbsintheを使用して暗号化されます(NACSign

  9. すべてのリクエストはHTTPs経由で行われ、組み込みのルート証明書が使用されます

応答は、次のような重要なデータを含むJSON辞書です:

  • url:アクティベーションプロファイルのMDMベンダーホストのURL

  • anchor-certs:信頼されるアンカーとして使用されるDER証明書の配列

ステップ5: プロファイルの取得

  • DEPプロファイルで提供されたURLにリクエストを送信します。

  • アンカー証明書が提供された場合、信頼性を評価するために使用されます。

  • リマインダー:DEPプロファイルのanchor_certsプロパティ

  • デバイス識別情報を含む、単純な.plist形式のリクエスト

  • 例:UDID、OSバージョン

  • CMSで署名され、DERでエンコードされています

  • **デバイス識別証明書(APNSから)**を使用して署名されています

  • 証明書チェーンには期限切れのApple iPhone Device CAが含まれています

ステップ6: プロファイルのインストール

  • 取得した後、プロファイルはシステムに保存されます

  • このステップは自動的に開始されます(セットアップアシスタントにある場合)

  • **CPInstallActivationProfile**によって駆動されます

  • mdmclientによってXPCを介して実装されます

  • 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(ServerURL)+ トリガーするAPNsトピック

  • MDMペイロードをインストールするには、**CheckInURL**にリクエストを送信します

  • **mdmclient**で実装されています

  • MDMペイロードは他のペイロードに依存する場合があります

  • リクエストを特定の証明書にピン留めすることができます:

  • プロパティ:CheckInURLPinningCertificateUUIDs

  • プロパティ:ServerURLPinningCertificateUUIDs

  • PEMペイロードを介して配信されます

  • デバイスに識別証明書を付与することができます:

  • プロパティ:IdentityCertificateUUID

  • SCEPペイロードを介して配信されます

ステップ7: MDMコマンドの受信

MDMチェックインが完了すると、ベンダーはAPNsを使用してプッシュ通知を発行できます 受信後、mdmclientによって処理されます MDMコマンドをポーリングするために、リクエストがServerURLに送信されます 以前にインストールされたMDMペイロードを使用します: リクエストをピン留めするための**ServerURLPinningCertificateUUIDs、TLSクライアント証明書にはIdentityCertificateUUID**を使用します

攻撃

他の組織へのデバイス登録

以前にコメントしたように、組織にデバイスを登録しようとするためには、その組織に属するシリアル番号だけが必要です。デバイスが登録されると、複数の組織が新しいデバイスに機密データをインストールします:証明書、アプリケーション、WiFiパスワード、VPN構成など。 したがって、登録プロセスが適切に保護されていない場合、これは攻撃者にとって危険なエントリーポイントとなり得ます:

pageEnrolling Devices in Other Organisations
ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

Last updated