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
dcc5dc06b8
commit
17e8df339a
@ -4,11 +4,11 @@
|
||||
|
||||
## **Basiese Inligting**
|
||||
|
||||
**TCC (Deursigtigheid, Toestemming, en Beheer)** is 'n sekuriteitsprotokol wat fokus op die regulering van toepassings se toestemmings. Sy primêre rol is om sensitiewe funksies soos **liggingsdienste, kontakte, foto's, mikrofoon, kamera, toeganklikheid, en volle skyftoegang** te beskerm. Deur eksplisiete gebruikers toestemming te vereis voordat toegang aan toepassings tot hierdie elemente gegee word, verbeter TCC privaatheid en gebruikersbeheer oor hul data.
|
||||
**TCC (Deursigtigheid, Toestemming, en Beheer)** is 'n sekuriteitsprotokol wat fokus op die regulering van toepassings se toestemmings. Sy primêre rol is om sensitiewe funksies soos **liggingsdienste, kontakte, foto's, mikrofoon, kamera, toeganklikheid, en volle skyf toegang** te beskerm. Deur eksplisiete gebruikers toestemming te vereis voordat app toegang tot hierdie elemente gegee word, verbeter TCC privaatheid en gebruikersbeheer oor hul data.
|
||||
|
||||
Gebruikers teëkom TCC wanneer toepassings toegang tot beskermde funksies versoek. Dit is sigbaar deur 'n prompt wat gebruikers toelaat om **toegang goed te keur of te weier**. Verder akkommodeer TCC direkte gebruikers aksies, soos **slepen en laat val van lêers in 'n toepassing**, om toegang tot spesifieke lêers te verleen, wat verseker dat toepassings slegs toegang het tot wat eksplisiet toegelaat word.
|
||||
|
||||

|
||||

