iOS App Extensions
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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.
Kluczowe aspekty bezpieczeństwa obejmują:
Rozszerzenia i ich aplikacje komunikują się za pomocą komunikacji międzyprocesowej, a nie bezpośrednio.
Widget Dziś jest wyjątkowy, ponieważ może zażądać, aby jego aplikacja otworzyła się za pomocą określonej metody.
Dostęp do udostępnionych danych jest dozwolony w ramach prywatnego kontenera, 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.
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.
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 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.
Aplikacje mogą ograniczać niektóre typy rozszerzeń, szczególnie niestandardowe klawiatury, zapewniając, że obsługa wrażliwych danych jest zgodna z protokołami bezpieczeństwa.
Analiza dynamiczna obejmuje:
Inspekcję udostępnionych elementów: 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 technicznymi szczegółami komunikacji międzyprocesowej.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)