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
d921da03ad
commit
c63e539cab
@ -4,29 +4,29 @@
|
||||
|
||||
## Gatekeeper
|
||||
|
||||
**Gatekeeper** एक सुरक्षा विशेषता है जो Mac ऑपरेटिंग सिस्टम के लिए विकसित की गई है, जिसका उद्देश्य यह सुनिश्चित करना है कि उपयोगकर्ता अपने सिस्टम पर **केवल विश्वसनीय सॉफ़्टवेयर** चलाएँ। यह **सॉफ़्टवेयर को मान्य करके** कार्य करता है जो उपयोगकर्ता डाउनलोड करता है और **App Store के बाहर के स्रोतों** से खोलने का प्रयास करता है, जैसे कि एक ऐप, एक प्लग-इन, या एक इंस्टॉलर पैकेज।
|
||||
**Gatekeeper** एक सुरक्षा विशेषता है जो Mac ऑपरेटिंग सिस्टम के लिए विकसित की गई है, जिसका उद्देश्य यह सुनिश्चित करना है कि उपयोगकर्ता अपने सिस्टम पर **केवल विश्वसनीय सॉफ़्टवेयर** चलाएँ। यह **सॉफ़्टवेयर को मान्य करने** के द्वारा कार्य करता है जो उपयोगकर्ता डाउनलोड करता है और **App Store के बाहर के स्रोतों** से खोलने का प्रयास करता है, जैसे कि एक ऐप, एक प्लग-इन, या एक इंस्टॉलर पैकेज।
|
||||
|
||||
Gatekeeper का मुख्य तंत्र इसके **सत्यापन** प्रक्रिया में निहित है। यह जांचता है कि क्या डाउनलोड किया गया सॉफ़्टवेयर **एक मान्यता प्राप्त डेवलपर द्वारा हस्ताक्षरित** है, जो सॉफ़्टवेयर की प्रामाणिकता सुनिश्चित करता है। इसके अलावा, यह यह सुनिश्चित करता है कि सॉफ़्टवेयर **Apple द्वारा नोटराइज किया गया है**, यह पुष्टि करते हुए कि यह ज्ञात दुर्भावनापूर्ण सामग्री से मुक्त है और नोटराइजेशन के बाद इसमें छेड़छाड़ नहीं की गई है।
|
||||
Gatekeeper का मुख्य तंत्र इसके **सत्यापन** प्रक्रिया में निहित है। यह जांचता है कि क्या डाउनलोड किया गया सॉफ़्टवेयर **एक मान्यता प्राप्त डेवलपर द्वारा हस्ताक्षरित** है, जो सॉफ़्टवेयर की प्रामाणिकता सुनिश्चित करता है। इसके अलावा, यह यह सुनिश्चित करता है कि सॉफ़्टवेयर **Apple द्वारा नोटराइज्ड** है, यह पुष्टि करते हुए कि यह ज्ञात दुर्भावनापूर्ण सामग्री से मुक्त है और नोटराइजेशन के बाद इसमें छेड़छाड़ नहीं की गई है।
|
||||
|
||||
इसके अतिरिक्त, Gatekeeper उपयोगकर्ता नियंत्रण और सुरक्षा को **पहली बार डाउनलोड किए गए सॉफ़्टवेयर को खोलने के लिए उपयोगकर्ताओं से अनुमोदन प्राप्त करके** मजबूत करता है। यह सुरक्षा उपाय उपयोगकर्ताओं को संभावित हानिकारक निष्पादन योग्य कोड को अनजाने में चलाने से रोकने में मदद करता है जिसे वे एक हानिरहित डेटा फ़ाइल समझ सकते हैं।
|
||||
अतिरिक्त रूप से, Gatekeeper उपयोगकर्ता नियंत्रण और सुरक्षा को **पहली बार डाउनलोड किए गए सॉफ़्टवेयर को खोलने के लिए उपयोगकर्ताओं से अनुमोदन प्राप्त करने** के द्वारा मजबूत करता है। यह सुरक्षा उपाय उपयोगकर्ताओं को संभावित हानिकारक निष्पादन योग्य कोड को अनजाने में चलाने से रोकने में मदद करता है, जिसे वे एक हानिरहित डेटा फ़ाइल समझ सकते हैं।
|
||||
|
||||
### Application Signatures
|
||||
|
||||
Application signatures, जिन्हें कोड हस्ताक्षर भी कहा जाता है, Apple की सुरक्षा अवसंरचना का एक महत्वपूर्ण घटक हैं। इन्हें **सॉफ़्टवेयर लेखक की पहचान की पुष्टि करने** और यह सुनिश्चित करने के लिए उपयोग किया जाता है कि कोड को अंतिम बार हस्ताक्षरित किए जाने के बाद से इसमें छेड़छाड़ नहीं की गई है।
|
||||
Application signatures, जिन्हें कोड हस्ताक्षर भी कहा जाता है, Apple की सुरक्षा अवसंरचना का एक महत्वपूर्ण घटक हैं। इन्हें **सॉफ़्टवेयर लेखक की पहचान की पुष्टि करने** के लिए उपयोग किया जाता है (डेवलपर) और यह सुनिश्चित करने के लिए कि कोड को अंतिम बार हस्ताक्षरित किए जाने के बाद से इसमें छेड़छाड़ नहीं की गई है।
|
||||
|
||||
यहाँ यह कैसे काम करता है:
|
||||
|
||||
1. **एप्लिकेशन पर हस्ताक्षर करना:** जब एक डेवलपर अपने एप्लिकेशन को वितरित करने के लिए तैयार होता है, तो वे **एक निजी कुंजी का उपयोग करके एप्लिकेशन पर हस्ताक्षर करते हैं**। यह निजी कुंजी एक **प्रमाणपत्र से जुड़ी होती है जो Apple डेवलपर प्रोग्राम में नामांकित होने पर डेवलपर को जारी की जाती है**। हस्ताक्षर प्रक्रिया में ऐप के सभी भागों का एक क्रिप्टोग्राफिक हैश बनाना और इस हैश को डेवलपर की निजी कुंजी के साथ एन्क्रिप्ट करना शामिल है।
|
||||
2. **एप्लिकेशन का वितरण:** हस्ताक्षरित एप्लिकेशन फिर उपयोगकर्ताओं को डेवलपर के प्रमाणपत्र के साथ वितरित किया जाता है, जिसमें संबंधित सार्वजनिक कुंजी होती है।
|
||||
3. **एप्लिकेशन का सत्यापन:** जब एक उपयोगकर्ता एप्लिकेशन डाउनलोड करता है और इसे चलाने का प्रयास करता है, तो उनका Mac ऑपरेटिंग सिस्टम डेवलपर के प्रमाणपत्र से सार्वजनिक कुंजी का उपयोग करके हैश को डिक्रिप्ट करता है। फिर यह एप्लिकेशन की वर्तमान स्थिति के आधार पर हैश की पुनः गणना करता है और इसे डिक्रिप्टेड हैश के साथ तुलना करता है। यदि वे मेल खाते हैं, तो इसका मतलब है कि **एप्लिकेशन में संशोधन नहीं किया गया है** जब से डेवलपर ने इसे हस्ताक्षरित किया था, और सिस्टम एप्लिकेशन को चलाने की अनुमति देता है।
|
||||
1. **एप्लिकेशन को हस्ताक्षरित करना:** जब एक डेवलपर अपने एप्लिकेशन को वितरित करने के लिए तैयार होता है, तो वे **एक निजी कुंजी का उपयोग करके एप्लिकेशन को हस्ताक्षरित करते हैं**। यह निजी कुंजी एक **प्रमाण पत्र से संबंधित है जो Apple डेवलपर प्रोग्राम में नामांकित होने पर डेवलपर को जारी करता है**। हस्ताक्षर प्रक्रिया में ऐप के सभी भागों का एक क्रिप्टोग्राफिक हैश बनाना और इस हैश को डेवलपर की निजी कुंजी के साथ एन्क्रिप्ट करना शामिल है।
|
||||
2. **एप्लिकेशन का वितरण:** हस्ताक्षरित एप्लिकेशन को फिर उपयोगकर्ताओं को डेवलपर के प्रमाण पत्र के साथ वितरित किया जाता है, जिसमें संबंधित सार्वजनिक कुंजी होती है।
|
||||
3. **एप्लिकेशन का सत्यापन:** जब एक उपयोगकर्ता एप्लिकेशन को डाउनलोड करता है और चलाने का प्रयास करता है, तो उनका Mac ऑपरेटिंग सिस्टम डेवलपर के प्रमाण पत्र से सार्वजनिक कुंजी का उपयोग करके हैश को डिक्रिप्ट करता है। फिर यह एप्लिकेशन की वर्तमान स्थिति के आधार पर हैश की पुनः गणना करता है और इसे डिक्रिप्टेड हैश के साथ तुलना करता है। यदि वे मेल खाते हैं, तो इसका मतलब है कि **एप्लिकेशन को संशोधित नहीं किया गया है** जब से डेवलपर ने इसे हस्ताक्षरित किया था, और सिस्टम एप्लिकेशन को चलाने की अनुमति देता है।
|
||||
|
||||
Application signatures Apple की Gatekeeper तकनीक का एक आवश्यक हिस्सा हैं। जब एक उपयोगकर्ता **इंटरनेट से डाउनलोड किए गए एप्लिकेशन को खोलने का प्रयास करता है**, तो Gatekeeper एप्लिकेशन हस्ताक्षर की पुष्टि करता है। यदि इसे एक ज्ञात डेवलपर को Apple द्वारा जारी किए गए प्रमाणपत्र के साथ हस्ताक्षरित किया गया है और कोड में छेड़छाड़ नहीं की गई है, तो Gatekeeper एप्लिकेशन को चलाने की अनुमति देता है। अन्यथा, यह एप्लिकेशन को ब्लॉक कर देता है और उपयोगकर्ता को सूचित करता है।
|
||||
Application signatures Apple की Gatekeeper तकनीक का एक आवश्यक हिस्सा हैं। जब एक उपयोगकर्ता **इंटरनेट से डाउनलोड किए गए एप्लिकेशन को खोलने का प्रयास करता है**, तो Gatekeeper एप्लिकेशन हस्ताक्षर की पुष्टि करता है। यदि इसे एक ज्ञात डेवलपर को Apple द्वारा जारी किए गए प्रमाण पत्र के साथ हस्ताक्षरित किया गया है और कोड में छेड़छाड़ नहीं की गई है, तो Gatekeeper एप्लिकेशन को चलाने की अनुमति देता है। अन्यथा, यह एप्लिकेशन को ब्लॉक करता है और उपयोगकर्ता को सूचित करता है।
|
||||
|
||||
macOS Catalina से शुरू होकर, **Gatekeeper यह भी जांचता है कि क्या एप्लिकेशन को Apple द्वारा नोटराइज किया गया है**, जो सुरक्षा की एक अतिरिक्त परत जोड़ता है। नोटराइजेशन प्रक्रिया एप्लिकेशन की ज्ञात सुरक्षा समस्याओं और दुर्भावनापूर्ण कोड की जांच करती है, और यदि ये जांच पास होती हैं, तो Apple एप्लिकेशन में एक टिकट जोड़ता है जिसे Gatekeeper सत्यापित कर सकता है।
|
||||
|
||||
#### Check Signatures
|
||||
|
||||
जब आप कुछ **malware sample** की जांच कर रहे हों, तो आपको हमेशा **signature** की जांच करनी चाहिए क्योंकि **developer** जिसने इसे हस्ताक्षरित किया है, वह पहले से ही **malware** से **संबंधित** हो सकता है।
|
||||
जब कुछ **malware sample** की जांच करते हैं, तो आपको हमेशा **signature** की जांच करनी चाहिए क्योंकि **developer** जिसने इसे हस्ताक्षरित किया है, वह पहले से ही **malware** से **संबंधित** हो सकता है।
|
||||
```bash
|
||||
# Get signer
|
||||
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"
|
||||
@ -45,18 +45,18 @@ codesign -s <cert-name-keychain> toolsdemo
|
||||
```
|
||||
### Notarization
|
||||
|
||||
Apple की नोटरीकरण प्रक्रिया उपयोगकर्ताओं को संभावित हानिकारक सॉफ़्टवेयर से बचाने के लिए एक अतिरिक्त सुरक्षा उपाय के रूप में कार्य करती है। इसमें **डेवलपर द्वारा उनके आवेदन को** **Apple की नोटरी सेवा** द्वारा परीक्षा के लिए प्रस्तुत करना शामिल है, जिसे ऐप समीक्षा के साथ भ्रमित नहीं किया जाना चाहिए। यह सेवा एक **स्वचालित प्रणाली** है जो प्रस्तुत सॉफ़्टवेयर की जांच करती है कि उसमें **दुष्ट सामग्री** और कोड-हस्ताक्षर के साथ कोई संभावित समस्याएँ हैं या नहीं।
|
||||
Apple की नोटरीकरण प्रक्रिया उपयोगकर्ताओं को संभावित हानिकारक सॉफ़्टवेयर से बचाने के लिए एक अतिरिक्त सुरक्षा उपाय के रूप में कार्य करती है। इसमें **डेवलपर द्वारा उनके आवेदन को Apple's Notary Service** द्वारा परीक्षा के लिए प्रस्तुत करना शामिल है, जिसे App Review के साथ भ्रमित नहीं किया जाना चाहिए। यह सेवा एक **स्वचालित प्रणाली** है जो प्रस्तुत सॉफ़्टवेयर की जांच करती है कि उसमें **दुष्ट सामग्री** और कोड-हस्ताक्षर के साथ कोई संभावित समस्याएँ हैं या नहीं।
|
||||
|
||||
यदि सॉफ़्टवेयर इस निरीक्षण को बिना किसी चिंता के **पास** कर लेता है, तो नोटरी सेवा एक नोटरीकरण टिकट उत्पन्न करती है। फिर डेवलपर को **इस टिकट को अपने सॉफ़्टवेयर से संलग्न करना आवश्यक है**, जिसे 'स्टेपलिंग' के रूप में जाना जाता है। इसके अलावा, नोटरीकरण टिकट को ऑनलाइन भी प्रकाशित किया जाता है जहाँ गेटकीपर, Apple की सुरक्षा तकनीक, इसे एक्सेस कर सकता है।
|
||||
यदि सॉफ़्टवेयर इस निरीक्षण को बिना किसी चिंता के पास कर लेता है, तो Notary Service एक नोटरीकरण टिकट उत्पन्न करती है। डेवलपर को फिर **इस टिकट को अपने सॉफ़्टवेयर से संलग्न करना** आवश्यक है, जिसे 'स्टेपलिंग' के रूप में जाना जाता है। इसके अलावा, नोटरीकरण टिकट को ऑनलाइन भी प्रकाशित किया जाता है जहाँ Gatekeeper, Apple's सुरक्षा तकनीक, इसे एक्सेस कर सकती है।
|
||||
|
||||
उपयोगकर्ता के पहले सॉफ़्टवेयर के इंस्टॉलेशन या निष्पादन पर, नोटरीकरण टिकट की उपस्थिति - चाहे वह निष्पादन योग्य के साथ स्टेपल किया गया हो या ऑनलाइन पाया गया हो - **गेटकीपर को सूचित करती है कि सॉफ़्टवेयर को Apple द्वारा नोटरीकरण किया गया है**। परिणामस्वरूप, गेटकीपर प्रारंभिक लॉन्च संवाद में एक वर्णनात्मक संदेश प्रदर्शित करता है, जो यह संकेत करता है कि सॉफ़्टवेयर ने Apple द्वारा दुष्ट सामग्री के लिए जांच की है। यह प्रक्रिया उपयोगकर्ताओं के लिए उस सॉफ़्टवेयर की सुरक्षा में विश्वास को बढ़ाती है जिसे वे अपने सिस्टम पर इंस्टॉल या चलाते हैं।
|
||||
उपयोगकर्ता द्वारा सॉफ़्टवेयर की पहली स्थापना या निष्पादन पर, नोटरीकरण टिकट की उपस्थिति - चाहे वह निष्पादन योग्य के साथ स्टेपल किया गया हो या ऑनलाइन पाया गया हो - **Gatekeeper को सूचित करती है कि सॉफ़्टवेयर को Apple द्वारा नोटरीकरण किया गया है**। परिणामस्वरूप, Gatekeeper प्रारंभिक लॉन्च संवाद में एक वर्णनात्मक संदेश प्रदर्शित करता है, जो यह दर्शाता है कि सॉफ़्टवेयर को Apple द्वारा दुष्ट सामग्री के लिए जांचा गया है। यह प्रक्रिया उपयोगकर्ताओं के लिए उस सॉफ़्टवेयर की सुरक्षा में विश्वास को बढ़ाती है जिसे वे अपने सिस्टम पर स्थापित या चलाते हैं।
|
||||
|
||||
### spctl & syspolicyd
|
||||
|
||||
> [!CAUTION]
|
||||
> ध्यान दें कि सेकोइया संस्करण से, **`spctl`** अब गेटकीपर कॉन्फ़िगरेशन को संशोधित करने की अनुमति नहीं देता।
|
||||
> ध्यान दें कि Sequoia संस्करण से, **`spctl`** अब Gatekeeper कॉन्फ़िगरेशन को संशोधित करने की अनुमति नहीं देता है।
|
||||
|
||||
**`spctl`** गेटकीपर के साथ बातचीत करने और उसे सूचीबद्ध करने के लिए CLI उपकरण है (जो `syspolicyd` डेमन के माध्यम से XPC संदेशों के साथ है)। उदाहरण के लिए, गेटकीपर की **स्थिति** देखने के लिए:
|
||||
**`spctl`** CLI उपकरण है जो Gatekeeper के साथ बातचीत करने और उसे सूचीबद्ध करने के लिए है (XPC संदेशों के माध्यम से `syspolicyd` डेमन के साथ)। उदाहरण के लिए, आप **GateKeeper की स्थिति** को देख सकते हैं:
|
||||
```bash
|
||||
# Check the status
|
||||
spctl --status
|
||||
@ -68,9 +68,9 @@ GateKeeper यह जांचेगा कि **प्राथमिकता
|
||||
|
||||
<figure><img src="../../../images/image (1150).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**`syspolicyd`** मुख्य डेमन है जो Gatekeeper को लागू करने के लिए जिम्मेदार है। यह `/var/db/SystemPolicy` में स्थित एक डेटाबेस बनाए रखता है और आप [डेटाबेस का कोड यहाँ](https://opensource.apple.com/source/Security/Security-58286.240.4/OSX/libsecurity_codesigning/lib/policydb.cpp) और [SQL टेम्पलेट यहाँ](https://opensource.apple.com/source/Security/Security-58286.240.4/OSX/libsecurity_codesigning/lib/syspolicy.sql) पा सकते हैं। ध्यान दें कि डेटाबेस SIP द्वारा अनियंत्रित है और इसे रूट द्वारा लिखा जा सकता है और डेटाबेस `/var/db/.SystemPolicy-default` का उपयोग एक मूल बैकअप के रूप में किया जाता है यदि अन्य भ्रष्ट हो जाए।
|
||||
**`syspolicyd`** मुख्य डेमन है जो Gatekeeper को लागू करने के लिए जिम्मेदार है। यह `/var/db/SystemPolicy` में स्थित एक डेटाबेस बनाए रखता है और [डेटाबेस के लिए कोड यहाँ](https://opensource.apple.com/source/Security/Security-58286.240.4/OSX/libsecurity_codesigning/lib/policydb.cpp) और [SQL टेम्पलेट यहाँ](https://opensource.apple.com/source/Security/Security-58286.240.4/OSX/libsecurity_codesigning/lib/syspolicy.sql) पाया जा सकता है। ध्यान दें कि डेटाबेस SIP द्वारा अनियंत्रित है और इसे रूट द्वारा लिखा जा सकता है और डेटाबेस `/var/db/.SystemPolicy-default` का उपयोग एक मूल बैकअप के रूप में किया जाता है यदि अन्य भ्रष्ट हो जाता है।
|
||||
|
||||
इसके अलावा, बंडल **`/var/db/gke.bundle`** और **`/var/db/gkopaque.bundle`** में नियमों के साथ फ़ाइलें होती हैं जो डेटाबेस में डाली जाती हैं। आप रूट के रूप में इस डेटाबेस की जांच कर सकते हैं:
|
||||
इसके अलावा, बंडल **`/var/db/gke.bundle`** और **`/var/db/gkopaque.bundle`** में नियमों के साथ फ़ाइलें होती हैं जो डेटाबेस में डाली जाती हैं। आप इसे रूट के रूप में इस प्रकार जांच सकते हैं:
|
||||
```bash
|
||||
# Open database
|
||||
sqlite3 /var/db/SystemPolicy
|
||||
@ -84,9 +84,9 @@ anchor apple generic and certificate leaf[field.1.2.840.113635.100.6.1.9] exists
|
||||
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.14] or certificate leaf[field.1.2.840.113635.100.6.1.13]) and notarized|1|0|Notarized Developer ID
|
||||
[...]
|
||||
```
|
||||
**`syspolicyd`** एक XPC सर्वर को विभिन्न ऑपरेशनों के साथ उजागर करता है जैसे कि `assess`, `update`, `record` और `cancel`, जो **`Security.framework` के `SecAssessment*`** APIs का उपयोग करके भी पहुंचा जा सकता है और **`xpctl`** वास्तव में **`syspolicyd`** से XPC के माध्यम से बात करता है।
|
||||
**`syspolicyd`** एक XPC सर्वर को विभिन्न ऑपरेशनों के साथ उजागर करता है जैसे कि `assess`, `update`, `record` और `cancel`, जो **`Security.framework` के `SecAssessment*`** APIs का उपयोग करके भी पहुँचा जा सकता है और **`spctl`** वास्तव में XPC के माध्यम से **`syspolicyd`** से बात करता है।
|
||||
|
||||
ध्यान दें कि पहला नियम "**App Store**" में समाप्त होता है और दूसरा "**Developer ID**" में, और पिछले चित्र में यह **App Store और पहचाने गए डेवलपर्स से ऐप्स को निष्पादित करने के लिए सक्षम था**।\
|
||||
ध्यान दें कि पहला नियम "**App Store**" पर समाप्त होता है और दूसरा "**Developer ID**" पर, और पिछले चित्र में यह **App Store और पहचाने गए डेवलपर्स से ऐप्स को निष्पादित करने के लिए सक्षम था**।\
|
||||
यदि आप उस सेटिंग को App Store में **संशोधित** करते हैं, तो "**Notarized Developer ID" नियम गायब हो जाएंगे**।
|
||||
|
||||
यहां **प्रकार GKE** के हजारों नियम भी हैं:
|
||||
@ -108,7 +108,7 @@ cdhash H"8d0d90ff23c3071211646c4c9c607cdb601cb18f"|1|0|GKE
|
||||
```bash
|
||||
sudo spctl --list
|
||||
```
|
||||
विकल्प **`--master-disable`** और **`--global-disable`** के **`spctl`** पूरी तरह से इन हस्ताक्षर जांचों को **अक्षम** कर देंगे:
|
||||
विकल्प **`--master-disable`** और **`--global-disable`** का **`spctl`** पूरी तरह से इन हस्ताक्षर जांचों को **अक्षम** कर देंगे:
|
||||
```bash
|
||||
# Disable GateKeeper
|
||||
spctl --global-disable
|
||||
@ -141,28 +141,64 @@ sudo spctl --enable --label "whitelist"
|
||||
spctl --assess -v /Applications/App.app
|
||||
/Applications/App.app: accepted
|
||||
```
|
||||
**कर्नेल एक्सटेंशन** के संबंध में, फ़ोल्डर `/var/db/SystemPolicyConfiguration` में उन kexts की सूचियों के साथ फ़ाइलें होती हैं जिन्हें लोड करने की अनुमति है। इसके अलावा, `spctl` के पास `com.apple.private.iokit.nvram-csr` का अधिकार है क्योंकि यह नए पूर्व-स्वीकृत कर्नेल एक्सटेंशन जोड़ने में सक्षम है जिन्हें `kext-allowed-teams` कुंजी में NVRAM में भी सहेजने की आवश्यकता होती है।
|
||||
Regarding **kernel extensions**, the folder `/var/db/SystemPolicyConfiguration` contains files with lists of kexts allowed to be loaded. Moreover, `spctl` has the entitlement `com.apple.private.iokit.nvram-csr` because it's capable of adding new pre-approved kernel extensions which need to be saved also in NVRAM in a `kext-allowed-teams` key.
|
||||
|
||||
### क्वारंटाइन फ़ाइलें
|
||||
#### Managing Gatekeeper on macOS 15 (Sequoia) and later
|
||||
|
||||
जब कोई **ऐप्लिकेशन** या फ़ाइल **डाउनलोड** की जाती है, तो विशिष्ट macOS **ऐप्लिकेशन** जैसे वेब ब्राउज़र या ईमेल क्लाइंट **एक विस्तारित फ़ाइल विशेषता** जोड़ते हैं, जिसे सामान्यतः "**क्वारंटाइन फ्लैग**" के रूप में जाना जाता है, डाउनलोड की गई फ़ाइल पर। यह विशेषता सुरक्षा उपाय के रूप में कार्य करती है ताकि फ़ाइल को एक अविश्वसनीय स्रोत (इंटरनेट) से आने के रूप में **चिन्हित** किया जा सके, और संभावित रूप से जोखिम उठाने वाली हो। हालाँकि, सभी ऐप्लिकेशन इस विशेषता को नहीं जोड़ते हैं, उदाहरण के लिए, सामान्य BitTorrent क्लाइंट सॉफ़्टवेयर आमतौर पर इस प्रक्रिया को बायपास करता है।
|
||||
Starting in macOS 15 Sequoia, end users can no longer toggle Gatekeeper policy from `spctl`. Management is performed via System Settings or by deploying an MDM configuration profile with the `com.apple.systempolicy.control` payload. Example profile snippet to allow App Store and identified developers (but not "Anywhere"):
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>PayloadContent</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>PayloadType</key>
|
||||
<string>com.apple.systempolicy.control</string>
|
||||
<key>PayloadVersion</key>
|
||||
<integer>1</integer>
|
||||
<key>PayloadIdentifier</key>
|
||||
<string>com.example.gatekeeper</string>
|
||||
<key>EnableAssessment</key>
|
||||
<true/>
|
||||
<key>AllowIdentifiedDevelopers</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</array>
|
||||
<key>PayloadType</key>
|
||||
<string>Configuration</string>
|
||||
<key>PayloadIdentifier</key>
|
||||
<string>com.example.profile.gatekeeper</string>
|
||||
<key>PayloadUUID</key>
|
||||
<string>00000000-0000-0000-0000-000000000000</string>
|
||||
<key>PayloadVersion</key>
|
||||
<integer>1</integer>
|
||||
<key>PayloadDisplayName</key>
|
||||
<string>Gatekeeper</string>
|
||||
</dict>
|
||||
</plist>
|
||||
```
|
||||
### Quarantine Files
|
||||
|
||||
**क्वारंटाइन फ्लैग की उपस्थिति macOS के गेटकीपर सुरक्षा फ़ीचर को संकेत देती है जब कोई उपयोगकर्ता फ़ाइल को निष्पादित करने का प्रयास करता है**।
|
||||
जब **एक एप्लिकेशन** या फ़ाइल **डाउनलोड** की जाती है, तो विशिष्ट macOS **एप्लिकेशन** जैसे वेब ब्राउज़र या ईमेल क्लाइंट **एक विस्तारित फ़ाइल विशेषता** जोड़ते हैं, जिसे सामान्यतः "**क्वारंटाइन फ्लैग**" के रूप में जाना जाता है, डाउनलोड की गई फ़ाइल पर। यह विशेषता सुरक्षा उपाय के रूप में कार्य करती है ताकि **फ़ाइल को चिह्नित किया जा सके** कि यह एक अविश्वसनीय स्रोत (इंटरनेट) से आई है, और संभावित रूप से जोखिम ले जा सकती है। हालाँकि, सभी एप्लिकेशन इस विशेषता को नहीं जोड़ते हैं, उदाहरण के लिए, सामान्य BitTorrent क्लाइंट सॉफ़्टवेयर आमतौर पर इस प्रक्रिया को बायपास करता है।
|
||||
|
||||
यदि **क्वारंटाइन फ्लैग मौजूद नहीं है** (जैसे कुछ BitTorrent क्लाइंट के माध्यम से डाउनलोड की गई फ़ाइलों के साथ), तो गेटकीपर के **चेक किए जा सकते हैं**। इसलिए, उपयोगकर्ताओं को कम सुरक्षित या अज्ञात स्रोतों से डाउनलोड की गई फ़ाइलों को खोलते समय सावधानी बरतनी चाहिए।
|
||||
**क्वारंटाइन फ्लैग की उपस्थिति macOS के गेटकीपर सुरक्षा फीचर को संकेत देती है जब एक उपयोगकर्ता फ़ाइल को निष्पादित करने का प्रयास करता है**।
|
||||
|
||||
> [!NOTE] > **कोड हस्ताक्षरों की** **वैधता** की **जांच** एक **संसाधन-गहन** प्रक्रिया है जिसमें कोड और इसके सभी बंडल किए गए संसाधनों के क्रिप्टोग्राफ़िक **हैश** उत्पन्न करना शामिल है। इसके अलावा, प्रमाणपत्र की वैधता की जांच करने के लिए Apple के सर्वरों पर **ऑनलाइन जांच** करना आवश्यक है यह देखने के लिए कि क्या इसे जारी किए जाने के बाद रद्द कर दिया गया है। इन कारणों से, एक पूर्ण कोड हस्ताक्षर और नोटरीकरण जांच **हर बार ऐप लॉन्च होने पर चलाना व्यावहारिक नहीं है**।
|
||||
उस स्थिति में जहाँ **क्वारंटाइन फ्लैग मौजूद नहीं है** (जैसे कुछ BitTorrent क्लाइंट के माध्यम से डाउनलोड की गई फ़ाइलों के साथ), गेटकीपर के **चेक किए जा सकते हैं**। इसलिए, उपयोगकर्ताओं को कम सुरक्षित या अज्ञात स्रोतों से डाउनलोड की गई फ़ाइलों को खोलते समय सावधानी बरतनी चाहिए।
|
||||
|
||||
> [!NOTE] > **कोड हस्ताक्षरों की** **वैधता** की **जांच** एक **संसाधन-गहन** प्रक्रिया है जिसमें कोड और इसके सभी बंडल किए गए संसाधनों के क्रिप्टोग्राफिक **हैश** उत्पन्न करना शामिल है। इसके अलावा, प्रमाणपत्र की वैधता की जांच करने में Apple के सर्वरों पर एक **ऑनलाइन जांच** करना शामिल है यह देखने के लिए कि क्या इसे जारी किए जाने के बाद रद्द कर दिया गया है। इन कारणों से, एक पूर्ण कोड हस्ताक्षर और नोटरीकरण जांच **हर बार एक ऐप लॉन्च होने पर चलाना व्यावहारिक नहीं है**।
|
||||
>
|
||||
> इसलिए, ये चेक **केवल क्वारंटाइन विशेषता वाले ऐप्स को निष्पादित करते समय चलाए जाते हैं।**
|
||||
> इसलिए, ये जांचें **केवल उन ऐप्स को निष्पादित करते समय चलती हैं जिनमें क्वारंटाइन विशेषता होती है।**
|
||||
|
||||
> [!WARNING]
|
||||
> यह विशेषता **फ़ाइल बनाने/डाउनलोड करने वाले ऐप्लिकेशन द्वारा सेट की जानी चाहिए**।
|
||||
> यह विशेषता **फ़ाइल बनाने/डाउनलोड करने वाले एप्लिकेशन द्वारा सेट की जानी चाहिए**।
|
||||
>
|
||||
> हालाँकि, जो फ़ाइलें सैंडबॉक्स की गई हैं, वे हर फ़ाइल पर यह विशेषता सेट करेंगी जो वे बनाती हैं। और गैर-सैंडबॉक्स ऐप्स इसे स्वयं सेट कर सकते हैं, या **Info.plist** में [**LSFileQuarantineEnabled**](https://developer.apple.com/documentation/bundleresources/information_property_list/lsfilequarantineenabled?language=objc) कुंजी निर्दिष्ट कर सकते हैं, जो सिस्टम को बनाई गई फ़ाइलों पर `com.apple.quarantine` विस्तारित विशेषता सेट करने के लिए मजबूर करेगा,
|
||||
> हालाँकि, जो फ़ाइलें सैंडबॉक्स की गई हैं, वे हर फ़ाइल पर यह विशेषता सेट करेंगी जो वे बनाती हैं। और गैर-सैंडबॉक्स ऐप इसे स्वयं सेट कर सकते हैं, या **Info.plist** में [**LSFileQuarantineEnabled**](https://developer.apple.com/documentation/bundleresources/information_property_list/lsfilequarantineenabled?language=objc) कुंजी निर्दिष्ट कर सकते हैं, जो सिस्टम को फ़ाइलों पर `com.apple.quarantine` विस्तारित विशेषता सेट करने के लिए मजबूर करेगा,
|
||||
|
||||
इसके अलावा, **`qtn_proc_apply_to_self`** को कॉल करने वाली प्रक्रिया द्वारा बनाई गई सभी फ़ाइलें क्वारंटाइन की जाती हैं। या API **`qtn_file_apply_to_path`** एक निर्दिष्ट फ़ाइल पथ पर क्वारंटाइन विशेषता जोड़ता है।
|
||||
इसके अलावा, सभी फ़ाइलें जो **`qtn_proc_apply_to_self`** को कॉल करने वाली प्रक्रिया द्वारा बनाई जाती हैं, क्वारंटाइन की जाती हैं। या API **`qtn_file_apply_to_path`** एक निर्दिष्ट फ़ाइल पथ पर क्वारंटाइन विशेषता जोड़ता है।
|
||||
|
||||
इसकी स्थिति **जांचना और सक्षम/अक्षम करना** (रूट आवश्यक) संभव है:
|
||||
यह **इसके स्थिति की जांच करना और सक्षम/अक्षम करना** (रूट आवश्यक) संभव है:
|
||||
```bash
|
||||
spctl --status
|
||||
assessments enabled
|
||||
@ -177,7 +213,7 @@ xattr file.png
|
||||
com.apple.macl
|
||||
com.apple.quarantine
|
||||
```
|
||||
**विस्तारित** **गुणों** के **मूल्य** की जांच करें और उस ऐप का पता लगाएं जिसने संगरोध गुण को लिखा:
|
||||
**विस्तारित** **गुणों** के **मूल्य** की जांच करें और उस ऐप को खोजें जिसने संगरोध गुण लिखा:
|
||||
```bash
|
||||
xattr -l portada.png
|
||||
com.apple.macl:
|
||||
@ -259,7 +295,7 @@ return 0;
|
||||
```
|
||||
</details>
|
||||
|
||||
और **हटाएं** वह विशेषता:
|
||||
और **हटाएँ** वह विशेषता:
|
||||
```bash
|
||||
xattr -d com.apple.quarantine portada.png
|
||||
#You can also remove this attribute from every file with
|
||||
@ -269,38 +305,56 @@ find . -iname '*' -print0 | xargs -0 xattr -d com.apple.quarantine
|
||||
```bash
|
||||
find / -exec ls -ld {} \; 2>/dev/null | grep -E "[x\-]@ " | awk '{printf $9; printf "\n"}' | xargs -I {} xattr -lv {} | grep "com.apple.quarantine"
|
||||
```
|
||||
Quarantine जानकारी भी एक केंद्रीय डेटाबेस में संग्रहीत होती है जिसे LaunchServices द्वारा प्रबंधित किया जाता है **`~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2`** जो GUI को फ़ाइल के मूल के बारे में डेटा प्राप्त करने की अनुमति देता है। इसके अलावा, इसे उन अनुप्रयोगों द्वारा अधिलेखित किया जा सकता है जो इसके मूल को छिपाने में रुचि रखते हैं। इसके अलावा, यह LaunchServices APIS से किया जा सकता है।
|
||||
Quarantine information is also stored in a central database managed by LaunchServices in **`~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2`** which allows the GUI to obtain data about the file origins. Moreover this can be overwritten by applications which might be interested in hiding its origins. Moreover, this can be done from LaunchServices APIS.
|
||||
|
||||
#### **libquarantine.dylb**
|
||||
#### **libquarantine.dylib**
|
||||
|
||||
यह पुस्तकालय कई कार्यों को निर्यात करता है जो विस्तारित विशेषता क्षेत्रों को संशोधित करने की अनुमति देते हैं।
|
||||
|
||||
`qtn_file_*` APIs फ़ाइल क्वारंटाइन नीतियों से संबंधित हैं, `qtn_proc_*` APIs प्रक्रियाओं (प्रक्रिया द्वारा बनाई गई फ़ाइलें) पर लागू होते हैं। निर्यातित नहीं किए गए `__qtn_syscall_quarantine*` कार्य वे हैं जो नीतियों को लागू करते हैं जो `mac_syscall` को "Quarantine" के पहले तर्क के रूप में कॉल करते हैं जो अनुरोधों को `Quarantine.kext` पर भेजता है।
|
||||
The `qtn_file_*` APIs deal with file quarantine policies, the `qtn_proc_*` APIs are applied to processes (files created by the process). The unexported `__qtn_syscall_quarantine*` functions are the ones that applies the policies which calls `mac_syscall` with "Quarantine" as first argument which sends the requests to `Quarantine.kext`.
|
||||
|
||||
#### **Quarantine.kext**
|
||||
|
||||
कर्नेल एक्सटेंशन केवल **सिस्टम पर कर्नेल कैश** के माध्यम से उपलब्ध है; हालाँकि, आप **Kernel Debug Kit को** [**https://developer.apple.com/**](https://developer.apple.com/) से डाउनलोड कर सकते हैं, जिसमें एक्सटेंशन का एक प्रतीकित संस्करण होगा।
|
||||
The kernel extension is only available through the **kernel cache on the system**; however, you _can_ download the **Kernel Debug Kit from** [**https://developer.apple.com/**](https://developer.apple.com/), which will contain a symbolicated version of the extension.
|
||||
|
||||
यह Kext MACF के माध्यम से कई कॉल को हुक करेगा ताकि सभी फ़ाइल जीवनचक्र घटनाओं को ट्रैप किया जा सके: निर्माण, खोलना, नाम बदलना, हार्ड-लिंकिंग... यहां तक कि `setxattr` को `com.apple.quarantine` विस्तारित विशेषता सेट करने से रोकने के लिए।
|
||||
This Kext will hook via MACF several calls in order to traps all file lifecycle events: Creation, opening, renaming, hard-linkning... even `setxattr` to prevent it from setting the `com.apple.quarantine` extended attribute.
|
||||
|
||||
यह कुछ MIBs का भी उपयोग करता है:
|
||||
It also uses a couple of MIBs:
|
||||
|
||||
- `security.mac.qtn.sandbox_enforce`: सैंडबॉक्स के साथ क्वारंटाइन को लागू करें
|
||||
- `security.mac.qtn.user_approved_exec`: क्वारंटाइन की गई प्रक्रियाएँ केवल अनुमोदित फ़ाइलें चला सकती हैं
|
||||
- `security.mac.qtn.sandbox_enforce`: Enforce quarantine along Sandbox
|
||||
- `security.mac.qtn.user_approved_exec`: Querantined procs can only execute approved files
|
||||
|
||||
#### Provenance xattr (Ventura and later)
|
||||
|
||||
macOS 13 Ventura ने एक अलग उत्पत्ति तंत्र पेश किया जो पहली बार तब भरा जाता है जब एक क्वारंटाइन किया गया ऐप चलाने की अनुमति दी जाती है। दो कलाकृतियाँ बनाई जाती हैं:
|
||||
|
||||
- The `com.apple.provenance` xattr on the `.app` bundle directory (fixed-size binary value containing a primary key and flags).
|
||||
- A row in the `provenance_tracking` table inside the ExecPolicy database at `/var/db/SystemPolicyConfiguration/ExecPolicy/` storing the app’s cdhash and metadata.
|
||||
|
||||
Practical usage:
|
||||
```bash
|
||||
# Inspect provenance xattr (if present)
|
||||
xattr -p com.apple.provenance /Applications/Some.app | hexdump -C
|
||||
|
||||
# Observe Gatekeeper/provenance events in real time
|
||||
log stream --style syslog --predicate 'process == "syspolicyd"'
|
||||
|
||||
# Retrieve historical Gatekeeper decisions for a specific bundle
|
||||
log show --last 2d --style syslog --predicate 'process == "syspolicyd" && eventMessage CONTAINS[cd] "GK scan"'
|
||||
```
|
||||
### XProtect
|
||||
|
||||
XProtect macOS में एक अंतर्निहित **एंटी-मैलवेयर** सुविधा है। XProtect **किसी भी अनुप्रयोग की जांच करता है जब इसे पहली बार लॉन्च या संशोधित किया जाता है** इसके ज्ञात मैलवेयर और असुरक्षित फ़ाइल प्रकारों के डेटाबेस के खिलाफ। जब आप कुछ ऐप्स, जैसे Safari, Mail, या Messages के माध्यम से फ़ाइल डाउनलोड करते हैं, तो XProtect स्वचालित रूप से फ़ाइल को स्कैन करता है। यदि यह अपने डेटाबेस में किसी ज्ञात मैलवेयर से मेल खाता है, तो XProtect **फ़ाइल को चलने से रोक देगा** और आपको खतरे के बारे में सूचित करेगा।
|
||||
XProtect macOS में एक अंतर्निहित **एंटी-मैलवेयर** सुविधा है। XProtect **किसी भी एप्लिकेशन को उसके पहले लॉन्च या संशोधित होने पर ज्ञात मैलवेयर और असुरक्षित फ़ाइल प्रकारों के अपने डेटाबेस के खिलाफ जांचता है**। जब आप कुछ ऐप्स, जैसे Safari, Mail, या Messages के माध्यम से एक फ़ाइल डाउनलोड करते हैं, तो XProtect स्वचालित रूप से फ़ाइल को स्कैन करता है। यदि यह अपने डेटाबेस में किसी ज्ञात मैलवेयर से मेल खाता है, तो XProtect **फ़ाइल को चलने से रोक देगा** और आपको खतरे के बारे में सूचित करेगा।
|
||||
|
||||
XProtect डेटाबेस को **नियमित रूप से** Apple द्वारा नए मैलवेयर परिभाषाओं के साथ अपडेट किया जाता है, और ये अपडेट स्वचालित रूप से आपके Mac पर डाउनलोड और स्थापित होते हैं। यह सुनिश्चित करता है कि XProtect हमेशा नवीनतम ज्ञात खतरों के साथ अद्यतित है।
|
||||
|
||||
हालांकि, यह ध्यान देने योग्य है कि **XProtect एक पूर्ण विशेषताओं वाला एंटीवायरस समाधान नहीं है**। यह केवल ज्ञात खतरों की एक विशिष्ट सूची की जांच करता है और अधिकांश एंटीवायरस सॉफ़्टवेयर की तरह ऑन-एक्सेस स्कैनिंग नहीं करता है।
|
||||
हालांकि, यह ध्यान देने योग्य है कि **XProtect एक पूर्ण-विशेषताओं वाला एंटीवायरस समाधान नहीं है**। यह केवल ज्ञात खतरों की एक विशिष्ट सूची के लिए जांच करता है और अधिकांश एंटीवायरस सॉफ़्टवेयर की तरह ऑन-एक्सेस स्कैनिंग नहीं करता है।
|
||||
|
||||
आप नवीनतम XProtect अपडेट के बारे में जानकारी प्राप्त कर सकते हैं:
|
||||
```bash
|
||||
system_profiler SPInstallHistoryDataType 2>/dev/null | grep -A 4 "XProtectPlistConfigData" | tail -n 5
|
||||
```
|
||||
XProtect **/Library/Apple/System/Library/CoreServices/XProtect.bundle** पर स्थित है और बंडल के अंदर आप जानकारी पा सकते हैं जो XProtect उपयोग करता है:
|
||||
XProtect **/Library/Apple/System/Library/CoreServices/XProtect.bundle** पर स्थित है और बंडल के अंदर आप जानकारी पा सकते हैं जिसका उपयोग XProtect करता है:
|
||||
|
||||
- **`XProtect.bundle/Contents/Resources/LegacyEntitlementAllowlist.plist`**: उन cdhashes के साथ कोड को विरासत के अधिकारों का उपयोग करने की अनुमति देता है।
|
||||
- **`XProtect.bundle/Contents/Resources/XProtect.meta.plist`**: प्लगइन्स और एक्सटेंशनों की सूची जो BundleID और TeamID के माध्यम से लोड करने की अनुमति नहीं है या न्यूनतम संस्करण को इंगित करती है।
|
||||
@ -309,30 +363,36 @@ XProtect **/Library/Apple/System/Library/CoreServices/XProtect.bundle** पर
|
||||
|
||||
ध्यान दें कि **`/Library/Apple/System/Library/CoreServices/XProtect.app`** में XProtect से संबंधित एक और ऐप है जो Gatekeeper प्रक्रिया में शामिल नहीं है।
|
||||
|
||||
> XProtect Remediator: आधुनिक macOS पर, Apple मांग पर स्कैनर (XProtect Remediator) भेजता है जो नियमित रूप से launchd के माध्यम से चलते हैं ताकि मैलवेयर के परिवारों का पता लगाया जा सके और उन्हें ठीक किया जा सके। आप इन स्कैन को एकीकृत लॉग में देख सकते हैं:
|
||||
>
|
||||
> ```bash
|
||||
> log show --last 2h --predicate 'subsystem == "com.apple.XProtectFramework" || category CONTAINS "XProtect"' --style syslog
|
||||
> ```
|
||||
|
||||
### Not Gatekeeper
|
||||
|
||||
> [!CAUTION]
|
||||
> ध्यान दें कि Gatekeeper **हर बार निष्पादित नहीं होता** जब आप एक अनुप्रयोग निष्पादित करते हैं, केवल _**AppleMobileFileIntegrity**_ (AMFI) केवल **निष्पादनीय कोड हस्ताक्षर** की पुष्टि करेगा जब आप एक ऐप निष्पादित करते हैं जिसे पहले से Gatekeeper द्वारा निष्पादित और सत्यापित किया गया है।
|
||||
> ध्यान दें कि Gatekeeper **हर बार** जब आप एक एप्लिकेशन चलाते हैं, तब **नहीं** चलाया जाता है, केवल _**AppleMobileFileIntegrity**_ (AMFI) केवल **कार्यकारी कोड हस्ताक्षर** की पुष्टि करेगा जब आप एक ऐप चलाते हैं जिसे पहले Gatekeeper द्वारा चलाया और सत्यापित किया गया है।
|
||||
|
||||
इसलिए, पहले यह संभव था कि एक ऐप को Gatekeeper के साथ कैश करने के लिए निष्पादित किया जाए, फिर **अनुप्रयोग के निष्पादनीय नहीं फाइलों को संशोधित करें** (जैसे Electron asar या NIB फाइलें) और यदि कोई अन्य सुरक्षा उपाय नहीं थे, तो अनुप्रयोग **निष्पादित** होता था **दुष्ट** परिवर्धनों के साथ।
|
||||
इसलिए, पहले यह संभव था कि एक ऐप को Gatekeeper के साथ कैश करने के लिए चलाया जाए, फिर **अनुप्रयोग के गैर-कार्यकारी फ़ाइलों को संशोधित करें** (जैसे Electron asar या NIB फ़ाइलें) और यदि कोई अन्य सुरक्षा उपाय नहीं थे, तो अनुप्रयोग **कार्यकारी** के साथ **दुष्ट** परिवर्धनों के साथ **चलाया** जाता था।
|
||||
|
||||
हालांकि, अब यह संभव नहीं है क्योंकि macOS **अनुप्रयोग बंडलों के अंदर फाइलों को संशोधित करने से रोकता है**। इसलिए, यदि आप [Dirty NIB](../macos-proces-abuse/macos-dirty-nib.md) हमले का प्रयास करते हैं, तो आप पाएंगे कि इसे दुरुपयोग करना अब संभव नहीं है क्योंकि Gatekeeper के साथ इसे कैश करने के लिए ऐप को निष्पादित करने के बाद, आप बंडल को संशोधित नहीं कर पाएंगे। और यदि आप उदाहरण के लिए Contents निर्देशिका का नाम NotCon में बदलते हैं (जैसा कि शोषण में इंगित किया गया है), और फिर ऐप के मुख्य बाइनरी को Gatekeeper के साथ कैश करने के लिए निष्पादित करते हैं, तो यह एक त्रुटि को ट्रिगर करेगा और निष्पादित नहीं होगा।
|
||||
हालांकि, अब यह संभव नहीं है क्योंकि macOS **अनुप्रयोग बंडलों के अंदर फ़ाइलों को संशोधित करने से रोकता है**। इसलिए, यदि आप [Dirty NIB](../macos-proces-abuse/macos-dirty-nib.md) हमले का प्रयास करते हैं, तो आप पाएंगे कि इसे दुरुपयोग करना अब संभव नहीं है क्योंकि Gatekeeper के साथ इसे कैश करने के लिए ऐप को चलाने के बाद, आप बंडल को संशोधित नहीं कर पाएंगे। और यदि आप उदाहरण के लिए Contents निर्देशिका का नाम NotCon में बदलते हैं (जैसा कि शोषण में संकेत दिया गया है), और फिर ऐप के मुख्य बाइनरी को Gatekeeper के साथ कैश करने के लिए चलाते हैं, तो यह एक त्रुटि को ट्रिगर करेगा और नहीं चलेगा।
|
||||
|
||||
## Gatekeeper Bypasses
|
||||
|
||||
Gatekeeper को बायपास करने का कोई भी तरीका (उपयोगकर्ता को कुछ डाउनलोड करने और निष्पादित करने के लिए प्रबंधित करना जब Gatekeeper इसे अस्वीकार करना चाहिए) macOS में एक भेद्यता माना जाता है। ये कुछ CVEs हैं जो तकनीकों को असाइन किए गए हैं जिन्होंने अतीत में Gatekeeper को बायपास करने की अनुमति दी:
|
||||
Gatekeeper को बायपास करने का कोई भी तरीका (उपयोगकर्ता को कुछ डाउनलोड करने और उसे चलाने के लिए मजबूर करना जब Gatekeeper इसे अस्वीकार करना चाहिए) macOS में एक भेद्यता माना जाता है। ये कुछ CVEs हैं जो तकनीकों को असाइन किए गए हैं जिन्होंने अतीत में Gatekeeper को बायपास करने की अनुमति दी:
|
||||
|
||||
### [CVE-2021-1810](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810)
|
||||
|
||||
यह देखा गया कि यदि **Archive Utility** का उपयोग निष्कर्षण के लिए किया जाता है, तो **886 वर्णों से अधिक पथ** वाली फाइलें com.apple.quarantine विस्तारित विशेषता प्राप्त नहीं करती हैं। यह स्थिति अनजाने में उन फाइलों को **Gatekeeper की** सुरक्षा जांचों को **बायपास** करने की अनुमति देती है।
|
||||
यह देखा गया कि यदि **Archive Utility** का उपयोग निष्कर्षण के लिए किया जाता है, तो **886 वर्णों से अधिक पथ** वाली फ़ाइलों को com.apple.quarantine विस्तारित विशेषता प्राप्त नहीं होती है। यह स्थिति अनजाने में उन फ़ाइलों को **Gatekeeper की** सुरक्षा जांचों को **बायपास** करने की अनुमति देती है।
|
||||
|
||||
अधिक जानकारी के लिए [**मूल रिपोर्ट**](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810) की जांच करें।
|
||||
|
||||
### [CVE-2021-30990](https://ronmasas.com/posts/bypass-macos-gatekeeper)
|
||||
|
||||
जब एक अनुप्रयोग **Automator** के साथ बनाया जाता है, तो इसे निष्पादित करने के लिए आवश्यक जानकारी `application.app/Contents/document.wflow` के अंदर होती है न कि निष्पादनीय में। निष्पादनीय केवल एक सामान्य Automator बाइनरी है जिसे **Automator Application Stub** कहा जाता है।
|
||||
जब एक एप्लिकेशन **Automator** के साथ बनाया जाता है, तो इसे निष्पादित करने के लिए आवश्यक जानकारी `application.app/Contents/document.wflow` के अंदर होती है, न कि कार्यकारी में। कार्यकारी केवल एक सामान्य Automator बाइनरी है जिसे **Automator Application Stub** कहा जाता है।
|
||||
|
||||
इसलिए, आप `application.app/Contents/MacOS/Automator\ Application\ Stub` को **सिस्टम के अंदर एक अन्य Automator Application Stub की ओर एक प्रतीकात्मक लिंक के साथ इंगित कर सकते हैं** और यह `document.wflow` (आपका स्क्रिप्ट) के अंदर जो है उसे **Gatekeeper को ट्रिगर किए बिना निष्पादित करेगा** क्योंकि वास्तविक निष्पादनीय में क्वारंटाइन xattr नहीं है।
|
||||
इसलिए, आप `application.app/Contents/MacOS/Automator\ Application\ Stub` को **सिस्टम के अंदर एक अन्य Automator Application Stub की ओर एक प्रतीकात्मक लिंक के साथ इंगित कर सकते हैं** और यह `document.wflow` (आपका स्क्रिप्ट) के अंदर जो है उसे **बिना Gatekeeper को ट्रिगर किए निष्पादित करेगा** क्योंकि वास्तविक कार्यकारी में क्वारंटाइन xattr नहीं है।
|
||||
|
||||
उदाहरण के लिए अपेक्षित स्थान: `/System/Library/CoreServices/Automator\ Application\ Stub.app/Contents/MacOS/Automator\ Application\ Stub`
|
||||
|
||||
@ -340,7 +400,7 @@ Gatekeeper को बायपास करने का कोई भी तर
|
||||
|
||||
### [CVE-2022-22616](https://www.jamf.com/blog/jamf-threat-labs-safari-vuln-gatekeeper-bypass/)
|
||||
|
||||
इस बायपास में एक ज़िप फ़ाइल बनाई गई थी जिसमें एक अनुप्रयोग `application.app/Contents` से संकुचन शुरू कर रहा था न कि `application.app` से। इसलिए, **क्वारंटाइन विशेषता** सभी **फाइलों पर लागू की गई थी `application.app/Contents`** लेकिन **`application.app` पर नहीं**, जिसे Gatekeeper जांच रहा था, इसलिए Gatekeeper को बायपास किया गया क्योंकि जब `application.app` को ट्रिगर किया गया तो **इसमें क्वारंटाइन विशेषता नहीं थी।**
|
||||
इस बायपास में एक ज़िप फ़ाइल बनाई गई थी जिसमें एक एप्लिकेशन `application.app/Contents` से संकुचन शुरू कर रहा था न कि `application.app` से। इसलिए, **क्वारंटाइन विशेषता** सभी **फाइलों पर लागू की गई थी `application.app/Contents`** लेकिन **`application.app` पर नहीं**, जिसे Gatekeeper चेक कर रहा था, इसलिए Gatekeeper को बायपास किया गया क्योंकि जब `application.app` को ट्रिगर किया गया तो **इसमें क्वारंटाइन विशेषता नहीं थी।**
|
||||
```bash
|
||||
zip -r test.app/Contents test.zip
|
||||
```
|
||||
@ -348,7 +408,7 @@ Check the [**original report**](https://www.jamf.com/blog/jamf-threat-labs-safar
|
||||
|
||||
### [CVE-2022-32910](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-32910)
|
||||
|
||||
यहां तक कि यदि घटक भिन्न हैं, तो इस सुरक्षा कमजोरी का शोषण पिछले वाले के समान है। इस मामले में, हम **`application.app/Contents`** से एक Apple Archive बनाएंगे ताकि **`application.app`** को **Archive Utility** द्वारा अनजिप करते समय क्वारंटाइन विशेषता न मिले।
|
||||
यहां तक कि यदि घटक भिन्न हैं, तो इस सुरक्षा कमजोरी का शोषण पिछले वाले के समान है। इस मामले में, हम **`application.app/Contents`** से एक Apple Archive बनाएंगे ताकि **`application.app`** को **Archive Utility** द्वारा डिकंप्रेस करते समय क्वारंटाइन विशेषता न मिले।
|
||||
```bash
|
||||
aa archive -d test.app/Contents -o test.app.aar
|
||||
```
|
||||
@ -356,7 +416,7 @@ Check the [**original report**](https://www.jamf.com/blog/jamf-threat-labs-macos
|
||||
|
||||
### [CVE-2022-42821](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/)
|
||||
|
||||
ACL **`writeextattr`** का उपयोग किसी को भी फ़ाइल में एक विशेषता लिखने से रोकने के लिए किया जा सकता है:
|
||||
ACL **`writeextattr`** का उपयोग किसी को भी फ़ाइल में विशेषता लिखने से रोकने के लिए किया जा सकता है:
|
||||
```bash
|
||||
touch /tmp/no-attr
|
||||
chmod +a "everyone deny writeextattr" /tmp/no-attr
|
||||
@ -372,9 +432,9 @@ ditto -c -k test test.zip
|
||||
python3 -m http.server
|
||||
# Download the zip from the browser and decompress it, the file should be without a quarantine xattr
|
||||
```
|
||||
[**मूल रिपोर्ट**](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/) के लिए अधिक जानकारी देखें।
|
||||
Check the [**original report**](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/) for more information.
|
||||
|
||||
ध्यान दें कि इसे AppleArchives के साथ भी शोषित किया जा सकता है:
|
||||
Note that this could also be exploited with AppleArchives:
|
||||
```bash
|
||||
mkdir app
|
||||
touch app/test
|
||||
@ -383,7 +443,7 @@ aa archive -d app -o test.aar
|
||||
```
|
||||
### [CVE-2023-27943](https://blog.f-secure.com/discovery-of-gatekeeper-bypass-cve-2023-27943/)
|
||||
|
||||
यह पता चला कि **Google Chrome डाउनलोड की गई फ़ाइलों के लिए क्वारंटाइन विशेषता सेट नहीं कर रहा था** कुछ macOS आंतरिक समस्याओं के कारण।
|
||||
यह पाया गया कि **Google Chrome डाउनलोड की गई फ़ाइलों के लिए क्वारंटाइन विशेषता सेट नहीं कर रहा था** कुछ macOS आंतरिक समस्याओं के कारण।
|
||||
|
||||
### [CVE-2023-27951](https://redcanary.com/blog/gatekeeper-bypass-vulnerabilities/)
|
||||
|
||||
@ -397,8 +457,8 @@ aa archive -d test/ -o test.aar
|
||||
|
||||
# If you downloaded the resulting test.aar and decompress it, the file test/._a won't have a quarantitne attribute
|
||||
```
|
||||
एक फ़ाइल बनाने में सक्षम होना जिसमें क्वारंटाइन विशेषता सेट नहीं होगी, यह **गेटकीपर को बायपास करना संभव था।** चाल यह थी कि **एप्पलडबल नाम सम्मेलन** का उपयोग करके एक **DMG फ़ाइल एप्लिकेशन** बनाना (इसे `._` से शुरू करना) और इस छिपी हुई फ़ाइल के लिए एक **दृश्यमान फ़ाइल के रूप में एक सिम लिंक बनाना** जिसमें क्वारंटाइन विशेषता नहीं हो।\
|
||||
जब **dmg फ़ाइल को निष्पादित किया जाता है**, क्योंकि इसमें क्वारंटाइन विशेषता नहीं है, यह **गेटकीपर को बायपास कर देगी।**
|
||||
एक फ़ाइल बनाने में सक्षम होना जिसमें क्वारंटाइन विशेषता सेट नहीं होगी, यह **गेटकीपर को बायपास करना संभव था।** चाल यह थी कि **एप्पलडबल नाम सम्मेलन** का उपयोग करके एक **DMG फ़ाइल एप्लिकेशन** बनाना (इसे `._` से शुरू करना) और इस छिपी हुई फ़ाइल के लिए एक **दृश्यमान फ़ाइल के रूप में सिम लिंक बनाना** जिसमें क्वारंटाइन विशेषता नहीं हो।\
|
||||
जब **dmg फ़ाइल को निष्पादित किया जाता है**, क्योंकि इसमें क्वारंटाइन विशेषता नहीं होती, यह **गेटकीपर को बायपास कर देगी।**
|
||||
```bash
|
||||
# Create an app bundle with the backdoor an call it app.app
|
||||
|
||||
@ -414,18 +474,34 @@ ln -s ._app.dmg s/app/app.dmg
|
||||
echo "[+] compressing files"
|
||||
aa archive -d s/ -o app.aar
|
||||
```
|
||||
### uchg (from this [talk](https://codeblue.jp/2023/result/pdf/cb23-bypassing-macos-security-and-privacy-mechanisms-from-gatekeeper-to-system-integrity-protection-by-koh-nakagawa.pdf))
|
||||
### [CVE-2023-41067]
|
||||
|
||||
- एक ऐप वाला डायरेक्टरी बनाएं।
|
||||
macOS Sonoma 14.0 में एक Gatekeeper बायपास को ठीक किया गया, जिसने तैयार किए गए ऐप्स को बिना प्रम्प्ट के चलाने की अनुमति दी। पैचिंग के बाद विवरण सार्वजनिक रूप से प्रकट किए गए और समस्या को ठीक करने से पहले इसे सक्रिय रूप से शोषण किया गया। सुनिश्चित करें कि Sonoma 14.0 या बाद का संस्करण स्थापित है।
|
||||
|
||||
### [CVE-2024-27853]
|
||||
|
||||
macOS 14.4 (मार्च 2024 में जारी) में एक Gatekeeper बायपास, जो `libarchive` द्वारा दुर्भावनापूर्ण ZIPs के प्रबंधन से उत्पन्न हुआ, ने ऐप्स को मूल्यांकन से बचने की अनुमति दी। Apple ने इस समस्या को संबोधित करते हुए 14.4 या बाद के संस्करण में अपडेट करें।
|
||||
|
||||
### तृतीय-पक्ष अनार्काइवर्स द्वारा क्वारंटाइन का गलत प्रचार (2023–2024)
|
||||
|
||||
लोकप्रिय निष्कर्षण उपकरणों (जैसे, The Unarchiver) में कई कमजोरियों के कारण आर्काइव से निकाले गए फ़ाइलों में `com.apple.quarantine` xattr नहीं होता, जिससे Gatekeeper बायपास के अवसर मिलते हैं। परीक्षण करते समय हमेशा macOS Archive Utility या पैच किए गए उपकरणों पर भरोसा करें, और निष्कर्षण के बाद xattrs को मान्य करें।
|
||||
|
||||
### uchg (इस [बातचीत](https://codeblue.jp/2023/result/pdf/cb23-bypassing-macos-security-and-privacy-mechanisms-from-gatekeeper-to-system-integrity-protection-by-koh-nakagawa.pdf) से)
|
||||
|
||||
- एक ऐप वाला एक निर्देशिका बनाएं।
|
||||
- ऐप में uchg जोड़ें।
|
||||
- ऐप को tar.gz फ़ाइल में संकुचित करें।
|
||||
- tar.gz फ़ाइल को एक पीड़ित को भेजें।
|
||||
- पीड़ित tar.gz फ़ाइल खोलता है और ऐप चलाता है।
|
||||
- Gatekeeper ऐप की जांच नहीं करता है।
|
||||
|
||||
### Prevent Quarantine xattr
|
||||
### क्वारंटाइन xattr को रोकें
|
||||
|
||||
एक ".app" बंडल में यदि क्वारंटाइन xattr जोड़ा नहीं गया है, तो इसे निष्पादित करते समय **Gatekeeper सक्रिय नहीं होगा**।
|
||||
|
||||
## संदर्भ
|
||||
|
||||
- Apple Platform Security: macOS Sonoma 14.4 की सुरक्षा सामग्री के बारे में (CVE-2024-27853 शामिल है) – [https://support.apple.com/en-us/HT214084](https://support.apple.com/en-us/HT214084)
|
||||
- Eclectic Light: macOS अब ऐप्स की उत्पत्ति को कैसे ट्रैक करता है – [https://eclecticlight.co/2023/05/10/how-macos-now-tracks-the-provenance-of-apps/](https://eclecticlight.co/2023/05/10/how-macos-now-tracks-the-provenance-of-apps/)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user