hacktricks/mobile-pentesting/ios-pentesting/ios-app-extensions.md

183 lines
22 KiB
Markdown
Raw Normal View History

2023-11-06 08:38:02 +00:00
# iOS ऐप एक्सटेंशन्स
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके साझा करें।**
2022-04-28 16:01:33 +00:00
</details>
2023-11-06 08:38:02 +00:00
**यहां से सामग्री कॉपी की गई है** [**https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#app-extensions**](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#app-extensions)
2023-11-06 08:38:02 +00:00
ऐप एक्सटेंशन्स ऐप्स को यह सुविधा और सामग्री प्रदान करने की अनुमति देते हैं जब वे अन्य ऐप्स या सिस्टम के साथ इंटरैक्ट कर रहे होते हैं। कुछ महत्वपूर्ण एक्सटेंशन्स निम्नलिखित हैं:
2023-11-06 08:38:02 +00:00
* **कस्टम कीबोर्ड**: iOS सिस्टम कीबोर्ड को सभी ऐप्स में उपयोग के लिए एक कस्टम कीबोर्ड से बदलता है।
* **शेयर**: शेयरिंग वेबसाइट पर पोस्ट करें या दूसरों के साथ सामग्री साझा करें।
* **टुडे**: इसे **विजेट्स** भी कहा जाता है, यह नोटिफिकेशन सेंटर के टुडे व्यू में सामग्री प्रदान करते हैं या त्वरित कार्य करते हैं।
2023-11-06 08:38:02 +00:00
उदाहरण के लिए, उपयोगकर्ता _होस्ट ऐप_ में पाठ का चयन करता है, "शेयर" बटन पर क्लिक करता है और सूची से "ऐप" या कार्रवाई का चयन करता है। इससे _ऐप एक्सटेंशन_ को _संबंधित ऐप_ का एक्सटेंशन ट्रिगर होता है। ऐप एक्सटेंशन होस्ट ऐप के संदर्भ में अपना दृश्य प्रदर्शित करता है और इसका उपयोग करके किसी विशेष कार्य (उदाहरण के लिए, इसे सोशल नेटवर्क पर पोस्ट करें) करने के लिए होस्ट ऐप द्वारा प्रदान की गई आइटम, इस मामले में चयनित पाठ, का उपयोग करता है। इसका अच्छी तरह से सारांशित करने वाली [Apple App Extension Programming Guide](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionOverview.html#//apple\_ref/doc/uid/TP40014214-CH2-SW13) से यह चित्र देखें:
2021-11-30 16:46:07 +00:00
![](https://gblobscdn.gitbook.com/assets%2F-LH00RC4WVf3-6Ou4e0l%2F-Lf1APQHyCHdAvoJSvc\_%2F-Lf1AQx9khfTwUwYuMti%2Fapp\_extensions\_communication.png?alt=media)
2023-11-06 08:38:02 +00:00
### **सुरक्षा संबंधी विचारणाएं**
2023-11-06 08:38:02 +00:00
सुरक्षा के दृष्टिकोण से महत्वपूर्ण है कि:
2023-11-06 08:38:02 +00:00
* एक **ऐप एक्सटेंशन कभी भी अपने संबंधित ऐप के साथ सीधे संवाद नहीं करता** है (सामान्यतः, यह चल रहा नहीं होता है जब एक्सटेंशन चल रहा होता है)।
* एक **ऐप एक्सटेंशन** और **होस्ट ऐप** **इंटर-प्रोसेस** संवाद के माध्यम से **संवाद करते** हैं।
* एक **ऐप एक्सटेंशन के संबंधित ऐप** और **होस्ट ऐप कभी भी संवाद नहीं करते** हैं।
* **टुडे विजेट** (और कोई अन्य ऐप एक्सटेंशन प्रकार नहीं) सिस्टम से अपने संबंधित ऐप को खोलने के लिए `NSExtensionContext` कक्षा के `openURL:completionHandler:` विधि को कॉल करके प्रणाली से पूछ सकता है।
* किसी भी **ऐप एक्सटेंशन** और उसके **संबंधित ऐप** को एक निजी निर्धारित साझा कंटेनर में साझा डेटा तक पहुंच मिल सकती है।
* ऐप एक्सटेंशन **कुछ एपीआई तक पहुंच नहीं पा सकते**, उदाहरण के लिए, HealthKit।
* वे **AirDrop का
```bash
$ grep -nr NSExtensionPointIdentifier Payload/Telegram\ X.app/
Binary file Payload/Telegram X.app//PlugIns/SiriIntents.appex/Info.plist matches
Binary file Payload/Telegram X.app//PlugIns/Share.appex/Info.plist matches
Binary file Payload/Telegram X.app//PlugIns/NotificationContent.appex/Info.plist matches
Binary file Payload/Telegram X.app//PlugIns/Widget.appex/Info.plist matches
Binary file Payload/Telegram X.app//Watch/Watch.app/PlugIns/Watch Extension.appex/Info.plist matches
```
2023-11-06 08:38:02 +00:00
आप SSH के माध्यम से भी पहुंच सकते हैं, ऐप बंडल को खोजें और सभी अंदर के प्लगइन की सूची बनाएं (ये डिफ़ॉल्ट रूप से वहां रखे जाते हैं) या इसे objection के साथ करें:
```bash
ph.telegra.Telegraph on (iPhone: 11.1.2) [usb] # cd PlugIns
2023-11-06 08:38:02 +00:00
/var/containers/Bundle/Application/15E6A58F-1CA7-44A4-A9E0-6CA85B65FA35/
Telegram X.app/PlugIns
ph.telegra.Telegraph on (iPhone: 11.1.2) [usb] # ls
NSFileType Perms NSFileProtection Read Write Name
------------ ------- ------------------ ------ ------- -------------------------
Directory 493 None True False NotificationContent.appex
Directory 493 None True False Widget.appex
Directory 493 None True False Share.appex
Directory 493 None True False SiriIntents.appex
```
2023-11-06 08:38:02 +00:00
अब हम वही चार ऐप एक्सटेंशन देख सकते हैं जो हमने पहले Xcode में देखे थे।
2023-11-06 08:38:02 +00:00
#### **समर्थित डेटा प्रकार निर्धारित करना**
2023-11-06 08:38:02 +00:00
यह महत्वपूर्ण है जब डेटा को होस्ट ऐप्स के साथ साझा किया जाता है (उदाहरण के लिए, शेयर या एक्शन एक्सटेंशन के माध्यम से)। जब उपयोगकर्ता होस्ट ऐप में किसी डेटा प्रकार का चयन करता है और यह यहां परिभाषित डेटा प्रकारों के साथ मेल खाता है, तो होस्ट ऐप एक्सटेंशन प्रदान करेगा। इसे यहां परिभाषित दस्तावेज़ प्रकारों के साथ `UIActivity` के माध्यम से डेटा साझा करने से अलग करने के बारे में ध्यान देने योग्य है, जहां हमें दस्तावेज़ प्रकारों को परिभाषित करना था, UTI का उपयोग करके। उसके लिए ऐप को एक्सटेंशन की आवश्यकता नहीं होती है। केवल `UIActivity` का उपयोग करके डेटा साझा करना संभव है।
2023-11-06 08:38:02 +00:00
ऐप एक्सटेंशन के `Info.plist` फ़ाइल की जांच करें और `NSExtensionActivationRule` के लिए खोजें। यह कुंजी समर्थित डेटा को स्पष्ट करती है साथ ही उच्चतम संख्या में समर्थित आइटमों को भी। उदाहरण के लिए:
```markup
<key>NSExtensionAttributes</key>
2023-11-06 08:38:02 +00:00
<dict>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsImageWithMaxCount</key>
<integer>10</integer>
<key>NSExtensionActivationSupportsMovieWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
</dict>
</dict>
```
2023-11-06 08:38:02 +00:00
केवल यहां मौजूद डेटा प्रकारों को समर्थित किया जाएगा और `MaxCount` के रूप में `0` नहीं होगा। हालांकि, एक ऐसे प्रेडिकेट स्ट्रिंग का उपयोग करके अधिक जटिल फ़िल्टरिंग संभव है जो UTI को मूल्यांकन करेगा। इसके बारे में अधिक विस्तृत जानकारी के लिए कृपया [Apple App Extension Programming Guide](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple\_ref/doc/uid/TP40014214-CH21-SW8) का संदर्भ लें।
2023-11-06 08:38:02 +00:00
**संग्रहीत ऐप के साथ डेटा साझा करने की जांच**
2023-11-06 08:38:02 +00:00
ध्यान दें कि ऐप एक्सटेंशन और उनके संग्रहीत ऐप के पास सीधा पहुंच नहीं होती है। हालांकि, डेटा साझा की जा सकती है। इसे ["ऐप समूह"](https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html#//apple\_ref/doc/uid/TP40011195-CH4-SW19) और [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) एपीआई के माध्यम से किया जा सकता है। [Apple App Extension Programming Guide](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple\_ref/doc/uid/TP40014214-CH21-SW11) से इस चित्र का संदर्भ देखें:
2022-05-01 13:25:53 +00:00
![](../../mobile-apps-pentesting/ios-pentesting/broken-reference)
2023-11-06 08:38:02 +00:00
जैसा कि गाइड में भी उल्लेख किया गया है, ऐप को साझा कंटेनर सेटअप करना होगा यदि ऐप एक्सटेंशन `NSURLSession` कक्षा का उपयोग करके बैकग्राउंड अपलोड या डाउनलोड करने के लिए करता है, ताकि एक्सटेंशन और उसके संग्रहीत ऐप दोनों संचालित डेटा तक पहुंच सकें।
2023-11-06 08:38:02 +00:00
**ऐप एक्सटेंशन के उपयोग की प्रतिबंधित करने की जांच**
2023-11-06 08:38:02 +00:00
निम्नलिखित विधि का उपयोग करके एक विशेष प्रकार के ऐप एक्सटेंशन को अस्वीकार किया जा सकता है:
* [`application:shouldAllowExtensionPointIdentifier:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623122-application?language=objc)
2023-11-06 08:38:02 +00:00
हालांकि, वर्तमान में यह केवल "कस्टम कीबोर्ड" ऐप एक्सटेंशन के लिए ही संभव है (और इसे जांचना चाहिए जब ऐप्स को टेस्ट कर रहे हों जो कीबोर्ड के माध्यम से संवेदनशील डेटा का हैंडल करते हैं, जैसे बैंकिंग ऐप्स आदि)।
2023-11-06 08:38:02 +00:00
### गतिशील विश्लेषण
2023-11-06 08:38:02 +00:00
गतिशील विश्लेषण के लिए हम निम्नलिखित कर सकते हैं ताकि हम स्रोत कोड के बिना ज्ञान प्राप्त कर सकें:
2023-11-06 08:38:02 +00:00
* साझा की जा रही आइटम की जांच करना
* संबंधित ऐप एक्सटेंशन की पहचान करना
2023-11-06 08:38:02 +00:00
**साझा की जा रही आइटम की जांच करना**
2023-11-06 08:38:02 +00:00
इसके लिए हमें डेटा मूल ऐप में `NSExtensionContext - inputItems` को हुक करना चाहिए।
2023-11-06 08:38:02 +00:00
Telegram के पिछले उदाहरण का अनुसरण करते हुए हम अब टेक्स्ट फ़ाइल पर "शेयर" बटन का उपयोग करेंगे (जो चैट से प्राप्त किया गया था) और इसके साथ नोट्स ऐप में एक नोट बनाएंगे:
![](<../../.gitbook/assets/image (497).png>)
2023-11-06 08:38:02 +00:00
यदि हम एक ट्रेस चलाएं, तो हमें निम्नलिखित आउटपुट दिखाई देगा:
```bash
(0x1c06bb420) NSExtensionContext - inputItems
0x18284355c Foundation!-[NSExtension _itemProviderForPayload:extensionContext:]
0x1828447a4 Foundation!-[NSExtension _loadItemForPayload:contextIdentifier:completionHandler:]
0x182973224 Foundation!__NSXPCCONNECTION_IS_CALLING_OUT_TO_EXPORTED_OBJECT_S3__
0x182971968 Foundation!-[NSXPCConnection _decodeAndInvokeMessageWithEvent:flags:]
0x182748830 Foundation!message_handler
0x181ac27d0 libxpc.dylib!_xpc_connection_call_event_handler
0x181ac0168 libxpc.dylib!_xpc_connection_mach_event
...
RET: (
"<NSExtensionItem: 0x1c420a540> - userInfo:
{
2023-11-06 08:38:02 +00:00
NSExtensionItemAttachmentsKey = (
"<NSItemProvider: 0x1c46b30e0> {types = (\n \"public.plain-text\",\n \"public.file-url\"\n)}"
);
}"
)
```
2023-11-06 08:38:02 +00:00
यहां हम देख सकते हैं कि:
2023-11-06 08:38:02 +00:00
* यह XPC के माध्यम से अंदर से हुआ, विशेष रूप से इसे `libxpc.dylib` फ्रेमवर्क का उपयोग करके `NSXPCConnection` द्वारा कार्यान्वित किया गया है।
* `NSItemProvider` में शामिल यूटीआईआईएस `public.plain-text` और `public.file-url` हैं, जिनमें से दूसरा [`टेलीग्राम के "शेयर एक्सटेंशन" के Info.plist`](https://github.com/TelegramMessenger/Telegram-iOS/blob/master/Telegram/Share/Info.plist) से `NSExtensionActivationRule` में शामिल है।
2023-11-06 08:38:02 +00:00
**शामिल ऐप एक्सटेंशन की पहचान करना**
2023-11-06 08:38:02 +00:00
आप `NSExtension - _plugIn` को हुक करके यह भी जान सकते हैं कि कौन सा ऐप एक्सटेंशन आपकी अनुरोध और प्रतिक्रिया का ध्यान रख रहा है:
2023-11-06 08:38:02 +00:00
हम उदाहरण को फिर से चलाते हैं:
```bash
(0x1c0370200) NSExtension - _plugIn
RET: <PKPlugin: 0x1163637f0 ph.telegra.Telegraph.Share(5.3) 5B6DE177-F09B-47DA-90CD-34D73121C785
1(2) /private/var/containers/Bundle/Application/15E6A58F-1CA7-44A4-A9E0-6CA85B65FA35
/Telegram X.app/PlugIns/Share.appex>
(0x1c0372300) -[NSExtension _plugIn]
RET: <PKPlugin: 0x10bff7910 com.apple.mobilenotes.SharingExtension(1.5) 73E4F137-5184-4459-A70A-83
F90A1414DC 1(2) /private/var/containers/Bundle/Application/5E267B56-F104-41D0-835B-F1DAB9AE076D
/MobileNotes.app/PlugIns/com.apple.mobilenotes.SharingExtension.appex>
```
2023-11-06 08:38:02 +00:00
जैसा कि आप देख सकते हैं, यहां दो ऐप एक्सटेंशन शामिल हैं:
2023-11-06 08:38:02 +00:00
* `Share.appex` टेक्स्ट फ़ाइल (`public.plain-text` और `public.file-url`) भेज रहा है।
* `com.apple.mobilenotes.SharingExtension.appex` जो टेक्स्ट फ़ाइल को प्राप्त करेगा और प्रोसेस करेगा।
2023-11-06 08:38:02 +00:00
यदि आप XPC के तहत क्या हो रहा है के बारे में और अधिक जानना चाहते हैं, तो हम "libxpc.dylib" से आंतरिक कॉल्स पर नज़र डालने की सलाह देते हैं। उदाहरण के लिए, आप [`frida-trace`](https://www.frida.re/docs/frida-trace/) का उपयोग कर सकते हैं और फिर स्वचालित रूप से उत्पन्न स्टब्स को विस्तारित करके आपको अधिक रुचिकर लगने वाले विधियों में खुद को खोजने के लिए गहराई में जा सकते हैं।
2022-05-01 13:25:53 +00:00
###
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप चाहते हैं कि आपकी **कंपनी HackTricks में विज्ञापित हो**? या क्या आप **PEASS के नवीनतम संस्करण देखना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं**? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष [**NFT**](https://opensea.io/collection/the-peass-family) संग्रह।
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या मुझे **ट्विटर** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके साझा करें।**
2022-04-28 16:01:33 +00:00
</details>