mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/macos-hardening/macos-security-and-privilege-escalation
This commit is contained in:
parent
607b22e07d
commit
7d9d23575c
@ -288,7 +288,6 @@
|
||||
- [PsExec/Winexec/ScExec](windows-hardening/lateral-movement/psexec-and-winexec.md)
|
||||
- [RDPexec](windows-hardening/lateral-movement/rdpexec.md)
|
||||
- [SCMexec](windows-hardening/lateral-movement/scmexec.md)
|
||||
- [SmbExec/ScExec](windows-hardening/lateral-movement/smbexec.md)
|
||||
- [WinRM](windows-hardening/lateral-movement/winrm.md)
|
||||
- [WmiExec](windows-hardening/lateral-movement/wmiexec.md)
|
||||
- [Pivoting to the Cloud$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/index.html$$]()
|
||||
|
@ -4,13 +4,13 @@
|
||||
|
||||
## **Основна інформація**
|
||||
|
||||
**TCC (Прозорість, Згода та Контроль)** - це протокол безпеки, що зосереджується на регулюванні дозволів додатків. Його основна роль полягає в захисті чутливих функцій, таких як **сервіси геолокації, контакти, фотографії, мікрофон, камера, доступ до елементів керування та повний доступ до диска**. Вимагаючи явної згоди користувача перед наданням доступу додатка до цих елементів, TCC підвищує конфіденційність та контроль користувача над своїми даними.
|
||||
**TCC (Прозорість, Згода та Контроль)** - це протокол безпеки, що зосереджується на регулюванні дозволів додатків. Його основна роль полягає в захисті чутливих функцій, таких як **сервіси геолокації, контакти, фотографії, мікрофон, камера, доступ до елементів керування та повний доступ до диска**. Вимагаючи явної згоди користувача перед наданням доступу додатка до цих елементів, TCC підвищує конфіденційність і контроль користувача над своїми даними.
|
||||
|
||||
Користувачі стикаються з TCC, коли додатки запитують доступ до захищених функцій. Це видно через запит, який дозволяє користувачам **схвалити або відхилити доступ**. Крім того, TCC враховує прямі дії користувача, такі як **перетягування та скидання файлів у додаток**, щоб надати доступ до конкретних файлів, забезпечуючи, що додатки мають доступ лише до того, що явно дозволено.
|
||||
|
||||

