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

This commit is contained in:
Translator 2025-04-07 02:34:59 +00:00
parent 9d8096009b
commit d0ae215c47
2 changed files with 31 additions and 32 deletions

View File

@ -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$$]()

View File

@ -4,15 +4,15 @@
## **बुनियादी जानकारी**
**TCC (Transparency, Consent, and Control)** एक सुरक्षा प्रोटोकॉल है जो एप्लिकेशन अनुमतियों को विनियमित करने पर केंद्रित है। इसकी प्राथमिक भूमिका संवेदनशील सुविधाओं जैसे **स्थान सेवाएँ, संपर्क, फ़ोटो, माइक्रोफ़ोन, कैमरा, पहुँच, और पूर्ण डिस्क एक्सेस** की सुरक्षा करना है। TCC उपयोगकर्ताओं की स्पष्ट सहमति को अनिवार्य करके इन तत्वों तक ऐप एक्सेस प्रदान करने से पहले, गोपनीयता और उपयोगकर्ता के डेटा पर नियंत्रण को बढ़ता है।
**TCC (Transparency, Consent, and Control)** एक सुरक्षा प्रोटोकॉल है जो एप्लिकेशन अनुमतियों को नियंत्रित करने पर केंद्रित है। इसकी प्राथमिक भूमिका संवेदनशील सुविधाओं जैसे **स्थान सेवाएँ, संपर्क, फ़ोटो, माइक्रोफ़ोन, कैमरा, पहुँच, और पूर्ण डिस्क एक्सेस** की सुरक्षा करना है। TCC उपयोगकर्ता की स्पष्ट सहमति को अनिवार्य करके इन तत्वों तक ऐप की पहुँच प्रदान करता है, जिससे गोपनीयता और उपयोगकर्ता के डेटा पर नियंत्रण बढ़ता है।
उपयोगकर्ता TCC का सामना तब करते हैं जब एप्लिकेशन संरक्षित सुविधाओं तक पहुँच का अनुरोध करते हैं। यह एक प्रॉम्प्ट के माध्यम से दिखाई देता है जो उपयोगकर्ताओं को **एक्सेस को स्वीकृत या अस्वीकृत** करने की अनुमति देता है। इसके अलावा, TCC सीधे उपयोगकर्ता क्रियाओं को समायोजित करता है, जैसे कि **फाइलों को एक एप्लिकेशन में खींचना और छोड़ना**, ताकि विशिष्ट फ़ाइलों तक पहुँच प्रदान की जा सके, यह सुनिश्चित करते हुए कि एप्लिकेशन केवल वही एक्सेस प्राप्त करें जो स्पष्ट रूप से अनुमत है।
उपयोगकर्ता TCC का सामना तब करते हैं जब एप्लिकेशन संरक्षित सुविधाओं तक पहुँच का अनुरोध करते हैं। यह एक प्रॉम्प्ट के माध्यम से दिखाई देता है जो उपयोगकर्ताओं को **पहुँच को स्वीकृत या अस्वीकृत** करने की अनुमति देता है। इसके अलावा, TCC सीधे उपयोगकर्ता क्रियाओं को समायोजित करता है, जैसे कि **फाइलों को एक एप्लिकेशन में खींचना और छोड़ना**, ताकि विशिष्ट फ़ाइलों तक पहुँच प्रदान की जा सके, यह सुनिश्चित करते हुए कि एप्लिकेशन केवल वही एक्सेस प्राप्त करें जो स्पष्ट रूप से अनुमत है।
![TCC प्रॉम्प्ट का एक उदाहरण](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855)
![An example of a TCC prompt](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855)
**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** प्रत्येक लॉग इन उपयोगकर्ता के लिए चल रहा है ज `/System/Library/LaunchAgents/com.apple.tccd.plist` में परिभाषित है, जो mach सेवाओं `com.apple.tccd` और `com.apple.usernotifications.delegate.com.apple.tccd` को पंजीकृत करता है।
यहाँ आप tccd को सिस्टम और उपयोगकर्ता के रूप में चलते हुए देख सकते हैं:
```bash
@ -32,13 +32,13 @@ ps -ef | grep tcc
- यह डेटाबेस संरक्षित है इसलिए केवल उच्च TCC विशेषाधिकार वाले प्रक्रियाएँ जैसे कि पूर्ण डिस्क एक्सेस इसमें लिख सकती हैं (लेकिन यह SIP द्वारा संरक्षित नहीं है)।
> [!WARNING]
> पिछले डेटाबेस भी **पढ़ने के लिए TCC संरक्षित** हैं। इसलिए आप **अपनी नियमित उपयोगकर्ता TCC डेटाबेस नहीं पढ़ पाएंगे** जब तक कि यह किसी TCC विशेषाधिकार प्राप्त प्रक्रिया से न हो।
> पिछले डेटाबेस भी **पढ़ने के लिए 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 संरक्षित फ़ाइल **`/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]
@ -102,7 +102,7 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
{{#endtabs}}
> [!TIP]
> दोनों डेटाबेस की जांच करके आप यह देख सकते हैं कि किसी ऐप को कौन-से अनुमतियाँ दी गई हैं, कौन-सी मना की गई हैं, या कौन-सी नहीं हैं (यह इसके लिए पूछेगा)।
> दोनों डेटाबेस की जांच करके आप देख सकते हैं कि किसी ऐप को कौन सी अनुमतियाँ दी गई हैं, कौन सी मना की गई हैं, या कौन सी नहीं हैं (यह इसके लिए पूछेगा)।
- **`service`** TCC **अनुमति** का स्ट्रिंग प्रतिनिधित्व है
- **`client`** **बंडल ID** या **बाइनरी का पथ** है जिसमें अनुमतियाँ हैं
@ -153,7 +153,7 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
- **`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 अनुमतियाँ दी जाएँ:
- **csreq** फ़ील्ड यह संकेत करने के लिए है कि बाइनरी को कैसे सत्यापित किया जाए और TCC अनुमतियाँ दी जाएँ:
```bash
# Query to get cserq in printable hex
select service, client, hex(csreq) from access where auth_value=2;
@ -186,7 +186,7 @@ tccutil reset All
```
### TCC Signature Checks
The TCC **database** stores the **Bundle ID** of the application, but it also **stores** **जानकारी** about the **signature** to **सुनिश्चित करें** the App asking to use the a permission is the correct one.
TCC **database** एप्लिकेशन का **Bundle ID** स्टोर करता है, लेकिन यह **signature** के बारे में **जानकारी** भी **स्टोर** करता है ताकि यह **सुनिश्चित** किया जा सके कि अनुमति का उपयोग करने के लिए ऐप सही है।
```bash
# From sqlite
sqlite> select service, client, hex(csreq) from access where auth_value=2;
@ -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]
> इसलिए, अन्य एप्लिकेशन जो समान नाम और बंडल आईडी का उपयोग करते हैं, उन्हें अन्य ऐप्स को दिए गए अनुमतियों तक पहुंचने में असमर्थ होंगे
> इसलिए, समान नाम और बंडल आईडी वाले अन्य अनुप्रयोगों को अन्य ऐप्स को दिए गए अनुमतियों तक पहुंच प्राप्त नहीं होगी
### अधिकार और TCC अनुमतियाँ
ऐप्स **केवल आवश्यकता नहीं है** कि वे **अनुरोध करें** और कुछ संसाधनों तक **पहुँच प्राप्त करें**, उन्हें **संबंधित अधिकार भी होने चाहिए।**\
उदाहरण के लिए, **Telegram** के पास **कैमरे तक पहुँच** के लिए `com.apple.security.device.camera` का अधिकार है। एक **ऐप** जो **इस अधिकार** के बिना है, वह कैमरे तक **पहुँच नहीं प्राप्त कर सकेगा** (और उपयोगकर्ता से अनुमतियों के लिए भी नहीं पूछा जाएगा)।
उदाहरण के लिए, **Telegram** के पास **कैमरे तक पहुँच** के लिए `com.apple.security.device.camera` का अधिकार है। एक **ऐप** जो **इस अधिकार** के बिना है, वह कैमरे तक पहुँच **नहीं प्राप्त कर सकेगा** (और उपयोगकर्ता से अनुमतियों के लिए भी नहीं पूछा जाएगा)।
हालांकि, ऐप्स को **कुछ उपयोगकर्ता फ़ोल्डरों** जैसे `~/Desktop`, `~/Downloads` और `~/Documents` तक **पहुँच** के लिए किसी विशेष **अधिकार** की आवश्यकता नहीं है। सिस्टम स्वचालित रूप से पहुँच को संभालेगा और **उपयोगकर्ता को** आवश्यकतानुसार **प्रॉम्प्ट करेगा**
हालांकि, ऐप्स को **कुछ उपयोगकर्ता फ़ोल्डरों** जैसे `~/Desktop`, `~/Downloads` और `~/Documents` तक **पहुँच** प्राप्त करने के लिए किसी विशेष **अधिकार** की आवश्यकता **नहीं है।** सिस्टम स्वचालित रूप से पहुँच को संभालेगा और **उपयोगकर्ता को** आवश्यकतानुसार **प्रॉम्प्ट करेगा**
Apple के ऐप्स **प्रॉम्प्ट नहीं बनाएंगे** उनके **अधिकार** सूची में **पूर्व-प्रदान किए गए अधिकार** होते हैं, जिसका अर्थ है कि वे **कभी भी पॉपअप नहीं बनाएंगे**, **न ही** वे किसी भी **TCC डेटाबेस** में दिखाई देंगे। उदाहरण के लिए:
Apple के ऐप्स **प्रॉम्प्ट नहीं बनाएंगे** उनके **अधिकार** सूची में **पूर्व-प्रदान किए गए अधिकार** होते हैं, जिसका अर्थ है कि वे **कभी भी पॉपअप नहीं बनाएंगे**, **न ही** वे किसी भी **TCC डेटाबेस** में दिखाई देंगे। उदाहरण के लिए:
```bash
codesign -dv --entitlements :- /System/Applications/Calendar.app
[...]
@ -222,7 +222,7 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app
यह कैलेंडर को उपयोगकर्ता से अनुस्मारक, कैलेंडर और पते की पुस्तक तक पहुँचने के लिए पूछने से रोकेगा।
> [!TIP]
> अधिकारों के बारे में कुछ आधिकारिक दस्तावेज़ों के अलावा, **अनौपचारिक रूप से दिलचस्प जानकारी अधिकारों के बारे में** [**https://newosxbook.com/ent.jl**](https://newosxbook.com/ent.jl) पाई जा सकती है।
> अधिकारों के बारे में कुछ आधिकारिक दस्तावेज़ों के अलावा, **अनौपचारिक रूप से दिलचस्प जानकारी अधिकारों के बारे में** [**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) की जांच कर सकते हैं।
@ -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
@ -252,15 +252,15 @@ uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3
> [!NOTE]
> यह दिलचस्प है कि **`com.apple.macl`** विशेषता **Sandbox** द्वारा प्रबंधित की जाती है, न कि tccd द्वारा।
>
> यह भी ध्यान दें कि यदि आप एक फ़ाइल को अपने कंप्यूटर में एक ऐप के UUID के साथ किसी अन्य कंप्यूटर में ले जाते हैं, तो चूंकि उसी ऐप के अलग-अलग UIDs होंगे, यह उस ऐप को एक्सेस नहीं देगा।
> यह भी ध्यान दें कि यदि आप एक फ़ाइल को अपने कंप्यूटर में एक ऐप के 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>
@ -308,7 +308,7 @@ strftime('%s', 'now') -- last_reminded with default current timestamp
### TCC Payloads
यदि आप किसी ऐप के अंदर कुछ TCC अनुमतियों के साथ पहुँचने में सफल हो गए हैं, तो उन्हें दुरुपयोग करने के लिए TCC पेलोड्स के साथ निम्नलिखित पृष्ठ देखें:
यदि आप किसी ऐप में कुछ TCC अनुमतियों के साथ अंदर जाने में सफल रहे हैं, तो उनका दुरुपयोग करने के लिए TCC पेलोड्स के साथ निम्नलिखित पृष्ठ की जांच करें:
{{#ref}}
macos-tcc-payloads.md
@ -325,7 +325,7 @@ macos-apple-events.md
### Automation (Finder) to FDA\*
Automation अनुमति का TCC नाम है: **`kTCCServiceAppleEvents`**\
यह विशेष TCC अनुमति यह भी इंगित करती है कि **कौन सा एप्लिकेशन प्रबंधित किया जा सकता है** TCC डेटाबेस के अंदर (इसलिए अनुमतियाँ केवल सब कुछ प्रबंधित करने की अनुमति नहीं देती हैं)।
यह विशेष TCC अनुमति यह भी इंगित करती है कि **कौन सा एप्लिकेशन** TCC डेटाबेस के अंदर प्रबंधित किया जा सकता है (इसलिए अनुमतियाँ केवल सब कुछ प्रबंधित करने की अनुमति नहीं देती हैं)।
**Finder** एक एप्लिकेशन है जो **हमेशा FDA** रखता है (भले ही यह UI में न दिखाई दे), इसलिए यदि आपके पास इसके ऊपर **Automation** विशेषाधिकार हैं, तो आप इसके विशेषाधिकारों का दुरुपयोग करके **कुछ क्रियाएँ करवा सकते हैं**।\
इस मामले में आपके ऐप को **`com.apple.Finder`** पर **`kTCCServiceAppleEvents`** अनुमति की आवश्यकता होगी।
@ -396,11 +396,11 @@ EOD
```
</details>
**Script Editor ऐप के साथ भी यही होता है, यह Finder को नियंत्रित कर सकता है, लेकिन AppleScript का उपयोग करके आप इसे स्क्रिप्ट निष्पादित करने के लिए मजबूर नहीं कर सकते।**
**स्क्रिप्ट संपादक ऐप** के साथ भी यही होता है, यह फ़ाइंडर को नियंत्रित कर सकता है, लेकिन एक AppleScript का उपयोग करके आप इसे एक स्क्रिप्ट निष्पादित करने के लिए मजबूर नहीं कर सकते।
### Automation (SE) to some TCC
### स्वचालन (SE) कुछ TCC के लिए
**System Events फ़ोल्डर क्रियाएँ बना सकते हैं, और फ़ोल्डर क्रियाएँ कुछ TCC फ़ोल्डरों (Desktop, Documents & Downloads) तक पहुँच सकती हैं, इसलिए निम्नलिखित स्क्रिप्ट का उपयोग इस व्यवहार का दुरुपयोग करने के लिए किया जा सकता है:**
**सिस्टम इवेंट्स फ़ोल्डर क्रियाएँ बना सकते हैं, और फ़ोल्डर क्रियाएँ कुछ TCC फ़ोल्डरों (डेस्कटॉप, दस्तावेज़ और डाउनलोड) तक पहुँच सकती हैं**, इसलिए निम्नलिखित स्क्रिप्ट का उपयोग इस व्यवहार का दुरुपयोग करने के लिए किया जा सकता है:
```bash
# Create script to execute with the action
cat > "/tmp/script.js" <<EOD
@ -444,7 +444,7 @@ rm "$HOME/Desktop/file"
```
### Automation (SE) + Accessibility (**`kTCCServicePostEvent`|**`kTCCServiceAccessibility`**)** to FDA\*
**`System Events`** पर ऑटोमेशन + एक्सेसिबिलिटी (**`kTCCServicePostEvent`**) प्रक्रियाओं को **कीस्ट्रोक भेजने** की अनुमति देता है। इस तरह आप फ़ाइंडर का दुरुपयोग करके उपयोगकर्ताओं के TCC.db को बदल सकते हैं या किसी मनचाही ऐप को FDA दे सकते हैं (हालांकि इसके लिए पासवर्ड मांगा जा सकता है)।
**`System Events`** पर ऑटोमेशन + एक्सेसिबिलिटी (**`kTCCServicePostEvent`**) **प्रक्रियाओं** को **कीस्ट्रोक्स** भेजने की अनुमति देती है। इस तरह आप फ़ाइंडर का दुरुपयोग करके उपयोगकर्ताओं का TCC.db बदल सकते हैं या किसी मनचाही ऐप को FDA दे सकते हैं (हालांकि इसके लिए पासवर्ड मांगा जा सकता है)।
उपयोगकर्ताओं के TCC.db को ओवरराइट करने का फ़ाइंडर उदाहरण:
```applescript
@ -502,30 +502,30 @@ EOF
### System Policy SysAdmin File to FDA
**`kTCCServiceSystemPolicySysAdminFiles`** एक उपयोगकर्ता के **`NFSHomeDirectory`** विशेषता को **बदलने** की अनुमति देता है, जो उसके होम फ़ोल्डर को बदलता है और इसलिए **TCC को बायपास** करने की अनुमति देता है।
**`kTCCServiceSystemPolicySysAdminFiles`** एक उपयोगकर्ता के **`NFSHomeDirectory`** विशेषता को **बदलने** की अनुमति देता है, जो उसके होम फ़ोल्डर को बदलता है और इसलिए **TCC** को **बायपास** करने की अनुमति देता है।
### User TCC DB to FDA
**User TCC** डेटाबेस पर **लिखने की अनुमतियाँ** प्राप्त करने पर आप **`FDA`** अनुमतियाँ नहीं दे सकते, केवल वही जो सिस्टम डेटाबेस में रहता है वह ऐसा कर सकता है।
**यूजर TCC** डेटाबेस पर **लिखने की अनुमतियाँ** प्राप्त करने पर आप **`FDA`** अनुमतियाँ नहीं दे सकते, केवल वही जो सिस्टम डेटाबेस में रहता है वह ऐसा कर सकता है।
लेकिन आप **`Finder के लिए Automation अधिकार`** दे सकते हैं, और FDA\* तक पहुंच बढ़ाने के लिए पिछले तकनीक का दुरुपयोग कर सकते हैं।
लेकिन आप **`Finder के लिए ऑटोमेशन अधिकार`** दे सकते हैं, और FDA\* तक पहुंच बढ़ाने के लिए पिछले तकनीक का दुरुपयोग कर सकते हैं।
### **FDA to TCC permissions**
**Full Disk Access** का TCC नाम **`kTCCServiceSystemPolicyAllFiles`** है।
**पूर्ण डिस्क एक्सेस** का TCC नाम **`kTCCServiceSystemPolicyAllFiles`** है।
मुझे नहीं लगता कि यह एक वास्तविक प्रिवेस्क है, लेकिन अगर आप इसे उपयोगी पाते हैं: यदि आप FDA के साथ एक प्रोग्राम को नियंत्रित करते हैं, तो आप **उपयोगकर्ताओं के TCC डेटाबेस को संशोधित कर सकते हैं और अपने लिए कोई भी एक्सेस दे सकते हैं**। यह एक स्थायी तकनीक के रूप में उपयोगी हो सकता है यदि आप अपनी FDA अनुमतियाँ खो देते हैं।
### **SIP Bypass to TCC Bypass**
सिस्टम **TCC डेटाबेस** को **SIP** द्वारा सुरक्षित किया गया है, यही कारण है कि केवल उन प्रक्रियाओं के पास **संकेतित अधिकार** होंगे जो इसे संशोधित कर सकें। इसलिए, यदि एक हमलावर एक **SIP बायपास** पाता है जो एक **फाइल** पर है (SIP द्वारा प्रतिबंधित एक फ़ाइल को संशोधित करने में सक्षम होना), तो वह सक्षम होगा:
सिस्टम **TCC डेटाबेस** को **SIP** द्वारा सुरक्षित किया गया है, यही कारण है कि केवल **निर्दिष्ट अधिकारों वाले प्रक्रियाएँ इसे संशोधित करने में सक्षम होंगी**। इसलिए, यदि एक हमलावर एक **SIP बायपास** पाता है जो एक **फाइल** पर है (SIP द्वारा प्रतिबंधित एक फ़ाइल को संशोधित करने में सक्षम होना), तो वह सक्षम होगा:
- **TCC डेटाबेस की सुरक्षा को हटा दें**, और अपने लिए सभी TCC अनुमतियाँ दें। वह उदाहरण के लिए इन फ़ाइलों में से किसी का दुरुपयोग कर सकता है:
- TCC सिस्टम डेटाबेस
- REG.db
- MDMOverrides.plist
हालांकि, इस **SIP बायपास का दुरुपयोग करने का एक और विकल्प है**, फ़ाइल `/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