macOS Dirty NIB
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
For further detail about the technique check the original post from: https://blog.xpnsec.com/dirtynib/ and the following post by https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/. Here is a summary:
Nib (NeXT इंटरफेस बिल्डर के लिए संक्षिप्त) फ़ाइलें, एप्पल के विकास पारिस्थितिकी तंत्र का हिस्सा, अनुप्रयोगों में UI तत्वों और उनके इंटरैक्शन को परिभाषित करने के लिए होती हैं। इनमें विंडो और बटन जैसे अनुक्रमित वस्तुएं शामिल होती हैं, और इन्हें रनटाइम पर लोड किया जाता है। उनके निरंतर उपयोग के बावजूद, एप्पल अब अधिक व्यापक UI प्रवाह दृश्यता के लिए स्टोरीबोर्ड का समर्थन करता है।
मुख्य Nib फ़ाइल को अनुप्रयोग के Info.plist
फ़ाइल के अंदर NSMainNibFile
मान में संदर्भित किया गया है और इसे अनुप्रयोग के main
फ़ंक्शन में निष्पादित NSApplicationMain
फ़ंक्शन द्वारा लोड किया जाता है।
Initial Setup:
XCode का उपयोग करके एक नया NIB फ़ाइल बनाएं।
इंटरफ़ेस में एक ऑब्जेक्ट जोड़ें, इसकी कक्षा को NSAppleScript
सेट करें।
उपयोगकर्ता परिभाषित रनटाइम विशेषताओं के माध्यम से प्रारंभिक source
प्रॉपर्टी को कॉन्फ़िगर करें।
Code Execution Gadget:
सेटअप मांग पर AppleScript चलाने की सुविधा प्रदान करता है।
Apple Script
ऑब्जेक्ट को सक्रिय करने के लिए एक बटन एकीकृत करें, विशेष रूप से executeAndReturnError:
चयनकर्ता को ट्रिगर करना।
Testing:
परीक्षण उद्देश्यों के लिए एक सरल Apple Script:
XCode डिबगर में चलाकर और बटन पर क्लिक करके परीक्षण करें।
Preparation:
लक्षित ऐप (जैसे, Pages) को एक अलग निर्देशिका (जैसे, /tmp/
) में कॉपी करें।
गेटकीपर समस्याओं से बचने के लिए ऐप को प्रारंभ करें और इसे कैश करें।
Overwriting NIB File:
एक मौजूदा NIB फ़ाइल (जैसे, About Panel NIB) को तैयार किए गए DirtyNIB फ़ाइल से बदलें।
Execution:
ऐप के साथ इंटरैक्ट करके निष्पादन को ट्रिगर करें (जैसे, 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 सोनोमा से आगे, ऐप बंडलों के अंदर संशोधन प्रतिबंधित हैं। हालाँकि, पहले के तरीकों में शामिल थे:
ऐप को एक अलग स्थान (जैसे, /tmp/
) में कॉपी करना।
प्रारंभिक सुरक्षा को बायपास करने के लिए ऐप बंडल के भीतर निर्देशिकाओं का नाम बदलना।
गेटकीपर के साथ पंजीकरण करने के लिए ऐप को चलाने के बाद, ऐप बंडल में संशोधन करना (जैसे, MainMenu.nib को Dirty.nib से बदलना)।
निर्देशिकाओं का नाम वापस बदलना और इंजेक्ट की गई NIB फ़ाइल को निष्पादित करने के लिए ऐप को फिर से चलाना।
Note: हाल के macOS अपडेट ने गेटकीपर कैशिंग के बाद ऐप बंडलों के भीतर फ़ाइल संशोधनों को रोककर इस शोषण को कम कर दिया है, जिससे यह शोषण अप्रभावी हो गया है।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)