diff --git a/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md b/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md index 4e0e90e44..7cff06abe 100644 --- a/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md +++ b/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md @@ -6,13 +6,13 @@ **TCC (Transparency, Consent, and Control)** एक सुरक्षा प्रोटोकॉल है जो एप्लिकेशन अनुमतियों को नियंत्रित करने पर केंद्रित है। इसकी प्राथमिक भूमिका संवेदनशील सुविधाओं जैसे **स्थान सेवाएँ, संपर्क, फ़ोटो, माइक्रोफ़ोन, कैमरा, पहुँच, और पूर्ण डिस्क एक्सेस** की सुरक्षा करना है। TCC उपयोगकर्ता की स्पष्ट सहमति को अनिवार्य करके इन तत्वों तक ऐप की पहुँच प्रदान करता है, जिससे गोपनीयता और उपयोगकर्ता के डेटा पर नियंत्रण बढ़ता है। -उपयोगकर्ता TCC का सामना तब करते हैं जब एप्लिकेशन संरक्षित सुविधाओं तक पहुँच का अनुरोध करते हैं। यह एक प्रॉम्प्ट के माध्यम से दिखाई देता है जो उपयोगकर्ताओं को **पहुँच को स्वीकृत या अस्वीकृत** करने की अनुमति देता है। इसके अलावा, TCC सीधे उपयोगकर्ता क्रियाओं को समायोजित करता है, जैसे कि **फाइलों को एक एप्लिकेशन में खींचना और छोड़ना**, ताकि विशिष्ट फ़ाइलों तक पहुँच प्रदान की जा सके, यह सुनिश्चित करते हुए कि एप्लिकेशन केवल वही एक्सेस प्राप्त करें जो स्पष्ट रूप से अनुमत है। +उपयोगकर्ता TCC का सामना तब करते हैं जब एप्लिकेशन संरक्षित सुविधाओं तक पहुँच का अनुरोध करते हैं। यह एक प्रॉम्प्ट के माध्यम से दिखाई देता है जो उपयोगकर्ताओं को **पहुँच को स्वीकृत या अस्वीकृत** करने की अनुमति देता है। इसके अलावा, TCC सीधे उपयोगकर्ता क्रियाओं को समायोजित करता है, जैसे कि **फाइलों को एक एप्लिकेशन में खींचना और छोड़ना**, ताकि विशिष्ट फ़ाइलों तक पहुँच प्रदान की जा सके, यह सुनिश्चित करते हुए कि एप्लिकेशन केवल वही एक्सेस करें जो स्पष्ट रूप से अनुमत है। ![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 डेटाबेस में लिखने की अनुमति होगी। +> हालाँकि, याद रखें कि इन उच्च विशेषाधिकार वाली प्रक्रिया (जैसे **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 -TCC **database** एप्लिकेशन का **Bundle ID** स्टोर करता है, लेकिन यह **signature** के बारे में **जानकारी** भी **स्टोर** करता है ताकि यह **सुनिश्चित** किया जा सके कि अनुमति का उपयोग करने के लिए ऐप सही है। +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. ```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,9 +222,9 @@ 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) की जांच कर सकते हैं। +कुछ TCC अनुमतियाँ हैं: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCServicePhotos... सभी को परिभाषित करने वाली कोई सार्वजनिक सूची नहीं है, लेकिन आप इस [**ज्ञात की सूची**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service) की जांच कर सकते हैं। ### संवेदनशील असुरक्षित स्थान @@ -264,7 +264,7 @@ uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3
-TCC में डालने का उदाहरण +TCC में डालें उदाहरण ```sql INSERT INTO access ( service, @@ -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`** अनुमति की आवश्यकता होगी। @@ -400,7 +400,7 @@ EOD ### स्वचालन (SE) कुछ TCC के लिए -**सिस्टम इवेंट्स फ़ोल्डर क्रियाएँ बना सकते हैं, और फ़ोल्डर क्रियाएँ कुछ TCC फ़ोल्डरों (डेस्कटॉप, दस्तावेज़ और डाउनलोड) तक पहुँच सकती हैं**, इसलिए निम्नलिखित स्क्रिप्ट का उपयोग इस व्यवहार का दुरुपयोग करने के लिए किया जा सकता है: +**सिस्टम इवेंट्स फ़ोल्डर क्रियाएँ बना सकते हैं, और फ़ोल्डर क्रियाएँ कुछ TCC फ़ोल्डरों तक पहुँच सकती हैं** (डेस्कटॉप, दस्तावेज़ और डाउनलोड), इसलिए निम्नलिखित स्क्रिप्ट का उपयोग इस व्यवहार का दुरुपयोग करने के लिए किया जा सकता है: ```bash # Create script to execute with the action cat > "/tmp/script.js" <