macOS MDM
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Щоб дізнатися про macOS MDM, перевірте:
Управління мобільними пристроями (MDM) використовується для контролю різних пристроїв кінцевих користувачів, таких як смартфони, ноутбуки та планшети. Особливо для платформ Apple (iOS, macOS, tvOS) це включає набір спеціалізованих функцій, API та практик. Робота MDM залежить від сумісного сервера MDM, який може бути комерційно доступним або з відкритим кодом, і повинен підтримувати MDM Protocol. Основні моменти включають:
Централізований контроль над пристроями.
Залежність від сервера MDM, який дотримується протоколу MDM.
Можливість сервера MDM надсилати різні команди пристроям, наприклад, віддалене видалення даних або установку конфігурацій.
Програма реєстрації пристроїв (DEP), запропонована Apple, спрощує інтеграцію Управління мобільними пристроями (MDM), забезпечуючи конфігурацію без дотиків для пристроїв iOS, macOS та tvOS. DEP автоматизує процес реєстрації, дозволяючи пристроям бути готовими до роботи відразу з коробки, з мінімальним втручанням користувача або адміністратора. Основні аспекти включають:
Дозволяє пристроям автономно реєструватися на попередньо визначеному сервері MDM під час початкової активації.
Переважно корисно для нових пристроїв, але також застосовується для пристроїв, що проходять переналаштування.
Спрощує налаштування, швидко готуючи пристрої до організаційного використання.
Важливо зазначити, що простота реєстрації, яку забезпечує DEP, хоча й корисна, може також становити ризики для безпеки. Якщо захисні заходи не будуть адекватно впроваджені для реєстрації MDM, зловмисники можуть скористатися цим спрощеним процесом, щоб зареєструвати свій пристрій на сервері MDM організації, маскуючись під корпоративний пристрій.
Попередження безпеки: Спрощена реєстрація DEP може потенційно дозволити несанкціоновану реєстрацію пристроїв на сервері MDM організації, якщо не вжито належних заходів безпеки.
Відносно старий протокол, створений до того, як TLS і HTTPS стали поширеними.
Надає клієнтам стандартизований спосіб надсилання Запиту на підписання сертифіката (CSR) з метою отримання сертифіката. Клієнт запитує у сервера підписаний сертифікат.
Офіційний спосіб Apple налаштування/забезпечення системної конфігурації.
Формат файлу, який може містити кілька навантажень.
Заснований на списках властивостей (XML-формат).
“може бути підписаний і зашифрований для перевірки їх походження, забезпечення їх цілісності та захисту їх вмісту.” Основи — Сторінка 70, Посібник з безпеки iOS, січень 2018.
Комбінація APNs (Apple сервери) + RESTful API (MDM постачальники серверів)
Зв'язок відбувається між пристроєм і сервером, пов'язаним з продуктом управління пристроями
Команди передаються від MDM до пристрою в plist-кодованих словниках
Всі через HTTPS. Сервери MDM можуть бути (і зазвичай є) закріпленими.
Apple надає постачальнику MDM сертифікат APNs для аутентифікації
3 API: 1 для реселерів, 1 для постачальників MDM, 1 для ідентифікації пристроїв (недокументований):
Так званий DEP "хмарний сервіс" API. Це використовується серверами MDM для асоціювання профілів DEP з конкретними пристроями.
DEP API, що використовується авторизованими реселерами Apple для реєстрації пристроїв, перевірки статусу реєстрації та перевірки статусу транзакцій.
Недокументований приватний DEP API. Це використовується пристроями Apple для запиту свого профілю DEP. На macOS бінарний файл cloudconfigurationd
відповідає за зв'язок через цей API.
Більш сучасний і JSON-орієнтований (в порівнянні з plist)
Apple надає постачальнику MDM токен OAuth
DEP "хмарний сервіс" API
RESTful
синхронізує записи пристроїв з Apple на сервер MDM
синхронізує “DEP профілі” з Apple з сервера MDM (доставляється Apple на пристрій пізніше)
DEP “профіль” містить:
URL сервера постачальника MDM
Додаткові довірені сертифікати для URL сервера (необов'язкове закріплення)
Додаткові налаштування (наприклад, які екрани пропустити в Помічнику налаштування)
Пристрої Apple, виготовлені після 2010 року, зазвичай мають 12-символьні алфавітно-цифрові серійні номери, де перші три цифри представляють місце виготовлення, наступні дві вказують на рік і тиждень виготовлення, наступні три цифри надають унікальний ідентифікатор, а останні чотири цифри представляють номер моделі.
Створення запису пристрою (Реселер, 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: URL хоста постачальника MDM для профілю активації
anchor-certs: Масив DER сертифікатів, що використовуються як довірені якорі
Запит надіслано на url, наданий у профілі DEP.
Довірені сертифікати використовуються для оцінки довіри, якщо надано.
Нагадування: властивість anchor_certs профілю DEP
Запит є простим .plist з ідентифікацією пристрою
Приклади: UDID, версія ОС.
CMS-підписаний, DER-кодований
Підписаний за допомогою сертифіката ідентифікації пристрою (з APNS)
Цепочка сертифікатів включає прострочений Apple iPhone Device CA
Після отримання профіль зберігається в системі
Цей крок починається автоматично (якщо в помічнику налаштування)
Керується 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 в документації
Навантаження містить ключові властивості:
URL перевірки MDM (CheckInURL
)
URL опитування команд MDM (ServerURL
) + тема APNs для його активації
Щоб встановити навантаження MDM, запит надсилається на CheckInURL
Реалізовано в mdmclient
Навантаження MDM може залежати від інших навантажень
Дозволяє запити закріплювати за конкретними сертифікатами:
Властивість: CheckInURLPinningCertificateUUIDs
Властивість: ServerURLPinningCertificateUUIDs
Доставляється через навантаження PEM
Дозволяє пристрою бути атрибутованим сертифікатом ідентифікації:
Властивість: IdentityCertificateUUID
Доставляється через навантаження SCEP
Після завершення перевірки MDM постачальник може видавати push-сповіщення за допомогою APNs
Після отримання обробляється mdmclient
Щоб опитувати команди MDM, запит надсилається на ServerURL
Використовує раніше встановлене навантаження MDM:
ServerURLPinningCertificateUUIDs
для закріплення запиту
IdentityCertificateUUID
для TLS клієнтського сертифіката
Як вже зазначалося, для того щоб спробувати зареєструвати пристрій в організації потрібен лише серійний номер, що належить цій організації. Після реєстрації пристрою кілька організацій встановлять чутливі дані на новий пристрій: сертифікати, програми, паролі WiFi, конфігурації VPN і так далі. Отже, це може бути небезпечна точка входу для зловмисників, якщо процес реєстрації не буде належним чином захищений:
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)