hacktricks/mobile-pentesting/ios-pentesting/ios-uipasteboard.md

103 lines
12 KiB
Markdown
Raw Normal View History

{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2022-04-28 16:01:33 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
2022-04-28 16:01:33 +00:00
{% embed url="https://websec.nl/" %}
iOS उपकरणों पर अनुप्रयोगों के भीतर और उनके बीच डेटा साझा करने की प्रक्रिया [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard) तंत्र द्वारा की जाती है, जिसे दो मुख्य श्रेणियों में विभाजित किया गया है:
2022-04-28 16:01:33 +00:00
- **सिस्टमव्यापी सामान्य पेस्टबोर्ड**: इसका उपयोग **किसी भी अनुप्रयोग** के साथ डेटा साझा करने के लिए किया जाता है और इसे डिवाइस के पुनरारंभ और ऐप अनइंस्टॉल के दौरान डेटा को बनाए रखने के लिए डिज़ाइन किया गया है, यह सुविधा iOS 10 से उपलब्ध है।
- **कस्टम / नामित पेस्टबोर्ड**: ये विशेष रूप से **एक ऐप के भीतर या किसी अन्य ऐप के साथ** डेटा साझा करने के लिए होते हैं जो समान टीम आईडी साझा करते हैं, और इन्हें उन अनुप्रयोग प्रक्रिया के जीवन से परे बनाए रखने के लिए डिज़ाइन नहीं किया गया है जो इन्हें बनाते हैं, जो iOS 10 में किए गए परिवर्तनों का पालन करते हैं।
2022-04-28 16:01:33 +00:00
**सुरक्षा विचार** पेस्टबोर्ड का उपयोग करते समय महत्वपूर्ण भूमिका निभाते हैं। उदाहरण के लिए:
- उपयोगकर्ताओं के लिए **पेस्टबोर्ड** तक पहुंच के लिए ऐप अनुमतियों को प्रबंधित करने का कोई तंत्र नहीं है।
- पेस्टबोर्ड की अनधिकृत पृष्ठभूमि निगरानी के जोखिम को कम करने के लिए, पहुंच को तब तक सीमित किया गया है जब तक अनुप्रयोग अग्रभूमि में है (iOS 9 से)।
- गोपनीयता चिंताओं के कारण साझा कंटेनरों के पक्ष में स्थायी नामित पेस्टबोर्ड के उपयोग की सिफारिश नहीं की जाती है।
- iOS 10 के साथ पेश की गई **यूनिवर्सल क्लिपबोर्ड** सुविधा, जो सामान्य पेस्टबोर्ड के माध्यम से उपकरणों के बीच सामग्री साझा करने की अनुमति देती है, डेवलपर्स द्वारा डेटा समाप्ति सेट करने और स्वचालित सामग्री स्थानांतरण को अक्षम करने के लिए प्रबंधित की जा सकती है।
यह सुनिश्चित करना कि **संवेदनशील जानकारी अनजाने में** वैश्विक पेस्टबोर्ड पर संग्रहीत नहीं हो, महत्वपूर्ण है। इसके अतिरिक्त, अनुप्रयोगों को इस तरह से डिज़ाइन किया जाना चाहिए कि वैश्विक पेस्टबोर्ड डेटा का दुरुपयोग अनपेक्षित क्रियाओं के लिए न हो, और डेवलपर्स को संवेदनशील जानकारी को क्लिपबोर्ड पर कॉपी करने से रोकने के लिए उपाय लागू करने के लिए प्रोत्साहित किया जाता है।
### स्थैतिक विश्लेषण
स्थैतिक विश्लेषण के लिए, स्रोत कोड या बाइनरी में खोजें:
- `generalPasteboard` का उपयोग **सिस्टमव्यापी सामान्य पेस्टबोर्ड** की पहचान करने के लिए।
- `pasteboardWithName:create:` और `pasteboardWithUniqueName` का उपयोग **कस्टम पेस्टबोर्ड** बनाने के लिए। सत्यापित करें कि क्या स्थिरता सक्षम है, हालांकि यह अप्रचलित है।
2021-05-21 16:38:18 +00:00
### गतिशील विश्लेषण
2021-05-21 16:38:18 +00:00
गतिशील विश्लेषण में विशिष्ट विधियों को हुक करना या ट्रेस करना शामिल है:
- सिस्टम-व्यापी उपयोग के लिए `generalPasteboard` की निगरानी करें।
- कस्टम कार्यान्वयन के लिए `pasteboardWithName:create:` और `pasteboardWithUniqueName` को ट्रेस करें।
- स्थिरता सेटिंग्स की जांच के लिए अप्रचलित `setPersistent:` विधि कॉल की निगरानी करें।
2021-05-21 16:38:18 +00:00
निगरानी करने के लिए प्रमुख विवरण में शामिल हैं:
- **पेस्टबोर्ड नाम** और **सामग्री** (उदाहरण के लिए, स्ट्रिंग, यूआरएल, छवियों की जांच करना)।
- **आइटम की संख्या** और **डेटा प्रकार** जो मौजूद हैं, मानक और कस्टम डेटा प्रकार जांच का लाभ उठाते हुए।
- `setItems:options:` विधि की जांच करके **समाप्ति और स्थानीय-केवल विकल्प**
2021-05-21 16:38:18 +00:00
निगरानी उपकरण के उपयोग का एक उदाहरण **objection का पेस्टबोर्ड मॉनिटर** है, जो हर 5 सेकंड में generalPasteboard के लिए परिवर्तनों की जांच करता है और नए डेटा को आउटपुट करता है।
यहां एक सरल जावास्क्रिप्ट स्क्रिप्ट का उदाहरण है, जो objection के दृष्टिकोण से प्रेरित है, जो हर 5 सेकंड में पेस्टबोर्ड से परिवर्तनों को पढ़ता और लॉग करता है:
2021-05-21 16:38:18 +00:00
```javascript
const UIPasteboard = ObjC.classes.UIPasteboard;
2023-11-06 08:38:02 +00:00
const Pasteboard = UIPasteboard.generalPasteboard();
var items = "";
var count = Pasteboard.changeCount().toString();
2021-05-21 16:38:18 +00:00
setInterval(function () {
2023-11-06 08:38:02 +00:00
const currentCount = Pasteboard.changeCount().toString();
const currentItems = Pasteboard.items().toString();
2021-05-21 16:38:18 +00:00
2023-11-06 08:38:02 +00:00
if (currentCount === count) { return; }
2021-05-21 16:38:18 +00:00
2023-11-06 08:38:02 +00:00
items = currentItems;
count = currentCount;
2021-05-21 16:38:18 +00:00
2023-11-06 08:38:02 +00:00
console.log('[* Pasteboard changed] count: ' + count +
' hasStrings: ' + Pasteboard.hasStrings().toString() +
' hasURLs: ' + Pasteboard.hasURLs().toString() +
' hasImages: ' + Pasteboard.hasImages().toString());
console.log(items);
2021-05-21 16:38:18 +00:00
2023-11-06 08:38:02 +00:00
}, 1000 * 5);
2021-05-21 16:38:18 +00:00
```
## संदर्भ
2022-04-28 16:01:33 +00:00
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8)
* [https://hackmd.io/@robihamanto/owasp-robi](https://hackmd.io/@robihamanto/owasp-robi)
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/)
2022-04-28 16:01:33 +00:00
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>HackTricks का समर्थन करें</summary>
2022-04-28 16:01:33 +00:00
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो** करें [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}