macOS Gatekeeper / Quarantine / XProtect
Gatekeeper
Gatekeeper एक सुरक्षा विशेषता है जो Mac ऑपरेटिंग सिस्टम के लिए विकसित की गई है, जिसका उद्देश्य यह सुनिश्चित करना है कि उपयोगकर्ता अपने सिस्टम पर केवल विश्वसनीय सॉफ़्टवेयर चलाएँ। यह सॉफ़्टवेयर को मान्य करके कार्य करता है जो उपयोगकर्ता ऐप स्टोर के बाहर डाउनलोड करता है और खोलने का प्रयास करता है, जैसे कि एक ऐप, एक प्लग-इन, या एक इंस्टॉलर पैकेज।
Gatekeeper का मुख्य तंत्र इसके सत्यापन प्रक्रिया में निहित है। यह जांचता है कि क्या डाउनलोड किया गया सॉफ़्टवेयर एक मान्यता प्राप्त डेवलपर द्वारा हस्ताक्षरित है, जो सॉफ़्टवेयर की प्रामाणिकता सुनिश्चित करता है। इसके अलावा, यह यह सुनिश्चित करता है कि सॉफ़्टवेयर Apple द्वारा नोटरीकृत है, यह पुष्टि करते हुए कि यह ज्ञात दुर्भावनापूर्ण सामग्री से मुक्त है और नोटरीकरण के बाद इसमें छेड़छाड़ नहीं की गई है।
इसके अतिरिक्त, Gatekeeper उपयोगकर्ता नियंत्रण और सुरक्षा को पहली बार डाउनलोड किए गए सॉफ़्टवेयर को खोलने के लिए उपयोगकर्ताओं से अनुमोदन प्राप्त करके मजबूत करता है। यह सुरक्षा उपाय उपयोगकर्ताओं को संभावित हानिकारक निष्पादन योग्य कोड को अनजाने में चलाने से रोकने में मदद करता है जिसे वे एक हानिरहित डेटा फ़ाइल के रूप में गलत समझ सकते हैं।
Application Signatures
एप्लिकेशन हस्ताक्षर, जिन्हें कोड हस्ताक्षर भी कहा जाता है, Apple की सुरक्षा अवसंरचना का एक महत्वपूर्ण घटक हैं। इन्हें सॉफ़्टवेयर लेखक की पहचान की पुष्टि करने और यह सुनिश्चित करने के लिए उपयोग किया जाता है कि कोड को अंतिम बार हस्ताक्षरित किए जाने के बाद से इसमें छेड़छाड़ नहीं की गई है।
यहाँ यह कैसे काम करता है:
एप्लिकेशन को हस्ताक्षरित करना: जब एक डेवलपर अपने एप्लिकेशन को वितरित करने के लिए तैयार होता है, तो वह एक निजी कुंजी का उपयोग करके एप्लिकेशन को हस्ताक्षरित करता है। यह निजी कुंजी एक प्रमाणपत्र से जुड़ी होती है जो Apple डेवलपर प्रोग्राम में नामांकित होने पर डेवलपर को जारी की जाती है। हस्ताक्षर प्रक्रिया में ऐप के सभी भागों का एक क्रिप्टोग्राफिक हैश बनाना और इस हैश को डेवलपर की निजी कुंजी के साथ एन्क्रिप्ट करना शामिल है।
एप्लिकेशन का वितरण: हस्ताक्षरित एप्लिकेशन फिर उपयोगकर्ताओं को डेवलपर के प्रमाणपत्र के साथ वितरित किया जाता है, जिसमें संबंधित सार्वजनिक कुंजी होती है।
एप्लिकेशन का सत्यापन: जब एक उपयोगकर्ता एप्लिकेशन को डाउनलोड करता है और चलाने का प्रयास करता है, तो उनका Mac ऑपरेटिंग सिस्टम डेवलपर के प्रमाणपत्र से सार्वजनिक कुंजी का उपयोग करके हैश को डिक्रिप्ट करता है। फिर यह एप्लिकेशन की वर्तमान स्थिति के आधार पर हैश की पुनः गणना करता है और इसे डिक्रिप्टेड हैश के साथ तुलना करता है। यदि वे मेल खाते हैं, तो इसका मतलब है कि एप्लिकेशन को संशोधित नहीं किया गया है जब से डेवलपर ने इसे हस्ताक्षरित किया था, और सिस्टम एप्लिकेशन को चलाने की अनुमति देता है।
एप्लिकेशन हस्ताक्षर Apple के Gatekeeper तकनीक का एक आवश्यक हिस्सा हैं। जब एक उपयोगकर्ता इंटरनेट से डाउनलोड किए गए एप्लिकेशन को खोलने का प्रयास करता है, तो Gatekeeper एप्लिकेशन हस्ताक्षर की पुष्टि करता है। यदि इसे एक ज्ञात डेवलपर को Apple द्वारा जारी किए गए प्रमाणपत्र के साथ हस्ताक्षरित किया गया है और कोड में छेड़छाड़ नहीं की गई है, तो Gatekeeper एप्लिकेशन को चलाने की अनुमति देता है। अन्यथा, यह एप्लिकेशन को ब्लॉक कर देता है और उपयोगकर्ता को सूचित करता है।
macOS Catalina से शुरू होकर, Gatekeeper यह भी जांचता है कि क्या एप्लिकेशन को Apple द्वारा नोटरीकृत किया गया है, जो सुरक्षा की एक अतिरिक्त परत जोड़ता है। नोटरीकरण प्रक्रिया एप्लिकेशन की ज्ञात सुरक्षा समस्याओं और दुर्भावनापूर्ण कोड की जांच करती है, और यदि ये जांच पास होती हैं, तो Apple एप्लिकेशन में एक टिकट जोड़ता है जिसे Gatekeeper सत्यापित कर सकता है।
Check Signatures
जब कुछ malware sample की जांच करते हैं, तो आपको हमेशा signature की जांच करनी चाहिए क्योंकि developer जिसने इसे हस्ताक्षरित किया है, वह पहले से ही malware से related हो सकता है।
Notarization
Apple की नोटरीकरण प्रक्रिया उपयोगकर्ताओं को संभावित हानिकारक सॉफ़्टवेयर से बचाने के लिए एक अतिरिक्त सुरक्षा उपाय के रूप में कार्य करती है। इसमें डेवलपर द्वारा उनके आवेदन को Apple's Notary Service द्वारा परीक्षा के लिए प्रस्तुत करना शामिल है, जिसे App Review के साथ भ्रमित नहीं किया जाना चाहिए। यह सेवा एक स्वचालित प्रणाली है जो प्रस्तुत सॉफ़्टवेयर की जांच करती है कि उसमें दुष्ट सामग्री और कोड-हस्ताक्षर के साथ कोई संभावित समस्याएँ हैं या नहीं।
यदि सॉफ़्टवेयर इस निरीक्षण को बिना किसी चिंता के पास कर लेता है, तो Notary Service एक नोटरीकरण टिकट उत्पन्न करती है। फिर डेवलपर को इस टिकट को अपने सॉफ़्टवेयर से संलग्न करना आवश्यक है, जिसे 'स्टेपलिंग' के रूप में जाना जाता है। इसके अलावा, नोटरीकरण टिकट को ऑनलाइन भी प्रकाशित किया जाता है जहाँ Gatekeeper, Apple की सुरक्षा तकनीक, इसे एक्सेस कर सकती है।
उपयोगकर्ता द्वारा सॉफ़्टवेयर की पहली स्थापना या निष्पादन पर, नोटरीकरण टिकट की उपस्थिति - चाहे वह निष्पादन योग्य के साथ स्टेपल किया गया हो या ऑनलाइन पाया गया हो - Gatekeeper को सूचित करती है कि सॉफ़्टवेयर को Apple द्वारा नोटरीकरण किया गया है। परिणामस्वरूप, Gatekeeper प्रारंभिक लॉन्च संवाद में एक वर्णनात्मक संदेश प्रदर्शित करता है, जो यह संकेत करता है कि सॉफ़्टवेयर को Apple द्वारा दुष्ट सामग्री के लिए जांचा गया है। यह प्रक्रिया उपयोगकर्ताओं के लिए उस सॉफ़्टवेयर की सुरक्षा में विश्वास को बढ़ाती है जिसे वे अपने सिस्टम पर स्थापित या चलाते हैं।
Enumerating GateKeeper
GateKeeper दोनों है, कई सुरक्षा घटक जो अविश्वसनीय ऐप्स को निष्पादित होने से रोकते हैं और एक घटक भी है।
आप GateKeeper की स्थिति को देख सकते हैं:
ध्यान दें कि GateKeeper सिग्नेचर जांच केवल क्वारंटाइन विशेषता वाले फ़ाइलों के लिए की जाती है, न कि हर फ़ाइल के लिए।
GateKeeper यह जांचेगा कि प्राथमिकताओं और सिग्नेचर के अनुसार एक बाइनरी को निष्पादित किया जा सकता है:
यह कॉन्फ़िगरेशन रखने वाला डेटाबेस /var/db/SystemPolicy
में स्थित है। आप इसे रूट के रूप में जांच सकते हैं:
ध्यान दें कि पहला नियम "App Store" पर समाप्त होता है और दूसरा "Developer ID" पर, और पिछले चित्र में यह App Store और पहचाने गए डेवलपर्स से ऐप्स को निष्पादित करने के लिए सक्षम था। यदि आप उस सेटिंग को App Store में संशोधित करते हैं, तो "Notarized Developer ID" नियम गायब हो जाएंगे।
इसके अलावा प्रकार GKE के हजारों नियम भी हैं:
ये हैशेस /var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth
, /var/db/gke.bundle/Contents/Resources/gk.db
और /var/db/gkopaque.bundle/Contents/Resources/gkopaque.db
से आते हैं।
या आप पिछले जानकारी को इस तरह सूचीबद्ध कर सकते हैं:
The options --master-disable
and --global-disable
of spctl
will completely अक्षम these signature checks:
जब पूरी तरह से सक्षम किया जाता है, तो एक नया विकल्प दिखाई देगा:
यह संभव है कि जांचें कि क्या एक ऐप को GateKeeper द्वारा अनुमति दी जाएगी:
GateKeeper में कुछ ऐप्स के निष्पादन की अनुमति देने के लिए नए नियम जोड़ना संभव है:
Quarantine Files
जब एक एप्लिकेशन या फ़ाइल डाउनलोड की जाती है, तो विशिष्ट macOS एप्लिकेशन जैसे वेब ब्राउज़र या ईमेल क्लाइंट एक विस्तारित फ़ाइल विशेषता जोड़ते हैं, जिसे सामान्यतः "क्वारंटाइन ध्वज" के रूप में जाना जाता है, डाउनलोड की गई फ़ाइल पर। यह विशेषता एक सुरक्षा उपाय के रूप में कार्य करती है ताकि फ़ाइल को एक अविश्वसनीय स्रोत (इंटरनेट) से आने के रूप में चिन्हित किया जा सके, और संभावित रूप से जोखिम उठाने वाली हो। हालाँकि, सभी एप्लिकेशन इस विशेषता को नहीं जोड़ते हैं, उदाहरण के लिए, सामान्य BitTorrent क्लाइंट सॉफ़्टवेयर आमतौर पर इस प्रक्रिया को बायपास करता है।
क्वारंटाइन ध्वज की उपस्थिति macOS के गेटकीपर सुरक्षा फ़ीचर को संकेत देती है जब एक उपयोगकर्ता फ़ाइल को निष्पादित करने का प्रयास करता है।
यदि क्वारंटाइन ध्वज मौजूद नहीं है (जैसे कुछ BitTorrent क्लाइंट के माध्यम से डाउनलोड की गई फ़ाइलों के साथ), तो गेटकीपर के चेक किए जा सकते हैं। इसलिए, उपयोगकर्ताओं को कम सुरक्षित या अज्ञात स्रोतों से डाउनलोड की गई फ़ाइलों को खोलते समय सावधानी बरतनी चाहिए।
कोड हस्ताक्षरों की वैधता की जांच एक संसाधन-गहन प्रक्रिया है जिसमें कोड और इसके सभी बंडल किए गए संसाधनों के क्रिप्टोग्राफ़िक हैश उत्पन्न करना शामिल है। इसके अलावा, प्रमाणपत्र की वैधता की जांच करने में Apple के सर्वरों पर एक ऑनलाइन जांच करना शामिल है यह देखने के लिए कि क्या इसे जारी किए जाने के बाद रद्द कर दिया गया है। इन कारणों से, एक पूर्ण कोड हस्ताक्षर और नोटरीकरण जांच हर बार एक ऐप लॉन्च होने पर चलाना व्यावहारिक नहीं है।
इसलिए, ये जांचें केवल क्वारंटाइन विशेषता वाले ऐप्स को निष्पादित करते समय चलती हैं।
यह विशेषता फ़ाइल बनाने/डाउनलोड करने वाले एप्लिकेशन द्वारा सेट की जानी चाहिए।
हालाँकि, जो फ़ाइलें सैंडबॉक्स की गई हैं, वे हर फ़ाइल पर यह विशेषता सेट करेंगी जो वे बनाती हैं। और गैर-सैंडबॉक्स ऐप्स इसे स्वयं सेट कर सकते हैं, या Info.plist में LSFileQuarantineEnabled कुंजी निर्दिष्ट कर सकते हैं, जो सिस्टम को फ़ाइलों पर com.apple.quarantine
विस्तारित विशेषता सेट करने के लिए बनाएगी,
इसके अलावा, एक प्रक्रिया द्वारा बनाई गई सभी फ़ाइलें qtn_proc_apply_to_self
को क्वारंटाइन किया गया है। या API qtn_file_apply_to_path
एक निर्दिष्ट फ़ाइल पथ पर क्वारंटाइन विशेषता जोड़ता है।
इसकी स्थिति जांचना और सक्षम/अक्षम करना (रूट आवश्यक) संभव है:
आप यह भी जान सकते हैं कि क्या किसी फ़ाइल में क्वारंटाइन विस्तारित विशेषता है:
चेक करें value extended attributes का और पता करें कि कौन सा ऐप क्वारंटाइन attr को लिखा:
वास्तव में एक प्रक्रिया "जो फ़ाइलें वह बनाती है, उन पर संगरोध ध्वज सेट कर सकती है" (मैंने एक बनाई गई फ़ाइल में USER_APPROVED ध्वज लागू करने की कोशिश की लेकिन यह लागू नहीं हुआ):
Last updated