macOS xpc_connection_get_audit_token Attack

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

HackTricks का समर्थन करने के अन्य तरीके:

अधिक जानकारी के लिए मूल पोस्ट देखें: https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/. यह एक सारांश है:

Mach Messages मूल जानकारी

अगर आपको पता नहीं कि Mach Messages क्या हैं, तो इस पृष्ठ की जाँच करना शुरू करें:

pagemacOS IPC - Inter Process Communication

इस समय याद रखें कि (यहाँ से परिभाषा): Mach messages mach port के माध्यम से भेजे जाते हैं, जो मैक कर्नल में बनाया गया एकल प्राप्तकर्ता, एकाधिक प्रेषक संचार चैनल है। एकाधिक प्रक्रियाएँ एक मैक पोर्ट को मैसेज भेज सकती हैं, लेकिन किसी भी समय केवल एक प्रक्रिया इसे पढ़ सकती है। फाइल डिस्क्रिप्टर और सॉकेट की तरह, मैक पोर्ट्स कर्नल द्वारा आवंटित और प्रबंधित किए जाते हैं और प्रक्रियाएँ केवल एक पूर्णांक देखती हैं, जिसे वे कर्नल को इंडिकेट करने के लिए उपयोग कर सकती हैं कि वे अपने मैक पोर्ट्स में से कौन सा उपयोग करना चाहती हैं।

XPC Connection

अगर आपको यह नहीं पता कि XPC कनेक्शन कैसे स्थापित किया जाता है, तो जाँच करें:

pagemacOS XPC

Vuln सारांश

आपके लिए दिलचस्प है कि XPC का अभिव्यक्ति एक-से-एक कनेक्शन है, लेकिन यह उस प्रौद्योगिकी पर आधारित है जिसमें एकाधिक प्रेषक हो सकते हैं, तो:

  • Mach पोर्ट्स एकल प्राप्तकर्ता, एकाधिक प्रेषक हैं।

  • एक XPC कनेक्शन का ऑडिट टोकन सबसे हाल ही में प्राप्त संदेश से कॉपी किया गया है

  • XPC कनेक्शन का ऑडिट टोकन प्राप्त करना कई सुरक्षा जांचों के लिए महत्वपूर्ण है।

हालांकि, पिछली स्थिति आशावादी लग सकती है, लेकिन कुछ स्थितियाँ हैं जहाँ यह समस्याएँ नहीं उत्पन्न होंगी (यहाँ से):

  • ऑडिट टोकन अधिकारी जांच के लिए अक्सेप्ट करने के लिए निर्धारित करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट करने के लिए अक्सेप्ट कर

  1. अगला कदम शामिल करता है diagnosticd को निर्दिष्ट प्रक्रिया (संभावित रूप से उपयोगकर्ता की अपनी) की मॉनिटरिंग प्रारंभ करने के लिए। साथ ही, smd को एक बारीक 1004 संदेशों का बाढ़ भेजा जाता है। इसका उद्देश्य उच्च विशेषाधिकारों वाले एक उपकरण को स्थापित करना है।

  2. यह कार्रवाई handle_bless फ़ंक्शन के भीतर एक रेस कंडीशन को प्रेरित करती है। समयिकता महत्वपूर्ण है: xpc_connection_get_pid फ़ंक्शन कॉल का उपयोग करने पर उपयोगकर्ता की प्रक्रिया का पीआईडी (क्योंकि उच्च विशेषाधिकार वाला उपकरण उपयोगकर्ता के ऐप बंडल में स्थित है) लौटना चाहिए। हालांकि, xpc_connection_get_audit_token फ़ंक्शन, विशेष रूप से connection_is_authorized सबरूटीन के भीतर, diagnosticd के स्वामित्व वाले ऑडिट टोकन का संदर्भ करना चाहिए।

Last updated