macOS MDM
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登録および管理手順
デバイスレコードの作成(販売業者、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
は、登録プロセスの**高レベルな「ステップ」**と見なすことができる関数をエクスポートします。
ステップ4: DEPチェックイン - アクティベーションレコードの取得
このプロセスのこの部分は、ユーザーがMacを初めて起動したとき(または完全に消去した後)
またはsudo profiles show -type enrollment
を実行したときに発生します
デバイスがDEP対応かどうかを判断する
アクティベーションレコードはDEPの「プロファイル」の内部名です
デバイスがインターネットに接続されるとすぐに開始されます
**
CPFetchActivationRecord
**によって駆動されます**
cloudconfigurationd
によって実装され、XPCを介して行われます。デバイスが最初に起動されるときの「セットアップアシスタント」またはprofiles
**コマンドは、このデーモンにアクティベーションレコードを取得するように連絡します。LaunchDaemon(常にrootとして実行)
**MCTeslaConfigurationFetcher
**によって実行されるアクティベーションレコードの取得には、Absintheと呼ばれる暗号化が使用されます
証明書を取得
証明書から状態を初期化(
NACInit
)**
IOKit
**を介したデバイス固有のデータを使用します(たとえば、シリアル番号)セッションキーを取得
セッションを確立(
NACKeyEstablishment
)リクエストを作成
{ "action": "RequestProfileConfiguration", "sn": "" }
というデータを送信してhttps://iprofiles.apple.com/macProfileにPOSTJSONペイロードはAbsintheを使用して暗号化されます(
NACSign
)すべてのリクエストは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 OrganisationsLast updated