Rozszerzenia aplikacji iOS

Reading time: 3 minutes

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks

Rozszerzenia aplikacji zwiększają funkcjonalność aplikacji, umożliwiając im interakcję z innymi aplikacjami lub systemem, oferując niestandardowe funkcje lub treści. Te rozszerzenia obejmują:

  • Niestandardowa klawiatura: Oferuje unikalną klawiaturę we wszystkich aplikacjach, zastępując domyślną klawiaturę iOS.
  • Udostępnij: Umożliwia udostępnianie w sieciach społecznościowych lub innym użytkownikom bezpośrednio.
  • Dziś (Widgety): Dostarcza treści lub wykonuje zadania szybko z widoku Dziś w Centrum powiadomień.

Gdy użytkownik korzysta z tych rozszerzeń, takich jak udostępnianie tekstu z aplikacji głównej, rozszerzenie przetwarza ten input w swoim kontekście, wykorzystując udostępnione informacje do wykonania swojego zadania, jak opisano w dokumentacji Apple.

Rozważania dotyczące bezpieczeństwa

Kluczowe aspekty bezpieczeństwa obejmują:

  • Rozszerzenia i ich aplikacje zawierające komunikują się za pomocą komunikacji międzyprocesowej, a nie bezpośrednio.
  • Widget Dziś jest wyjątkowy, ponieważ może zażądać otwarcia swojej aplikacji za pomocą określonej metody.
  • Dostęp do udostępnionych danych jest dozwolony w prywatnym kontenerze, ale bezpośredni dostęp jest ograniczony.
  • Niektóre API, w tym HealthKit, są niedostępne dla rozszerzeń aplikacji, które również nie mogą uruchamiać długoterminowych zadań, uzyskiwać dostępu do kamery ani mikrofonu, z wyjątkiem rozszerzeń iMessage.

Analiza statyczna

Identyfikacja rozszerzeń aplikacji

Aby znaleźć rozszerzenia aplikacji w kodzie źródłowym, wyszukaj NSExtensionPointIdentifier w Xcode lub sprawdź pakiet aplikacji pod kątem plików .appex, które wskazują na rozszerzenia. Bez kodu źródłowego użyj grep lub SSH, aby zlokalizować te identyfikatory w pakiecie aplikacji.

Obsługiwane typy danych

Sprawdź plik Info.plist rozszerzenia pod kątem NSExtensionActivationRule, aby zidentyfikować obsługiwane typy danych. Ta konfiguracja zapewnia, że tylko kompatybilne typy danych uruchamiają rozszerzenie w aplikacjach głównych.

Udostępnianie danych

Udostępnianie danych między aplikacją a jej rozszerzeniem wymaga wspólnego kontenera, skonfigurowanego za pomocą "Grup aplikacji" i uzyskiwanego przez NSUserDefaults. Ta wspólna przestrzeń jest niezbędna do transferów w tle inicjowanych przez rozszerzenia.

Ograniczanie rozszerzeń

Aplikacje mogą ograniczać niektóre typy rozszerzeń, szczególnie niestandardowe klawiatury, zapewniając, że obsługa danych wrażliwych jest zgodna z protokołami bezpieczeństwa.

Analiza dynamiczna

Analiza dynamiczna obejmuje:

  • Inspekcję elementów udostępnionych: Podłącz się do NSExtensionContext - inputItems, aby zobaczyć typy i źródła udostępnianych danych.
  • Identyfikację rozszerzeń: Odkryj, które rozszerzenia przetwarzają twoje dane, obserwując wewnętrzne mechanizmy, takie jak NSXPCConnection.

Narzędzia takie jak frida-trace mogą pomóc w zrozumieniu podstawowych procesów, szczególnie dla tych, którzy są zainteresowani szczegółami technicznymi komunikacji międzyprocesowej.

Odniesienia

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks