macOS SIP
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
System Integrity Protection (SIP) macOS में एक तंत्र है जो सबसे विशेषाधिकार प्राप्त उपयोगकर्ताओं को भी महत्वपूर्ण सिस्टम फ़ोल्डरों में अनधिकृत परिवर्तनों से रोकने के लिए डिज़ाइन किया गया है। यह सुविधा सिस्टम की अखंडता बनाए रखने में महत्वपूर्ण भूमिका निभाती है, जैसे कि संरक्षित क्षेत्रों में फ़ाइलों को जोड़ना, संशोधित करना या हटाना। SIP द्वारा संरक्षित प्राथमिक फ़ोल्डर में शामिल हैं:
/System
/bin
/sbin
/usr
SIP के व्यवहार को नियंत्रित करने वाले नियम /System/Library/Sandbox/rootless.conf
में स्थित कॉन्फ़िगरेशन फ़ाइल में परिभाषित किए गए हैं। इस फ़ाइल में, उन पथों को जो एक तारांकित चिह्न (*) से पूर्ववर्ती होते हैं, अन्यथा कठोर SIP प्रतिबंधों के अपवाद के रूप में दर्शाया गया है।
नीचे दिए गए उदाहरण पर विचार करें:
यह स्निपेट यह संकेत करता है कि जबकि SIP सामान्यतः /usr
निर्देशिका को सुरक्षित करता है, कुछ विशिष्ट उपनिर्देशिकाएँ (/usr/libexec/cups
, /usr/local
, और /usr/share/man
) हैं जहाँ संशोधन की अनुमति है, जैसा कि उनके पथों के पहले अsterisk (*) द्वारा संकेतित है।
यह सत्यापित करने के लिए कि क्या कोई निर्देशिका या फ़ाइल SIP द्वारा सुरक्षित है, आप ls -lOd
कमांड का उपयोग कर सकते हैं ताकि restricted
या sunlnk
ध्वज की उपस्थिति की जांच की जा सके। उदाहरण के लिए:
इस मामले में, sunlnk
ध्वज यह दर्शाता है कि /usr/libexec/cups
निर्देशिका स्वयं हटाई नहीं जा सकती, हालांकि इसके भीतर फ़ाइलें बनाई, संशोधित या हटाई जा सकती हैं।
दूसरी ओर:
यहाँ, restricted
ध्वज इंगित करता है कि /usr/libexec
निर्देशिका SIP द्वारा संरक्षित है। SIP-संरक्षित निर्देशिका में, फ़ाइलें बनाई, संशोधित या हटाई नहीं जा सकतीं।
इसके अलावा, यदि एक फ़ाइल में com.apple.rootless
विस्तारित attribute है, तो वह फ़ाइल भी SIP द्वारा संरक्षित होगी।
ध्यान दें कि Sandbox हुक hook_vnode_check_setextattr
विस्तारित attribute com.apple.rootless
को संशोधित करने के किसी भी प्रयास को रोकता है।
SIP अन्य रूट क्रियाओं को भी सीमित करता है जैसे:
अविश्वसनीय कर्नेल एक्सटेंशन लोड करना
Apple-हस्ताक्षरित प्रक्रियाओं के लिए कार्य-ports प्राप्त करना
NVRAM चर को संशोधित करना
कर्नेल डिबगिंग की अनुमति देना
विकल्प nvram चर में एक बिटफ्लैग के रूप में बनाए रखे जाते हैं (csr-active-config
Intel पर और lp-sip0
ARM के लिए बूट किए गए डिवाइस ट्री से पढ़ा जाता है)। आप XNU स्रोत कोड में csr.sh
में ध्वज पा सकते हैं:
आप निम्नलिखित कमांड के साथ जांच सकते हैं कि क्या SIP आपके सिस्टम पर सक्षम है:
यदि आपको SIP को निष्क्रिय करने की आवश्यकता है, तो आपको अपने कंप्यूटर को रिकवरी मोड में पुनः प्रारंभ करना होगा (स्टार्टअप के दौरान Command+R दबाकर), फिर निम्नलिखित कमांड निष्पादित करें:
यदि आप SIP को सक्षम रखना चाहते हैं लेकिन डिबगिंग सुरक्षा को हटाना चाहते हैं, तो आप ऐसा कर सकते हैं:
अनसाइन किए गए कर्नेल एक्सटेंशनों (kexts) को लोड करने की अनुमति नहीं देता, यह सुनिश्चित करता है कि केवल सत्यापित एक्सटेंशन सिस्टम कर्नेल के साथ इंटरैक्ट करें।
macOS सिस्टम प्रक्रियाओं का डिबगिंग रोकता है, अनधिकृत पहुंच और संशोधन से कोर सिस्टम घटकों की सुरक्षा करता है।
dtrace जैसे उपकरणों को सिस्टम प्रक्रियाओं का निरीक्षण करने से रोकता है, सिस्टम के संचालन की अखंडता की और सुरक्षा करता है।
इस वार्ता में SIP जानकारी के बारे में अधिक जानें.
com.apple.rootless.xpc.bootstrap
: launchd को नियंत्रित करें
com.apple.rootless.install[.heritable]
: फ़ाइल प्रणाली तक पहुंच
com.apple.rootless.kext-management
: kext_request
com.apple.rootless.datavault.controller
: UF_DATAVAULT प्रबंधित करें
com.apple.rootless.xpc.bootstrap
: XPC सेटअप क्षमताएँ
com.apple.rootless.xpc.effective-root
: launchd XPC के माध्यम से रूट
com.apple.rootless.restricted-block-devices
: कच्चे ब्लॉक उपकरणों तक पहुंच
com.apple.rootless.internal.installer-equivalent
: बिना किसी प्रतिबंध के फ़ाइल प्रणाली तक पहुंच
com.apple.rootless.restricted-nvram-variables[.heritable]
: NVRAM तक पूर्ण पहुंच
com.apple.rootless.storage.label
: com.apple.rootless xattr द्वारा प्रतिबंधित फ़ाइलों को संबंधित लेबल के साथ संशोधित करें
com.apple.rootless.volume.VM.label
: वॉल्यूम पर VM स्वैप बनाए रखें
SIP को बायपास करने से एक हमलावर को:
उपयोगकर्ता डेटा तक पहुंच: सभी उपयोगकर्ता खातों से संवेदनशील उपयोगकर्ता डेटा जैसे मेल, संदेश, और सफारी इतिहास पढ़ें।
TCC बायपास: वेबकैम, माइक्रोफोन, और अन्य संसाधनों तक अनधिकृत पहुंच देने के लिए TCC (Transparency, Consent, and Control) डेटाबेस को सीधे संशोधित करें।
स्थायीता स्थापित करें: SIP-सुरक्षित स्थानों में मैलवेयर रखें, जिससे इसे हटाने के लिए प्रतिरोधी बनाया जा सके, यहां तक कि रूट विशेषाधिकारों द्वारा भी। इसमें मैलवेयर हटाने के उपकरण (MRT) के साथ छेड़छाड़ करने की संभावना भी शामिल है।
कर्नेल एक्सटेंशनों को लोड करें: हालांकि अतिरिक्त सुरक्षा उपाय हैं, SIP को बायपास करना अनसाइन किए गए कर्नेल एक्सटेंशनों को लोड करने की प्रक्रिया को सरल बनाता है।
एप्पल के प्रमाणपत्र से हस्ताक्षरित इंस्टॉलर पैकेज इसकी सुरक्षा को बायपास कर सकते हैं। इसका मतलब है कि यदि वे SIP-सुरक्षित निर्देशिकाओं को संशोधित करने का प्रयास करते हैं तो मानक डेवलपर्स द्वारा हस्ताक्षरित पैकेज भी अवरुद्ध हो जाएंगे।
एक संभावित छिद्र यह है कि यदि एक फ़ाइल rootless.conf
में निर्दिष्ट है लेकिन वर्तमान में मौजूद नहीं है, तो इसे बनाया जा सकता है। मैलवेयर इसका लाभ उठाकर सिस्टम पर स्थायीता स्थापित कर सकता है। उदाहरण के लिए, एक दुर्भावनापूर्ण प्रोग्राम /System/Library/LaunchDaemons
में एक .plist फ़ाइल बना सकता है यदि यह rootless.conf
में सूचीबद्ध है लेकिन मौजूद नहीं है।
अधिकार com.apple.rootless.install.heritable
SIP को बायपास करने की अनुमति देता है
यह पाया गया कि सिस्टम द्वारा इसके कोड हस्ताक्षर की पुष्टि करने के बाद इंस्टॉलर पैकेज को स्वैप करना संभव था और फिर, सिस्टम मूल के बजाय दुर्भावनापूर्ण पैकेज स्थापित करेगा। चूंकि ये क्रियाएँ system_installd
द्वारा की गई थीं, यह SIP को बायपास करने की अनुमति देगा।
यदि एक पैकेज एक माउंटेड इमेज या बाहरी ड्राइव से स्थापित किया गया था तो इंस्टॉलर उस फ़ाइल प्रणाली से बाइनरी को निष्पादित करेगा (SIP-सुरक्षित स्थान से नहीं), जिससे system_installd
एक मनमाना बाइनरी निष्पादित करेगा।
इस ब्लॉग पोस्ट के शोधकर्ताओं ने macOS के सिस्टम इंटीग्रिटी प्रोटेक्शन (SIP) तंत्र में एक भेद्यता का पता लगाया, जिसे 'Shrootless' भेद्यता कहा गया। यह भेद्यता system_installd
डेमन के चारों ओर केंद्रित है, जिसमें एक अधिकार है, com.apple.rootless.install.heritable
, जो इसके किसी भी चाइल्ड प्रोसेस को SIP के फ़ाइल प्रणाली प्रतिबंधों को बायपास करने की अनुमति देता है।
system_installd
डेमन उन पैकेजों को स्थापित करेगा जो Apple द्वारा हस्ताक्षरित हैं।
शोधकर्ताओं ने पाया कि Apple-साइन किए गए पैकेज (.pkg फ़ाइल) की स्थापना के दौरान, system_installd
पैकेज में शामिल किसी भी पोस्ट-इंस्टॉल स्क्रिप्ट को निष्पादित करता है। ये स्क्रिप्ट डिफ़ॉल्ट शेल, zsh
द्वारा निष्पादित की जाती हैं, जो स्वचालित रूप से /etc/zshenv
फ़ाइल से कमांड चलाती है, यदि यह मौजूद है, यहां तक कि गैर-इंटरएक्टिव मोड में भी। इस व्यवहार का उपयोग हमलावरों द्वारा किया जा सकता है: एक दुर्भावनापूर्ण /etc/zshenv
फ़ाइल बनाकर और system_installd
के zsh
को सक्रिय करने की प्रतीक्षा करके, वे डिवाइस पर मनमाने ऑपरेशन कर सकते हैं।
इसके अलावा, यह पाया गया कि /etc/zshenv
को एक सामान्य हमले की तकनीक के रूप में उपयोग किया जा सकता है, न कि केवल SIP बायपास के लिए। प्रत्येक उपयोगकर्ता प्रोफ़ाइल में एक ~/.zshenv
फ़ाइल होती है, जो /etc/zshenv
की तरह व्यवहार करती है लेकिन रूट अनुमतियों की आवश्यकता नहीं होती। इस फ़ाइल का उपयोग एक स्थायीता तंत्र के रूप में किया जा सकता है, जो हर बार zsh
शुरू होने पर ट्रिगर होता है, या विशेषाधिकार बढ़ाने के तंत्र के रूप में। यदि एक व्यवस्थापक उपयोगकर्ता sudo -s
या sudo <command>
का उपयोग करके रूट में बढ़ता है, तो ~/.zshenv
फ़ाइल को ट्रिगर किया जाएगा, प्रभावी रूप से रूट में बढ़ाते हुए।
CVE-2022-22583 में यह पाया गया कि वही system_installd
प्रक्रिया अभी भी दुरुपयोग की जा सकती है क्योंकि यह /tmp
के अंदर SIP द्वारा संरक्षित एक यादृच्छिक नामित फ़ोल्डर के अंदर पोस्ट-इंस्टॉल स्क्रिप्ट डाल रही थी। बात यह है कि /tmp
स्वयं SIP द्वारा संरक्षित नहीं है, इसलिए एक वर्चुअल इमेज को उस पर माउंट करना संभव था, फिर इंस्टॉलर वहां पोस्ट-इंस्टॉल स्क्रिप्ट डालता, वर्चुअल इमेज को अनमाउंट करता, सभी फ़ोल्डरों को फिर से बनाता और पेलोड के साथ पोस्ट इंस्टॉलेशन स्क्रिप्ट जोड़ता।
एक भेद्यता की पहचान की गई जहां fsck_cs
को एक महत्वपूर्ण फ़ाइल को भ्रष्ट करने के लिए गुमराह किया गया, इसकी सांकेतिक लिंक का पालन करने की क्षमता के कारण। विशेष रूप से, हमलावरों ने /dev/diskX
से फ़ाइल /System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist
के लिए एक लिंक तैयार किया। /dev/diskX
पर fsck_cs
को निष्पादित करने से Info.plist
का भ्रष्टाचार हुआ। इस फ़ाइल की अखंडता ऑपरेटिंग सिस्टम के SIP (सिस्टम इंटीग्रिटी प्रोटेक्शन) के लिए महत्वपूर्ण है, जो कर्नेल एक्सटेंशनों के लोडिंग को नियंत्रित करता है। एक बार भ्रष्ट होने पर, SIP की कर्नेल अपवाद प्रबंधन की क्षमता प्रभावित होती है।
इस भेद्यता का लाभ उठाने के लिए आदेश हैं:
इस कमजोरियों के शोषण के गंभीर परिणाम हैं। Info.plist
फ़ाइल, जो सामान्यतः कर्नेल एक्सटेंशन के लिए अनुमतियों का प्रबंधन करने के लिए जिम्मेदार होती है, अप्रभावी हो जाती है। इसमें कुछ एक्सटेंशनों, जैसे AppleHWAccess.kext
को ब्लैकलिस्ट करने की असमर्थता शामिल है। परिणामस्वरूप, SIP के नियंत्रण तंत्र के खराब होने के कारण, इस एक्सटेंशन को लोड किया जा सकता है, जो सिस्टम की RAM तक अनधिकृत पढ़ने और लिखने की पहुंच प्रदान करता है।
सुरक्षा को बायपास करने के लिए SIP संरक्षित फ़ोल्डरों पर एक नई फ़ाइल प्रणाली को माउंट करना संभव था।
सिस्टम को Install macOS Sierra.app
के भीतर एक एम्बेडेड इंस्टॉलर डिस्क इमेज से बूट करने के लिए सेट किया गया है ताकि OS को अपग्रेड किया जा सके, bless
उपयोगिता का उपयोग करते हुए। उपयोग की जाने वाली कमांड इस प्रकार है:
इस प्रक्रिया की सुरक्षा को खतरा हो सकता है यदि एक हमलावर बूट करने से पहले अपग्रेड इमेज (InstallESD.dmg
) को बदलता है। रणनीति में एक डायनामिक लोडर (dyld) को एक दुर्भावनापूर्ण संस्करण (libBaseIA.dylib
) के साथ प्रतिस्थापित करना शामिल है। यह प्रतिस्थापन तब होता है जब इंस्टॉलर शुरू होता है, हमलावर के कोड का निष्पादन होता है।
हमलावर का कोड अपग्रेड प्रक्रिया के दौरान नियंत्रण प्राप्त करता है, इंस्टॉलर पर सिस्टम के विश्वास का लाभ उठाते हुए। हमला InstallESD.dmg
इमेज को मेथड स्विज़लिंग के माध्यम से बदलने के द्वारा आगे बढ़ता है, विशेष रूप से extractBootBits
मेथड को लक्षित करता है। इससे डिस्क इमेज का उपयोग करने से पहले दुर्भावनापूर्ण कोड को इंजेक्ट करने की अनुमति मिलती है।
इसके अलावा, InstallESD.dmg
के भीतर, एक BaseSystem.dmg
है, जो अपग्रेड कोड की रूट फ़ाइल प्रणाली के रूप में कार्य करता है। इसमें डायनामिक लाइब्रेरी को इंजेक्ट करने से दुर्भावनापूर्ण कोड को OS-स्तरीय फ़ाइलों को बदलने में सक्षम प्रक्रिया के भीतर कार्य करने की अनुमति मिलती है, जिससे सिस्टम के समझौते की संभावना काफी बढ़ जाती है।
DEF CON 31 से इस वार्ता में दिखाया गया है कि systemmigrationd
(जो SIP को बायपास कर सकता है) एक bash और एक perl स्क्रिप्ट को निष्पादित करता है, जिसे env वेरिएबल BASH_ENV
और PERL5OPT
के माध्यम से दुरुपयोग किया जा सकता है।
जैसा कि इस ब्लॉग पोस्ट में विस्तृत किया गया है, InstallAssistant.pkg
पैकेज से एक postinstall
स्क्रिप्ट निष्पादित हो रही थी:
and यह संभव था कि ${SHARED_SUPPORT_PATH}/SharedSupport.dmg
में एक symlink बनाया जाए जो एक उपयोगकर्ता को किसी भी फ़ाइल को अनरिस्ट्रिक्ट करने की अनुमति देता है, SIP सुरक्षा को बायपास करते हुए।
अधिकार com.apple.rootless.install
SIP को बायपास करने की अनुमति देता है
अधिकार com.apple.rootless.install
macOS पर सिस्टम इंटीग्रिटी प्रोटेक्शन (SIP) को बायपास करने के लिए जाना जाता है। यह विशेष रूप से CVE-2022-26712 के संदर्भ में उल्लेखित किया गया था।
इस विशेष मामले में, /System/Library/PrivateFrameworks/ShoveService.framework/Versions/A/XPCServices/SystemShoveService.xpc
पर स्थित सिस्टम XPC सेवा के पास यह अधिकार है। यह संबंधित प्रक्रिया को SIP प्रतिबंधों को दरकिनार करने की अनुमति देता है। इसके अलावा, यह सेवा विशेष रूप से एक विधि प्रस्तुत करती है जो बिना किसी सुरक्षा उपायों को लागू किए फ़ाइलों को स्थानांतरित करने की अनुमति देती है।
सील किए गए सिस्टम स्नैपशॉट एक विशेषता है जिसे Apple ने macOS Big Sur (macOS 11) में सिस्टम इंटीग्रिटी प्रोटेक्शन (SIP) तंत्र के हिस्से के रूप में सुरक्षा और सिस्टम स्थिरता की एक अतिरिक्त परत प्रदान करने के लिए पेश किया है। ये मूल रूप से सिस्टम वॉल्यूम के केवल पढ़ने योग्य संस्करण हैं।
यहाँ एक अधिक विस्तृत नज़र है:
अपरिवर्तनीय सिस्टम: सील किए गए सिस्टम स्नैपशॉट macOS सिस्टम वॉल्यूम को "अपरिवर्तनीय" बनाते हैं, जिसका अर्थ है कि इसे संशोधित नहीं किया जा सकता। यह सुरक्षा या सिस्टम स्थिरता को खतरे में डालने वाले किसी भी अनधिकृत या आकस्मिक परिवर्तनों को रोकता है।
सिस्टम सॉफ़्टवेयर अपडेट: जब आप macOS अपडेट या अपग्रेड स्थापित करते हैं, तो macOS एक नया सिस्टम स्नैपशॉट बनाता है। फिर macOS स्टार्टअप वॉल्यूम इस नए स्नैपशॉट पर स्विच करने के लिए APFS (Apple File System) का उपयोग करता है। अपडेट लागू करने की पूरी प्रक्रिया अधिक सुरक्षित और विश्वसनीय हो जाती है क्योंकि यदि अपडेट के दौरान कुछ गलत होता है, तो सिस्टम हमेशा पिछले स्नैपशॉट पर वापस लौट सकता है।
डेटा पृथक्करण: macOS कैटालिना में पेश किए गए डेटा और सिस्टम वॉल्यूम पृथक्करण के सिद्धांत के साथ, सील किए गए सिस्टम स्नैपशॉट सुविधा सुनिश्चित करती है कि आपके सभी डेटा और सेटिंग्स एक अलग "डेटा" वॉल्यूम पर संग्रहीत हैं। यह पृथक्करण आपके डेटा को सिस्टम से स्वतंत्र बनाता है, जो सिस्टम अपडेट की प्रक्रिया को सरल बनाता है और सिस्टम सुरक्षा को बढ़ाता है।
याद रखें कि ये स्नैपशॉट macOS द्वारा स्वचालित रूप से प्रबंधित होते हैं और आपके डिस्क पर अतिरिक्त स्थान नहीं लेते हैं, APFS की स्थान साझा करने की क्षमताओं के लिए धन्यवाद। यह भी महत्वपूर्ण है कि ये स्नैपशॉट टाइम मशीन स्नैपशॉट से भिन्न होते हैं, जो पूरे सिस्टम के उपयोगकर्ता-सुलभ बैकअप होते हैं।
कमांड diskutil apfs list
APFS वॉल्यूम के विवरण और उनके लेआउट को सूचीबद्ध करता है:
पिछले आउटपुट में यह देखना संभव है कि उपयोगकर्ता-सुलभ स्थान /System/Volumes/Data
के तहत माउंट किए गए हैं।
इसके अलावा, macOS सिस्टम वॉल्यूम स्नैपशॉट /
में माउंट किया गया है और यह सील है (OS द्वारा क्रिप्टोग्राफिक रूप से हस्ताक्षरित)। इसलिए, यदि SIP को बायपास किया जाता है और इसे संशोधित किया जाता है, तो OS अब बूट नहीं होगा।
यह भी संभव है कि सत्यापित करें कि सील सक्षम है चलाकर:
इसके अलावा, स्नैपशॉट डिस्क को केवल-पढ़ने के रूप में भी माउंट किया गया है:
सीखें और AWS हैकिंग का अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) सीखें और GCP हैकिंग का अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)