MacOS सैंडबॉक्स (पहले सीटबेल्ट कहा जाता था) सैंडबॉक्स प्रोफ़ाइल में निर्दिष्ट अनुमत क्रियाओं तक सीमित करता है जिसमें ऐप चल रहा है। यह सुनिश्चित करने में मदद करता है कि ऐप्लिकेशन केवल अपेक्षित संसाधनों तक ही पहुंचेगा।
किसी भी ऐप में अधिकारcom.apple.security.app-sandbox होगा तो सैंडबॉक्स में चलाया जाएगा। एप्पल बाइनरी आम तौर पर सैंडबॉक्स में चलाए जाते हैं और एप्प स्टोर में प्रकाशित करने के लिए यह अधिकार अनिवार्य है। इसलिए अधिकांश ऐप्लिकेशन सैंडबॉक्स में चलाए जाएंगे।
प्रक्रिया को क्या करने या क्या नहीं करने देने के लिए सैंडबॉक्स में हुक्स होते हैं सभी कर्नेल के सभी सिसकॉल्स में। ऐप के अधिकारों के आधार पर सैंडबॉक्स कुछ क्रियाएँ अनुमति देगा।
ध्यान दें कि यदि सिमलिंक्स सैंडबॉक्स से "बाहर निकलने" और अन्य फ़ोल्डर तक पहुंचने के लिए मौजूद हैं, तो भी ऐप को उन तक पहुंचने की अनुमति होनी चाहिए। ये अनुमतियाँ .plist में होती हैं।
# Get permissionsplutil-convertxml1.com.apple.containermanagerd.metadata.plist-o-# Binary sandbox profile<key>SandboxProfileData</key><data>AAAhAboBAAAAAAgAAABZAO4B5AHjBMkEQAUPBSsGPwsgASABHgEgASABHwEf...# In this file you can find the entitlements:<key>Entitlements</key><dict><key>com.apple.MobileAsset.PhishingImageClassifier2</key><true/><key>com.apple.accounts.appleaccount.fullaccess</key><true/><key>com.apple.appattest.spi</key><true/><key>keychain-access-groups</key><array><string>6N38VWS5BX.ru.keepcoder.Telegram</string><string>6N38VWS5BX.ru.keepcoder.TelegramShare</string></array>[...]# Some parameters<key>Parameters</key><dict><key>_HOME</key><string>/Users/username</string><key>_UID</key><string>501</string><key>_USER</key><string>username</string>[...]# The paths it can access<key>RedirectablePaths</key><array><string>/Users/username/Downloads</string><string>/Users/username/Documents</string><string>/Users/username/Library/Calendars</string><string>/Users/username/Desktop</string><key>RedirectedPaths</key><array/>[...]
सैंडबॉक्स एप्लिकेशन द्वारा बनाए या संशोधित किया गया हर वस्तु क्वारंटाइन एट्रिब्यूट प्राप्त करेगी। यह सैंडबॉक्स ऐप्लिकेशन को रोकेगा अगर सैंडबॉक्स एप्लिकेशन को open के साथ कुछ निष्पादित करने की कोशिश करता है।
सैंडबॉक्स प्रोफाइल
सैंडबॉक्स प्रोफाइल कॉन्फ़िगरेशन फ़ाइलें हैं जो इस सैंडबॉक्स में क्या अनुमति/निषेधित होने वाला है वह दिखाती है। यह सैंडबॉक्स प्रोफ़ाइल भाषा (SBPL) का उपयोग करती है, जो स्कीम प्रोग्रामिंग भाषा का उपयोग करती है।
यहाँ आप एक उदाहरण पा सकते हैं:
(version 1) ; First you get the version(deny default) ; Then you shuold indicate the default action when no rule applies(allow network*) ; You can use wildcards and allow everything(allow file-read* ; You can specify where to apply the rule(subpath "/Users/username/")(literal "/tmp/afile")(regex #"^/private/etc/.*"))(allow mach-lookup(global-name "com.apple.analyticsd"))
इस शोधकी जाँच करें और अधिक क्रियाएँ जो अनुमति दी जा सकती हैं या नहीं।
महत्वपूर्ण सिस्टम सेवाएं भी अपने खुद के संदूक में चलती हैं जैसे mdnsresponder सेवा। आप इन विशेष सैंडबॉक्स प्रोफाइल को निम्नलिखित में देख सकते हैं:
ऐप स्टोर ऐप्स प्रोफाइल का उपयोग करते हैं /System/Library/Sandbox/Profiles/application.sb। आप इस प्रोफाइल में देख सकते हैं कि कैसे com.apple.security.network.server जैसे अधिकारों द्वारा प्रक्रिया को नेटवर्क का उपयोग करने की अनुमति देता है।
SIP एक सैंडबॉक्स प्रोफाइल है जिसे platform_profile कहा जाता है /System/Library/Sandbox/rootless.conf
सैंडबॉक्स प्रोफाइल उदाहरण
एक निश्चित सैंडबॉक्स प्रोफाइल के साथ एक ऐप्लिकेशन शुरू करने के लिए आप इस्तेमाल कर सकते हैं:
(version 1)(deny default)(allow file* (literal "/private/tmp/hacktricks.txt"))(allow process* (literal "/usr/bin/touch"))(allow file-read-data (literal "/")); This one will work
ध्यान दें कि Windows पर चलने वाले Apple द्वारा बनाए गए सॉफ्टवेयर में अतिरिक्त सुरक्षा सावधानियाँ नहीं हैं, जैसे कि एप्लिकेशन सैंडबॉक्सिंग।
macOS सिस्टम सैंडबॉक्स प्रोफाइल को दो स्थानों में संग्रहित करता है: /usr/share/sandbox/ और /System/Library/Sandbox/Profiles।
और अगर किसी थर्ड-पार्टी एप्लिकेशन में com.apple.security.app-sandbox अधिकार है, तो सिस्टम /System/Library/Sandbox/Profiles/application.sb प्रोफाइल को उस प्रक्रिया पर लागू करता है।
iOS सैंडबॉक्स प्रोफाइल
डिफ़ॉल्ट प्रोफ़ाइल को कंटेनर कहा जाता है और हमें SBPL पाठ प्रतिनिधित्व नहीं है। मेमोरी में, यह सैंडबॉक्स प्रत्येक अनुमतियों के लिए Allow/Deny बाइनरी ट्री के रूप में प्रतिनिधित्व किया जाता है।
डीबग और सैंडबॉक्स को बायपास करें
macOS पर, iOS की तरह जहां प्रक्रियाएँ कर्नेल द्वारा प्रारंभ में सैंडबॉक्स में होती हैं, प्रक्रियाएँ स्वयं सैंडबॉक्स में शामिल होने के लिए विकल्प चुनना होता है। इसका मतलब है कि macOS पर, एक प्रक्रिया सैंडबॉक्स द्वारा प्रतिबंधित नहीं है जब तक वह इसमें प्रवेश करने का सक्रिय रूप से निर्णय नहीं लेती।
प्रक्रियाएँ उस समय स्वचालित रूप से सैंडबॉक्स में बंद हो जाती हैं जब वे शुरू होती हैं अगर उनके पास यह अधिकार है: com.apple.security.app-sandbox। इस प्रक्रिया का विस्तृत विवरण के लिए देखें:
इस के अनुसार, sandbox_check (यह एक __mac_syscall है), किसी निश्चित PID में सैंडबॉक्स द्वारा किसी कार्रवाई की अनुमति है या नहीं यह जांच सकता है।
उपकरण sbtool यह जांच सकता है कि क्या एक PID किसी विशिष्ट कार्रवाई को कर सकता है:
sbtool<pid>mach#Check mac-ports (got from launchd with an api)sbtool<pid>file/tmp#Check file accesssbtool<pid>inspect#Gives you an explaination of the sandbox profilesbtool<pid>all
App Store ऐप्स में कस्टम SBPL
कंपनियों के लिए अपने ऐप्स को कस्टम सैंडबॉक्स प्रोफाइल्स के साथ चलाना संभव हो सकता है (डिफ़ॉल्ट वाले के बजाय). उन्हें com.apple.security.temporary-exception.sbpl इंटाइटलमेंट का उपयोग करना होगा जिसे Apple द्वारा अधिकृत किया जाना चाहिए।
इस इंटाइटलमेंट की परिभाषा की जांच /System/Library/Sandbox/Profiles/application.sb: में संभव है।