macOS System Extensions
Reading time: 5 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
System Extensions / Endpoint Security Framework
На відміну від Kernel Extensions, System Extensions працюють у просторі користувача замість простору ядра, що зменшує ризик аварійної зупинки системи через несправність розширення.
.png)
Існує три типи системних розширень: DriverKit Extensions, Network Extensions та Endpoint Security Extensions.
DriverKit Extensions
DriverKit є заміною для kernel extensions, які надають апаратну підтримку. Він дозволяє драйверам пристроїв (таким як USB, Serial, NIC та HID драйвери) працювати в просторі користувача, а не в просторі ядра. Фреймворк DriverKit включає версії певних класів I/O Kit для простору користувача, а ядро пересилає звичайні події I/O Kit у простір користувача, пропонуючи безпечніше середовище для роботи цих драйверів.
Network Extensions
Network Extensions надають можливість налаштування мережевої поведінки. Існує кілька типів Network Extensions:
- App Proxy: Використовується для створення VPN-клієнта, який реалізує орієнтований на потоки, кастомний VPN-протокол. Це означає, що він обробляє мережевий трафік на основі з'єднань (або потоків), а не окремих пакетів.
- Packet Tunnel: Використовується для створення VPN-клієнта, який реалізує орієнтований на пакети, кастомний VPN-протокол. Це означає, що він обробляє мережевий трафік на основі окремих пакетів.
- Filter Data: Використовується для фільтрації мережевих "потоків". Він може моніторити або змінювати мережеві дані на рівні потоку.
- Filter Packet: Використовується для фільтрації окремих мережевих пакетів. Він може моніторити або змінювати мережеві дані на рівні пакета.
- DNS Proxy: Використовується для створення кастомного DNS-провайдера. Може використовуватися для моніторингу або зміни DNS-запитів і відповідей.
Endpoint Security Framework
Endpoint Security - це фреймворк, наданий Apple в macOS, який забезпечує набір API для системної безпеки. Він призначений для використання постачальниками безпеки та розробниками для створення продуктів, які можуть моніторити та контролювати системну активність для виявлення та захисту від шкідливої активності.
Цей фреймворк надає збірку API для моніторингу та контролю системної активності, такої як виконання процесів, події файлової системи, мережеві та ядрові події.
Ядро цього фреймворку реалізовано в ядрі, як Kernel Extension (KEXT), розташоване за адресою /System/Library/Extensions/EndpointSecurity.kext
. Цей KEXT складається з кількох ключових компонентів:
- EndpointSecurityDriver: Діє як "точка входу" для розширення ядра. Це основна точка взаємодії між ОС та фреймворком Endpoint Security.
- EndpointSecurityEventManager: Цей компонент відповідає за реалізацію ядрових хуків. Ядрові хуки дозволяють фреймворку моніторити системні події, перехоплюючи системні виклики.
- EndpointSecurityClientManager: Цей компонент управляє зв'язком з клієнтами простору користувача, відстежуючи, які клієнти підключені та потребують отримання сповіщень про події.
- EndpointSecurityMessageManager: Цей компонент надсилає повідомлення та сповіщення про події клієнтам простору користувача.
Події, які фреймворк Endpoint Security може моніторити, класифікуються на:
- Події файлів
- Події процесів
- Події сокетів
- Ядрові події (такі як завантаження/вивантаження розширення ядра або відкриття пристрою I/O Kit)
Архітектура фреймворку Endpoint Security
.png)
Зв'язок у просторі користувача з фреймворком Endpoint Security відбувається через клас IOUserClient. Використовуються два різні підкласи, залежно від типу виклику:
- EndpointSecurityDriverClient: Це вимагає права
com.apple.private.endpoint-security.manager
, яке має лише системний процесendpointsecurityd
. - EndpointSecurityExternalClient: Це вимагає права
com.apple.developer.endpoint-security.client
. Це зазвичай використовуватиметься стороннім програмним забезпеченням безпеки, яке потребує взаємодії з фреймворком Endpoint Security.
Розширення Endpoint Security:libEndpointSecurity.dylib
є C-бібліотекою, яку системні розширення використовують для зв'язку з ядром. Ця бібліотека використовує I/O Kit (IOKit
) для зв'язку з KEXT Endpoint Security.
endpointsecurityd
є ключовим системним демоном, який бере участь в управлінні та запуску системних розширень безпеки кінцевих точок, особливо під час раннього процесу завантаження. Тільки системні розширення, позначені NSEndpointSecurityEarlyBoot
у їхньому файлі Info.plist
, отримують це раннє завантаження.
Ще один системний демон, sysextd
, перевіряє системні розширення та переміщує їх у відповідні системні місця. Потім він запитує відповідний демон, щоб завантажити розширення. SystemExtensions.framework
відповідає за активацію та деактивацію системних розширень.
Обхід ESF
ESF використовується інструментами безпеки, які намагатимуться виявити червону команду, тому будь-яка інформація про те, як це можна уникнути, звучить цікаво.
CVE-2021-30965
Справа в тому, що безпекова програма повинна мати дозволи на повний доступ до диска. Тож, якщо зловмисник зможе це видалити, він зможе запобігти запуску програмного забезпечення:
tccutil reset All
Для додаткової інформації про цей обхід та пов'язані з ним, перегляньте доповідь #OBTS v5.0: "Ахіллесова п'ята EndpointSecurity" - Фіцл Чаба
В кінці це було виправлено, надавши новий дозвіл kTCCServiceEndpointSecurityClient
безпековому додатку, керованому tccd
, щоб tccutil
не очищав його дозволи, що заважає йому працювати.
Посилання
- OBTS v3.0: "Безпека та небезпека Endpoint" - Скотт Найт
- https://knight.sc/reverse%20engineering/2019/08/24/system-extension-internals.html
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.