macOS Dirty NIB

Reading time: 4 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें

तकनीक के बारे में अधिक जानकारी के लिए मूल पोस्ट देखें: https://blog.xpnsec.com/dirtynib/ और https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/** द्वारा निम्नलिखित पोस्ट।** यहाँ एक सारांश है:

Nib फ़ाइलें क्या हैं

Nib (NeXT Interface Builder का संक्षिप्त रूप) फ़ाइलें, Apple के विकास पारिस्थितिकी तंत्र का हिस्सा, अनुप्रयोगों में UI तत्वों और उनके इंटरैक्शन को परिभाषित करने के लिए बनाई गई हैं। इनमें विंडो और बटन जैसी अनुक्रमित वस्तुएं शामिल हैं, और इन्हें रनटाइम पर लोड किया जाता है। उनकी निरंतर उपयोगिता के बावजूद, Apple अब अधिक व्यापक UI प्रवाह दृश्यता के लिए Storyboards की सिफारिश करता है।

मुख्य Nib फ़ाइल का संदर्भ NSMainNibFile के मान में Info.plist फ़ाइल के अंदर होता है और इसे NSApplicationMain फ़ंक्शन द्वारा लोड किया जाता है, जो अनुप्रयोग के main फ़ंक्शन में निष्पादित होता है।

Dirty Nib इंजेक्शन प्रक्रिया

NIB फ़ाइल बनाना और सेट करना

  1. प्रारंभिक सेटअप:
  • XCode का उपयोग करके एक नई NIB फ़ाइल बनाएं।
  • इंटरफ़ेस में एक ऑब्जेक्ट जोड़ें, इसकी कक्षा को NSAppleScript सेट करें।
  • उपयोगकर्ता परिभाषित रनटाइम विशेषताओं के माध्यम से प्रारंभिक source प्रॉपर्टी को कॉन्फ़िगर करें।
  1. कोड निष्पादन गैजेट:
  • सेटअप AppleScript को मांग पर चलाने की सुविधा प्रदान करता है।
  • Apple Script ऑब्जेक्ट को सक्रिय करने के लिए एक बटन एकीकृत करें, विशेष रूप से executeAndReturnError: चयनकर्ता को ट्रिगर करना।
  1. परीक्षण:
  • परीक्षण उद्देश्यों के लिए एक सरल Apple Script:
bash
set theDialogText to "PWND"
display dialog theDialogText
  • XCode डिबगर में चलाकर और बटन पर क्लिक करके परीक्षण करें।

एक अनुप्रयोग को लक्षित करना (उदाहरण: Pages)

  1. तैयारी:
  • लक्षित ऐप (जैसे, Pages) को एक अलग निर्देशिका (जैसे, /tmp/) में कॉपी करें।
  • ऐप को प्रारंभ करें ताकि Gatekeeper समस्याओं से बचा जा सके और इसे कैश किया जा सके।
  1. NIB फ़ाइल को अधिलेखित करना:
  • एक मौजूदा NIB फ़ाइल (जैसे, About Panel NIB) को तैयार DirtyNIB फ़ाइल से बदलें।
  1. निष्पादन:
  • ऐप के साथ इंटरैक्ट करके निष्पादन को ट्रिगर करें (जैसे, About मेनू आइटम का चयन करना)।

प्रमाण का सिद्धांत: उपयोगकर्ता डेटा तक पहुंच

  • AppleScript को संशोधित करें ताकि उपयोगकर्ता की सहमति के बिना उपयोगकर्ता डेटा, जैसे कि फ़ोटो, तक पहुंच और निकाल सकें।

कोड नमूना: दुर्भावनापूर्ण .xib फ़ाइल

अन्य उदाहरण

पोस्ट https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/ में आप एक ट्यूटोरियल पा सकते हैं कि कैसे एक गंदा nib बनाया जाए।

लॉन्च प्रतिबंधों का समाधान

  • लॉन्च प्रतिबंध ऐप के निष्पादन को अप्रत्याशित स्थानों (जैसे, /tmp) से रोकते हैं।
  • यह पहचानना संभव है कि कौन से ऐप्स लॉन्च प्रतिबंधों से सुरक्षित नहीं हैं और उन्हें NIB फ़ाइल इंजेक्शन के लिए लक्षित किया जा सकता है।

अतिरिक्त macOS सुरक्षा

macOS Sonoma से आगे, ऐप बंडल के अंदर संशोधन प्रतिबंधित हैं। हालाँकि, पहले के तरीकों में शामिल थे:

  1. ऐप को एक अलग स्थान (जैसे, /tmp/) में कॉपी करना।
  2. प्रारंभिक सुरक्षा को बायपास करने के लिए ऐप बंडल के भीतर निर्देशिकाओं का नाम बदलना।
  3. Gatekeeper के साथ पंजीकरण करने के लिए ऐप चलाने के बाद, ऐप बंडल में संशोधन करना (जैसे, MainMenu.nib को Dirty.nib से बदलना)।
  4. निर्देशिकाओं का नाम वापस बदलना और इंजेक्ट की गई NIB फ़ाइल को निष्पादित करने के लिए ऐप को फिर से चलाना।

नोट: हाल के macOS अपडेट ने Gatekeeper कैशिंग के बाद ऐप बंडल के भीतर फ़ाइल संशोधनों को रोककर इस शोषण को कम कर दिया है, जिससे यह शोषण अप्रभावी हो गया है।

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें