macOS MDM

Підтримайте HackTricks

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

Основи

Огляд MDM (Mobile Device Management)

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

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

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

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

Основи DEP (Програма реєстрації пристроїв)

Програма реєстрації пристроїв (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" від сервера MDM до Apple (доставлені Apple на пристрій пізніше)

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

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

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

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

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

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

macOS 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: для встановлення довірених сертифікатів ЦС в системний ключовий ланцюжок пристрою.

  • Встановлення навантаження 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 клієнтського сертифіката

Атаки

Реєстрація пристроїв в інших організаціях

Як вже зазначалося, для спроби зареєструвати пристрій в організації потрібен лише серійний номер, що належить цій організації. Після реєстрації пристрою, кілька організацій встановить чутливі дані на новому пристрої: сертифікати, додатки, паролі WiFi, конфігурації VPN і так далі. Отже, це може бути небезпечним входом для атак, якщо процес реєстрації не захищений належним чином:

Enrolling Devices in Other Organisations
Підтримайте HackTricks

Last updated