|
||||
|
||||
**TCC** word hanteer deur die **daemon** geleë in `/System/Library/PrivateFrameworks/TCC.framework/Support/tccd` en geconfigureer in `/System/Library/LaunchDaemons/com.apple.tccd.system.plist` (wat die mach diens `com.apple.tccd.system` registreer).
|
||||
|
||||
@ -29,14 +29,14 @@ Die toestemmings/ontkennings word dan in sommige TCC-databasisse gestoor:
|
||||
- Die stelselswye databasis in **`/Library/Application Support/com.apple.TCC/TCC.db`**.
|
||||
- Hierdie databasis is **SIP beskerm**, so slegs 'n SIP omseiling kan daarin skryf.
|
||||
- Die gebruiker TCC databasis **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** vir per-gebruiker voorkeure.
|
||||
- Hierdie databasis is beskerm, so slegs prosesse met hoë TCC voorregte soos Volledige Skyf Toegang kan daarin skryf (maar dit is nie deur SIP beskerm nie).
|
||||
- Hierdie databasis is beskerm, so slegs prosesse met hoë TCC bevoegdhede soos Volledige Skyf Toegang kan daarin skryf (maar dit is nie deur SIP beskerm nie).
|
||||
|
||||
> [!WARNING]
|
||||
> Die vorige databasisse is ook **TCC beskerm vir lees toegang**. So jy **sal nie in staat wees om te lees** jou gewone gebruiker TCC databasis tensy dit van 'n TCC voorregte proses is.
|
||||
> Die vorige databasisse is ook **TCC beskerm vir lees toegang**. So jy **sal nie in staat wees om te lees** jou gewone gebruiker TCC databasis tensy dit van 'n TCC bevoegde proses is.
|
||||
>
|
||||
> Onthou egter dat 'n proses met hierdie hoë voorregte (soos **FDA** of **`kTCCServiceEndpointSecurityClient`**) in staat sal wees om in die gebruikers TCC databasis te skryf.
|
||||
> Onthou egter dat 'n proses met hierdie hoë bevoegdhede (soos **FDA** of **`kTCCServiceEndpointSecurityClient`**) in staat sal wees om in die gebruikers TCC databasis te skryf.
|
||||
|
||||
- Daar is 'n **derde** TCC databasis in **`/var/db/locationd/clients.plist`** om kliënte aan te dui wat toegelaat word om **toegang tot ligging dienste** te hê.
|
||||
- Daar is 'n **derde** TCC databasis in **`/var/db/locationd/clients.plist`** om kliënte aan te dui wat toegelaat word om **toegang tot liggingdienste** te hê.
|
||||
- Die SIP beskermde lêer **`/Users/carlospolop/Downloads/REG.db`** (ook beskerm teen lees toegang met TCC), bevat die **ligging** van al die **geldige TCC databasisse**.
|
||||
- Die SIP beskermde lêer **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (ook beskerm teen lees toegang met TCC), bevat meer TCC toegewyde toestemmings.
|
||||
- Die SIP beskermde lêer **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (maar leesbaar deur enige iemand) is 'n toelaat lys van toepassings wat 'n TCC uitsondering vereis.
|
||||
@ -199,16 +199,16 @@ 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]
|
||||
> Daarom sal ander toepassings wat dieselfde naam en bundel-ID gebruik nie in staat wees om toegang te verkry tot die toestemmings wat aan ander toepassings gegee is nie.
|
||||
> Daarom sal ander toepassings wat dieselfde naam en bundel-ID gebruik nie toegang hê tot die toegestane regte wat aan ander toepassings gegee is nie.
|
||||
|
||||
### Regte & TCC Toestemmings
|
||||
|
||||
Toepassings **hoef nie net** te **versoek** en het **toegang gegee** tot sommige hulpbronne nie, hulle moet ook **die relevante regte hê**.\
|
||||
Byvoorbeeld **Telegram** het die reg `com.apple.security.device.camera` om **toegang tot die kamera** te versoek. 'n **toepassing** wat **nie** hierdie **reg het nie, sal nie in staat wees** om toegang tot die kamera te verkry (en die gebruiker sal selfs nie vir die toestemmings gevra word nie).
|
||||
Toepassings **moet nie net** **aansoek doen** en **toegang** tot sommige hulpbronne **gekry het** nie, hulle moet ook **die relevante regte hê**.\
|
||||
Byvoorbeeld, **Telegram** het die reg `com.apple.security.device.camera` om **toegang tot die kamera** aan te vra. 'n **toepassing** wat **nie** hierdie **reg het nie, sal nie in staat wees** om toegang tot die kamera te verkry (en die gebruiker sal selfs nie vir die toestemmings gevra word nie).
|
||||
|
||||
Echter, om toegang tot **sekere gebruikersmappies** te **verkry**, soos `~/Desktop`, `~/Downloads` en `~/Documents`, hoef hulle **nie** enige spesifieke **regte te hê nie.** Die stelsel sal toegang deursigtig hanteer en **die gebruiker** soos nodig vra.
|
||||
However, vir toepassings om **toegang** tot **sekere gebruikersmappies** te hê, soos `~/Desktop`, `~/Downloads` en `~/Documents`, hoef hulle **nie** enige spesifieke **regte te hê nie.** Die stelsel sal toegang deursigtig hanteer en die **gebruiker** soos nodig **vra**.
|
||||
|
||||
Apple se toepassings **sal nie pop-ups genereer** nie. Hulle bevat **vooraf-gegewe regte** in hul **regte** lys, wat beteken hulle sal **nooit 'n pop-up genereer**, **nog** sal hulle in enige van die **TCC databasisse** verskyn. Byvoorbeeld:
|
||||
Apple se toepassings **sal nie pop-ups genereer** nie. Hulle bevat **vooraf-toegepaste regte** in hul **regte** lys, wat beteken hulle sal **nooit 'n pop-up genereer** nie, **ook** sal hulle nie in enige van die **TCC databasisse** verskyn nie. Byvoorbeeld:
|
||||
```bash
|
||||
codesign -dv --entitlements :- /System/Applications/Calendar.app
|
||||
[...]
|
||||
@ -234,7 +234,7 @@ Sommige TCC-toestemmings is: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCSe
|
||||
|
||||
### Gebruiker se Intent / com.apple.macl
|
||||
|
||||
Soos vroeër genoem, is dit moontlik om **toegang aan 'n App tot 'n lêer te verleen deur dit te sleep en te laat val**. Hierdie toegang sal nie in enige TCC-databasis gespesifiseer word nie, maar as 'n **verlengde** **attribuut van die lêer**. Hierdie attribuut sal die **UUID** van die toegelate app **stoor**:
|
||||
Soos vroeër genoem, is dit moontlik om **toegang tot 'n lêer aan 'n App te verleen deur dit te sleep en te laat val**. Hierdie toegang sal nie in enige TCC-databasis gespesifiseer word nie, maar as 'n **verlengde** **attribuut van die lêer**. Hierdie attribuut sal die **UUID** van die toegelate app **stoor**:
|
||||
```bash
|
||||
xattr Desktop/private.txt
|
||||
com.apple.macl
|
||||
@ -308,7 +308,7 @@ strftime('%s', 'now') -- last_reminded with default current timestamp
|
||||
|
||||
### TCC Payloads
|
||||
|
||||
As jy daarin geslaag het om in 'n app met sommige TCC-toestemmings te kom, kyk die volgende bladsy met TCC payloads om dit te misbruik:
|
||||
As jy daarin geslaag het om in 'n app met 'n paar TCC-toestemmings te kom, kyk na die volgende bladsy met TCC payloads om dit te misbruik:
|
||||
|
||||
{{#ref}}
|
||||
macos-tcc-payloads.md
|
||||
@ -370,7 +370,7 @@ Dit is die TCC-prompt om outomatiseringsprivileges oor Finder te verkry:
|
||||
<figure><img src="../../../../images/image (27).png" alt="" width="244"><figcaption></figcaption></figure>
|
||||
|
||||
> [!CAUTION]
|
||||
> Let daarop dat omdat die **Automator** app die TCC-toestemming **`kTCCServiceAppleEvents`** het, dit **enige app kan beheer**, soos Finder. So, as jy die toestemming het om Automator te beheer, kan jy ook die **Finder** met 'n kode soos die een hieronder beheer:
|
||||
> Let daarop dat omdat die **Automator** app die TCC toestemming **`kTCCServiceAppleEvents`** het, dit **enige app kan beheer**, soos Finder. So deur die toestemming om Automator te beheer, kan jy ook die **Finder** met 'n kode soos die hieronder beheer:
|
||||
|
||||
<details>
|
||||
|
||||
@ -444,7 +444,7 @@ rm "$HOME/Desktop/file"
|
||||
```
|
||||
### Outomatisering (SE) + Toeganklikheid (**`kTCCServicePostEvent`|**`kTCCServiceAccessibility`**)** na FDA\*
|
||||
|
||||
Outomatisering op **`System Events`** + Toeganklikheid (**`kTCCServicePostEvent`**) maak dit moontlik om **toetsdrukke na prosesse** te stuur. Op hierdie manier kan jy Finder misbruik om die gebruikers se TCC.db te verander of om FDA aan 'n arbitrêre app te gee (alhoewel 'n wagwoord dalk hiervoor gevra kan word).
|
||||
Outomatisering op **`System Events`** + Toeganklikheid (**`kTCCServicePostEvent`**) maak dit moontlik om **toetsdrukke na prosesse** te stuur. Op hierdie manier kan jy Finder misbruik om die gebruikers se TCC.db te verander of om FDA aan 'n arbitrêre app te gee (alhoewel 'n wagwoord dalk gevra kan word hiervoor).
|
||||
|
||||
Finder wat gebruikers se TCC.db oorskryf voorbeeld:
|
||||
```applescript
|
||||
@ -494,7 +494,7 @@ EOF
|
||||
```
|
||||
### `kTCCServiceAccessibility` na FDA\*
|
||||
|
||||
Kyk hierdie bladsy vir [**payloads om die Toeganklikheid toestemmings te misbruik**](macos-tcc-payloads.md#accessibility) om privesc na FDA\* of om 'n keylogger te loop byvoorbeeld.
|
||||
Kyk hierdie bladsy vir sommige [**payloads om die Toeganklikheid toestemmings te misbruik**](macos-tcc-payloads.md#accessibility) om privesc na FDA\* of om 'n keylogger te loop byvoorbeeld.
|
||||
|
||||
### **Eindpunt Sekuriteit Kliënt na FDA**
|
||||
|
||||
@ -514,18 +514,18 @@ Maar jy kan vir jouself **`Outomatisering regte na Finder`** gee, en die vorige
|
||||
|
||||
**Volledige Skyf Toegang** is TCC se naam is **`kTCCServiceSystemPolicyAllFiles`**
|
||||
|
||||
Ek dink nie dit is 'n werklike privesc nie, maar net ingeval jy dit nuttig vind: As jy 'n program met FDA beheer kan jy **die gebruikers TCC databasis verander en vir jouself enige toegang gee**. Dit kan nuttig wees as 'n volhardingstegniek ingeval jy jou FDA toestemmings mag verloor.
|
||||
Ek dink nie dit is 'n werklike privesc nie, maar net ingeval jy dit nuttig vind: As jy 'n program met FDA beheer, kan jy **die gebruikers TCC databasis wysig en vir jouself enige toegang gee**. Dit kan nuttig wees as 'n volhardingstegniek ingeval jy jou FDA toestemmings mag verloor.
|
||||
|
||||
### **SIP Omseiling na TCC Omseiling**
|
||||
|
||||
Die stelsel **TCC databasis** is beskerm deur **SIP**, daarom kan slegs prosesse met die **aangegewe regte dit verander**. Daarom, as 'n aanvaller 'n **SIP omseiling** oor 'n **lêer** vind (in staat om 'n lêer wat deur SIP beperk is te verander), sal hy in staat wees om:
|
||||
Die stelsel **TCC databasis** is beskerm deur **SIP**, daarom kan slegs prosesse met die **aangegewe regte dit wysig**. Daarom, as 'n aanvaller 'n **SIP omseiling** oor 'n **lêer** vind (in staat om 'n lêer wat deur SIP beperk is te wysig), sal hy in staat wees om:
|
||||
|
||||
- **Die beskerming** van 'n TCC databasis te verwyder, en vir homself al die TCC toestemmings te gee. Hy kan enige van hierdie lêers misbruik byvoorbeeld:
|
||||
- Die TCC stelseldatabasis
|
||||
- REG.db
|
||||
- MDMOverrides.plist
|
||||
|
||||
Daar is egter 'n ander opsie om hierdie **SIP omseiling te misbruik om TCC te omseil**, die lêer `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` is 'n toelaatlys van toepassings wat 'n TCC uitsondering vereis. Daarom, as 'n aanvaller **die SIP beskerming** van hierdie lêer kan verwyder en sy **eie toepassing** kan byvoeg, sal die toepassing in staat wees om TCC te omseil.\
|
||||
Daar is egter 'n ander opsie om hierdie **SIP omseiling te misbruik om TCC te omseil**, die lêer `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` is 'n toelaatlys van toepassings wat 'n TCC uitsondering vereis. Daarom, as 'n aanvaller die **SIP beskerming** van hierdie lêer kan **verwyder** en sy **eie toepassing** kan byvoeg, sal die toepassing in staat wees om TCC te omseil.\
|
||||
Byvoorbeeld om terminal toe te voeg:
|
||||
```bash
|
||||
# Get needed info
|
||||
|
Loading…
x
Reference in New Issue
Block a user