macOS Kernel Extensions

Вивчайте хакінг AWS від нуля до героя з htARTE (Експерт з червоної команди AWS HackTricks)!

Основна інформація

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

Вимоги

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

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

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

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

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

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

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

Процес завантаження

У Catalina це було так: Цікаво відзначити, що процес перевірки відбувається в userland. Однак тільки додатки з дозволом 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 може виконати ті самі перевірки.

Посилання

Вивчайте хакінг AWS від нуля до героя з htARTE (Експерт з червоної команди AWS HackTricks)!

Last updated