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