macOS MDM

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Для вивчення macOS MDM перевірте:

Основи

Огляд MDM (Mobile Device Management)

Управління мобільними пристроями (MDM) використовується для управління різними пристроями кінцевих користувачів, такими як смартфони, ноутбуки та планшети. Особливо для платформ Apple (iOS, macOS, tvOS) воно включає набір спеціалізованих функцій, API та практик. Робота MDM ґрунтується на сумісному MDM-сервері, який може бути комерційно доступним або з відкритим кодом, і повинен підтримувати протокол MDM. Ключові аспекти включають:

  • Централізоване керування пристроями.

  • Залежність від MDM-сервера, який дотримується протоколу MDM.

  • Здатність MDM-сервера відправляти різні команди на пристрої, наприклад, видалення даних здалеку або встановлення конфігурації.

Основи DEP (Device Enrollment Program)

Програма реєстрації пристроїв (DEP), запропонована Apple, спрощує інтеграцію управління мобільними пристроями (MDM), спрощуючи конфігурацію без дотику для пристроїв iOS, macOS та tvOS. DEP автоматизує процес реєстрації, дозволяючи пристроям бути готовими до використання одразу після розпакування, з мінімальним втручанням користувача або адміністратора. Основні аспекти включають:

  • Дозволяє пристроям автономно реєструватися на попередньо визначеному MDM-сервері при початковій активації.

  • Головним чином корисний для абсолютно нових пристроїв, але також застосовується до пристроїв, які проходять повторну конфігурацію.

  • Спрощує налаштування, роблячи пристрої готовими до організаційного використання швидко.

Врахування безпеки

Важливо зауважити, що спрощена реєстрація, надана DEP, хоч і корисна, також може становити ризики для безпеки. Якщо заходи захисту не будуть належним чином забезпечені для реєстрації MDM, зловмисники можуть використовувати цей спрощений процес для реєстрації свого пристрою на MDM-сервері організації, видаючи себе за корпоративний пристрій.

Попередження про безпеку: Спрощена реєстрація DEP може потенційно дозволити несанкціоновану реєстрацію пристроїв на MDM-сервері організації, якщо належні заходи захисту не встановлені.

Основи Що таке SCEP (Простий протокол реєстрації сертифікатів)?

  • Відносно старий протокол, створений до поширення TLS та HTTPS.

  • Надає клієнтам стандартизований спосіб надсилання запиту на підпис сертифіката (CSR) з метою отримання сертифіката. Клієнт попросить сервер видати йому підписаний сертифікат.

Що таке Профілі конфігурації (також відомі як mobileconfigs)?

  • Офіційний спосіб Apple встановлення/застосування конфігурації системи.

  • Формат файлу, який може містити кілька навантажень.

  • На основі списків властивостей (типу XML).

  • "можуть бути підписані та зашифровані для перевірки їх походження, забезпечення їх цілісності та захисту їх вмісту." Основи — Сторінка 70, Посібник з безпеки iOS, січень 2018 року.

Протоколи

MDM

  • Комбінація APNs (сервери Apple) + RESTful API (сервери MDM-постачальників)

  • Комунікація відбувається між пристроєм та сервером, пов'язаним з продуктом управління пристроями

  • Команди надсилаються з MDM на пристрій у вигляді словників, закодованих у форматі plist

  • Все через HTTPS. Сервери MDM можуть бути (і зазвичай) закріплені.

  • Apple надає вендору MDM сертифікат APNs для аутентифікації

DEP

  • 3 API: 1 для реселерів, 1 для вендорів MDM, 1 для ідентифікації пристроїв (недокументований):

  • Так званий API "хмарної служби" DEP. Використовується MDM-серверами для асоціації профілів DEP з конкретними пристроями.

  • API DEP, використований Apple Authorized Resellers для реєстрації пристроїв, перевірки статусу реєстрації та перевірки статусу транзакції.

  • Недокументований приватний API DEP. Використовується пристроями Apple для запиту свого профілю DEP. На macOS відповідальний за комунікацію через цей API є бінарний файл cloudconfigurationd.

  • Більш сучасний та на базі JSON (на відміну від plist)

  • Apple надає вендору MDM токен OAuth

