macOS Kernel Extensions

Support HackTricks

Basic Information

Kernel extensions (Kexts) are пакети з розширенням .kext, які завантажуються безпосередньо в простір ядра macOS, надаючи додаткову функціональність основній операційній системі.

Requirements

Очевидно, що це настільки потужно, що завантажити розширення ядра є складним. Це вимоги, які повинно виконувати розширення ядра, щоб бути завантаженим:

  • Коли входите в режим відновлення, розширення ядра повинні бути дозволені для завантаження:

  • Розширення ядра повинно бути підписане сертифікатом підпису коду ядра, який може бути наданий тільки Apple. Хто детально розгляне компанію та причини, чому це потрібно.

  • Розширення ядра також повинно бути нотаризоване, Apple зможе перевірити його на наявність шкідливого ПЗ.

  • Потім, кореневий користувач є тим, хто може завантажити розширення ядра, а файли всередині пакету повинні належати кореню.

  • Під час процесу завантаження пакет повинен бути підготовлений у захищеному місці, що не є кореневим: /Library/StagedExtensions (вимагає надання com.apple.rootless.storage.KernelExtensionManagement).

  • Нарешті, при спробі завантажити його, користувач отримає запит на підтвердження і, якщо прийнято, комп'ютер повинен бути перезавантажений для його завантаження.

Loading process

У Catalina це виглядало так: Цікаво відзначити, що процес перевірки відбувається в користувацькому просторі. Однак тільки програми з наданням com.apple.private.security.kext-management можуть запитувати у ядра завантажити розширення: kextcache, kextload, kextutil, kextd, syspolicyd

  1. kextutil cli починає процес перевірки для завантаження розширення

  • Він спілкуватиметься з kextd, використовуючи Mach service.

  1. kextd перевірить кілька речей, таких як підпис

  • Він спілкуватиметься з syspolicyd, щоб перевірити, чи може розширення бути завантаженим.

  1. syspolicyd запитає користувача, якщо розширення не було завантажено раніше.

  • syspolicyd повідомить результат kextd

  1. kextd нарешті зможе сказати ядру завантажити розширення

Якщо kextd недоступний, kextutil може виконати ті ж перевірки.

Referencias

Support HackTricks

Last updated