macOS SIP

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

दूसरे तरीके HackTricks का समर्थन करने के लिए:

मूल जानकारी

macOS में System Integrity Protection (SIP) एक तंत्र है जो अधिकतम विशेषाधिकारी उपयोगकर्ताओं को भी प्रमुख सिस्टम फोल्डर में अनधिकृत परिवर्तन करने से रोकने के लिए डिज़ाइन किया गया है। यह सुरक्षा सुविधा सिस्टम की अखंडता बनाए रखने में महत्वपूर्ण भूमिका निभाती है जिसमें संरक्षित क्षेत्रों में फ़ाइलें जोड़ना, संशोधित करना, या हटाना जैसे कार्रवाईयों को प्रतिबंधित करता है। SIP द्वारा रक्षित मुख्य फोल्डर शामिल हैं:

  • /System

  • /bin

  • /sbin

  • /usr

SIP के व्यवहार के नियम जो निर्धारित करते हैं, वे कॉन्फ़िगरेशन फ़ाइल में परिभाषित होते हैं जो /System/Library/Sandbox/rootless.conf पर स्थित है। इस फ़ाइल में, उन पथों को जो एस्ट्रिक्स (*) से प्रारंभ होते हैं, वे अन्यथा कठोर SIP प्रतिबंधों के लिए अपवाद के रूप में चिह्नित किए जाते हैं।

नीचे दिए गए उदाहरण को ध्यान से देखें:

/usr
* /usr/libexec/cups
* /usr/local
* /usr/share/man

यह स्निपेट सूचित करता है कि जबकि SIP सामान्य रूप से /usr निर्देशिका को सुरक्षित बनाए रखता है, वहां विशेष उपनिर्देशिकाएं (/usr/libexec/cups, /usr/local, और /usr/share/man) हैं जहां संशोधन संभव है, जैसा कि उनके पथों के पहले तारक (*) द्वारा सूचित किया गया है।

एक निर्देशिका या फ़ाइल को SIP द्वारा संरक्षित है या नहीं, यह सत्यापित करने के लिए आप ls -lOd कमांड का उपयोग कर सकते हैं ताकि restricted या sunlnk ध्वज की उपस्थिति की जांच करें। उदाहरण के लिए:

ls -lOd /usr/libexec/cups
drwxr-xr-x  11 root  wheel  sunlnk 352 May 13 00:29 /usr/libexec/cups

इस मामले में, sunlnk फ्लैग यह संकेतित करता है कि /usr/libexec/cups निर्देशिका स्वयं हटाई नहीं जा सकती, हालांकि इसमें फ़ाइलें बनाई जा सकती हैं, संशोधित की जा सकती हैं, या हटाई जा सकती हैं।

दूसरी ओर:

ls -lOd /usr/libexec
drwxr-xr-x  338 root  wheel  restricted 10816 May 13 00:29 /usr/libexec

यहाँ, restricted फ्लैग यह दर्शाता है कि /usr/libexec निर्देशिका SIP द्वारा संरक्षित है। SIP से संरक्षित निर्देशिका में, फ़ाइलें नहीं बनाई जा सकतीं, संशोधित नहीं की जा सकतीं, या हटाई जा सकतीं।

इसके अतिरिक्त, अगर किसी फ़ाइल में com.apple.rootless विस्तारित विशेषता शामिल है, तो वह फ़ाइल भी SIP द्वारा संरक्षित होगी।

SIP अन्य रूट क्रियाएँ भी सीमित करता है जैसे:

  • अविश्वसनीय कर्नेल एक्सटेंशन्स लोड करना

  • Apple-साइन किए गए प्रक्रियाओं के लिए टास्क-पोर्ट प्राप्त करना

  • NVRAM चरित्रित करना

  • कर्नेल डीबगिंग की अनुमति देना

विकल्प nvram चरित्रित के रूप में रखे जाते हैं जैसे एक बिटफ्लैग (csr-active-config इंटेल पर और lp-sip0 ARM के लिए बूटेड डिवाइस ट्री से पढ़ा जाता है)। आप csr.sh में XNU स्रोत कोड में झंझट द्वारा झंझट पा सकते हैं:

SIP स्थिति

आप निम्नलिखित कमांड के साथ जांच सकते हैं कि SIP आपके सिस्टम पर सक्षम है या नहीं:

csrutil status

यदि आपको SIP को अक्षम करना है, तो आपको अपने कंप्यूटर को पुनर्प्राप्ति मोड में पुनरारंभ करना होगा (स्टार्टअप के दौरान Command+R दबाकर), फिर निम्नलिखित कमांड को निष्पादित करना होगा:

