macOS Небезпечні права доступу та TCC дозволи

Reading time: 6 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks

warning

Зверніть увагу, що права доступу, які починаються з com.apple, недоступні для третіх сторін, лише Apple може їх надати.

Високий

com.apple.rootless.install.heritable

Право доступу com.apple.rootless.install.heritable дозволяє обійти SIP. Перевірте це для отримання додаткової інформації.

com.apple.rootless.install

Право доступу com.apple.rootless.install дозволяє обійти SIP. Перевірте це для отримання додаткової інформації.

com.apple.system-task-ports (раніше називалося task_for_pid-allow)

Це право доступу дозволяє отримати порт завдання для будь-якого процесу, за винятком ядра. Перевірте це для отримання додаткової інформації.

com.apple.security.get-task-allow

Це право доступу дозволяє іншим процесам з правом доступу com.apple.security.cs.debugger отримати порт завдання процесу, запущеного бінарним файлом з цим правом доступу, і впроваджувати код у нього. Перевірте це для отримання додаткової інформації.

com.apple.security.cs.debugger

Додатки з правом доступу до інструментів налагодження можуть викликати task_for_pid(), щоб отримати дійсний порт завдання для незахищених і сторонніх додатків з правом доступу Get Task Allow, встановленим на true. Однак навіть з правом доступу до інструментів налагодження, налагоджувач не може отримати порти завдання процесів, які не мають права доступу Get Task Allow, і які, отже, захищені захистом цілісності системи. Перевірте це для отримання додаткової інформації.

com.apple.security.cs.disable-library-validation

Це право доступу дозволяє завантажувати фреймворки, плагіни або бібліотеки без підпису Apple або підпису з тим же ідентифікатором команди, тому зловмисник може зловживати завантаженням довільної бібліотеки для впровадження коду. Перевірте це для отримання додаткової інформації.

com.apple.private.security.clear-library-validation

Це право доступу дуже схоже на com.apple.security.cs.disable-library-validation, але замість прямого відключення перевірки бібліотек, воно дозволяє процесу викликати системний виклик csops, щоб відключити його.
Перевірте це для отримання додаткової інформації.

com.apple.security.cs.allow-dyld-environment-variables

Це право доступу дозволяє використовувати змінні середовища DYLD, які можуть бути використані для впровадження бібліотек і коду. Перевірте це для отримання додаткової інформації.

com.apple.private.tcc.manager або com.apple.rootless.storage.TCC

Згідно з цим блогом і цим блогом, ці права доступу дозволяють модифікувати базу даних TCC.

system.install.apple-software та system.install.apple-software.standar-user

Ці права доступу дозволяють встановлювати програмне забезпечення без запиту дозволів у користувача, що може бути корисним для підвищення привілеїв.

com.apple.private.security.kext-management

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

com.apple.private.icloud-account-access

Право доступу com.apple.private.icloud-account-access дозволяє спілкуватися з com.apple.iCloudHelper XPC сервісом, який надасть токени iCloud.

iMovie та Garageband мали це право доступу.

Для отримання більшої інформації про експлойт для отримання токенів iCloud з цього права доступу перевірте доповідь: #OBTS v5.0: "Що відбувається на вашому Mac, залишається в iCloud Apple?!" - Войцех Регула

com.apple.private.tcc.manager.check-by-audit-token

TODO: Я не знаю, що це дозволяє робити

com.apple.private.apfs.revert-to-snapshot

TODO: У цьому звіті зазначено, що це може бути використано для оновлення вмісту, захищеного SSV, після перезавантаження. Якщо ви знаєте, як це зробити, надішліть PR, будь ласка!

com.apple.private.apfs.create-sealed-snapshot

TODO: У цьому звіті зазначено, що це може бути використано для оновлення вмісту, захищеного SSV, після перезавантаження. Якщо ви знаєте, як це зробити, надішліть PR, будь ласка!

keychain-access-groups

Це право доступу перераховує групи ключів, до яких має доступ додаток:

xml
<key>keychain-access-groups</key>
<array>
<string>ichat</string>
<string>apple</string>
<string>appleaccount</string>
<string>InternetAccounts</string>
<string>IMCore</string>
</array>

kTCCServiceSystemPolicyAllFiles

Надає Повний доступ до диска, одне з найвищих дозволів TCC, які ви можете мати.

kTCCServiceAppleEvents

Дозволяє додатку надсилати події іншим додаткам, які зазвичай використовуються для автоматизації завдань. Контролюючи інші додатки, він може зловживати дозволами, наданими цим іншим додаткам.

Наприклад, змушуючи їх запитувати у користувача його пароль:

bash
osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to activate' -e 'tell app "App Store" to display dialog "App Store requires your password to continue." & return & return default answer "" with icon 1 with hidden answer with title "App Store Alert"'

Або змусити їх виконувати произвольні дії.

kTCCServiceEndpointSecurityClient

Дозволяє, серед інших дозволів, записувати базу даних TCC користувачів.

kTCCServiceSystemPolicySysAdminFiles

Дозволяє змінювати атрибут NFSHomeDirectory користувача, що змінює шлях до його домашньої папки і, отже, дозволяє обійти TCC.

kTCCServiceSystemPolicyAppBundles

Дозволяє модифікувати файли всередині пакету додатків (всередині app.app), що заборонено за замовчуванням.

Можна перевірити, хто має цей доступ у Системних налаштуваннях > Конфіденційність та безпека > Управління додатками.

kTCCServiceAccessibility

Процес зможе зловживати функціями доступності macOS, що означає, що, наприклад, він зможе натискати клавіші. Тому він може запитати доступ для контролю додатка, такого як Finder, і підтвердити діалог з цим дозволом.

Середній

com.apple.security.cs.allow-jit

Цей привілей дозволяє створювати пам'ять, яка є записуваною та виконуваною, передаючи прапорець MAP_JIT функції системи mmap(). Перевірте це для отримання додаткової інформації.

com.apple.security.cs.allow-unsigned-executable-memory

Цей привілей дозволяє перезаписувати або патчити C код, використовувати давно застарілу NSCreateObjectFileImageFromMemory (яка є фундаментально небезпечною), або використовувати фреймворк DVDPlayback. Перевірте це для отримання додаткової інформації.

caution

Включення цього привілею піддає ваш додаток загальним вразливостям у мовах програмування з небезпечним управлінням пам'яттю. Уважно розгляньте, чи потрібен вашому додатку цей виняток.

com.apple.security.cs.disable-executable-page-protection

Цей привілей дозволяє модифікувати секції своїх власних виконуваних файлів на диску, щоб примусово вийти. Перевірте це для отримання додаткової інформації.

caution

Привілей Disable Executable Memory Protection є екстремальним привілеєм, який усуває основний захист безпеки з вашого додатку, що робить можливим для зловмисника переписати виконуваний код вашого додатку без виявлення. Вибирайте вужчі привілеї, якщо це можливо.

com.apple.security.cs.allow-relative-library-loads

TODO

com.apple.private.nullfs_allow

Цей привілей дозволяє монтувати файлову систему nullfs (заборонену за замовчуванням). Інструмент: mount_nullfs.

kTCCServiceAll

Згідно з цим блогом, цей дозвіл TCC зазвичай зустрічається у формі:

[Key] com.apple.private.tcc.allow-prompting
[Value]
[Array]
[String] kTCCServiceAll

Дозвольте процесу запитувати всі дозволи TCC.

kTCCServicePostEvent

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks