macOS MDM
了解macOS MDM的内容:
基础知识
MDM(移动设备管理)概述
移动设备管理(MDM)用于管理各种终端用户设备,如智能手机、笔记本电脑和平板电脑。特别是对于苹果的平台(iOS、macOS、tvOS),它涉及一组专门的功能、API和实践。MDM的运作依赖于一个兼容的MDM服务器,该服务器可以是商业可用的或开源的,并且必须支持MDM协议。关键点包括:
对设备的集中控制。
依赖于遵循MDM协议的MDM服务器。
MDM服务器能够向设备发送各种命令,例如远程数据擦除或配置安装。
DEP(设备注册计划)基础知识
由苹果提供的设备注册计划(DEP)通过为iOS、macOS和tvOS设备提供零触摸配置,简化了移动设备管理(MDM)的集成。DEP自动化了注册过程,使设备可以在开箱即用时投入运行,几乎不需要用户或管理干预。基本方面包括:
使设备在初始激活时自动向预定义的MDM服务器注册。
主要有利于全新设备,但也适用于正在重新配置的设备。
简化设置,使设备迅速准备好供组织使用。
安全考虑
需要注意的是,DEP提供的便捷注册方式虽然有利,但也可能带来安全风险。如果对MDM注册未充分执行保护措施,攻击者可能利用这一简化流程在组织的MDM服务器上注册其设备,伪装成公司设备。
安全警报:简化的DEP注册可能允许未经授权的设备在组织的MDM服务器上注册,如果没有适当的保护措施。
SCEP(简单证书注册协议)是什么?
一个相对较旧的协议,在TLS和HTTPS普及之前创建。
为客户端提供了一种标准化的方式发送证书签名请求(CSR)以获得证书。客户端将要求服务器给他签名的证书。
什么是配置文件(也称为mobileconfigs)?
苹果官方的设置/强制系统配置的方式。
可以包含多个有效负载的文件格式。
基于属性列表(XML类型)。
“可以签名和加密以验证其来源,确保其完整性,并保护其内容。”基础知识 — 第70页,iOS安全指南,2018年1月。
协议
MDM
APNs(苹果服务器)+ RESTful API(MDM 供应商服务器)的组合
通信发生在与设备 管理 产品相关的设备和服务器之间
从MDM传递到设备的命令以plist编码的字典
全部通过HTTPS。MDM服务器可以(通常)被固定。
苹果授予MDM供应商一个APNs证书用于身份验证
DEP
3个API:1用于经销商,1用于MDM供应商,1用于设备身份(未记录):
所谓的DEP“云服务”API。MDM服务器使用此API将DEP配置文件与特定设备关联。
由苹果授权经销商使用的DEP API用于注册设备,检查注册状态和检查交易状态。
未记录的私有DEP API。苹果设备使用此API请求其DEP配置文件。在macOS上,
cloudconfigurationd
二进制文件负责通过此API进行通信。更现代化,基于JSON(与plist相比)
苹果向MDM供应商授予一个OAuth令牌
DEP“云服务”API
RESTful
从苹果同步设备记录到MDM服务器
将“DEP配置文件”从MDM服务器同步到苹果(稍后由苹果传递给设备)
DEP“配置文件”包含:
MDM供应商服务器URL
用于服务器URL的额外受信任证书(可选固定)
额外设置(例如在设置助手中跳过哪些屏幕)
序列号
2010年后生产的苹果设备通常具有12个字符的字母数字序列号,前三位表示制造地点,接下来的两位表示制造的年份和周数,接下来的三位提供一个唯一标识符,最后的四位表示型号号码。
pagemacOS Serial Number注册和管理步骤
创建设备记录(经销商,苹果):创建新设备的记录
分配设备记录(客户):将设备分配给MDM服务器
同步设备记录(MDM供应商):MDM同步设备记录并将DEP配置文件推送到苹果
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
** 驱动通过 XPC 由**
cloudconfigurationd
** 实现。“设置助手”(设备首次启动时)或**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 证书数组
步骤 5: 获取配置文件
发送请求到DEP 配置文件中提供的 URL。
如果提供,将使用锚点证书来评估信任。
提醒:DEP 配置文件的anchor_certs 属性
请求是一个包含设备标识的简单 .plist
例如:UDID,OS 版本。
CMS 签名,DER 编码
使用**设备身份证书(来自 APNS)**进行签名
证书链包括已过期的Apple iPhone 设备 CA
步骤 6: 配置文件安装
一旦检索到,配置文件将存储在系统上
如果在设置助手中,此步骤将自动开始
由**
CPInstallActivationProfile
** 驱动通过 XPC 由 mdmclient 实现
LaunchDaemon(作为 root)或 LaunchAgent(作为用户),取决于上下文
配置文件具有多个要安装的有效负载
框架具有基于插件的架构来安装配置文件
每种有效负载类型都与一个插件相关联
可以是 XPC(在框架中)或经典的 Cocoa(在 ManagedClient.app 中)
例如:
证书有效负载使用 CertificateService.xpc
通常,由 MDM 供应商提供的激活配置文件将包括以下有效负载:
com.apple.mdm
:用于将设备注册到 MDMcom.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
用于固定请求 IdentityCertificateUUID
用于 TLS 客户端证书
最后更新于