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
550e58e70d
commit
e18c60de53
@ -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 @@
|
||||
|
||||
## **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.
|
||||
|
||||

|
||||
|
||||
**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`.
|
||||
|
||||
@ -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:
|
||||
|
||||
- Baza danych systemowa 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ć.
|
||||
- Baza danych TCC użytkownika **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** dla preferencji per użytkownik.
|
||||
- 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).
|
||||
- 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 wprowadzać do niej zmiany.
|
||||
- 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ą wprowadzać do niej zmiany (ale nie jest chroniona przez SIP).
|
||||
|
||||
> [!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/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.
|
||||
@ -102,10 +102,10 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
|
||||
{{#endtabs}}
|
||||
|
||||
> [!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
|
||||
- **`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)
|
||||
|
||||
<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"
|
||||
```
|
||||
> [!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
|
||||
|
||||
Aplikacje **nie tylko muszą** **żądać** 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ń).
|
||||
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 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:
|
||||
```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.
|
||||
|
||||
> [!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).
|
||||
|
||||
@ -322,7 +322,7 @@ Dowiedz się o Apple Events w:
|
||||
macos-apple-events.md
|
||||
{{#endref}}
|
||||
|
||||
### Automatyzacja (Finder) do FDA\*
|
||||
### Automation (Finder) do FDA\*
|
||||
|
||||
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).
|
||||
@ -444,9 +444,9 @@ rm "$HOME/Desktop/file"
|
||||
```
|
||||
### 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
|
||||
-- store the TCC.db file to copy in /tmp
|
||||
osascript <<EOF
|
||||
@ -494,7 +494,7 @@ EOF
|
||||
```
|
||||
### `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**
|
||||
|
||||
@ -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**
|
||||
|
||||
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
|
||||
- REG.db
|
||||
- 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:
|
||||
```bash
|
||||
# Get needed info
|
||||
@ -557,7 +557,7 @@ AllowApplicationsList.plist:
|
||||
### TCC Bypassy
|
||||
|
||||
{{#ref}}
|
||||
macos-tcc-bypasses/
|
||||
macos-tcc-bypassy/
|
||||
{{#endref}}
|
||||
|
||||
## Odniesienia
|
||||
|
Loading…
x
Reference in New Issue
Block a user