macOS System Extensions
Last updated
Last updated
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
कर्नेल एक्सटेंशन के विपरीत, सिस्टम एक्सटेंशन उपयोगकर्ता स्थान में चलते हैं न कि कर्नेल स्थान में, जिससे एक्सटेंशन की खराबी के कारण सिस्टम क्रैश का जोखिम कम होता है।
सिस्टम एक्सटेंशन के तीन प्रकार हैं: DriverKit एक्सटेंशन, Network एक्सटेंशन, और Endpoint Security एक्सटेंशन।
DriverKit कर्नेल एक्सटेंशनों का एक प्रतिस्थापन है जो हार्डवेयर समर्थन प्रदान करता है। यह डिवाइस ड्राइवरों (जैसे USB, Serial, NIC, और HID ड्राइवर) को कर्नेल स्थान के बजाय उपयोगकर्ता स्थान में चलाने की अनुमति देता है। DriverKit ढांचा कुछ I/O किट वर्गों के उपयोगकर्ता स्थान संस्करणों को शामिल करता है, और कर्नेल सामान्य I/O किट घटनाओं को उपयोगकर्ता स्थान में अग्रेषित करता है, जिससे इन ड्राइवरों के चलने के लिए एक सुरक्षित वातावरण प्रदान होता है।
Network एक्सटेंशन नेटवर्क व्यवहार को अनुकूलित करने की क्षमता प्रदान करते हैं। Network एक्सटेंशन के कई प्रकार हैं:
ऐप प्रॉक्सी: इसका उपयोग एक VPN क्लाइंट बनाने के लिए किया जाता है जो एक प्रवाह-उन्मुख, कस्टम VPN प्रोटोकॉल को लागू करता है। इसका मतलब है कि यह नेटवर्क ट्रैफ़िक को कनेक्शनों (या प्रवाहों) के आधार पर संभालता है न कि व्यक्तिगत पैकेट के आधार पर।
पैकेट टनल: इसका उपयोग एक VPN क्लाइंट बनाने के लिए किया जाता है जो एक पैकेट-उन्मुख, कस्टम VPN प्रोटोकॉल को लागू करता है। इसका मतलब है कि यह नेटवर्क ट्रैफ़िक को व्यक्तिगत पैकेट के आधार पर संभालता है।
डेटा फ़िल्टर: इसका उपयोग नेटवर्क "प्रवाहों" को फ़िल्टर करने के लिए किया जाता है। यह प्रवाह स्तर पर नेटवर्क डेटा की निगरानी या संशोधन कर सकता है।
पैकेट फ़िल्टर: इसका उपयोग व्यक्तिगत नेटवर्क पैकेट को फ़िल्टर करने के लिए किया जाता है। यह पैकेट स्तर पर नेटवर्क डेटा की निगरानी या संशोधन कर सकता है।
DNS प्रॉक्सी: इसका उपयोग एक कस्टम DNS प्रदाता बनाने के लिए किया जाता है। इसका उपयोग DNS अनुरोधों और प्रतिक्रियाओं की निगरानी या संशोधन के लिए किया जा सकता है।
एंडपॉइंट सुरक्षा एक ढांचा है जो Apple द्वारा macOS में प्रदान किया गया है जो सिस्टम सुरक्षा के लिए API का एक सेट प्रदान करता है। इसका उपयोग सुरक्षा विक्रेताओं और डेवलपर्स द्वारा उत्पाद बनाने के लिए किया जाता है जो सिस्टम गतिविधि की निगरानी और नियंत्रण कर सकते हैं ताकि दुर्भावनापूर्ण गतिविधियों की पहचान और सुरक्षा की जा सके।
यह ढांचा सिस्टम गतिविधि की निगरानी और नियंत्रण के लिए API का एक संग्रह प्रदान करता है, जैसे प्रक्रिया निष्पादन, फ़ाइल प्रणाली घटनाएँ, नेटवर्क और कर्नेल घटनाएँ।
इस ढांचे का मुख्य भाग कर्नेल में लागू किया गया है, एक कर्नेल एक्सटेंशन (KEXT) के रूप में जो /System/Library/Extensions/EndpointSecurity.kext
पर स्थित है। यह KEXT कई प्रमुख घटकों से बना है:
EndpointSecurityDriver: यह कर्नेल एक्सटेंशन के लिए "प्रवेश बिंदु" के रूप में कार्य करता है। यह OS और Endpoint Security ढांचे के बीच बातचीत का मुख्य बिंदु है।
EndpointSecurityEventManager: यह घटक कर्नेल हुक को लागू करने के लिए जिम्मेदार है। कर्नेल हुक ढांचे को सिस्टम कॉल को इंटरसेप्ट करके सिस्टम घटनाओं की निगरानी करने की अनुमति देते हैं।
EndpointSecurityClientManager: यह उपयोगकर्ता स्थान क्लाइंट के साथ संचार का प्रबंधन करता है, यह ट्रैक करता है कि कौन से क्लाइंट जुड़े हुए हैं और जिन्हें घटना सूचनाएँ प्राप्त करने की आवश्यकता है।
EndpointSecurityMessageManager: यह उपयोगकर्ता स्थान क्लाइंट को संदेश और घटना सूचनाएँ भेजता है।
एंडपॉइंट सुरक्षा ढांचा जिन घटनाओं की निगरानी कर सकता है, उन्हें श्रेणियों में वर्गीकृत किया गया है:
फ़ाइल घटनाएँ
प्रक्रिया घटनाएँ
सॉकेट घटनाएँ
कर्नेल घटनाएँ (जैसे कर्नेल एक्सटेंशन को लोड/अनलोड करना या I/O किट डिवाइस खोलना)
एंडपॉइंट सुरक्षा ढांचे के साथ उपयोगकर्ता-स्थान संचार IOUserClient वर्ग के माध्यम से होता है। कॉलर के प्रकार के आधार पर दो अलग-अलग उपवर्गों का उपयोग किया जाता है:
EndpointSecurityDriverClient: इसके लिए com.apple.private.endpoint-security.manager
अधिकार की आवश्यकता होती है, जो केवल सिस्टम प्रक्रिया endpointsecurityd
के पास होती है।
EndpointSecurityExternalClient: इसके लिए com.apple.developer.endpoint-security.client
अधिकार की आवश्यकता होती है। इसका उपयोग आमतौर पर तीसरे पक्ष के सुरक्षा सॉफ़्टवेयर द्वारा किया जाएगा जिसे एंडपॉइंट सुरक्षा ढांचे के साथ बातचीत करने की आवश्यकता होती है।
एंडपॉइंट सुरक्षा एक्सटेंशन:libEndpointSecurity.dylib
वह C लाइब्रेरी है जिसका उपयोग सिस्टम एक्सटेंशन कर्नेल के साथ संवाद करने के लिए करते हैं। यह लाइब्रेरी एंडपॉइंट सुरक्षा KEXT के साथ संवाद करने के लिए I/O किट (IOKit
) का उपयोग करती है।
endpointsecurityd
एक प्रमुख सिस्टम डेमॉन है जो एंडपॉइंट सुरक्षा सिस्टम एक्सटेंशनों का प्रबंधन और लॉन्च करने में शामिल है, विशेष रूप से प्रारंभिक बूट प्रक्रिया के दौरान। केवल सिस्टम एक्सटेंशन जिन्हें उनके Info.plist
फ़ाइल में NSEndpointSecurityEarlyBoot
के रूप में चिह्नित किया गया है, इस प्रारंभिक बूट उपचार को प्राप्त करते हैं।
एक अन्य सिस्टम डेमॉन, sysextd
, सिस्टम एक्सटेंशनों को मान्य करता है और उन्हें उचित सिस्टम स्थानों में स्थानांतरित करता है। फिर यह संबंधित डेमॉन से एक्सटेंशन को लोड करने के लिए कहता है। SystemExtensions.framework
सिस्टम एक्सटेंशनों को सक्रिय और निष्क्रिय करने के लिए जिम्मेदार है।
ESF का उपयोग सुरक्षा उपकरणों द्वारा किया जाता है जो एक रेड टीमर का पता लगाने की कोशिश करेंगे, इसलिए इसको कैसे टाला जा सकता है, इस बारे में कोई भी जानकारी दिलचस्प लगती है।
बात यह है कि सुरक्षा एप्लिकेशन को पूर्ण डिस्क एक्सेस अनुमतियाँ होनी चाहिए। इसलिए यदि एक हमलावर इसे हटा सकता है, तो वह सॉफ़्टवेयर को चलने से रोक सकता है:
For अधिक जानकारी about this bypass and related ones check the talk #OBTS v5.0: "The Achilles Heel of EndpointSecurity" - Fitzl Csaba
At the end this was fixed by giving the new permission kTCCServiceEndpointSecurityClient
to the security app managed by tccd
so tccutil
won't clear its permissions preventing it from running.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)