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

5.8 KiB

Rozszerzenia aplikacji iOS

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

Inne sposoby wsparcia HackTricks:

Rozszerzenia aplikacji zwiększają funkcjonalność aplikacji, umożliwiając im interakcję z innymi aplikacjami lub systemem, dostarczają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ępnianie: Umożliwia udostępnianie w sieciach społecznościowych lub bezpośrednio innym osobom.
  • Dzisiaj (Widżety): Dostarcza treści lub wykonuje zadania szybko z widoku "Dzisiaj" w Centrum powiadomień.

Kiedy użytkownik korzysta z tych rozszerzeń, na przykład udostępnia tekst z aplikacji gospodarza, rozszerzenie przetwarza ten wejściowy tekst w swoim kontekście, wykorzystując udostępnione informacje do wykonania swojego zadania, jak szczegółowo opisano w dokumentacji Apple.

Aspekty bezpieczeństwa

Kluczowe aspekty bezpieczeństwa obejmują:

  • Rozszerzenia i aplikacje, w których się znajdują, komunikują się za pomocą komunikacji międzyprocesowej, a nie bezpośrednio.
  • Widżet Dzisiaj 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 ramach prywatnego kontenera, ale bezpośredni dostęp jest ograniczony.
  • Pewne interfejsy API, w tym HealthKit, są niedostępne dla rozszerzeń aplikacji, które również nie mogą uruchamiać długotrwałych zadań, uzyskiwać dostępu do aparatu ani mikrofonu, z wyjątkiem rozszerzeń iMessage.

Analiza statyczna

Identyfikowanie rozszerzeń aplikacji

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

Obsługiwane typy danych

Sprawdź plik Info.plist rozszerzenia, aby zidentyfikować obsługiwane typy danych za pomocą NSExtensionActivationRule. Ta konfiguracja zapewnia, że tylko zgodne typy danych wywołują rozszerzenie w aplikacjach gospodarza.

Udostępnianie danych

Udostępnianie danych między aplikacją a jej rozszerzeniem wymaga wspólnego kontenera, skonfigurowanego za pomocą "Grup aplikacji" i dostępnego za pośrednictwem NSUserDefaults. To wspólne miejsce jest niezbędne do transferów w tle inicjowanych przez rozszerzenia.

Ograniczanie rozszerzeń

Aplikacje mogą ograniczać określone typy rozszerzeń, zwłaszcza niestandardowe klawiatury, zapewniając zgodność z protokołami bezpieczeństwa w obszarze obsługi poufnych danych.

Analiza dynamiczna

Analiza dynamiczna obejmuje:

  • Inspekcję udostępnionych elementów: Podłącz się do NSExtensionContext - inputItems, aby zobaczyć typy danych i pochodzenie udostępnionych informacji.
  • Identyfikowanie 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, zwłaszcza dla tych, którzy interesują się technicznymi szczegółami komunikacji międzyprocesowej.

Referencje

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

Inne sposoby wsparcia HackTricks: