From d0ae215c47862ecee684276f0a32cd418cc20232 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 7 Apr 2025 02:34:59 +0000 Subject: [PATCH] Translated ['src/macos-hardening/macos-security-and-privilege-escalation --- src/SUMMARY.md | 1 - .../macos-tcc/README.md | 62 +++++++++---------- 2 files changed, 31 insertions(+), 32 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index cac3fa3dc..5835e6c1e 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -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$$]() 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 43fff546a..4e0e90e44 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 @@ -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 डेटाबेस पर लिखने की पहुंच प्राप्त कर लेते हैं, तो आप निम्नलिखित का उपयोग करके एक प्रविष्टि जोड़ सकते हैं (टिप्पणियाँ हटा दें):
@@ -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 ```
-**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" <