Translated ['src/macos-hardening/macos-security-and-privilege-escalation

This commit is contained in:
Translator 2025-04-07 02:34:20 +00:00
parent 550e58e70d
commit e18c60de53
2 changed files with 24 additions and 25 deletions

View File

@ -288,7 +288,6 @@
- [PsExec/Winexec/ScExec](windows-hardening/lateral-movement/psexec-and-winexec.md) - [PsExec/Winexec/ScExec](windows-hardening/lateral-movement/psexec-and-winexec.md)
- [RDPexec](windows-hardening/lateral-movement/rdpexec.md) - [RDPexec](windows-hardening/lateral-movement/rdpexec.md)
- [SCMexec](windows-hardening/lateral-movement/scmexec.md) - [SCMexec](windows-hardening/lateral-movement/scmexec.md)
- [SmbExec/ScExec](windows-hardening/lateral-movement/smbexec.md)
- [WinRM](windows-hardening/lateral-movement/winrm.md) - [WinRM](windows-hardening/lateral-movement/winrm.md)
- [WmiExec](windows-hardening/lateral-movement/wmiexec.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$$]() - [Pivoting to the Cloud$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/index.html$$]()

View File

@ -4,13 +4,13 @@
## **Podstawowe informacje** ## **Podstawowe informacje**
**TCC (Transparentność, Zgoda i Kontrola)** to protokół bezpieczeństwa koncentrujący się na regulowaniu uprawnień aplikacji. Jego główną rolą jest ochrona wrażliwych funkcji, takich jak **usługi lokalizacji, kontakty, zdjęcia, mikrofon, kamera, dostęp do ułatwień dostępu i pełny dostęp do dysku**. Wymuszając wyraźną zgodę użytkownika przed przyznaniem aplikacji dostępu do tych elementów, TCC zwiększa prywatność i kontrolę użytkownika nad swoimi danymi. **TCC (Transparentność, Zgoda i Kontrola)** to protokół bezpieczeństwa koncentrujący się na regulowaniu uprawnień aplikacji. Jego główną rolą jest ochrona wrażliwych funkcji, takich jak **usługi lokalizacji, kontakty, zdjęcia, mikrofon, kamera, dostęp do pełnego dysku**. Poprzez wymóg wyraźnej zgody użytkownika przed przyznaniem aplikacji dostępu do tych elementów, TCC zwiększa prywatność i kontrolę użytkownika nad swoimi danymi.
Użytkownicy napotykają TCC, gdy aplikacje żądają dostępu do chronionych funkcji. Jest to widoczne poprzez monit, który pozwala użytkownikom **zatwierdzić lub odmówić dostępu**. Ponadto TCC umożliwia bezpośrednie działania użytkownika, takie jak **przeciąganie i upuszczanie plików do aplikacji**, aby przyznać dostęp do konkretnych plików, zapewniając, że aplikacje mają dostęp tylko do tego, co jest wyraźnie dozwolone. Użytkownicy napotykają TCC, gdy aplikacje żądają dostępu do chronionych funkcji. Jest to widoczne poprzez monit, który pozwala użytkownikom **zatwierdzić lub odmówić dostępu**. Ponadto TCC umożliwia bezpośrednie działania użytkownika, takie jak **przeciąganie i upuszczanie plików do aplikacji**, aby przyznać dostęp do konkretnych plików, zapewniając, że aplikacje mają dostęp tylko do tego, co jest wyraźnie dozwolone.
![Przykład monitu TCC](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855) ![Przykład monitu TCC](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855)
**TCC** jest obsługiwane przez **demon** znajdujący się w `/System/Library/PrivateFrameworks/TCC.framework/Support/tccd` i skonfigurowany w `/System/Library/LaunchDaemons/com.apple.tccd.system.plist` (rejestrując usługę mach `com.apple.tccd.system`). **TCC** jest obsługiwany przez **demon** znajdujący się w `/System/Library/PrivateFrameworks/TCC.framework/Support/tccd` i skonfigurowany w `/System/Library/LaunchDaemons/com.apple.tccd.system.plist` (rejestrując usługę mach `com.apple.tccd.system`).
Istnieje **tccd w trybie użytkownika** działający dla każdego zalogowanego użytkownika zdefiniowanego w `/System/Library/LaunchAgents/com.apple.tccd.plist`, rejestrujący usługi mach `com.apple.tccd` i `com.apple.usernotifications.delegate.com.apple.tccd`. Istnieje **tccd w trybie użytkownika** działający dla każdego zalogowanego użytkownika zdefiniowanego w `/System/Library/LaunchAgents/com.apple.tccd.plist`, rejestrujący usługi mach `com.apple.tccd` i `com.apple.usernotifications.delegate.com.apple.tccd`.
@ -26,17 +26,17 @@ Uprawnienia są **dziedziczone z aplikacji nadrzędnej** a **uprawnienia** są *
Zezwolenia/odmowy są następnie przechowywane w niektórych bazach danych TCC: Zezwolenia/odmowy są następnie przechowywane w niektórych bazach danych TCC:
- Baza danych systemowa w **`/Library/Application Support/com.apple.TCC/TCC.db`**. - Ogólnosystemowa baza danych w **`/Library/Application Support/com.apple.TCC/TCC.db`**.
- Ta baza danych jest **chroniona przez SIP**, więc tylko obejście SIP może w nią zapisać. - Ta baza danych jest **chroniona przez SIP**, więc tylko obejście SIP może wprowadzać do niej zmiany.
- Baza danych TCC użytkownika **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** dla preferencji per użytkownik. - Użytkownik TCC baza danych **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** dla preferencji użytkownika.
- Ta baza danych jest chroniona, więc tylko procesy z wysokimi uprawnieniami TCC, takie jak Pełny dostęp do dysku, mogą w nią zapisać (ale nie jest chroniona przez SIP). - Ta baza danych jest chroniona, więc tylko procesy z wysokimi uprawnieniami TCC, takie jak Pełny dostęp do dysku, mogą wprowadzać do niej zmiany (ale nie jest chroniona przez SIP).
> [!WARNING] > [!WARNING]
> Poprzednie bazy danych są również **chronione przez TCC dla dostępu do odczytu**. Więc **nie będziesz w stanie odczytać** swojej regularnej bazy danych TCC użytkownika, chyba że pochodzi ona z procesu z uprawnieniami TCC. > Poprzednie bazy danych są również **chronione przez TCC w dostępie do odczytu**. Więc **nie będziesz w stanie odczytać** swojej regularnej bazy danych TCC użytkownika, chyba że pochodzi ona z procesu z uprawnieniami TCC.
> >
> Pamiętaj jednak, że proces z tymi wysokimi uprawnieniami (takimi jak **FDA** lub **`kTCCServiceEndpointSecurityClient`**) będzie mógł zapisać bazę danych TCC użytkowników. > Pamiętaj jednak, że proces z tymi wysokimi uprawnieniami (takimi jak **FDA** lub **`kTCCServiceEndpointSecurityClient`**) będzie mógł wprowadzać zmiany w bazie danych TCC użytkowników.
- Istnieje **trzecia** baza danych TCC w **`/var/db/locationd/clients.plist`**, aby wskazać klientów, którym zezwolono na **dostęp do usług lokalizacyjnych**. - Istnieje **trzecia** baza danych TCC w **`/var/db/locationd/clients.plist`**, aby wskazać klientów, którym zezwolono na **dostęp do usług lokalizacji**.
- Plik chroniony przez SIP **`/Users/carlospolop/Downloads/REG.db`** (również chroniony przed dostępem do odczytu z TCC) zawiera **lokację** wszystkich **ważnych baz danych TCC**. - Plik chroniony przez SIP **`/Users/carlospolop/Downloads/REG.db`** (również chroniony przed dostępem do odczytu z TCC) zawiera **lokację** wszystkich **ważnych baz danych TCC**.
- Plik chroniony przez SIP **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (również chroniony przed dostępem do odczytu z TCC) zawiera więcej przyznanych uprawnień TCC. - Plik chroniony przez SIP **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (również chroniony przed dostępem do odczytu z TCC) zawiera więcej przyznanych uprawnień TCC.
- Plik chroniony przez SIP **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (czytelny dla każdego) jest listą aplikacji, które wymagają wyjątku TCC. - Plik chroniony przez SIP **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (czytelny dla każdego) jest listą aplikacji, które wymagają wyjątku TCC.
@ -102,10 +102,10 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
{{#endtabs}} {{#endtabs}}
> [!TIP] > [!TIP]
> Sprawdzając obie bazy danych, możesz sprawdzić, jakie uprawnienia aplikacja przyznała, zabroniła lub ich nie ma (zostanie o to poproszona). > Sprawdzając obie bazy danych, możesz sprawdzić, jakie uprawnienia aplikacja ma przyznane, zabronione lub których nie ma (będzie o nie prosić).
- **`service`** to reprezentacja ciągu uprawnień TCC - **`service`** to reprezentacja ciągu uprawnień TCC
- **`client`** to **ID pakietu** lub **ścieżka do binarnego** z uprawnieniami - **`client`** to **ID pakietu** lub **ścieżka do binarnego pliku** z uprawnieniami
- **`client_type`** wskazuje, czy jest to identyfikator pakietu (0) czy ścieżka bezwzględna (1) - **`client_type`** wskazuje, czy jest to identyfikator pakietu (0) czy ścieżka bezwzględna (1)
<details> <details>
@ -199,14 +199,14 @@ csreq -t -r /tmp/telegram_csreq.bin
(anchor apple generic and certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = "6N38VWS5BX") and identifier "ru.keepcoder.Telegram" (anchor apple generic and certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = "6N38VWS5BX") and identifier "ru.keepcoder.Telegram"
``` ```
> [!WARNING] > [!WARNING]
> Dlatego inne aplikacje używające tej samej nazwy i identyfikatora pakietu nie będą mogły uzyskać dostępu do przyznanych uprawnień dla innych aplikacji. > Dlatego inne aplikacje używające tej samej nazwy i identyfikatora pakietu nie będą mogły uzyskać dostępu do przyznanych uprawnień innym aplikacjom.
### Uprawnienia i uprawnienia TCC ### Uprawnienia i uprawnienia TCC
Aplikacje **nie tylko muszą** **żądać** i **otrzymać dostęp** do niektórych zasobów, ale także muszą **mieć odpowiednie uprawnienia**.\ Aplikacje **nie tylko muszą** **prosić** i **otrzymać dostęp** do niektórych zasobów, ale także muszą **mieć odpowiednie uprawnienia**.\
Na przykład **Telegram** ma uprawnienie `com.apple.security.device.camera`, aby żądać **dostępu do kamery**. Aplikacja, która **nie ma** tego **uprawnienia, nie będzie mogła** uzyskać dostępu do kamery (a użytkownik nie zostanie nawet poproszony o przyznanie uprawnień). Na przykład **Telegram** ma uprawnienie `com.apple.security.device.camera`, aby poprosić o **dostęp do kamery**. Aplikacja, która **nie ma** tego **uprawnienia, nie będzie mogła** uzyskać dostępu do kamery (a użytkownik nawet nie zostanie poproszony o uprawnienia).
Jednakże, aby aplikacje mogły **uzyskać dostęp** do **niektórych folderów użytkownika**, takich jak `~/Desktop`, `~/Downloads` i `~/Documents`, **nie muszą** mieć żadnych specyficznych **uprawnień.** System automatycznie obsłuży dostęp i **poprosi użytkownika** w razie potrzeby. Jednak aby aplikacje mogły **uzyskać dostęp** do **niektórych folderów użytkownika**, takich jak `~/Desktop`, `~/Downloads` i `~/Documents`, **nie muszą** mieć żadnych specyficznych **uprawnień.** System przejrzysto obsłuży dostęp i **poprosi użytkownika** w razie potrzeby.
Aplikacje Apple **nie będą generować powiadomień**. Zawierają **wcześniej przyznane prawa** w swojej liście **uprawnień**, co oznacza, że **nigdy nie wygenerują okna popup**, **ani** nie pojawią się w żadnej z **baz danych TCC.** Na przykład: Aplikacje Apple **nie będą generować powiadomień**. Zawierają **wcześniej przyznane prawa** w swojej liście **uprawnień**, co oznacza, że **nigdy nie wygenerują okna popup**, **ani** nie pojawią się w żadnej z **baz danych TCC.** Na przykład:
```bash ```bash
@ -222,7 +222,7 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app
To uniknie, aby Kalendarz prosił użytkownika o dostęp do przypomnień, kalendarza i książki adresowej. To uniknie, aby Kalendarz prosił użytkownika o dostęp do przypomnień, kalendarza i książki adresowej.
> [!TIP] > [!TIP]
> Oprócz oficjalnej dokumentacji dotyczącej uprawnień, możliwe jest również znalezienie nieoficjalnych **interesujących informacji o uprawnieniach w** [**https://newosxbook.com/ent.jl**](https://newosxbook.com/ent.jl) > Oprócz oficjalnej dokumentacji na temat uprawnień, możliwe jest również znalezienie nieoficjalnych **interesujących informacji na temat uprawnień w** [**https://newosxbook.com/ent.jl**](https://newosxbook.com/ent.jl)
Niektóre uprawnienia TCC to: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCServicePhotos... Nie ma publicznej listy, która definiuje wszystkie z nich, ale możesz sprawdzić tę [**listę znanych**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service). Niektóre uprawnienia TCC to: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCServicePhotos... Nie ma publicznej listy, która definiuje wszystkie z nich, ale możesz sprawdzić tę [**listę znanych**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service).
@ -322,7 +322,7 @@ Dowiedz się o Apple Events w:
macos-apple-events.md macos-apple-events.md
{{#endref}} {{#endref}}
### Automatyzacja (Finder) do FDA\* ### Automation (Finder) do FDA\*
Nazwa TCC uprawnienia Automatyzacji to: **`kTCCServiceAppleEvents`**\ Nazwa TCC uprawnienia Automatyzacji to: **`kTCCServiceAppleEvents`**\
To konkretne uprawnienie TCC wskazuje również **aplikację, która może być zarządzana** w bazie danych TCC (więc uprawnienia nie pozwalają tylko na zarządzanie wszystkim). To konkretne uprawnienie TCC wskazuje również **aplikację, która może być zarządzana** w bazie danych TCC (więc uprawnienia nie pozwalają tylko na zarządzanie wszystkim).
@ -444,9 +444,9 @@ rm "$HOME/Desktop/file"
``` ```
### Automatyzacja (SE) + Dostępność (**`kTCCServicePostEvent`|**`kTCCServiceAccessibility`**)** do FDA\* ### Automatyzacja (SE) + Dostępność (**`kTCCServicePostEvent`|**`kTCCServiceAccessibility`**)** do FDA\*
Automatyzacja na **`System Events`** + Dostępność (**`kTCCServicePostEvent`**) pozwala na wysyłanie **naciśnięć klawiszy do procesów**. W ten sposób można nadużyć Findera, aby zmienić TCC.db użytkowników lub przyznać FDA dowolnej aplikacji (chociaż może być wymagane hasło). Automatyzacja na **`System Events`** + Dostępność (**`kTCCServicePostEvent`**) pozwala na wysyłanie **naciśnięć klawiszy do procesów**. W ten sposób można nadużyć Findera, aby zmienić TCC.db użytkownika lub przyznać FDA dowolnej aplikacji (chociaż może być wymagane hasło).
Przykład nadpisania TCC.db użytkowników przez Findera: Przykład nadpisania TCC.db użytkownika przez Findera:
```applescript ```applescript
-- store the TCC.db file to copy in /tmp -- store the TCC.db file to copy in /tmp
osascript <<EOF osascript <<EOF
@ -494,7 +494,7 @@ EOF
``` ```
### `kTCCServiceAccessibility` do FDA\* ### `kTCCServiceAccessibility` do FDA\*
Sprawdź tę stronę, aby uzyskać [**ładunki do nadużywania uprawnień Dostępności**](macos-tcc-payloads.md#accessibility) do privesc do FDA\* lub uruchomienia keyloggera na przykład. Sprawdź tę stronę po niektóre [**ładunki do nadużycia uprawnień Dostępności**](macos-tcc-payloads.md#accessibility) do privesc do FDA\* lub uruchomienia keyloggera na przykład.
### **Klient Bezpieczeństwa Endpoint do FDA** ### **Klient Bezpieczeństwa Endpoint do FDA**
@ -518,14 +518,14 @@ Nie sądzę, że to jest prawdziwe privesc, ale na wszelki wypadek, jeśli uznas
### **Obejście SIP do Obejścia TCC** ### **Obejście SIP do Obejścia TCC**
Baza danych **TCC systemu** jest chroniona przez **SIP**, dlatego tylko procesy z **wskazanymi uprawnieniami będą mogły ją modyfikować**. Dlatego, jeśli atakujący znajdzie **obejście SIP** dla **pliku** (będzie mógł modyfikować plik ograniczony przez SIP), będzie mógł: Baza danych **TCC systemu** jest chroniona przez **SIP**, dlatego tylko procesy z **wskazanymi uprawnieniami będą mogły ją modyfikować**. Dlatego, jeśli atakujący znajdzie **obejście SIP** nad **plikem** (będzie mógł modyfikować plik ograniczony przez SIP), będzie mógł:
- **Usunąć ochronę** bazy danych TCC i przyznać sobie wszystkie uprawnienia TCC. Może nadużyć dowolnego z tych plików, na przykład: - **Usunąć ochronę** bazy danych TCC i przyznać sobie wszystkie uprawnienia TCC. Może nadużyć dowolnego z tych plików na przykład:
- Baza danych systemowa TCC - Baza danych systemowa TCC
- REG.db - REG.db
- MDMOverrides.plist - MDMOverrides.plist
Jednak istnieje inna opcja, aby nadużyć tego **obejścia SIP do obejścia TCC**, plik `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` jest listą dozwolonych aplikacji, które wymagają wyjątku TCC. Dlatego, jeśli atakujący może **usunąć ochronę SIP** z tego pliku i dodać swoją **własną aplikację**, aplikacja ta będzie mogła obejść TCC.\ Jednak istnieje inna opcja, aby nadużyć tego **obejścia SIP do obejścia TCC**, plik `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` jest listą dozwolonych aplikacji, które wymagają wyjątku TCC. Dlatego, jeśli atakujący może **usunąć ochronę SIP** z tego pliku i dodać swoją **własną aplikację**, aplikacja będzie mogła obejść TCC.\
Na przykład, aby dodać terminal: Na przykład, aby dodać terminal:
```bash ```bash
# Get needed info # Get needed info
@ -557,7 +557,7 @@ AllowApplicationsList.plist:
### TCC Bypassy ### TCC Bypassy
{{#ref}} {{#ref}}
macos-tcc-bypasses/ macos-tcc-bypassy/
{{#endref}} {{#endref}}
## Odniesienia ## Odniesienia