csrutil disable

यदि आप SIP सक्षम रखना चाहते हैं लेकिन डीबगिंग सुरक्षा को हटाना चाहते हैं, तो आप निम्नलिखित के साथ ऐसा कर सकते हैं:

csrutil enable --without debug

अन्य प्रतिबंध

  • असाइन कर्णेल एक्सटेंशन्स (kexts) को लोड करने की अनुमति नहीं देता है, इस सुनिश्चित करता है कि केवल सत्यापित एक्सटेंशन्स सिस्टम कर्णेल के साथ संवाद करें।

  • macOS सिस्टम प्रक्रियाओं का डीबगिंग रोकता है, अनधिकृत पहुंच और संशोधन से मूल सिस्टम घटकों की सुरक्षा करता है।

  • उपकरणों को रोकता है जैसे dtrace सिस्टम प्रक्रियाओं की जांच करने से, जो सिस्टम के संचालन की अखंडता की और सुरक्षित करता है।

इस टॉक में SIP जानकारी के बारे में अधिक जानें.

SIP बायपास

SIP को बायपास करने से हमलावर को निम्नलिखित करने की संभावना होती है:

  • उपयोगकर्ता डेटा तक पहुंचना: सभी उपयोगकर्ता खातों से मेल, संदेश और सफारी इतिहास जैसी संवेदनशील उपयोगकर्ता डेटा पढ़ना।

  • TCC बायपास: अनधिकृत रूप से वेबकैम, माइक्रोफोन और अन्य संसाधनों तक पहुंच प्रदान करने के लिए TCC (पारदर्शिता, सहमति और नियंत्रण) डेटाबेस को सीधे परिवर्तित करना।

  • स्थायित्व स्थापित करना: SIP से संरक्षित स्थानों में मैलवेयर रखना, जिससे इसे हटाना कठिन हो, यहाँ तक कि रूट विशेषाधिकारों द्वारा भी। इसमें मैलवेयर हटाने वाले उपकरण (MRT) के साथ खिलवाड़ करने की संभावना भी शामिल है।

  • कर्णेल एक्सटेंशन्स लोड करना: यद्यपि अतिरिक्त सुरक्षा उपाय हैं, SIP को बायपास करने से असाइन कर्णेल एक्सटेंशन्स लोड करने की प्रक्रिया सरल हो जाती है।

इंस्टॉलर पैकेज

Apple के प्रमाणपत्र से हस्ताक्षरित इंस्टॉलर पैकेज इसकी सुरक्षा को बायपास कर सकते हैं। इसका मतलब है कि यदि साधारित डेवलपर्स द्वारा हस्ताक्षरित पैकेज SIP संरक्षित निर्देशिकाओं को संशोधित करने का प्रयास करते हैं तो वे रोके जाएंगे।

अस्तित्वहीन SIP फ़ाइल

एक संभावित छल का यह है कि यदि एक फ़ाइल rootless.conf में निर्दिष्ट की गई है लेकिन वर्तमान में मौजूद नहीं है, तो इसे बनाया जा सकता है। मैलवेयर इसे सिस्टम पर स्थायित्व स्थापित करने के लिए उपयोग कर सकता है। उदाहरण के लिए, एक हानिकारक कार्यक्रम /System/Library/LaunchDaemons में एक .plist फ़ाइल बना सकता है अगर यह rootless.conf में सूचीबद्ध है लेकिन मौजूद नहीं है।

com.apple.rootless.install.heritable

अधिकार com.apple.rootless.install.heritable SIP को बायपास करने की अनुमति देता है

Shrootless

इस ब्लॉग पोस्ट से शोधकर्ताओं ने macOS की सिस्टम इंटेग्रिटी सुरक्षा (SIP) तंत्र में एक वंशज विकल्प 'Shrootless' वंशज की खोज की। इस वंशज के चारों ओर system_installd डेमन है, जिसमें एक अधिकार है, com.apple.rootless.install.heritable, जो इसके किसी भी बच्चे प्रक्रियाओं को SIP की फ़ाइल सिस्टम प्रतिबंधों को बायपास करने की अनुमति देता है।

system_installd डेमन उन पैकेजों को स्थापित करेगा जिन्हें Apple ने हस्ताक्षरित किया है।

