Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
macos_sandbox — ब्लॉग पोस्ट जो macOS App Sandbox, codesign के माध्यम से entitlements, और launchd, LaunchAgents तथा quarantine attributes का उपयोग करके sandbox escape तकनीकों का अन्वेषण करती है। | Kitploit
उपकरण/GitHubGitHub/yo-yo-yo-jbo/macos_sandbox
स्थायित्व तंत्रभेद्यता विश्लेषणशोषणपोस्ट-शोषणलर्निंग और शिक्षारेड टीमिंग
GitHubyo-yo-yo-jbo/macos_sandbox

macos_sandbox

ब्लॉग पोस्ट जो macOS App Sandbox, codesign के माध्यम से entitlements, और launchd, LaunchAgents तथा quarantine attributes का उपयोग करके sandbox escape तकनीकों का अन्वेषण करती है।

रिपॉजिटरी देखें
322303 महीने पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

macOS का परिचय - ऐप सैंडबॉक्स

macOS पर मेरे संक्रमण (transition) ब्लॉगपोस्ट श्रृंखला को जारी रखते हुए, मैं macOS ऐप सैंडबॉक्स के बारे में थोड़ी चर्चा करना चाहता हूँ।
पहले macOS App structure ब्लॉगपोस्ट पढ़ने की अत्यधिक अनुशंसा की जाती है - मैं यह मान लूँगा कि पाठक Apps और प्रोसेस (कार्यों) के बीच का अंतर जानते हैं, launchd के बारे में थोड़ा जानते हैं और ऐप लॉन्चिंग से इसका संबंध जानते हैं।

उदाहरण द्वारा सैंडबॉक्स

पहली बार जब मैंने macOS सैंडबॉक्स के बारे में सीखा, तो मैंने भोलेपन से एक दुर्भावनापूर्ण Word Macro बनाने की कोशिश की।
यह (अभी भी) Windows पारिस्थितिकी तंत्र में एक बहुत ही सामान्य प्रवेश वेक्टर है, इसलिए मैं देखना चाहता था कि क्या मैं केवल प्रोसेस लॉन्च कर सकता हूँ और आम तौर पर तबाही मचा सकता हूँ।
खैर, macOS पर चीज़ें इतनी आसान नहीं हैं - उदाहरण के लिए, मैं प्रोसेस चला पा रहा था, लेकिन ऐसा लगता है कि वे ज़्यादा कुछ नहीं कर सकते थे।
फ़ाइलें ड्रॉप करने पर मुझे हमेशा रहस्यमय Operation not permitted त्रुटि मिलती थी - क्या हो रहा है?
मैंने macOS और Word के बारे में थोड़ा पढ़ना शुरू किया और Adam Chester (MDSec में कार्यरत) द्वारा लिखित यह उत्कृष्ट ब्लॉगपोस्ट मिला। मैं उस ब्लॉगपोस्ट को पढ़ने की अत्यधिक अनुशंसा करता हूँ, लेकिन मैं यहाँ निष्कर्षों का सारांश दूँगा:

  • Apps एक ऐसी तकनीक का उपयोग कर सकते हैं जिसे the App Sandbox कहा जाता है।
  • एक बार सेट हो जाने पर, OS ऐप पर कॉन्फ़िगर करने योग्य नियम लागू करता है, जैसे कि वह कौन सी फ़ाइल नाम बना सकता है, क्या वह नेटवर्क क्षमताओं का उपयोग कर सकता है, इत्यादि।