API "хмарної служби" DEP

  • RESTful

  • синхронізувати записи пристроїв від Apple до сервера MDM

  • синхронізувати "профілі DEP" до Apple від сервера MDM (доставлені Apple на пристрій пізніше)

  • Профіль DEP містить:

  • URL сервера вендора MDM

  • Додаткові довірені сертифікати для URL сервера (необов'язкове закріплення)

  • Додаткові налаштування (наприклад, які екрани пропустити в помічнику налаштування)

Серійний номер

Зазвичай у пристрої Apple, виготовленому після 2010 року, є 12-символьний алфавітно-цифровий серійний номер, де перші три цифри вказують на місце виробництва, наступні дві вказують на рік та тиждень виробництва, наступні три цифри надають унікальний ідентифікатор, а останні чотири цифри представляють номер моделі.

pagemacOS Serial Number

Кроки для реєстрації та управління

  1. Створення запису пристрою (Реселер, Apple): Створюється запис для нового пристрою

  2. Призначення запису пристрою (Клієнт): Пристрій призначається серверу MDM

  3. Синхронізація запису пристрою (Вендор MDM): MDM синхронізує записи пристроїв та надсилає профілі DEP до Apple

  4. Перевірка DEP (Пристрій): Пристрій отримує свій профіль DEP

  5. Отримання профілю (Пристрій)

  6. Встановлення профілю (Пристрій) включаючи навантаження MDM, SCEP та кореневого сертифіката

  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. POST на https://iprofiles.apple.com/macProfile надсилаючи дані { "action": "RequestProfileConfiguration", "sn": "" }

  8. JSON навантаження шифрується за допомогою Absinthe (NACSign)

  9. Усі запити через HTTPs, використовуються вбудовані кореневі сертифікати

Відповідь - це JSON словник з деякими важливими даними, такими як:

  • url: URL хоста вендора MDM для активаційного профілю

  • anchor-certs: Масив DER сертифікатів, які використовуються як довірені якорі

Крок 5: Отримання профілю

  • Запит надсилається на URL, вказаний в DEP профілі.

  • Для оцінки довіри використовуються якірні сертифікати, якщо вони надані.

  • Нагадування: властивість anchor_certs профілю DEP

  • Запит - це простий .plist з ідентифікацією пристрою

  • Приклади: UDID, версія ОС.

  • 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 в документації

  • Навантаження містить ключові властивості:

  • URL перевірки MDM (CheckInURL)

  • URL опитування команд MDM (ServerURL) + тема APNs для його запуску

  • Для встановлення навантаження MDM, запит надсилається на CheckInURL

  • Реалізовано в mdmclient

  • Навантаження MDM може залежати від інших навантажень

  • Дозволяє запитам бути закріпленими за конкретними сертифікатами:

  • Властивість: CheckInURLPinningCertificateUUIDs

  • Властивість: ServerURLPinningCertificateUUIDs

  • Доставляється через навантаження PEM

  • Дозволяє пристрою бути пов'язаним з сертифікатом ідентифікації:

  • Властивість: IdentityCertificateUUID

  • Доставляється через навантаження SCEP

Крок 7: Прослуховування команд MDM

  • Після завершення перевірки MDM вендор може видавати сповіщення про натискання за допомогою APNs

  • Після отримання, обробляється mdmclient

  • Для опитування команд MDM, запит надсилається на ServerURL

  • Використовується раніше встановлене навантаження MDM:

  • ServerURLPinningCertificateUUIDs для закріплення запиту

  • IdentityCertificateUUID для TLS клієнтського сертифіката

Last updated