iOS UIPasteboard

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Udostępnianie danych wewnątrz i między aplikacjami na urządzeniach iOS jest ułatwione przez mechanizm UIPasteboard, który dzieli się na dwie główne kategorie:

  • Systemowy schowek ogólny: Służy do udostępniania danych z dowolną aplikacją i jest zaprojektowany do przechowywania danych po restarcie urządzenia i odinstalowaniu aplikacji, funkcja dostępna od iOS 10.

  • Niestandardowe / Nazwane schowki: Są przeznaczone do udostępniania danych w ramach aplikacji lub z inną aplikacją, która ma ten sam identyfikator zespołu, i nie są zaprojektowane do przechowywania poza czasem życia procesu aplikacji, który je tworzy, zgodnie z wprowadzonymi zmianami w iOS 10.

Rozważania dotyczące bezpieczeństwa odgrywają istotną rolę podczas korzystania ze schowków. Na przykład:

  • Nie ma mechanizmu umożliwiającego użytkownikom zarządzanie uprawnieniami aplikacji do dostępu do schowka.

  • Aby zmniejszyć ryzyko nieautoryzowanego monitorowania schowka w tle, dostęp jest ograniczony do czasu, gdy aplikacja jest w pierwszym planie (od iOS 9).

  • Zaleca się unikanie używania trwałych nazwanych schowków na rzecz kontenerów współdzielonych ze względów prywatności.

  • Funkcja Uniwersalny Schowek wprowadzona wraz z iOS 10, umożliwiająca udostępnianie treści między urządzeniami za pomocą schowka ogólnego, może być zarządzana przez deweloperów w celu ustawienia wygaśnięcia danych i wyłączenia automatycznego transferu treści.

Zapewnienie, że wrażliwe informacje nie są przypadkowo przechowywane w globalnym schowku jest kluczowe. Ponadto aplikacje powinny być zaprojektowane tak, aby zapobiegać nadużyciom danych z globalnego schowka do niezamierzonych działań, a deweloperów zachęca się do wprowadzenia środków zapobiegających kopiowaniu wrażliwych informacji do schowka.

Analiza statyczna

W analizie statycznej wyszukaj w kodzie źródłowym lub binarnym:

  • generalPasteboard aby zidentyfikować użycie systemowego schowka ogólnego.

  • pasteboardWithName:create: i pasteboardWithUniqueName do tworzenia niestandardowych schowków. Sprawdź, czy włączona jest trwałość, chociaż jest to przestarzałe.

Analiza dynamiczna

Analiza dynamiczna polega na hakowaniu lub śledzeniu konkretnych metod:

  • Monitoruj generalPasteboard dla użycia ogólnego w systemie.

  • Śledź pasteboardWithName:create: i pasteboardWithUniqueName dla niestandardowych implementacji.

  • Obserwuj wywołania metody setPersistent: do sprawdzenia ustawień trwałości.

Kluczowe szczegóły do monitorowania obejmują:

  • Nazwy schowków i zawartość (na przykład sprawdzanie ciągów znaków, adresów URL, obrazów).

  • Liczba elementów i typy danych obecne, wykorzystując sprawdzenia standardowych i niestandardowych typów danych.

  • Opcje wygaśnięcia i lokalne poprzez sprawdzenie metody setItems:options:.

Przykładem narzędzia do monitorowania jest monitor schowka objection, który sprawdza schowek ogólny co 5 sekund w poszukiwaniu zmian i wypisuje nowe dane.

Oto prosty przykładowy skrypt JavaScript, inspirowany podejściem objection, do odczytywania i rejestrowania zmian ze schowka co 5 sekund:

const UIPasteboard = ObjC.classes.UIPasteboard;
const Pasteboard = UIPasteboard.generalPasteboard();
var items = "";
var count = Pasteboard.changeCount().toString();

setInterval(function () {
const currentCount = Pasteboard.changeCount().toString();
const currentItems = Pasteboard.items().toString();

if (currentCount === count) { return; }

items = currentItems;
count = currentCount;

console.log('[* Pasteboard changed] count: ' + count +
' hasStrings: ' + Pasteboard.hasStrings().toString() +
' hasURLs: ' + Pasteboard.hasURLs().toString() +
' hasImages: ' + Pasteboard.hasImages().toString());
console.log(items);

}, 1000 * 5);

Odnośniki

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated