hacktricks/mobile-pentesting/ios-pentesting/ios-uipasteboard.md
2024-02-11 01:46:25 +00:00

6.8 KiB

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

Inne sposoby wsparcia HackTricks:

Mechanizm UIPasteboard ułatwia udostępnianie danych wewnątrz i między aplikacjami na urządzeniach iOS i dzieli się na dwie podstawowe kategorie:

  • Systemowy schowek ogólny: Służy do udostępniania danych z dowolną aplikacją i jest zaprojektowany tak, aby dane przetrwały restart urządzenia i odinstalowanie aplikacji, funkcja dostępna od iOS 10.
  • Niestandardowe / nazwane schowki: Są one przeznaczone do udostępniania danych wewnątrz aplikacji lub z inną aplikacją, która ma ten sam identyfikator zespołu, i nie są zaprojektowane do przetrwania po zakończeniu 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 trybie aktywnym (od iOS 9).
  • Zaleca się unikanie korzystania z trwałych nazwanych schowków na rzecz współdzielonych kontenerów ze względu na problemy z prywatnością.
  • Funkcja Uniwersalny Schowek, wprowadzona wraz z iOS 10, umożliwia udostępnianie treści między urządzeniami za pomocą schowka ogólnego i może być zarządzana przez programistów w celu ustawienia wygaśnięcia danych i wyłączenia automatycznego transferu treści.

Należy zadbać o to, aby wrażliwe informacje nie były przypadkowo przechowywane w globalnym schowku. Ponadto, aplikacje powinny być zaprojektowane w taki sposób, aby zapobiegać nadużyciom danych z globalnego schowka w celu niezamierzonych działań, a programistów zachęca się do wprowadzania środków zapobiegających kopiowaniu wrażliwych informacji do schowka.

Analiza statyczna

W przypadku analizy statycznej wyszukaj kod źródłowy lub plik binarny:

  • generalPasteboard, aby zidentyfikować użycie systemowego schowka ogólnego.
  • pasteboardWithName:create: i pasteboardWithUniqueName, aby tworzyć niestandardowe schowki. Sprawdź, czy włączona jest trwałość, chociaż jest to przestarzałe.

Analiza dynamiczna

Analiza dynamiczna polega na podłączaniu lub śledzeniu określonych metod:

  • Monitoruj generalPasteboard w celu śledzenia użycia na poziomie systemowym.
  • Śledź pasteboardWithName:create: i pasteboardWithUniqueName dla niestandardowych implementacji.
  • Obserwuj wywołania przestarzałej metody setPersistent: w celu 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 standardowe i niestandardowe sprawdzanie typów danych.
  • Opcje wygaśnięcia i tylko lokalne poprzez sprawdzenie metody setItems:options:.

Przykładem narzędzia do monitorowania jest monitor schowka objection, który co 5 sekund sprawdza zmiany w generalPasteboard i wyświetla nowe dane.

Oto prosty przykład skryptu JavaScript, inspirowanego podejściem objection, do odczytywania i rejestrowania zmian w schowku 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);

Odwołania

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

Inne sposoby wsparcia HackTricks: