macOS Security Protections
Reading time: 6 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Gatekeeper
Gatekeeper зазвичай використовується для позначення комбінації Quarantine + Gatekeeper + XProtect, 3 модулів безпеки macOS, які намагатимуться запобігти виконанню потенційно шкідливого програмного забезпечення, завантаженого користувачами.
Більше інформації в:
macOS Gatekeeper / Quarantine / XProtect
Processes Limitants
MACF
SIP - System Integrity Protection
Sandbox
MacOS Sandbox обмежує програми, що працюють всередині пісочниці, до дозволених дій, зазначених у профілі Sandbox, з яким працює програма. Це допомагає забезпечити, що програма буде отримувати доступ лише до очікуваних ресурсів.
TCC - Transparency, Consent, and Control
TCC (Transparency, Consent, and Control) є безпековою структурою. Вона призначена для управління дозволами програм, зокрема шляхом регулювання їх доступу до чутливих функцій. Це включає елементи, такі як сервіси геолокації, контакти, фотографії, мікрофон, камера, доступ до можливостей для людей з обмеженими можливостями та повний доступ до диска. TCC забезпечує, що програми можуть отримувати доступ до цих функцій лише після отримання явної згоди користувача, тим самим зміцнюючи конфіденційність і контроль над особистими даними.
Launch/Environment Constraints & Trust Cache
Обмеження запуску в macOS є функцією безпеки для регулювання ініціації процесів, визначаючи хто може запустити процес, як і звідки. Введені в macOS Ventura, вони класифікують системні бінарні файли на категорії обмежень у кеші довіри. Кожен виконуваний бінар має встановлені правила для свого запуску, включаючи себе, батьківський та відповідальний обмеження. Розширені до сторонніх програм як Environment Constraints в macOS Sonoma, ці функції допомагають зменшити потенційні експлуатації системи, регулюючи умови запуску процесів.
macOS Launch/Environment Constraints & Trust Cache
MRT - Malware Removal Tool
Інструмент видалення шкідливих програм (MRT) є ще однією частиною інфраструктури безпеки macOS. Як випливає з назви, основна функція MRT полягає в видаленні відомих шкідливих програм з інфікованих систем.
Коли шкідливе ПЗ виявляється на Mac (або за допомогою XProtect, або іншим способом), MRT може бути використано для автоматичного видалення шкідливого ПЗ. MRT працює тихо у фоновому режимі і зазвичай запускається щоразу, коли система оновлюється або коли завантажується нове визначення шкідливого ПЗ (схоже, що правила, які MRT має для виявлення шкідливого ПЗ, знаходяться всередині бінару).
Хоча як XProtect, так і MRT є частинами заходів безпеки macOS, вони виконують різні функції:
- XProtect є профілактичним інструментом. Він перевіряє файли під час їх завантаження (через певні програми), і якщо виявляє будь-які відомі типи шкідливих програм, він запобігає відкриттю файлу, тим самим запобігаючи інфікуванню вашої системи з самого початку.
- MRT, з іншого боку, є реактивним інструментом. Він працює після виявлення шкідливого ПЗ на системі, з метою видалення шкідливого програмного забезпечення для очищення системи.
Додаток MRT розташований у /Library/Apple/System/Library/CoreServices/MRT.app
Background Tasks Management
macOS тепер інформує щоразу, коли інструмент використовує добре відому техніку для збереження виконання коду (таку як елементи входу, демонів...), щоб користувач краще знав, яке програмне забезпечення зберігається.
.png)
Це працює з демоном, розташованим у /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/backgroundtaskmanagementd
, і агентом у /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Support/BackgroundTaskManagementAgent.app
Спосіб, яким backgroundtaskmanagementd
дізнається, що щось встановлено в постійній папці, полягає в отриманні FSEvents і створенні деяких обробників для них.
Крім того, існує файл plist, який містить добре відомі програми, які часто зберігаються, що підтримується Apple, розташований у: /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/attributions.plist
[...]
"us.zoom.ZoomDaemon" => {
"AssociatedBundleIdentifiers" => [
0 => "us.zoom.xos"
]
"Attribution" => "Zoom"
"Program" => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
"ProgramArguments" => [
0 => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
]
"TeamIdentifier" => "BJ4HAAB9B3"
}
[...]
Enumeration
Можливо перерахувати всі налаштовані фонові елементи, що працюють за допомогою інструмента Apple cli:
# The tool will always ask for the users password
sfltool dumpbtm
Крім того, також можливо перерахувати цю інформацію за допомогою DumpBTM.
# You need to grant the Terminal Full Disk Access for this to work
chmod +x dumpBTM
xattr -rc dumpBTM # Remove quarantine attr
./dumpBTM
Ця інформація зберігається в /private/var/db/com.apple.backgroundtaskmanagement/BackgroundItems-v4.btm
і Terminal потребує FDA.
Маніпуляції з BTM
Коли знаходиться нова персистентність, відбувається подія типу ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_ADD
. Отже, будь-який спосіб запобігти цій події відправленню або агенту від попередження користувача допоможе зловмиснику обійти BTM.
- Скидання бази даних: Виконання наступної команди скине базу даних (повинно відновити її з нуля), однак, з якоїсь причини, після виконання цього жодна нова персистентність не буде попереджена, поки система не буде перезавантажена.
- Потрібен root.
# Reset the database
sfltool resettbtm
- Зупинити агента: Можливо надіслати сигнал зупинки агенту, щоб він не сповіщав користувача про нові виявлення.
# Get PID
pgrep BackgroundTaskManagementAgent
1011
# Stop it
kill -SIGSTOP 1011
# Check it's stopped (a T means it's stopped)
ps -o state 1011
T
- Баг: Якщо процес, що створив постійність, існує швидко після нього, демон спробує отримати інформацію про нього, не вдасться і не зможе надіслати подію, що вказує на те, що новий об'єкт зберігається.
Посилання та додаткова інформація про BTM:
- https://youtu.be/9hjUmT031tc?t=26481
- https://www.patreon.com/posts/new-developer-77420730?l=fr
- https://support.apple.com/en-gb/guide/deployment/depdca572563/web
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.