|
||||
|
||||
**TCC** обробляється **демоном**, розташованим у `/System/Library/PrivateFrameworks/TCC.framework/Support/tccd` і налаштованим у `/System/Library/LaunchDaemons/com.apple.tccd.system.plist` (реєстрація служби mach `com.apple.tccd.system`).
|
||||
**TCC** обробляється **демоном**, розташованим у `/System/Library/PrivateFrameworks/TCC.framework/Support/tccd`, і налаштовується в `/System/Library/LaunchDaemons/com.apple.tccd.system.plist` (реєстрація служби mach `com.apple.tccd.system`).
|
||||
|
||||
Існує **tccd у режимі користувача**, що працює для кожного увійшовшого користувача, визначеного в `/System/Library/LaunchAgents/com.apple.tccd.plist`, реєструючи служби mach `com.apple.tccd` та `com.apple.usernotifications.delegate.com.apple.tccd`.
|
||||
|
||||
@ -28,18 +28,18 @@ ps -ef | grep tcc
|
||||
|
||||
- Системна база даних у **`/Library/Application Support/com.apple.TCC/TCC.db`**.
|
||||
- Ця база даних **захищена SIP**, тому лише обхід SIP може записувати в неї.
|
||||
- База даних TCC користувача **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** для налаштувань конкретного користувача.
|
||||
- База даних TCC користувача **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** для налаштувань на користувача.
|
||||
- Ця база даних захищена, тому лише процеси з високими привілеями TCC, такі як Повний Доступ до Диска, можуть записувати в неї (але вона не захищена SIP).
|
||||
|
||||
> [!WARNING]
|
||||
> Попередні бази даних також **захищені TCC для доступу на читання**. Тому ви **не зможете прочитати** вашу звичайну базу даних TCC користувача, якщо це не з процесу з привілеями TCC.
|
||||
>
|
||||
> Однак пам'ятайте, що процес з такими високими привілеями (як **FDA** або **`kTCCServiceEndpointSecurityClient`**) зможе записувати в базу даних TCC користувача.
|
||||
> Однак пам'ятайте, що процес з цими високими привілеями (як **FDA** або **`kTCCServiceEndpointSecurityClient`**) зможе записувати в базу даних TCC користувача.
|
||||
|
||||
- Є **третя** база даних TCC у **`/var/db/locationd/clients.plist`**, щоб вказати клієнтів, яким дозволено **доступ до служб геолокації**.
|
||||
- Файл, захищений SIP **`/Users/carlospolop/Downloads/REG.db`** (також захищений від доступу на читання з TCC), містить **місцезнаходження** всіх **дійсних TCC баз даних**.
|
||||
- Файл, захищений SIP **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (також захищений від доступу на читання з TCC), містить більше наданих дозволів TCC.
|
||||
- Файл, захищений SIP **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (але доступний для читання будь-кому), є списком дозволених додатків, які потребують винятку TCC.
|
||||
- Файл, захищений SIP **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (але доступний для читання будь-ким), є списком дозволених додатків, які потребують винятку TCC.
|
||||
|
||||
> [!TIP]
|
||||
> База даних TCC в **iOS** знаходиться в **`/private/var/mobile/Library/TCC/TCC.db`**.
|
||||
@ -186,7 +186,7 @@ tccutil reset All
|
||||
```
|
||||
### TCC Signature Checks
|
||||
|
||||
База даних TCC **зберігає** **Bundle ID** програми, але також **зберігає** **інформацію** про **підпис**, щоб **переконатися**, що програма, яка запитує використання дозволу, є правильною.
|
||||
База даних TCC **зберігає** **Bundle ID** програми, але також **зберігає** **інформацію** про **підпис**, щоб **переконатися**, що програма, яка запитує доступ до дозволу, є правильною.
|
||||
```bash
|
||||
# From sqlite
|
||||
sqlite> select service, client, hex(csreq) from access where auth_value=2;
|
||||
@ -206,9 +206,9 @@ csreq -t -r /tmp/telegram_csreq.bin
|
||||
Додатки **не тільки повинні** **запитувати** та отримувати **доступ** до деяких ресурсів, вони також повинні **мати відповідні права**.\
|
||||
Наприклад, **Telegram** має право `com.apple.security.device.camera`, щоб запитати **доступ до камери**. Додаток, який **не має** цього **права, не зможе** отримати доступ до камери (і користувач навіть не буде запитаний про дозволи).
|
||||
|
||||
Однак, щоб додатки **мали доступ** до **певних папок користувача**, таких як `~/Desktop`, `~/Downloads` та `~/Documents`, їм **не потрібно** мати жодних специфічних **прав**. Система прозоро оброблятиме доступ і **запитуватиме користувача** за потреби.
|
||||
Однак, щоб додатки **отримали доступ** до **певних папок користувача**, таких як `~/Desktop`, `~/Downloads` та `~/Documents`, їм **не потрібно** мати жодних специфічних **прав**. Система прозоро оброблятиме доступ і **запитуватиме користувача** за потреби.
|
||||
|
||||
Додатки Apple **не генеруватимуть запити**. Вони містять **попередньо надані права** у своєму **переліку прав**, що означає, що вони **ніколи не генеруватимуть спливаючі вікна**, **ні** вони з'являться в жодній з **баз даних TCC**. Наприклад:
|
||||
Додатки Apple **не генеруватимуть запити**. Вони містять **попередньо надані права** у своєму **переліку прав**, що означає, що вони **ніколи не генеруватимуть спливаюче вікно**, **ні** вони з'являться в жодній з **баз даних TCC**. Наприклад:
|
||||
```bash
|
||||
codesign -dv --entitlements :- /System/Applications/Calendar.app
|
||||
[...]
|
||||
@ -234,7 +234,7 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app
|
||||
|
||||
### Намір користувача / com.apple.macl
|
||||
|
||||
Як згадувалося раніше, можливо **надати доступ до програми до файлу, перетягнувши його до неї**. Цей доступ не буде вказаний у жодній базі даних TCC, але як **розширений** **атрибут файлу**. Цей атрибут **зберігатиме UUID** дозволеної програми:
|
||||
Як згадувалося раніше, можливо **надати доступ до програми до файлу, перетягуючи його до неї**. Цей доступ не буде вказаний у жодній базі даних TCC, але як **додатковий** **атрибут файлу**. Цей атрибут **зберігатиме UUID** дозволеної програми:
|
||||
```bash
|
||||
xattr Desktop/private.txt
|
||||
com.apple.macl
|
||||
@ -254,13 +254,13 @@ uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3
|
||||
>
|
||||
> Також зверніть увагу, що якщо ви перемістите файл, який дозволяє UUID програми на вашому комп'ютері, на інший комп'ютер, оскільки та сама програма матиме різні UIDs, це не надасть доступу до цієї програми.
|
||||
|
||||
Розширений атрибут `com.apple.macl` **не може бути очищений** як інші розширені атрибути, оскільки він **захищений SIP**. Однак, як [**пояснено в цьому пості**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), можливо відключити його, **запакувавши** файл, **видаливши** його та **розпакувавши** його.
|
||||
Розширений атрибут `com.apple.macl` **не може бути очищений** як інші розширені атрибути, оскільки він **захищений SIP**. Однак, як [**пояснено в цьому пості**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), його можна вимкнути, **запакувавши** файл, **видаливши** його та **розпакувавши**.
|
||||
|
||||
## TCC Privesc & Bypasses
|
||||
|
||||
### Вставка в TCC
|
||||
|
||||
Якщо в якийсь момент вам вдасться отримати доступ на запис до бази даних TCC, ви можете використати щось подібне до наступного, щоб додати запис (видаліть коментарі):
|
||||
Якщо в якийсь момент вам вдасться отримати доступ на запис до бази даних TCC, ви можете використати щось на кшталт наступного, щоб додати запис (видаліть коментарі):
|
||||
|
||||
<details>
|
||||
|
||||
@ -325,13 +325,13 @@ macos-apple-events.md
|
||||
### Автоматизація (Finder) до FDA\*
|
||||
|
||||
Назва TCC дозволу для Автоматизації: **`kTCCServiceAppleEvents`**\
|
||||
Цей конкретний дозвіл TCC також вказує на **додаток, яке можна керувати** в базі даних TCC (тому дозволи не дозволяють просто керувати всім).
|
||||
Цей конкретний дозвіл TCC також вказує на **додаток, яке може бути кероване** в базі даних TCC (тому дозволи не дозволяють просто керувати всім).
|
||||
|
||||
**Finder** - це додаток, який **завжди має FDA** (навіть якщо він не з'являється в інтерфейсі), тому якщо у вас є **привілеї Автоматизації** над ним, ви можете зловживати його привілеями, щоб **змушувати його виконувати деякі дії**.\
|
||||
У цьому випадку вашому додатку знадобиться дозвіл **`kTCCServiceAppleEvents`** над **`com.apple.Finder`**.
|
||||
У цьому випадку ваш додаток потребуватиме дозволу **`kTCCServiceAppleEvents`** над **`com.apple.Finder`**.
|
||||
|
||||
{{#tabs}}
|
||||
{{#tab name="Викрасти TCC.db користувачів"}}
|
||||
{{#tab name="Викрадення TCC.db користувачів"}}
|
||||
```applescript
|
||||
# This AppleScript will copy the system TCC database into /tmp
|
||||
osascript<<EOD
|
||||
@ -494,7 +494,7 @@ EOF
|
||||
```
|
||||
### `kTCCServiceAccessibility` до FDA\*
|
||||
|
||||
Перегляньте цю сторінку для деяких [**payloads для зловживання дозволами Accessibility**](macos-tcc-payloads.md#accessibility) для підвищення привілеїв до FDA\* або, наприклад, для запуску кейлогера.
|
||||
Перегляньте цю сторінку для деяких [**payloads для зловживання дозволами Accessibility**](macos-tcc-payloads.md#accessibility) для підвищення привілеїв до FDA\* або запуску кейлогера, наприклад.
|
||||
|
||||
### **Клієнт безпеки кінцевих точок до FDA**
|
||||
|
||||
@ -514,18 +514,18 @@ EOF
|
||||
|
||||
**Повний доступ до диска** в TCC називається **`kTCCServiceSystemPolicyAllFiles`**.
|
||||
|
||||
Я не думаю, що це справжнє підвищення привілеїв, але на всякий випадок, якщо ви вважаєте це корисним: якщо ви контролюєте програму з FDA, ви можете **змінити базу даних TCC користувачів і надати собі будь-який доступ**. Це може бути корисно як техніка постійності на випадок, якщо ви можете втратити свої права FDA.
|
||||
Я не думаю, що це справжнє підвищення привілеїв, але на всякий випадок, якщо ви вважаєте це корисним: якщо ви контролюєте програму з FDA, ви можете **модифікувати базу даних TCC користувачів і надати собі будь-який доступ**. Це може бути корисно як техніка постійності на випадок, якщо ви можете втратити свої права FDA.
|
||||
|
||||
### **Обхід SIP для обходу TCC**
|
||||
|
||||
Системна **база даних TCC** захищена **SIP**, тому лише процеси з **вказаними правами можуть змінювати** її. Отже, якщо зловмисник знайде **обхід SIP** через **файл** (зможе змінити файл, обмежений SIP), він зможе:
|
||||
Системна **база даних TCC** захищена **SIP**, тому лише процеси з **вказаними правами можуть її модифікувати**. Отже, якщо зловмисник знайде **обхід SIP** через **файл** (зможе модифікувати файл, обмежений SIP), він зможе:
|
||||
|
||||
- **Видалити захист** бази даних TCC і надати собі всі дозволи TCC. Він міг би зловживати будь-яким з цих файлів, наприклад:
|
||||
- **Видалити захист** бази даних TCC і надати собі всі дозволи TCC. Він міг би зловживати будь-якими з цих файлів, наприклад:
|
||||
- Системна база даних TCC
|
||||
- REG.db
|
||||
- MDMOverrides.plist
|
||||
|
||||
Однак є ще один варіант зловживання цим **обхід SIP для обходу TCC**, файл `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` є списком дозволених програм, які потребують винятку TCC. Отже, якщо зловмисник може **видалити захист SIP** з цього файлу і додати свою **власну програму**, програма зможе обійти TCC.\
|
||||
Однак є ще один варіант зловживати цим **обхід SIP для обходу TCC**, файл `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` є списком дозволених програм, які потребують винятку TCC. Отже, якщо зловмисник може **видалити захист SIP** з цього файлу і додати свою **власну програму**, програма зможе обійти TCC.\
|
||||
Наприклад, щоб додати термінал:
|
||||
```bash
|
||||
# Get needed info
|
||||
|
Loading…
x
Reference in New Issue
Block a user