macOS में एक कार्यशील उपयोगिता हुआ करती थी जिसे sandbox-exec कहा जाता था, जो सैंडबॉक्स में कमांड निष्पादित करती थी। हालाँकि यह अब अप्रचलित (deprecated) हो चुकी है, फिर भी यह बहुत कुछ उजागर कर सकती थी। इसके मैनुअल पेज में आप देखते हैं कि यह एक profile लेती है, इसलिए हम यह निष्कर्ष निकाल सकते हैं कि सैंडबॉक्स नियम प्रोफ़ाइलों में बनाए रखे जाते हैं। वे प्रोफ़ाइलें विभिन्न रूपों में आ सकती हैं - फ़ाइलें, पूर्व-परिभाषित नाम या यहाँ तक कि शाब्दिक स्ट्रिंग्स के रूप में।
मैनुअल पेज यह भी बताते हैं कि डेवलपर्स को App Sandbox सुविधा का उपयोग करना चाहिए। इसके बारे में और अधिक पढ़ने पर मैंने समझा कि सैंडबॉक्स नियम बाइनरी के भीतर समाहित होते हैं, हमारे मामले में, /Application/Microsoft Word.app/Contents/MacOS/Microsoft Word के अंतर्गत रहते हैं (यदि यह आपको अजीब लगता है, तो मेरा macOS App Structure blogpost देखें)।
जबकि आप उन्हें हाथ से आसानी से निकाल सकते हैं, एक टूल का उपयोग करना सबसे अच्छा है: codesign:

```jbo@McJbo ~ % codesign -dv --entitlements - /Applications/Microsoft\ Word.app/Contents/MacOS/Microsoft\ Word
Executable=/Applications/Microsoft Word.app/Contents/MacOS/Microsoft Word
Identifier=com.microsoft.Word
Format=app bundle with Mach-O universal (x86_64 arm64)
CodeDirectory v=20500 size=351454 flags=0x10000(runtime) hashes=10972+7 location=embedded
Signature size=8980
Timestamp=Apr 10, 2023 at 8:09:50 AM
Info.plist entries=52
TeamIdentifier=UBF8T346G9
Runtime Version=13.1.0
Sealed Resources version=2 rules=13 files=28766
Internal requirements count=1 size=180
[Dict]
	[Key] com.apple.application-identifier
	[Value]
		[String] UBF8T346G9.com.microsoft.Word
	[Key] com.apple.developer.aps-environment
	[Value]
		[String] production
	[Key] com.apple.developer.team-identifier
	[Value]
		[String] UBF8T346G9
	[Key] com.apple.security.app-sandbox
	[Value]
		[Bool] true
    
...

	[Key] com.apple.security.temporary-exception.files.absolute-path.read-only
	[Value]
		[Array]
			[String] /Library/Preferences/com.microsoft.office.licensingV2.plist
			[String] /Library/Application Support/Microsoft/
      
...

	[Key] com.apple.security.temporary-exception.sbpl
	[Value]
		[Array]
			[String] (allow file-read* file-write* (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~\$[^/]+$")) )
			[String] (deny file-write* (subpath (string-append (param "_HOME") "/Library/Application Scripts")) (subpath (string-append (param "_HOME") "/Library/LaunchAgents")) )
	[Key] com.apple.security.temporary-exception.shared-preference.read-only
	[Value]
		[Array]
			[String] com.ThomsonResearchSoft.EndNote
			
...

यह बहुत कुछ समेटे हुए है, तो आइए कुछ उच्च-स्तरीय नोट्स लें:

  • पहले, हमारी कमांड-लाइन ने -dv फ़्लैग का उपयोग किया, जो display और verbose के लिए है। फिर, --entitlements ऐप या बाइनरी से जुड़े एन्टाइटलमेंट्स प्रस्तुत करता है (हाँ, codesign दोनों पर काम कर सकता है)। हम एन्टाइटलमेंट्स में किसी अन्य ब्लॉगपोस्ट में गहराई से उतरेंगे, लेकिन अभी के लिए मान लें कि वे ऐप की क्षमताओं को दर्शाते हैं, और उनमें से एक बताता है कि ऐप सैंडबॉक्स्ड है (com.apple.security.app-sandbox का Boolean मान True है)।
  • आउटपुट की पहली कुछ पंक्तियाँ बाइनरी, उसके हैश और कई अन्य रोचक चीज़ों के बारे में सामान्य जानकारी हैं। इस ब्लॉगपोस्ट के उद्देश्य के लिए वे दायरे से बाहर हैं, लेकिन काफी दिलचस्प हैं!
  • आगे हमें एक बड़ा शब्दकोश (dictionary) मिलता है। आप में से जिन्हें plists के बारे में मेरा प्रलाप याद है (फिर से, मेरे [macOS App Structure blogpost] में), वे संदेह कर सकते हैं कि key-value शब्दकोश किसी प्रॉपर्टी लिस्ट का प्रतिनिधित्व है, और वे सही होंगे।
  • सैंडबॉक्स नियम कुछ शब्दकोश कुंजियों में बताए गए हैं। उदाहरण के लिए, com.apple.security.temporary-exception.files.absolute-path.read-only उन निरपेक्ष पथों की एक सरणी (array) का उल्लेख करता है जिन्हें पढ़ने की अनुमति ऐप को है।
  • (कुख्यात) नियमित अभिव्यक्ति जो com.apple.security.temporary-exception.sbpl के अंतर्गत रहती है, वह भी यहाँ है - यह उन कुख्यात ~$whatever.docx अस्थायी फ़ाइलों को बनाने के लिए है जिन्हें Word बहुत पसंद करता है।
  • बेशक, यह कहने की आवश्यकता नहीं है कि नई चाइल्ड प्रोसेस बनाने पर उन्हें सैंडबॉक्स नियम विरासत में मिलते हैं, अन्यथा इसका कोई खास मतलब नहीं है। ध्यान दें कि ये सैंडबॉक्स नियम कितने शक्तिशाली हैं!

launchd के साथ सैंडबॉक्स एस्केप

MDSec के 2018 के ब्लॉगपोस्ट में, जिसका मैंने पहले उल्लेख किया था, com.apple.security.temporary-exception.sbpl के अंतर्गत deny file-write* वाला भाग मौजूद नहीं था, जिससे मैक्रोज़ मनमानी सामग्री वाली फ़ाइलें जैसे /Library/LaunchAgents/~$evil.plist बना सकते थे। यह सैंडबॉक्स से बाहर क्यों निकल जाता है?
LaunchAgents और LaunchDaemons macOS में एक प्रसिद्ध (वैध) स्थायित्व (persistence) तंत्र हैं। मैंने इनका उल्लेख पहले किया है, लेकिन आप इन्हें Services के रूप में सोच सकते हैं (यदि आप Windows की दुनिया से आते हैं) - LaunchDaemons OS बूट होने पर प्रारंभ होते हैं (और इसलिए उपयोगकर्ता सत्र के बाहर रहते हैं), जबकि LaunchAgents उपयोगकर्ता के लॉग इन करने पर प्रारंभ होते हैं।
दिलचस्प बात यह है कि दोनों सरल plist फ़ाइलों में वर्णित हैं। यहाँ मेरे OneDrive अपडेटर के लिए एक उदाहरण है:

jbo@McJbo ~ % plutil -p /Library/LaunchAgents/com.microsoft.OneDriveStandaloneUpdater.plist
{
  "Label" => "com.microsoft.OneDriveStandaloneUpdater"
  "Program" => "/Applications/OneDrive.app/Contents/StandaloneUpdater.app/Contents/MacOS/OneDriveStandaloneUpdater"
  "ProgramArguments" => [
  ]
  "RunAtLoad" => 1
  "StartInterval" => 86400
}

वे LaunchAgents और LaunchDaemons launchd द्वारा लॉन्च किए जाते हैं (वह प्रोसेस याद है?) और इसलिए यह सैंडबॉक्स से बाहर निकल जाता है, क्योंकि launchd को यह नहीं पता था कि plist किसी सैंडबॉक्स्ड प्रोसेस से ड्रॉप किया गया था या नहीं (और अगर उसे पता भी होता - तो उसे कैसे पता चलता कि कौन से सैंडबॉक्स नियम लागू करने हैं?)।

टूल डाउनलोड करें