शोधकर्ताओं ने पाया कि एक Apple हस्ताक्षरित पैकेज (.pkg फ़ाइल) की स्थापना के दौरान, system_installd किसी भी पोस्ट-स्थापना स्क्रिप्ट को जो पैकेज में शामिल है, चलाता है। ये स्क्रिप्ट्स डिफ़ॉल्ट शैली, zsh, द्वारा निष्क्रिय मोड में भी चलाए जाते हैं। यह व्यवहार हमलावरों द्वारा उत्पादित किया जा सकता था: एक हानिकारक /etc/zshenv फ़ाइल बनाकर और system_installd को zsh आमंत्रित करने के लिए प्रतीक्षा करने के लिए, वे उपकरण पर विभिन्न कार्रवाई कर सकते थे।

इसके अतिरिक्त, पाया गया कि /etc/zshenv को सामान्य हमला तक प्रयोग किया जा सकता था, न केवल एक SIP बायपास के लिए। प्रत्येक उपयोगकर्ता प्रोफ़ाइल के पास एक ~/.zshenv फ़ाइल होती है, जो /etc/zshenv के तरह व्यवहार करती है लेकिन रूट अनुमतियों की आवश्यकता नहीं है। यह फ़ाइल स्थायित्व तंत्र के रूप में उपयोग की जा सकती थी, हर बार zsh शुरू होते समय ट्रिगर करती थी, या एक उच्चतम विशेषाधिकार मेकेनिज़म के रूप में। यदि एक व्यवस्थापक उपयोगकर्ता sudo -s या sudo <कमांड> का उपयोग करके रूट में उच्चतम विशेषाधिकार प्राप्त करता है, तो ~/.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 (सिस्टम इंटेग्रिटी सुरक्षा) के लिए महत्वपूर्ण है, जो कर्ण

ln -s /System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist /dev/diskX
fsck_cs /dev/diskX 1>&-
touch /Library/Extensions/
reboot

इस वंशानुक्रमितता की दुरुपयोगन संभावनाएं हैं। Info.plist फ़ाइल, जो सामान्यत: कर्ण एक्सटेंशन्स के लिए अनुमतियों का प्रबंधन करने के लिए जिम्मेदार होती है, अप्रभावी हो जाती है। इसमें कुछ एक्सटेंशन्स को ब्लैकलिस्ट करने की असमर्थता शामिल है, जैसे AppleHWAccess.kext। इस परिणामस्वरूप, SIP के नियंत्रण तंत्र के बाहर होने के कारण, यह एक्सटेंशन लोड किया जा सकता है, जिससे सिस्टम के रैम में अनधिकृत पढ़ने और लिखने की पहुंच मिल सकती है।

SIP सुरक्षित फ़ोल्डर्स पर एक नई फ़ाइल सिस्टम माउंट करना संरक्षण को छलने के लिए संभव था।

mkdir evil
# Add contento to the folder
hdiutil create -srcfolder evil evil.dmg
hdiutil attach -mountpoint /System/Library/Snadbox/ evil.dmg

सिस्टम को Install macOS Sierra.app के भीतर स्थापित इंस्टॉलर डिस्क इमेज से बूट करने के लिए सेट किया गया है ताकि ओएस अपग्रेड किया जा सके, bless यूटिलिटी का उपयोग करते हुए। उपयोग किया गया कमांड निम्नलिखित है:

/usr/sbin/bless -setBoot -folder /Volumes/Macintosh HD/macOS Install Data -bootefi /Volumes/Macintosh HD/macOS Install Data/boot.efi -options config="\macOS Install Data\com.apple.Boot" -label macOS Installer

यदि कोई हमलावर अपग्रेड इमेज (InstallESD.dmg) को बूट करने से पहले बदल देता है, तो इस प्रक्रिया की सुरक्षा को कमजोर किया जा सकता है। यह रणनीति एक दुष्ट संस्करण (libBaseIA.dylib) के साथ एक गतिशील लोडर (dyld) को बदलकर कार्यान्वित करने के लिए है। इस परिवर्तन से हमलावर कोड का क्रियान्वयन होता है जब इंस्टॉलर प्रारंभ किया जाता है।

हमलावर कोड अपग्र

csrutil authenticated-root status
Authenticated Root status: enabled

इसके अतिरिक्त, स्नैपशॉट डिस्क भी केवल पढ़ने योग्य रूप में माउंट किया जाता है:

mount
/dev/disk3s1s1 on / (apfs, sealed, local, read-only, journaled)
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

दूसरे तरीके HackTricks का समर्थन करने के लिए:

Last updated