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

101 lines
7.5 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 15:36:32 +00:00
Andere Möglichkeiten, HackTricks zu unterstützen:
2022-04-28 16:01:33 +00:00
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
2024-02-10 15:36:32 +00:00
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
2021-05-21 16:38:18 +00:00
{% embed url="https://websec.nl/" %}
Der Datenaustausch innerhalb und zwischen Anwendungen auf iOS-Geräten wird durch den Mechanismus [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard) erleichtert, der in zwei Hauptkategorien unterteilt ist:
- **Systemweiter allgemeiner Pasteboard**: Dies wird zum Austausch von Daten mit **beliebigen Anwendungen** verwendet und ist darauf ausgelegt, Daten über Geräteneustarts und App-Deinstallationen hinweg zu persistieren, eine Funktion, die seit iOS 10 verfügbar ist.
- **Benutzerdefinierte / benannte Pasteboards**: Diese sind speziell für den Datenaustausch **innerhalb einer App oder mit einer anderen App**, die dieselbe Team-ID teilt, und sind nicht darauf ausgelegt, über die Lebensdauer des Anwendungsprozesses hinaus zu persistieren, nach den Änderungen, die in iOS 10 eingeführt wurden.
2021-05-21 16:38:18 +00:00
2024-02-10 15:36:32 +00:00
**Sicherheitsüberlegungen** spielen eine wichtige Rolle bei der Verwendung von Pasteboards. Zum Beispiel:
- Es gibt keinen Mechanismus für Benutzer, die App-Berechtigungen zum Zugriff auf das **Pasteboard** zu verwalten.
- Um das Risiko eines unbefugten Hintergrundmonitorings des Pasteboards zu verringern, ist der Zugriff auf die Anwendung im Vordergrund beschränkt (seit iOS 9).
- Die Verwendung von persistenten benannten Pasteboards wird aufgrund von Datenschutzbedenken zugunsten von gemeinsamen Containern nicht empfohlen.
- Das mit iOS 10 eingeführte **Universelle Clipboard**-Feature, das den Inhalt über Geräte hinweg über das allgemeine Pasteboard teilen kann, kann von Entwicklern verwaltet werden, um Datenablauf und automatische Inhaltsübertragung zu deaktivieren.
2021-05-21 16:38:18 +00:00
Es ist entscheidend sicherzustellen, dass **sensible Informationen nicht versehentlich** auf dem globalen Pasteboard gespeichert werden. Darüber hinaus sollten Anwendungen so gestaltet sein, dass der Missbrauch von globalen Pasteboard-Daten für unbeabsichtigte Aktionen verhindert wird, und Entwickler werden ermutigt, Maßnahmen zu implementieren, um das Kopieren sensibler Informationen in die Zwischenablage zu verhindern.
2021-05-21 16:38:18 +00:00
2024-02-10 15:36:32 +00:00
### Statische Analyse
2021-05-21 16:38:18 +00:00
Für die statische Analyse suchen Sie im Quellcode oder Binärdatei nach:
2024-02-10 15:36:32 +00:00
- `generalPasteboard`, um die Verwendung des **systemweiten allgemeinen Pasteboards** zu identifizieren.
- `pasteboardWithName:create:` und `pasteboardWithUniqueName` zur Erstellung von **benutzerdefinierten Pasteboards**. Überprüfen Sie, ob die Persistenz aktiviert ist, obwohl dies veraltet ist.
2021-05-21 16:38:18 +00:00
2024-02-10 15:36:32 +00:00
### Dynamische Analyse
2021-05-21 16:38:18 +00:00
Die dynamische Analyse umfasst das Hooking oder Verfolgen bestimmter Methoden:
2024-02-10 15:36:32 +00:00
- Überwachen Sie `generalPasteboard` für die systemweite Verwendung.
- Verfolgen Sie `pasteboardWithName:create:` und `pasteboardWithUniqueName` für benutzerdefinierte Implementierungen.
- Beobachten Sie veraltete `setPersistent:`-Methodenaufrufe, um die Persistenzeinstellungen zu überprüfen.
2021-05-21 16:38:18 +00:00
Zu überwachende Schlüsseldetails sind:
- **Pasteboard-Namen** und **Inhalte** (zum Beispiel Überprüfung von Zeichenfolgen, URLs, Bildern).
2024-02-10 15:36:32 +00:00
- **Anzahl der Elemente** und **Datentypen**, die vorhanden sind, unter Verwendung von Standard- und benutzerdefinierten Datentypüberprüfungen.
- **Ablauf- und Nur-lokal-Optionen**, indem Sie die Methode `setItems:options:` inspizieren.
2021-05-21 16:38:18 +00:00
Ein Beispiel für die Verwendung eines Überwachungstools ist der **Pasteboard-Monitor von objection**, der alle 5 Sekunden das generalPasteboard auf Änderungen überprüft und die neuen Daten ausgibt.
2021-05-21 16:38:18 +00:00
Hier ist ein einfaches JavaScript-Skriptbeispiel, inspiriert vom Ansatz von objection, um alle 5 Sekunden Änderungen vom Pasteboard zu lesen und zu protokollieren:
2021-05-21 16:38:18 +00:00
```javascript
const UIPasteboard = ObjC.classes.UIPasteboard;
2024-02-08 03:08:28 +00:00
const Pasteboard = UIPasteboard.generalPasteboard();
var items = "";
var count = Pasteboard.changeCount().toString();
2021-05-21 16:38:18 +00:00
setInterval(function () {
2024-02-10 15:36:32 +00:00
const currentCount = Pasteboard.changeCount().toString();
const currentItems = Pasteboard.items().toString();
2021-05-21 16:38:18 +00:00
2024-02-10 15:36:32 +00:00
if (currentCount === count) { return; }
2021-05-21 16:38:18 +00:00
2024-02-10 15:36:32 +00:00
items = currentItems;
count = currentCount;
2021-05-21 16:38:18 +00:00
2024-02-10 15:36:32 +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
2024-02-08 03:08:28 +00:00
}, 1000 * 5);
2021-05-21 16:38:18 +00:00
```
2024-02-10 15:36:32 +00:00
## Referenzen
2022-04-28 16:01:33 +00:00
2024-02-08 03:08:28 +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="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 15:36:32 +00:00
Andere Möglichkeiten, HackTricks zu unterstützen:
2022-04-28 16:01:33 +00:00
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
2024-02-10 15:36:32 +00:00
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
2022-04-28 16:01:33 +00:00
</details>