macOS MDM
Last updated
Last updated
Вивчайте та практикуйте взлом AWS: Школа взлому AWS для Червоної Команди (ARTE) Вивчайте та практикуйте взлом GCP: Школа взлому GCP для Червоної Команди (GRTE)
Для вивчення macOS MDM перевірте:
Управління мобільними пристроями (MDM) використовується для керування різними пристроями кінцевих користувачів, такими як смартфони, ноутбуки та планшети. Особливо для платформ Apple (iOS, macOS, tvOS) воно включає набір спеціалізованих функцій, API та практик. Робота MDM ґрунтується на сумісному MDM-сервері, який може бути комерційно доступним або з відкритим кодом, і повинен підтримувати протокол MDM. Основні аспекти включають:
Централізований контроль над пристроями.
Залежність від 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 для ідентифікації пристроїв (недокументований):
Так званий 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Створення запису пристрою (Реселер, Apple): Створюється запис для нового пристрою
Призначення запису пристрою (Клієнт): Пристрій призначається серверу MDM
Синхронізація запису пристрою (Вендор MDM): MDM синхронізує записи пристроїв та надсилає профілі DEP до Apple
Перевірка DEP (Пристрій): Пристрій отримує свій профіль DEP
Отримання профілю (Пристрій)
Встановлення профілю (Пристрій) включаючи навантаження MDM, SCEP та кореневого сертифіката
Видача команди 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
: для встановлення довірених сертифікатів ЦС в системний ключовий ланцюжок пристрою.
Встановлення навантаження MDM еквівалентно перевірці MDM в документації
Навантаження містить ключові властивості:
URL перевірки MDM (CheckInURL
)
URL опитування команд MDM (ServerURL
) + тема APNs для її запуску
Для встановлення навантаження MDM надсилається запит на CheckInURL
Реалізовано в mdmclient
Навантаження MDM може залежати від інших навантажень
Дозволяє запити прив'язувати до конкретних сертифікатів:
Властивість: CheckInURLPinningCertificateUUIDs
Властивість: ServerURLPinningCertificateUUIDs
Доставляється через навантаження PEM
Дозволяє пристрою бути пов'язаним з сертифікатом ідентифікації:
Властивість: IdentityCertificateUUID
Доставляється через навантаження SCEP
Після завершення перевірки MDM постачальник може видавати сповіщення про натискання за допомогою APNs
Після отримання, обробляється mdmclient
Для опитування команд MDM надсилається запит на ServerURL
Використовується раніше встановлене навантаження MDM:
ServerURLPinningCertificateUUIDs
для прив'язки запиту
IdentityCertificateUUID
для TLS клієнтського сертифіката
Як вже зазначалося, для спроби зареєструвати пристрій в організації потрібен лише серійний номер, що належить цій організації. Після реєстрації пристрою, кілька організацій встановить чутливі дані на новому пристрої: сертифікати, додатки, паролі WiFi, конфігурації VPN і так далі. Отже, це може бути небезпечним входом для атак, якщо процес реєстрації не захищений належним чином:
Enrolling Devices in Other OrganisationsВивчайте та практикуйте взлом AWS:Навчання HackTricks AWS Red Team Expert (ARTE) Вивчайте та практикуйте взлом GCP: Навчання HackTricks GCP Red Team Expert (GRTE)